Peaceful for shadcn/ui

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).

Color palette

TokenLightDark
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

Contrast

WCAG 2 contrast ratios between each background and its foreground color.

Light mode
Text on background19.13:1AAA
Text on card19.13:1AAA
Primary button5.26:1AA
Secondary button3.79:1AA Large
Muted text9.85:1AAA
Accent12.39:1AAA
Destructive6.78:1AA
Dark mode
Text on background20.78:1AAA
Text on card20.78:1AAA
Primary button5.26:1AA
Secondary button3.79:1AA Large
Muted text10.12:1AAA
Accent12.39:1AAA
Destructive4.14:1AA Large

CSS variables

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);
}