Glorious for shadcn/ui

Glorious is a shadcn/ui theme built around a muted light indigo primary color (#dcdbe6) with muted light indigo accents (#e8e8ed). The light mode uses a neutral background (#fcfcfd). Dark mode keeps the muted light indigo primary (#dcdbe6) on a neutral background (#020104).

Color palette

TokenLightDark
Background
#fcfcfdwhite
#020104black
Foreground
#020109black
#f6f5f9whitesmoke
Card
#f8f8fcghostwhite
#030307black
Card foreground
#010105black
#f9f9fbghostwhite
Popover
#fcfcfdwhite
#020104black
Popover foreground
#020109black
#f6f5f9whitesmoke
Primary
#dcdbe6gainsboro
#dcdbe6gainsboro
Primary foreground
#3c3a55darkslategray
#3c3a55darkslategray
Secondary
#e8e8edlavender
#2c2b36darkslategray
Secondary foreground
#49475cdarkslategray
#c4c3d0silver
Muted
#d6d4ecgainsboro
#15132bblack
Muted foreground
#52515ddimgray
#a3a2aedarkgray
Accent
#e8e8edlavender
#2c2b36darkslategray
Accent foreground
#49475cdarkslategray
#c4c3d0silver
Destructive
#953809saddlebrown
#f27131tomato
Destructive foreground
#ffffffwhite
#000000black
Border
#e5e7eblavender
#1f2937darkslategray
Input
#e5e7eblavender
#1f2937darkslategray
Ring
#dcdbe6gainsboro
#dcdbe6gainsboro

Contrast

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

Light mode
Text on background20.20:1AAA
Text on card19.70:1AAA
Primary button7.91:1AAA
Secondary button7.35:1AAA
Muted text5.40:1AA
Accent7.35:1AAA
Destructive7.40:1AAA
Dark mode
Text on background19.15:1AAA
Text on card19.57:1AAA
Primary button7.91:1AAA
Secondary button8.04:1AAA
Muted text7.21:1AAA
Accent8.04:1AAA
Destructive7.18:1AAA

CSS variables

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

:root {
  --radius: 0.5rem;
  --background: oklch(0.99 0.002 290.203);
  --foreground: oklch(0.085 0.031 284.657);
  --muted: oklch(0.88 0.033 289.538);
  --muted-foreground: oklch(0.439 0.02 289.382);
  --popover: oklch(0.99 0.002 290.203);
  --popover-foreground: oklch(0.085 0.031 284.657);
  --card: oklch(0.981 0.005 290.159);
  --card-foreground: oklch(0.068 0.025 284.657);
  --border: oklch(0.928 0.006 264.531);
  --input: oklch(0.928 0.006 264.531);
  --primary: oklch(0.894 0.016 289.912);
  --primary-foreground: oklch(0.362 0.046 287.654);
  --secondary: oklch(0.933 0.007 290.103);
  --secondary-foreground: oklch(0.408 0.035 288.547);
  --accent: oklch(0.933 0.007 290.103);
  --accent-foreground: oklch(0.408 0.035 288.547);
  --destructive: oklch(0.465 0.135 41.723);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.894 0.016 289.912);
  --chart-1: oklch(0.894 0.016 289.912);
  --chart-2: oklch(0.933 0.007 290.103);
  --chart-3: oklch(0.933 0.007 290.103);
  --chart-4: oklch(0.958 0.004 290.16);
  --chart-5: oklch(0.892 0.018 289.858);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.081 0.012 288.268);
  --foreground: oklch(0.973 0.005 290.148);
  --muted: oklch(0.202 0.047 285.205);
  --muted-foreground: oklch(0.718 0.017 289.785);
  --popover: oklch(0.081 0.012 288.268);
  --popover-foreground: oklch(0.973 0.005 290.148);
  --card: oklch(0.102 0.015 288.268);
  --card-foreground: oklch(0.982 0.003 290.182);
  --border: oklch(0.278 0.03 256.848);
  --input: oklch(0.278 0.03 256.848);
  --primary: oklch(0.894 0.016 289.912);
  --primary-foreground: oklch(0.362 0.046 287.654);
  --secondary: oklch(0.294 0.021 288.853);
  --secondary-foreground: oklch(0.822 0.018 289.835);
  --accent: oklch(0.294 0.021 288.853);
  --accent-foreground: oklch(0.822 0.018 289.835);
  --destructive: oklch(0.693 0.175 44.163);
  --destructive-foreground: oklch(0 0 0);
  --ring: oklch(0.894 0.016 289.912);
  --chart-1: oklch(0.894 0.016 289.912);
  --chart-2: oklch(0.294 0.021 288.853);
  --chart-3: oklch(0.294 0.021 288.853);
  --chart-4: oklch(0.321 0.024 288.804);
  --chart-5: oklch(0.892 0.018 289.858);
}