Theming

Swap themes, override colors, or build your own — without modifying component files.

All visual customization runs through CSS variables. Three built-in themes are included: Default, Minimal, and Rounded — each with light and dark mode support.

Install a theme

Install a complete theme with a single command. Each theme includes the full color palette for both light and dark modes.

# Install the default theme (includes colors)
npx shadcn@latest add "http://localhost:3000/r/themes/theme-default.json"

# Or choose a different theme:
npx shadcn@latest add "http://localhost:3000/r/themes/theme-minimal.json"
npx shadcn@latest add "http://localhost:3000/r/themes/theme-rounded.json"

Default Theme

Sophisticated shadows and depth with warm carbon tones


CSS Variables

Copy and paste the following code into your CSS file.

Base Theme Variables

@theme inline {
  --color-page: var(--color-page);
  --color-background: var(--color-background);
  --color-foreground: var(--color-foreground);

  --color-card: var(--color-card);
  --color-card-foreground: var(--color-card-foreground);

  --color-primary: var(--color-primary);
  --color-primary-foreground: var(--color-primary-foreground);

  --color-secondary: var(--color-secondary);
  --color-secondary-foreground: var(--color-secondary-foreground);

  --color-accent: var(--color-accent);
  --color-accent-foreground: var(--color-accent-foreground);

  --color-muted: var(--color-muted);
  --color-muted-foreground: var(--color-muted-foreground);

  --color-border: var(--color-border);

  --color-ring: oklch(from var(--color-ring) l c h / 50%);;

  --color-info: var(--color-info);
  --color-info-foreground: var(--color-info-foreground);
  --color-success: var(--color-success);
  --color-success-foreground: var(--color-success-foreground);
  --color-warning: var(--color-warning);
  --color-warning-foreground: var(--color-warning-foreground);

  --color-destructive: var(--color-destructive);
  --color-destructive-foreground: var(--color-destructive-foreground);
  --color-destructive-border: var(--color-destructive-border);

  --color-popover: var(--color-popover);
  --color-popover-foreground: var(--color-popover-foreground);

  --color-input: var(--color-input);
  --color-input-foreground: var(--color-input-foreground);
  --color-input-muted: var(--color-input-muted);

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

  --shadow-button-resting: var(--shadow-button-resting);
  --shadow-button-hover: var(--shadow-button-hover);
  --shadow-button-focus: var(--shadow-button-hover);

  --shadow-button-destructive-resting: var(--shadow-button-destructive-resting);
  --shadow-button-destructive-hover: var(--shadow-button-destructive-hover);
  --shadow-button-destructive-focus: var(--shadow-button-destructive-focus);

  --shadow-button-outlined-resting: var(--shadow-button-outlined-resting);
  --shadow-button-outlined-hover: var(--shadow-button-outlined-resting);
  --shadow-button-outlined-focus: var(--shadow-button-outlined-resting);

  --shadow-input-resting: var(--shadow-input-resting);
  --shadow-input-hover: var(--shadow-input-hover);
  --shadow-input-focus: var(--shadow-input-focus);
  --shadow-input-destructive-resting: var(--shadow-input-destructive-resting);
  --shadow-input-destructive-hover: var(--shadow-input-destructive-hover);
  --shadow-input-destructive-focus: var(--shadow-input-destructive-focus);

  --shadow-checkbox-resting: var(--shadow-checkbox-resting);
  --shadow-checkbox-hover: var(--shadow-checkbox-hover);

  --shadow-switch-resting: var(--shadow-switch-resting);
  --shadow-switch-hover: var(--shadow-switch-resting);
  --shadow-switch-focus: var(--shadow-switch-focus);
  --shadow-switch-thumb: var(--shadow-switch-thumb);

  --radius-xs: var(--radius-xs);
  --radius-sm: var(--radius-sm);
  --radius-md: var(--radius-md);
  --radius-lg: var(--radius-lg);
  --radius-xl: var(--radius-xl);
  --radius-2xl: var(--radius-2xl);
  --radius-3xl: var(--radius-3xl);
  --radius-4xl: var(--radius-4xl);
  --radius-5xl: var(--radius-5xl);
  --radius-6xl: var(--radius-6xl);
  --radius-7xl: var(--radius-7xl);
  --radius-8xl: var(--radius-8xl);
  --radius-9xl: var(--radius-9xl);
}

Light Mode

:root {
  --color-page: oklch(98.21% 0 0);
  --color-background: oklch(100% 0 0);
  --color-foreground: oklch(23.93% 0 0);
  --color-card: oklch(100% 0 0);
  --color-card-foreground: oklch(0% 0 0);
  --color-popover: oklch(100% 0 0);
  --color-popover-foreground: oklch(23.93% 0 0);
  --color-primary: oklch(26.1% 0.0079 84.59);
  --color-primary-foreground: oklch(100% 0 0);
  --color-secondary: oklch(95.51% 0 0);
  --color-secondary-foreground: oklch(99.11% 0 0);
  --color-muted: oklch(95.51% 0 0);
  --color-muted-foreground: oklch(60.66% 0 0);
  --color-accent: oklch(64.01% 0 0);
  --color-accent-foreground: oklch(23.93% 0 0);
  --color-destructive: oklch(92.39% 0.0391 31.56);
  --color-destructive-foreground: oklch(56.26% 0.1824 30.09);
  --color-border: oklch(88.53% 0 0);
  --color-input: oklch(100% 0 0);
  --color-ring: oklch(85.14% 0 0 / 50%);

  /* Bevel Shadows */
  --shadow-bevel-xs: 0px 0px 0px 1px oklch(0% 0 0 / 10%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
  --shadow-bevel-sm: 0px 0px 0px 1px oklch(0% 0 0 / 10%), 0px 4px 4px -2px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
  --shadow-bevel-md: 0px 0px 0px 1px oklch(0% 0 0 / 10%), 0px 6px 6px -3px oklch(0% 0 0 / 5%), 0px 4px 4px -1px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
  --shadow-bevel-lg: 0px 0px 0px 1px oklch(0% 0 0 / 10%), 0px 12px 12px -6px oklch(0% 0 0 / 10%), 0px 6px 6px -1.5px oklch(0% 0 0 / 5%), 0px 4px 4px 0px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
  --shadow-bevel-xl: 0px 0px 0px 1px oklch(0% 0 0 / 10%), 0px 24px 24px -22px oklch(0% 0 0 / 10%), 0px 12px 12px -8px oklch(0% 0 0 / 10%), 0px 6px 6px -3px oklch(0% 0 0 / 5%), 0px 4px 4px 2px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
  --shadow-bevel-2xl: 0px 0px 0px 1px oklch(0% 0 0 / 10%), 0px 40px 40px -28px oklch(0% 0 0 / 10%), 0px 24px 24px -28px oklch(0% 0 0 / 10%), 0px 12px 12px -8px oklch(0% 0 0 / 10%), 0px 6px 6px -3px oklch(0% 0 0 / 5%), 0px 4px 4px 2px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);

  /* Button Shadows */
  --shadow-button-resting: 0px 0px 0px 1px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 10%), 0px 1px 1px -0.5px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0px 4px 8px -2px oklch(0% 0 0 / 10%), 0px 8px 12px -8px oklch(0% 0 0 / 10%), inset 0px -2px 2px -1px oklch(0% 0 0 / 50%), inset 0px 2px 2px -1px oklch(100% 0 0 / 20%);
  --shadow-button-hover: 0px 0px 0px 1px oklch(0% 0 0 / 15%), 0px 2px 2px -1px oklch(0% 0 0 / 10%), 0px 1px 1px -0.5px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0px 4px 8px -2px oklch(0% 0 0 / 10%), 0px 8px 12px -8px oklch(0% 0 0 / 10%), inset 0px -2px 2px -1px oklch(0% 0 0 / 50%), inset 0px 2px 2px -1px oklch(100% 0 0 / 20%);
  --shadow-button-destructive-resting: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 5%), 0px 2px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 4px 8px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 8px 12px -8px oklch(51.17% 0.1823 30.25 / 10%), inset 0px -2px 2px -1px oklch(51.17% 0.1823 30.25 / 20%), inset 0px 4px 2px -2px oklch(100% 0 0 / 15%);
  --shadow-button-destructive-hover: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 15%), 0px 2px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 4px 8px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 8px 12px -8px oklch(51.17% 0.1823 30.25 / 10%), inset 0px -2px 2px -1px oklch(51.17% 0.1823 30.25 / 20%), inset 0px 4px 2px -2px oklch(100% 0 0 / 15%);
  --shadow-button-outlined-resting: 0px 0px 0px 1px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 10%), 0px 1px 1px -0.5px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0px 4px 8px -2px oklch(0% 0 0 / 10%), inset 0px -2px 2px -1px oklch(0% 0 0 / 20%), inset 0px 4px 2px -2px oklch(100% 0 0 / 15%);
  --shadow-button-outlined-hover: 0px 0px 0px 1px oklch(0% 0 0 / 15%), 0px 2px 2px -1px oklch(0% 0 0 / 10%), 0px 1px 1px -0.5px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0px 4px 8px -2px oklch(0% 0 0 / 10%), inset 0px -2px 2px -1px oklch(0% 0 0 / 20%), inset 0px 4px 2px -2px oklch(100% 0 0 / 15%);

  /* Input Shadows */
  --shadow-input-resting: 0 0 0 1px oklch(0% 0 0 / 10%), 0px 0.5px 0px -0.5px oklch(0% 0 0 / 10%), 0 1px 0 -1px oklch(0% 0 0 / 10%), 0px 1px 1px -1px oklch(0% 0 0 / 10%), 0px 1px 2px -1px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0 4px 6px -8px oklch(0% 0 0 / 10%), 0 6px 6px -12px oklch(0% 0 0 / 10%);
  --shadow-input-hover: 0px 0px 0px 1px oklch(0% 0 0 / 20%), 0px 0.5px 0px -0.5px oklch(0% 0 0 / 10%), 0 1px 0 -1px oklch(0% 0 0 / 10%), 0px 1px 1px -1px oklch(0% 0 0 / 10%), 0px 1px 2px -1px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0 4px 6px -8px oklch(0% 0 0 / 10%), 0 6px 6px -12px oklch(0% 0 0 / 10%);
  --shadow-input-destructive-resting: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 15%), 0px 0.5px 0px -0.5px oklch(51.17% 0.1823 30.25 / 50%), 0 1px 0 -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0 4px 6px -8px oklch(51.17% 0.1823 30.25 / 10%);
  --shadow-input-destructive-hover: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 25%), 0px 0.5px 0px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0 1px 0 -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0 4px 6px -8px oklch(51.17% 0.1823 30.25 / 10%);
  --shadow-input-destructive-focus: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 25%), 0px 0.5px 0px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0 1px 0 -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0 4px 6px -8px oklch(51.17% 0.1823 30.25 / 10%);

  /* Checkbox Shadows */
  --shadow-checkbox-resting: 0px 0.5px 0px -0.5px oklch(0% 0 0 / 10%), 0 1px 0 -1px oklch(0% 0 0 / 10%), 0px 1px 1px -1px oklch(0% 0 0 / 10%), 0px 1px 2px -1px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0 4px 6px -8px oklch(0% 0 0 / 10%), inset 0px -1px 2px -1px oklch(0% 0 0 / 20%), inset 0px 2px 1px -1px oklch(100% 0 0 / 50%);
  --shadow-checkbox-hover: 0px 0.5px 0px -0.5px oklch(0% 0 0 / 10%), 0 1px 0 -1px oklch(0% 0 0 / 10%), 0px 1px 1px -1px oklch(0% 0 0 / 10%), 0px 1px 2px -1px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), 0 4px 6px -8px oklch(0% 0 0 / 10%), 0 8px 12px -8px oklch(0% 0 0 / 10%), inset 0px -1px 2px -1px oklch(0% 0 0 / 20%), inset 0px 2px 1px -1px oklch(100% 0 0 / 50%);

  /* Switch Shadows */
  --shadow-switch-resting: 0 0 0 1px oklch(0% 0 0 / 5%), inset 0px 0.5px 1px 0.5px oklch(0% 0 0 / 10%);
  --shadow-switch-hover: 0px 0px 0px 1px oklch(0% 0 0 / 10%), inset 0px 1px 1px 0.5px oklch(0% 0 0 / 10%);
  --shadow-switch-focus: 0px 0px 0px 1px oklch(0% 0 0 / 10%), 0px 0px 0px 1px oklch(0% 0 0 / 10%), inset 0px 1px 1px 0.5px oklch(0% 0 0 / 10%);
  --shadow-switch-thumb: 0px 0.5px 0px -0.5px oklch(0% 0 0 / 10%), 0 1px 0 -1px oklch(0% 0 0 / 10%), 0px 2px 2px -1px oklch(0% 0 0 / 10%), 0px 2px 4px -2px oklch(0% 0 0 / 10%), inset 0 -2px 4px -2px oklch(100% 0 0), inset 0px 0.5px 0.5px oklch(100% 0 0 / 10%);
}

Dark Mode

@media (prefers-color-scheme: dark) {
  :root {
    --color-page: oklch(21.34% 0 0);
    --color-background: oklch(0% 0 0);
    --color-foreground: oklch(94.91% 0 0);
    --color-card: oklch(0% 0 0);
    --color-card-foreground: oklch(100% 0 0);
    --color-popover: oklch(0% 0 0);
    --color-popover-foreground: oklch(94.91% 0 0);
    --color-primary: oklch(94.65% 0.0058 84.57);
    --color-primary-foreground: oklch(0% 0 0);
    --color-secondary: oklch(25.2% 0 0);
    --color-secondary-foreground: oklch(17.76% 0 0);
    --color-muted: oklch(25.2% 0 0);
    --color-muted-foreground: oklch(58.29% 0 0);
    --color-accent: oklch(53.82% 0 0);
    --color-accent-foreground: oklch(94.91% 0 0);
    --color-destructive: oklch(35.39% 0.0591 31.56);
    --color-destructive-foreground: oklch(79.26% 0.1824 30.09);
    --color-border: oklch(34.85% 0 0);
    --color-input: oklch(0% 0 0);
    --color-ring: oklch(40.17% 0 0 / 50%);

    /* Bevel Shadows */
    --shadow-bevel-xs: 0px 0px 0px 1px oklch(100% 0 0 / 10%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
    --shadow-bevel-sm: 0px 0px 0px 1px oklch(100% 0 0 / 10%), 0px 4px 4px -2px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
    --shadow-bevel-md: 0px 0px 0px 1px oklch(100% 0 0 / 10%), 0px 6px 6px -3px oklch(0% 0 0 / 5%), 0px 4px 4px -1px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
    --shadow-bevel-lg: 0px 0px 0px 1px oklch(100% 0 0 / 10%), 0px 12px 12px -6px oklch(0% 0 0 / 10%), 0px 6px 6px -1.5px oklch(0% 0 0 / 5%), 0px 4px 4px 0px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
    --shadow-bevel-xl: 0px 0px 0px 1px oklch(100% 0 0 / 10%), 0px 24px 24px -22px oklch(0% 0 0 / 10%), 0px 12px 12px -8px oklch(0% 0 0 / 10%), 0px 6px 6px -3px oklch(0% 0 0 / 5%), 0px 4px 4px 2px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);
    --shadow-bevel-2xl: 0px 0px 0px 1px oklch(100% 0 0 / 10%), 0px 40px 40px -28px oklch(0% 0 0 / 10%), 0px 24px 24px -28px oklch(0% 0 0 / 10%), 0px 12px 12px -8px oklch(0% 0 0 / 10%), 0px 6px 6px -3px oklch(0% 0 0 / 5%), 0px 4px 4px 2px oklch(0% 0 0 / 5%), 0px 2px 2px -1px oklch(0% 0 0 / 5%), 0px 1px 1px -0.5px oklch(0% 0 0 / 5%), inset 0px -1.5px 1.5px -1.5px oklch(0% 0 0 / 5%), inset 0px 3px 3px -1.5px oklch(100% 0 0 / 10%);

    /* Button Shadows */
    --shadow-button-resting: 0px 0px 0px 1px oklch(100% 0 0 / 5%), 0px 2px 2px -1px oklch(100% 0 0 / 10%), 0px 1px 1px -0.5px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0px 4px 8px -2px oklch(100% 0 0 / 10%), 0px 8px 12px -8px oklch(100% 0 0 / 10%), inset 0px -2px 2px -1px oklch(100% 0 0 / 50%), inset 0px 2px 2px -1px oklch(0% 0 0 / 20%);
    --shadow-button-hover: 0px 0px 0px 1px oklch(100% 0 0 / 15%), 0px 2px 2px -1px oklch(100% 0 0 / 10%), 0px 1px 1px -0.5px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0px 4px 8px -2px oklch(100% 0 0 / 10%), 0px 8px 12px -8px oklch(100% 0 0 / 10%), inset 0px -2px 2px -1px oklch(100% 0 0 / 50%), inset 0px 2px 2px -1px oklch(0% 0 0 / 20%);
    --shadow-button-destructive-resting: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 5%), 0px 2px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 4px 8px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 8px 12px -8px oklch(51.17% 0.1823 30.25 / 10%), inset 0px -2px 2px -1px oklch(51.17% 0.1823 30.25 / 20%), inset 0px 4px 2px -2px oklch(0% 0 0 / 15%);
    --shadow-button-destructive-hover: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 15%), 0px 2px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 4px 8px -2px oklch(51.17% 0.1823 30.25 / 10%), 0px 8px 12px -8px oklch(51.17% 0.1823 30.25 / 10%), inset 0px -2px 2px -1px oklch(51.17% 0.1823 30.25 / 20%), inset 0px 4px 2px -2px oklch(0% 0 0 / 15%);
    --shadow-button-outlined-resting: 0px 0px 0px 1px oklch(100% 0 0 / 5%), 0px 2px 2px -1px oklch(100% 0 0 / 10%), 0px 1px 1px -0.5px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0px 4px 8px -2px oklch(100% 0 0 / 10%), inset 0px -2px 2px -1px oklch(100% 0 0 / 20%), inset 0px 4px 2px -2px oklch(0% 0 0 / 15%);
    --shadow-button-outlined-hover: 0px 0px 0px 1px oklch(100% 0 0 / 15%), 0px 2px 2px -1px oklch(100% 0 0 / 10%), 0px 1px 1px -0.5px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0px 4px 8px -2px oklch(100% 0 0 / 10%), inset 0px -2px 2px -1px oklch(100% 0 0 / 20%), inset 0px 4px 2px -2px oklch(0% 0 0 / 15%);

    /* Input Shadows */
    --shadow-input-resting: 0 0 0 1px oklch(100% 0 0 / 10%), 0px 0.5px 0px -0.5px oklch(100% 0 0 / 10%), 0 1px 0 -1px oklch(100% 0 0 / 10%), 0px 1px 1px -1px oklch(100% 0 0 / 10%), 0px 1px 2px -1px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0 4px 6px -8px oklch(100% 0 0 / 10%), 0 6px 6px -12px oklch(100% 0 0 / 10%);
    --shadow-input-hover: 0px 0px 0px 1px oklch(100% 0 0 / 20%), 0px 0.5px 0px -0.5px oklch(100% 0 0 / 10%), 0 1px 0 -1px oklch(100% 0 0 / 10%), 0px 1px 1px -1px oklch(100% 0 0 / 10%), 0px 1px 2px -1px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0 4px 6px -8px oklch(100% 0 0 / 10%), 0 6px 6px -12px oklch(100% 0 0 / 10%);
    --shadow-input-destructive-resting: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 15%), 0px 0.5px 0px -0.5px oklch(51.17% 0.1823 30.25 / 50%), 0 1px 0 -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0 4px 6px -8px oklch(51.17% 0.1823 30.25 / 10%);
    --shadow-input-destructive-hover: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 25%), 0px 0.5px 0px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0 1px 0 -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0 4px 6px -8px oklch(51.17% 0.1823 30.25 / 10%);
    --shadow-input-destructive-focus: 0px 0px 0px 1px oklch(51.17% 0.1823 30.25 / 25%), 0px 0.5px 0px -0.5px oklch(51.17% 0.1823 30.25 / 10%), 0 1px 0 -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 1px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 1px 2px -1px oklch(51.17% 0.1823 30.25 / 10%), 0px 2px 4px -2px oklch(51.17% 0.1823 30.25 / 10%), 0 4px 6px -8px oklch(51.17% 0.1823 30.25 / 10%);

    /* Checkbox Shadows */
    --shadow-checkbox-resting: 0px 0.5px 0px -0.5px oklch(100% 0 0 / 10%), 0 1px 0 -1px oklch(100% 0 0 / 10%), 0px 1px 1px -1px oklch(100% 0 0 / 10%), 0px 1px 2px -1px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0 4px 6px -8px oklch(100% 0 0 / 10%), inset 0px -1px 2px -1px oklch(100% 0 0 / 20%), inset 0px 2px 1px -1px oklch(0% 0 0 / 50%);
    --shadow-checkbox-hover: 0px 0.5px 0px -0.5px oklch(100% 0 0 / 10%), 0 1px 0 -1px oklch(100% 0 0 / 10%), 0px 1px 1px -1px oklch(100% 0 0 / 10%), 0px 1px 2px -1px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), 0 4px 6px -8px oklch(100% 0 0 / 10%), 0 8px 12px -8px oklch(100% 0 0 / 10%), inset 0px -1px 2px -1px oklch(100% 0 0 / 20%), inset 0px 2px 1px -1px oklch(0% 0 0 / 50%);

    /* Switch Shadows */
    --shadow-switch-resting: 0 0 0 1px oklch(100% 0 0 / 5%), inset 0px 0.5px 1px 0.5px oklch(100% 0 0 / 10%);
    --shadow-switch-hover: 0px 0px 0px 1px oklch(100% 0 0 / 10%), inset 0px 1px 1px 0.5px oklch(100% 0 0 / 10%);
    --shadow-switch-focus: 0px 0px 0px 1px oklch(100% 0 0 / 10%), 0px 0px 0px 1px oklch(100% 0 0 / 10%), inset 0px 1px 1px 0.5px oklch(100% 0 0 / 10%);
    --shadow-switch-thumb: 0px 0.5px 0px -0.5px oklch(100% 0 0 / 10%), 0 1px 0 -1px oklch(100% 0 0 / 10%), 0px 2px 2px -1px oklch(100% 0 0 / 10%), 0px 2px 4px -2px oklch(100% 0 0 / 10%), inset 0 -2px 4px -2px oklch(0% 0 0), inset 0px 0.5px 0.5px oklch(0% 0 0 / 10%);
  }
}

Override variables

Override specific variables to customize appearance while keeping the rest of the theme intact.

/* Override specific variables */
[data-theme="default"] {
  --color-primary: oklch(45.2% 0.1334 269.49); /* Custom blue */
  --color-primary-foreground: oklch(100% 0 0);

  /* Adjust border radius */
  --radius: 8px;
}

Variable reference

Semantic CSS variables available across all themes:

Background & Foreground

  • --color-background
  • --color-foreground
  • --color-card
  • --color-card-foreground
  • --color-popover
  • --color-popover-foreground

Interactive Elements

  • --color-primary
  • --color-primary-foreground
  • --color-secondary
  • --color-secondary-foreground
  • --color-accent
  • --color-accent-foreground

States & Feedback

  • --color-destructive
  • --color-destructive-foreground
  • --color-muted
  • --color-muted-foreground

Borders & Layout

  • --color-border
  • --color-input
  • --color-ring
  • --radius