Theming

Every visual value lives in macos.css as a CSS variable. Change a variable and every component follows.

Accent color

Like macOS, the theme has one accent color. Pick one here to see it everywhere on this site, or try the theme editor.

Accent color

To change it in your project, point --mac-accent at another system color:

app/globals.css
:root {
  --mac-accent: var(--mac-purple);
}

Tokens

The most used variables, with their light and dark values. Design Sources lists where each one comes from.

Accent and selection

VariableLightDarkUsed for
--mac-accentvar(--mac-blue)var(--mac-blue)Default buttons, switches, checkboxes, focus rings.
--mac-selection#0064e1#0059d1Selected rows in a focused list.
--mac-selection-unfocusedrgb(0 0 0 / 0.14)rgb(255 255 255 / 0.18)Selected rows in an unfocused list.
--mac-menu-highlight#0069f9#0069f9The highlighted menu item.
--mac-link#0068da#419cffLinks.

Labels

VariableLightDarkUsed for
--mac-labelrgb(0 0 0 / 0.85)rgb(255 255 255 / 0.85)Primary text.
--mac-label-secondaryrgb(0 0 0 / 0.5)rgb(255 255 255 / 0.55)Subtitles, values, placeholders.
--mac-label-tertiaryrgb(0 0 0 / 0.26)rgb(255 255 255 / 0.25)Disabled text, section headers.
--mac-label-quaternaryrgb(0 0 0 / 0.1)rgb(255 255 255 / 0.1)Watermarks.

Fills and surfaces

VariableLightDarkUsed for
--mac-fill-primaryrgb(0 0 0 / 0.1)rgb(255 255 255 / 0.1)Checkboxes, radio buttons, switch tracks.
--mac-controlrgb(0 0 0 / 0.08)rgb(255 255 255 / 0.08)Bordered buttons, pop-ups, tabss.
--mac-window#ffffff#1e1f20Window background.
--mac-content#ffffff#1e2023Lists and tables.
--mac-grouprgb(0 0 0 / 0.03)rgb(255 255 255 / 0.03)Grouped form boxes.
--mac-glassrgb(255 255 255 / 0.82)#323435Liquid Glass toolbar capsules.

Shape

VariableLightDarkUsed for
--mac-radius-control6px6pxMedium buttons, fields, pop-ups.
--mac-radius-menu12px12pxMenus.
--mac-radius-group12px12pxGrouped form boxes.
--mac-radius-popover20px20pxPopovers.
--mac-radius-alert34px34pxAlerts.
--mac-radius-window16px16pxWindows and dialogs.

shadcn tokens

The theme also sets shadcn’s own tokens, so components from the regular shadcn/ui registry pick up macOS colors and radii:

--radius: var(--mac-radius-control);
--background: var(--mac-window);
--foreground: var(--mac-label);
--primary: var(--mac-accent);
--secondary: var(--mac-control);
--muted-foreground: var(--mac-label-secondary);
--border: var(--mac-border);
--ring: var(--mac-accent);

Inactive windows

When a window loses focus, macOS greys out its accent color. A <Window inactive> does the same by overriding the variables inside it, so switches, selections and checkboxes in the background window turn grey automatically.

Override variables on any element to theme just that part of the page, e.g. <div style={{ "--mac-accent": "var(--mac-green)" }}>.