Thin Melanite Black Green for shadcn/ui

Thin Melanite Black Green is a shadcn/ui theme built around a neutral gray primary color (#262c26) with muted light green accents (#dae2da). The light mode uses a neutral background (#f8fcf8). Dark mode keeps the neutral gray primary (#262c26) on a green-tinted background (#060f06).

Color palette

TokenLightDark
Background
#f8fcf8mintcream
#060f06black
Foreground
#020802black
#ffffffwhite
Card
#f4fbf4whitesmoke
#071307black
Card foreground
#010401black
#ffffffwhite
Popover
#f4fbf4whitesmoke
#071307black
Popover foreground
#010401black
#ffffffwhite
Primary
#262c26darkslategray
#262c26darkslategray
Primary foreground
#bec6besilver
#bec6besilver
Secondary
#dae2dagainsboro
#252d25darkslategray
Secondary foreground
#3c4e3cdarkslategray
#bcc8bcsilver
Muted
#e6efe6beige
#101910black
Muted foreground
#404040darkslategray
#bfbfbfsilver
Accent
#dae2dagainsboro
#252d25darkslategray
Accent foreground
#3c4e3cdarkslategray
#bcc8bcsilver
Destructive
#99140fdarkred
#df1d16crimson
Destructive foreground
#fcdfdfmistyrose
#ffffffwhite
Border
#edeeedwhitesmoke
#1b1d1cblack
Input
#edeeedwhitesmoke
#1b1d1cblack
Ring
#262c26darkslategray
#262c26darkslategray

Contrast

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

Light mode
Text on background19.53:1AAA
Text on card19.55:1AAA
Primary button8.19:1AAA
Secondary button6.76:1AA
Muted text8.83:1AAA
Accent6.76:1AA
Destructive6.80:1AA
Dark mode
Text on background19.49:1AAA
Text on card19.04:1AAA
Primary button8.19:1AAA
Secondary button8.20:1AAA
Muted text9.77:1AAA
Accent8.20:1AAA
Destructive4.86:1AA

CSS variables

Paste this into your globals.css to use Thin Melanite Black Green in your shadcn/ui project.

:root {
  --radius: 0.5rem;
  --background: oklch(0.987 0.008 146.473);
  --foreground: oklch(0.123 0.025 144.879);
  --muted: oklch(0.943 0.016 146.396);
  --muted-foreground: oklch(0.371 0 168.69);
  --popover: oklch(0.981 0.012 146.437);
  --popover-foreground: oklch(0.097 0.02 144.879);
  --card: oklch(0.981 0.012 146.437);
  --card-foreground: oklch(0.097 0.02 144.879);
  --border: oklch(0.947 0.001 146.53);
  --input: oklch(0.947 0.001 146.53);
  --primary: oklch(0.284 0.013 146.14);
  --primary-foreground: oklch(0.818 0.015 146.382);
  --secondary: oklch(0.904 0.015 146.4);
  --secondary-foreground: oklch(0.402 0.036 145.712);
  --accent: oklch(0.904 0.015 146.4);
  --accent-foreground: oklch(0.402 0.036 145.712);
  --destructive: oklch(0.438 0.167 28.748);
  --destructive-foreground: oklch(0.928 0.031 20.099);
  --ring: oklch(0.284 0.013 146.14);
  --chart-1: oklch(0.284 0.013 146.14);
  --chart-2: oklch(0.904 0.015 146.4);
  --chart-3: oklch(0.904 0.015 146.4);
  --chart-4: oklch(0.927 0.011 146.436);
  --chart-5: oklch(0.286 0.018 145.968);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.154 0.025 145.173);
  --foreground: oklch(1 0 180);
  --muted: oklch(0.201 0.023 145.5);
  --muted-foreground: oklch(0.805 0 169.695);
  --popover: oklch(0.169 0.029 145.002);
  --popover-foreground: oklch(1 0 180);
  --card: oklch(0.169 0.029 145.002);
  --card-foreground: oklch(1 0 180);
  --border: oklch(0.227 0.003 146.438);
  --input: oklch(0.227 0.003 146.438);
  --primary: oklch(0.284 0.013 146.14);
  --primary-foreground: oklch(0.818 0.015 146.382);
  --secondary: oklch(0.286 0.018 145.968);
  --secondary-foreground: oklch(0.82 0.021 146.314);
  --accent: oklch(0.286 0.018 145.968);
  --accent-foreground: oklch(0.82 0.021 146.314);
  --destructive: oklch(0.576 0.224 28.954);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.284 0.013 146.14);
  --chart-1: oklch(0.284 0.013 146.14);
  --chart-2: oklch(0.286 0.018 145.968);
  --chart-3: oklch(0.286 0.018 145.968);
  --chart-4: oklch(0.318 0.021 145.944);
  --chart-5: oklch(0.286 0.018 145.968);
}