Peaceful is a shadcn/ui theme built around an indigo primary color (#515de1) with green accents (#5de151). The light mode uses a neutral background (#f7f8fc). Dark mode keeps the indigo primary (#515de1) on a neutral background (#010204).
| Token | Light | Dark |
|---|---|---|
| Background | #f7f8fcghostwhite | #010204black |
| Foreground | #030417black | #ffffffwhite |
| Card | #f7f8fcghostwhite | #010204black |
| Card foreground | #030417black | #ffffffwhite |
| Popover | #f7f8fcghostwhite | #010204black |
| Popover foreground | #030417black | #ffffffwhite |
| Primary | #515de1royalblue | #515de1royalblue |
| Primary foreground | #ffffffwhite | #ffffffwhite |
| Secondary | #e1515dindianred | #e1515dindianred |
| Secondary foreground | #ffffffwhite | #ffffffwhite |
| Muted | #f5f0f0whitesmoke | #0f0a0bblack |
| Muted foreground | #493738darkslategray | #c8b6b8silver |
| Accent | #5de151limegreen | #5de151limegreen |
| Accent foreground | #000000black | #000000black |
| Destructive | #781c02maroon | #eb3705orangered |
| Destructive foreground | #fdc0aflightpink | #ffffffwhite |
| Border | #e5e7eblavender | #1f2937darkslategray |
| Input | #e5e7eblavender | #1f2937darkslategray |
| Ring | #515de1royalblue | #515de1royalblue |
WCAG 2 contrast ratios between each background and its foreground color.
| Text on background | 19.13:1 | AAA |
| Text on card | 19.13:1 | AAA |
| Primary button | 5.26:1 | AA |
| Secondary button | 3.79:1 | AA Large |
| Muted text | 9.85:1 | AAA |
| Accent | 12.39:1 | AAA |
| Destructive | 6.78:1 | AA |
| Text on background | 20.78:1 | AAA |
| Text on card | 20.78:1 | AAA |
| Primary button | 5.26:1 | AA |
| Secondary button | 3.79:1 | AA Large |
| Muted text | 10.12:1 | AAA |
| Accent | 12.39:1 | AAA |
| Destructive | 4.14:1 | AA Large |
Paste this into your globals.css to use Peaceful in your shadcn/ui project.
:root {
--radius: 0.5rem;
--background: oklch(0.979 0.006 282.107);
--foreground: oklch(0.123 0.043 271.867);
--muted: oklch(0.959 0.005 11.363);
--muted-foreground: oklch(0.356 0.026 12.844);
--popover: oklch(0.979 0.006 282.107);
--popover-foreground: oklch(0.123 0.043 271.867);
--card: oklch(0.979 0.006 282.107);
--card-foreground: oklch(0.123 0.043 271.867);
--border: oklch(0.928 0.006 264.531);
--input: oklch(0.928 0.006 264.531);
--primary: oklch(0.545 0.199 273.79);
--primary-foreground: oklch(1 0 180);
--secondary: oklch(0.632 0.18 19.117);
--secondary-foreground: oklch(1 0 180);
--accent: oklch(0.808 0.219 141.949);
--accent-foreground: oklch(0 0 0);
--destructive: oklch(0.379 0.13 34.916);
--destructive-foreground: oklch(0.859 0.075 36.015);
--ring: oklch(0.545 0.199 273.79);
--chart-1: oklch(0.545 0.199 273.79);
--chart-2: oklch(0.632 0.18 19.117);
--chart-3: oklch(0.808 0.219 141.949);
--chart-4: oklch(0.654 0.167 17.977);
--chart-5: oklch(0.541 0.207 273.288);
}
.dark {
--radius: 0.5rem;
--background: oklch(0.081 0.012 278.124);
--foreground: oklch(1 0 180);
--muted: oklch(0.153 0.008 12.409);
--muted-foreground: oklch(0.793 0.02 11.816);
--popover: oklch(0.081 0.012 278.124);
--popover-foreground: oklch(1 0 180);
--card: oklch(0.081 0.012 278.124);
--card-foreground: oklch(1 0 180);
--border: oklch(0.278 0.03 256.848);
--input: oklch(0.278 0.03 256.848);
--primary: oklch(0.545 0.199 273.79);
--primary-foreground: oklch(1 0 180);
--secondary: oklch(0.632 0.18 19.117);
--secondary-foreground: oklch(1 0 180);
--accent: oklch(0.808 0.219 141.949);
--accent-foreground: oklch(0 0 0);
--destructive: oklch(0.614 0.221 33.596);
--destructive-foreground: oklch(1 0 180);
--ring: oklch(0.545 0.199 273.79);
--chart-1: oklch(0.545 0.199 273.79);
--chart-2: oklch(0.632 0.18 19.117);
--chart-3: oklch(0.808 0.219 141.949);
--chart-4: oklch(0.654 0.167 17.977);
--chart-5: oklch(0.541 0.207 273.288);
}