Clause for shadcn/ui

Clause is a shadcn/ui theme built around a vivid deep blue primary color (#030e21) with vivid deep orange accents (#211503). The light mode uses a neutral background (#fbfcfd). Dark mode keeps the vivid deep blue primary (#030e21) on a neutral background (#010204).

Color palette

TokenLightDark
Background
#fbfcfdwhite
#010204black
Foreground
#030911black
#f8fafcghostwhite
Card
#fbfcfdwhite
#010204black
Card foreground
#030911black
#f8fafcghostwhite
Popover
#fbfcfdwhite
#010204black
Popover foreground
#030911black
#f8fafcghostwhite
Primary
#030e21black
#030e21black
Primary foreground
#639af2cornflowerblue
#639af2cornflowerblue
Secondary
#211503black
#211503black
Secondary foreground
#de9012goldenrod
#de9012goldenrod
Muted
#eae9e6linen
#191715black
Muted foreground
#565552dimgray
#adaba9darkgray
Accent
#211503black
#211503black
Accent foreground
#de9012goldenrod
#de9012goldenrod
Destructive
#771008maroon
#db1d0ffirebrick
Destructive foreground
#fabcb7lightpink
#ffffffwhite
Border
#e5e7eblavender
#1f2937darkslategray
Input
#e5e7eblavender
#1f2937darkslategray
Ring
#030e21black
#030e21black

Contrast

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

Light mode
Text on background19.49:1AAA
Text on card19.49:1AAA
Primary button6.82:1AA
Secondary button6.89:1AA
Muted text6.12:1AA
Accent6.89:1AA
Destructive6.94:1AA
Dark mode
Text on background19.81:1AAA
Text on card19.81:1AAA
Primary button6.82:1AA
Secondary button6.89:1AA
Muted text7.78:1AAA
Accent6.89:1AA
Destructive4.99:1AA

CSS variables

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

:root {
  --radius: 0.5rem;
  --background: oklch(0.991 0.002 259.936);
  --foreground: oklch(0.135 0.023 252.648);
  --muted: oklch(0.933 0.004 79.926);
  --muted-foreground: oklch(0.448 0.004 79.919);
  --popover: oklch(0.991 0.002 259.936);
  --popover-foreground: oklch(0.135 0.023 252.648);
  --card: oklch(0.991 0.002 259.936);
  --card-foreground: oklch(0.135 0.023 252.648);
  --border: oklch(0.928 0.006 264.531);
  --input: oklch(0.928 0.006 264.531);
  --primary: oklch(0.166 0.044 256.257);
  --primary-foreground: oklch(0.688 0.143 259.51);
  --secondary: oklch(0.208 0.038 78.737);
  --secondary-foreground: oklch(0.715 0.151 70.221);
  --accent: oklch(0.208 0.038 78.737);
  --accent-foreground: oklch(0.715 0.151 70.221);
  --destructive: oklch(0.367 0.138 29.61);
  --destructive-foreground: oklch(0.85 0.072 23.361);
  --ring: oklch(0.166 0.044 256.257);
  --chart-1: oklch(0.166 0.044 256.257);
  --chart-2: oklch(0.208 0.038 78.737);
  --chart-3: oklch(0.208 0.038 78.737);
  --chart-4: oklch(0.252 0.048 75.991);
  --chart-5: oklch(0.165 0.046 255.855);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.087 0.009 252.759);
  --foreground: oklch(0.983 0.003 259.937);
  --muted: oklch(0.208 0.006 79.849);
  --muted-foreground: oklch(0.742 0.003 79.926);
  --popover: oklch(0.087 0.009 252.759);
  --popover-foreground: oklch(0.983 0.003 259.937);
  --card: oklch(0.087 0.009 252.759);
  --card-foreground: oklch(0.983 0.003 259.937);
  --border: oklch(0.278 0.03 256.848);
  --input: oklch(0.278 0.03 256.848);
  --primary: oklch(0.166 0.044 256.257);
  --primary-foreground: oklch(0.688 0.143 259.51);
  --secondary: oklch(0.208 0.038 78.737);
  --secondary-foreground: oklch(0.715 0.151 70.221);
  --accent: oklch(0.208 0.038 78.737);
  --accent-foreground: oklch(0.715 0.151 70.221);
  --destructive: oklch(0.57 0.221 29.739);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.166 0.044 256.257);
  --chart-1: oklch(0.166 0.044 256.257);
  --chart-2: oklch(0.208 0.038 78.737);
  --chart-3: oklch(0.208 0.038 78.737);
  --chart-4: oklch(0.252 0.048 75.991);
  --chart-5: oklch(0.165 0.046 255.855);
}