shadcnthemes
All themes

FamilyOS Peach

FamilyOS Peach is a neutral shadcn/ui theme with pill corners and sans-serif typography, in light and dark modes.

Sans
System
Serif
System
Mono
System
Radius
2rem
Create project
Deploy your new project in one click.
Visitors
January – June
+12.5%
Buttons
Typography
The theme's three font families.
Sans · System
The quick brown fox
Serif · System
jumps over the lazy dog.
Mono · System
npx shadcn add button
Account
Notifications
Choose what you want to hear about.
Product updates
New features and releases
Security alerts
Sign-ins from new devices
Marketing
Tips, offers and news
Payment method
Team
Invite your teammates to collaborate.
SDJLINWK
OwnerEditorViewerSuspended
Storage7.2 of 10 GB
Volume64%
Invoices
InvoiceStatusAmount
INV001Paid$250.00
INV002Pending$150.00
INV003Unpaid$350.00
INV004Paid$450.00
FAQ

Yes. It adheres to the WAI-ARIA design pattern.

Colors

Click any swatch to copy its OKLCH value.

Base
Brand
Lines
Charts
Sidebar
StatusOptional, generated to match

Use this theme

Install it with the shadcn CLI, paste the CSS, or export tokens for your design tool.

Paste into app/globals.css, replacing the existing :root and .dark blocks.

:root {
  --background: oklch(0.9352 0.0213 51.52);
  --foreground: oklch(0.1824 0.0115 60.65);
  --card: oklch(0.9797 0.0084 56.32);
  --card-foreground: oklch(0.1824 0.0115 60.65);
  --popover: oklch(0.9797 0.0084 56.32);
  --popover-foreground: oklch(0.1824 0.0115 60.65);
  --primary: oklch(0.1574 0.0066 55.82);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.9596 0.016 52.56);
  --secondary-foreground: oklch(0.1824 0.0115 60.65);
  --muted: oklch(0.9237 0.0231 52.68);
  --muted-foreground: oklch(0.5061 0.0209 53.68);
  --accent: oklch(0.6511 0.1761 46.82);
  --accent-foreground: oklch(1 0 0);
  --destructive: oklch(0.5707 0.2009 30.61);
  --destructive-foreground: oklch(1 0 0);
  --border: oklch(0.8889 0.0284 55.29);
  --input: oklch(0.8636 0.0322 53.44);
  --ring: oklch(0.6511 0.1761 46.82);
  --chart-1: oklch(0.6511 0.1761 46.82);
  --chart-2: oklch(0.7614 0.1492 63.07);
  --chart-3: oklch(0.8806 0.1794 98.83);
  --chart-4: oklch(0.58 0.1485 151.34);
  --chart-5: oklch(0.1574 0.0066 55.82);
  --sidebar: oklch(0.9646 0.0127 48.59);
  --sidebar-foreground: oklch(0.1824 0.0115 60.65);
  --sidebar-primary: oklch(0.1574 0.0066 55.82);
  --sidebar-primary-foreground: oklch(1 0 0);
  --sidebar-accent: oklch(0.9237 0.0231 52.68);
  --sidebar-accent-foreground: oklch(0.1824 0.0115 60.65);
  --sidebar-border: oklch(0.8889 0.0284 55.29);
  --sidebar-ring: oklch(0.6511 0.1761 46.82);
  --font-sans: ui-sans-serif, system-ui, sans-serif;
  --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  --radius: 2rem;
  --spacing: 0.25rem;
  --tracking-normal: 0em;
  --shadow-color: oklch(0 0 0);
  --shadow-opacity: 0.1;
  --shadow-blur: 3px;
  --shadow-spread: 0px;
  --shadow-offset-x: 0px;
  --shadow-offset-y: 1px;
  --shadow-2xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05);
  --shadow-xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05);
  --shadow-sm: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 1px 2px -1px hsl(0 0% 0% / 0.10);
  --shadow: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 1px 2px -1px hsl(0 0% 0% / 0.10);
  --shadow-md: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 2px 4px -1px hsl(0 0% 0% / 0.10);
  --shadow-lg: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 4px 6px -1px hsl(0 0% 0% / 0.10);
  --shadow-xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 8px 10px -1px hsl(0 0% 0% / 0.10);
  --shadow-2xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.25);
}

.dark {
  --background: oklch(0.1644 0.0106 52.68);
  --foreground: oklch(0.9575 0.0126 56.25);
  --card: oklch(0.2074 0.0138 51.4);
  --card-foreground: oklch(0.9575 0.0126 56.25);
  --popover: oklch(0.2074 0.0138 51.4);
  --popover-foreground: oklch(0.9575 0.0126 56.25);
  --primary: oklch(1 0 0);
  --primary-foreground: oklch(0.1574 0.0066 55.82);
  --secondary: oklch(0.2565 0.0167 50.69);
  --secondary-foreground: oklch(0.9575 0.0126 56.25);
  --muted: oklch(0.2343 0.0157 53.75);
  --muted-foreground: oklch(0.7366 0.0253 55.14);
  --accent: oklch(0.703 0.1712 51.03);
  --accent-foreground: oklch(1 0 0);
  --destructive: oklch(0.731 0.1661 30.31);
  --destructive-foreground: oklch(0.1574 0.0066 55.82);
  --border: oklch(0.2607 0.0166 50.7);
  --input: oklch(0.3151 0.0202 54.28);
  --ring: oklch(0.703 0.1712 51.03);
  --chart-1: oklch(0.703 0.1712 51.03);
  --chart-2: oklch(0.7816 0.142 63.16);
  --chart-3: oklch(0.8806 0.1794 98.83);
  --chart-4: oklch(0.7589 0.1684 154.63);
  --chart-5: oklch(1 0 0);
  --sidebar: oklch(0.1838 0.0128 55.46);
  --sidebar-foreground: oklch(0.9575 0.0126 56.25);
  --sidebar-primary: oklch(1 0 0);
  --sidebar-primary-foreground: oklch(0.1574 0.0066 55.82);
  --sidebar-accent: oklch(0.2343 0.0157 53.75);
  --sidebar-accent-foreground: oklch(0.9575 0.0126 56.25);
  --sidebar-border: oklch(0.2607 0.0166 50.7);
  --sidebar-ring: oklch(0.703 0.1712 51.03);
  --font-sans: ui-sans-serif, system-ui, sans-serif;
  --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  --radius: 2rem;
  --spacing: 0.25rem;
  --tracking-normal: 0em;
  --shadow-color: oklch(0 0 0);
  --shadow-opacity: 0.1;
  --shadow-blur: 3px;
  --shadow-spread: 0px;
  --shadow-offset-x: 0px;
  --shadow-offset-y: 1px;
  --shadow-2xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05);
  --shadow-xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05);
  --shadow-sm: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 1px 2px -1px hsl(0 0% 0% / 0.10);
  --shadow: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 1px 2px -1px hsl(0 0% 0% / 0.10);
  --shadow-md: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 2px 4px -1px hsl(0 0% 0% / 0.10);
  --shadow-lg: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 4px 6px -1px hsl(0 0% 0% / 0.10);
  --shadow-xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.10), 0px 8px 10px -1px hsl(0 0% 0% / 0.10);
  --shadow-2xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.25);
}

@theme inline {
  --color-background: var(--background);
  --color-foreground: var(--foreground);
  --color-card: var(--card);
  --color-card-foreground: var(--card-foreground);
  --color-popover: var(--popover);
  --color-popover-foreground: var(--popover-foreground);
  --color-primary: var(--primary);
  --color-primary-foreground: var(--primary-foreground);
  --color-secondary: var(--secondary);
  --color-secondary-foreground: var(--secondary-foreground);
  --color-muted: var(--muted);
  --color-muted-foreground: var(--muted-foreground);
  --color-accent: var(--accent);
  --color-accent-foreground: var(--accent-foreground);
  --color-destructive: var(--destructive);
  --color-destructive-foreground: var(--destructive-foreground);
  --color-border: var(--border);
  --color-input: var(--input);
  --color-ring: var(--ring);
  --color-chart-1: var(--chart-1);
  --color-chart-2: var(--chart-2);
  --color-chart-3: var(--chart-3);
  --color-chart-4: var(--chart-4);
  --color-chart-5: var(--chart-5);
  --color-sidebar: var(--sidebar);
  --color-sidebar-foreground: var(--sidebar-foreground);
  --color-sidebar-primary: var(--sidebar-primary);
  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
  --color-sidebar-accent: var(--sidebar-accent);
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
  --color-sidebar-border: var(--sidebar-border);
  --color-sidebar-ring: var(--sidebar-ring);

  --font-sans: var(--font-sans);
  --font-mono: var(--font-mono);
  --font-serif: var(--font-serif);

  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);

  --shadow-2xs: var(--shadow-2xs);
  --shadow-xs: var(--shadow-xs);
  --shadow-sm: var(--shadow-sm);
  --shadow: var(--shadow);
  --shadow-md: var(--shadow-md);
  --shadow-lg: var(--shadow-lg);
  --shadow-xl: var(--shadow-xl);
  --shadow-2xl: var(--shadow-2xl);

  --tracking-tighter: calc(var(--tracking-normal) - 0.05em);
  --tracking-tight: calc(var(--tracking-normal) - 0.025em);
  --tracking-normal: var(--tracking-normal);
  --tracking-wide: calc(var(--tracking-normal) + 0.025em);
  --tracking-wider: calc(var(--tracking-normal) + 0.05em);
  --tracking-widest: calc(var(--tracking-normal) + 0.1em);
}

@layer base {
  body {
    letter-spacing: var(--tracking-normal);
  }
}

Similar themes