Goodbye for shadcn/ui

Goodbye is a shadcn/ui theme built around a blue primary color (#3571b1) with green accents (#71b135). The light mode uses a neutral background (#ffffff). Dark mode keeps the blue primary (#3571b1) on a blue-tinted background (#04080c).

Color palette

TokenLightDark
Background
#ffffffwhite
#04080cblack
Foreground
#03080cblack
#ffffffwhite
Card
#ffffffwhite
#04080cblack
Card foreground
#03080cblack
#ffffffwhite
Popover
#ffffffwhite
#04080cblack
Popover foreground
#03080cblack
#ffffffwhite
Primary
#3571b1steelblue
#3571b1steelblue
Primary foreground
#ffffffwhite
#ffffffwhite
Secondary
#b13571mediumvioletred
#b13571mediumvioletred
Secondary foreground
#ffffffwhite
#ffffffwhite
Muted
#f2e9edlinen
#160d12black
Muted foreground
#675b61dimgray
#a4989edarkgray
Accent
#71b135olivedrab
#71b135olivedrab
Accent foreground
#0d1406black
#0d1406black
Destructive
#8b2304darkred
#f95624tomato
Destructive foreground
#fdd1c3peachpuff
#000000black
Border
#e5e7eblavender
#1f2937darkslategray
Input
#e5e7eblavender
#1f2937darkslategray
Ring
#3571b1steelblue
#3571b1steelblue

Contrast

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

Light mode
Text on background20.11:1AAA
Text on card20.11:1AAA
Primary button5.08:1AA
Secondary button5.82:1AA
Muted text5.41:1AA
Accent7.15:1AAA
Destructive6.42:1AA
Dark mode
Text on background20.14:1AAA
Text on card20.14:1AAA
Primary button5.08:1AA
Secondary button5.82:1AA
Muted text6.86:1AA
Accent7.15:1AAA
Destructive6.39:1AA

CSS variables

Paste this into your globals.css to use Goodbye in your shadcn/ui project.

:root {
  --radius: 0.5rem;
  --background: oklch(1 0 180);
  --foreground: oklch(0.128 0.015 241.974);
  --muted: oklch(0.941 0.012 346.343);
  --muted-foreground: oklch(0.485 0.017 346.941);
  --popover: oklch(1 0 180);
  --popover-foreground: oklch(0.128 0.015 241.974);
  --card: oklch(1 0 180);
  --card-foreground: oklch(0.128 0.015 241.974);
  --border: oklch(0.928 0.006 264.531);
  --input: oklch(0.928 0.006 264.531);
  --primary: oklch(0.539 0.118 252.22);
  --primary-foreground: oklch(1 0 180);
  --secondary: oklch(0.529 0.169 354.832);
  --secondary-foreground: oklch(1 0 180);
  --accent: oklch(0.692 0.168 132.94);
  --accent-foreground: oklch(0.178 0.03 130.429);
  --destructive: oklch(0.423 0.144 35.31);
  --destructive-foreground: oklch(0.895 0.054 37.592);
  --ring: oklch(0.539 0.118 252.22);
  --chart-1: oklch(0.539 0.118 252.22);
  --chart-2: oklch(0.529 0.169 354.832);
  --chart-3: oklch(0.692 0.168 132.94);
  --chart-4: oklch(0.554 0.178 354.898);
  --chart-5: oklch(0.539 0.124 252.458);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.128 0.013 242.762);
  --foreground: oklch(1 0 180);
  --muted: oklch(0.175 0.018 348.586);
  --muted-foreground: oklch(0.692 0.016 346.613);
  --popover: oklch(0.128 0.013 242.762);
  --popover-foreground: oklch(1 0 180);
  --card: oklch(0.128 0.013 242.762);
  --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.539 0.118 252.22);
  --primary-foreground: oklch(1 0 180);
  --secondary: oklch(0.529 0.169 354.832);
  --secondary-foreground: oklch(1 0 180);
  --accent: oklch(0.692 0.168 132.94);
  --accent-foreground: oklch(0.178 0.03 130.429);
  --destructive: oklch(0.669 0.208 36.344);
  --destructive-foreground: oklch(0 0 0);
  --ring: oklch(0.539 0.118 252.22);
  --chart-1: oklch(0.539 0.118 252.22);
  --chart-2: oklch(0.529 0.169 354.832);
  --chart-3: oklch(0.692 0.168 132.94);
  --chart-4: oklch(0.554 0.178 354.898);
  --chart-5: oklch(0.539 0.124 252.458);
}