Archer is a shadcn/ui theme built around a near-white primary color (#f7f8fd) with muted light blue accents (#cbcedc). The light mode uses a neutral background (#fbfcfe). Dark mode keeps the near-white primary (#f7f8fd) on a neutral background (#010204).
| Token | Light | Dark |
|---|---|---|
| Background | #fbfcfewhite | #010204black |
| Foreground | #060814black | #fcfcfdwhite |
| Card | #fbfcfewhite | #010204black |
| Card foreground | #060814black | #fcfcfdwhite |
| Popover | #fbfcfewhite | #010204black |
| Popover foreground | #060814black | #fcfcfdwhite |
| Primary | #f7f8fdghostwhite | #f7f8fdghostwhite |
| Primary foreground | #2c3f96darkslateblue | #2c3f96darkslateblue |
| Secondary | #cbcedclightgrey | #181b25black |
| Secondary foreground | #303446darkslategray | #a9afc6silver |
| Muted | #dee0edlavender | #121421black |
| Muted foreground | #414558darkslategray | #a7abbedarkgray |
| Accent | #cbcedclightgrey | #181b25black |
| Accent foreground | #303446darkslategray | #a9afc6silver |
| Destructive | #923401saddlebrown | #fd610dorangered |
| Destructive foreground | #ffffffwhite | #000000black |
| Border | #e5e7eblavender | #1f2937darkslategray |
| Input | #e5e7eblavender | #1f2937darkslategray |
| Ring | #f7f8fdghostwhite | #f7f8fdghostwhite |
WCAG 2 contrast ratios between each background and its foreground color.
| Text on background | 19.40:1 | AAA |
| Text on card | 19.40:1 | AAA |
| Primary button | 8.77:1 | AAA |
| Secondary button | 7.88:1 | AAA |
| Muted text | 7.23:1 | AAA |
| Accent | 7.88:1 | AAA |
| Destructive | 7.70:1 | AAA |
| Text on background | 20.26:1 | AAA |
| Text on card | 20.26:1 | AAA |
| Primary button | 8.77:1 | AAA |
| Secondary button | 7.89:1 | AAA |
| Muted text | 8.00:1 | AAA |
| Accent | 7.89:1 | AAA |
| Destructive | 6.86:1 | AA |
Paste this into your globals.css to use Archer in your shadcn/ui project.
:root {
--radius: 0.5rem;
--background: oklch(0.99 0.003 276.131);
--foreground: oklch(0.139 0.026 270.894);
--muted: oklch(0.91 0.018 275.904);
--muted-foreground: oklch(0.395 0.032 274.952);
--popover: oklch(0.99 0.003 276.131);
--popover-foreground: oklch(0.139 0.026 270.894);
--card: oklch(0.99 0.003 276.131);
--card-foreground: oklch(0.139 0.026 270.894);
--border: oklch(0.928 0.006 264.531);
--input: oklch(0.928 0.006 264.531);
--primary: oklch(0.98 0.006 276.083);
--primary-foreground: oklch(0.407 0.144 269.348);
--secondary: oklch(0.854 0.019 275.869);
--secondary-foreground: oklch(0.328 0.033 274.633);
--accent: oklch(0.854 0.019 275.869);
--accent-foreground: oklch(0.328 0.033 274.633);
--destructive: oklch(0.456 0.137 41.731);
--destructive-foreground: oklch(1 0 180);
--ring: oklch(0.98 0.006 276.083);
--chart-1: oklch(0.98 0.006 276.083);
--chart-2: oklch(0.854 0.019 275.869);
--chart-3: oklch(0.854 0.019 275.869);
--chart-4: oklch(0.881 0.015 275.932);
--chart-5: oklch(0.98 0.007 276.079);
}
.dark {
--radius: 0.5rem;
--background: oklch(0.082 0.012 270.304);
--foreground: oklch(0.991 0.002 276.143);
--muted: oklch(0.197 0.026 274.022);
--muted-foreground: oklch(0.745 0.027 275.659);
--popover: oklch(0.082 0.012 270.304);
--popover-foreground: oklch(0.991 0.002 276.143);
--card: oklch(0.082 0.012 270.304);
--card-foreground: oklch(0.991 0.002 276.143);
--border: oklch(0.278 0.03 256.848);
--input: oklch(0.278 0.03 256.848);
--primary: oklch(0.98 0.006 276.083);
--primary-foreground: oklch(0.407 0.144 269.348);
--secondary: oklch(0.223 0.02 274.83);
--secondary-foreground: oklch(0.756 0.034 275.537);
--accent: oklch(0.223 0.02 274.83);
--accent-foreground: oklch(0.756 0.034 275.537);
--destructive: oklch(0.686 0.205 41.488);
--destructive-foreground: oklch(0 0 0);
--ring: oklch(0.98 0.006 276.083);
--chart-1: oklch(0.98 0.006 276.083);
--chart-2: oklch(0.223 0.02 274.83);
--chart-3: oklch(0.223 0.02 274.83);
--chart-4: oklch(0.252 0.024 274.719);
--chart-5: oklch(0.98 0.007 276.079);
}