Generate feedback colors (success, warning, error, and info) for shadcn/ui

Go to generator

10000+Themes for shadcn/ui

Heavy for shadcn/ui

Heavy is a shadcn/ui theme built around a vivid purple primary color (#d96efc) with vivid teal accents (#6efcd9). The light mode uses a neutral background (#ffffff). Dark mode keeps the vivid purple primary (#d96efc) on a neutral background (#030104).

Color palette

TokenLightDark
Background
#ffffffwhite
#030104black
Foreground
#0a030cblack
#ffffffwhite
Card
#fcfcfcsnow
#060208black
Card foreground
#070208black
#ffffffwhite
Popover
#fcfcfcsnow
#060208black
Popover foreground
#070208black
#ffffffwhite
Primary
#d96efcviolet
#d96efcviolet
Primary foreground
#2a0137midnightblue
#2a0137midnightblue
Secondary
#fcd96ekhaki
#fcd96ekhaki
Secondary foreground
#372a01black
#372a01black
Muted
#f1efealinen
#15140eblack
Muted foreground
#545045darkolivegreen
#bab6abdarkgray
Accent
#6efcd9aquamarine
#6efcd9aquamarine
Accent foreground
#01372adarkgreen
#01372adarkgreen
Destructive
#ba1b0dfirebrick
#ea2210red
Destructive foreground
#fffbfasnow
#ffffffwhite
Border
#e5e7eblavender
#1f2937darkslategray
Input
#e5e7eblavender
#1f2937darkslategray
Ring
#d96efcviolet
#d96efcviolet

Contrast

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

Light mode
Text on background20.36:1AAA
Text on card20.12:1AAA
Primary button6.54:1AA
Secondary button10.20:1AAA
Muted text6.99:1AA
Accent10.49:1AAA
Destructive6.28:1AA
Dark mode
Text on background20.76:1AAA
Text on card20.54:1AAA
Primary button6.54:1AA
Secondary button10.20:1AAA
Muted text9.11:1AAA
Accent10.49:1AAA
Destructive4.44:1AA Large

CSS variables

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

:root {
  --radius: 0.5rem;
  --background: oklch(1 0 180);
  --foreground: oklch(0.12 0.03 319.48);
  --muted: oklch(0.952 0.007 91.476);
  --muted-foreground: oklch(0.433 0.019 91.723);
  --popover: oklch(0.992 0 161.565);
  --popover-foreground: oklch(0.104 0.026 319.873);
  --card: oklch(0.992 0 161.565);
  --card-foreground: oklch(0.104 0.026 319.873);
  --border: oklch(0.928 0.006 264.531);
  --input: oklch(0.928 0.006 264.531);
  --primary: oklch(0.717 0.219 316.936);
  --primary-foreground: oklch(0.212 0.101 315.754);
  --secondary: oklch(0.893 0.131 91.154);
  --secondary-foreground: oklch(0.29 0.058 89.216);
  --accent: oklch(0.903 0.134 174.101);
  --accent-foreground: oklch(0.3 0.058 170.48);
  --destructive: oklch(0.506 0.193 30.092);
  --destructive-foreground: oklch(0.99 0.004 23.624);
  --ring: oklch(0.717 0.219 316.936);
  --chart-1: oklch(0.717 0.219 316.936);
  --chart-2: oklch(0.893 0.131 91.154);
  --chart-3: oklch(0.903 0.134 174.101);
  --chart-4: oklch(0.903 0.12 91.439);
  --chart-5: oklch(0.717 0.225 316.888);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.084 0.017 319.535);
  --foreground: oklch(1 0 180);
  --muted: oklch(0.19 0.011 91.777);
  --muted-foreground: oklch(0.777 0.017 91.583);
  --popover: oklch(0.106 0.022 319.535);
  --popover-foreground: oklch(1 0 180);
  --card: oklch(0.106 0.022 319.535);
  --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.717 0.219 316.936);
  --primary-foreground: oklch(0.212 0.101 315.754);
  --secondary: oklch(0.893 0.131 91.154);
  --secondary-foreground: oklch(0.29 0.058 89.216);
  --accent: oklch(0.903 0.134 174.101);
  --accent-foreground: oklch(0.3 0.058 170.48);
  --destructive: oklch(0.599 0.231 30.091);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.717 0.219 316.936);
  --chart-1: oklch(0.717 0.219 316.936);
  --chart-2: oklch(0.893 0.131 91.154);
  --chart-3: oklch(0.903 0.134 174.101);
  --chart-4: oklch(0.903 0.12 91.439);
  --chart-5: oklch(0.717 0.225 316.888);
}