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

Go to generator

10000+Themes for shadcn/ui

Squiggly for shadcn/ui

Squiggly is a shadcn/ui theme built around a violet primary color (#af80db) with green accents (#acdb80). The light mode uses a neutral background (#ffffff). Dark mode keeps the violet primary (#af80db) on a neutral background (#030203).

Color palette

TokenLightDark
Background
#ffffffwhite
#030203black
Foreground
#08040cblack
#fcfcfdwhite
Card
#fcfcfcsnow
#050407black
Card foreground
#050208black
#ffffffwhite
Popover
#fcfcfcsnow
#050407black
Popover foreground
#050208black
#ffffffwhite
Primary
#af80dbmediumpurple
#af80dbmediumpurple
Primary foreground
#150920black
#150920black
Secondary
#acdb80lightgreen
#acdb80lightgreen
Secondary foreground
#142009black
#142009black
Muted
#eaf2e3beige
#141c0dblack
Muted foreground
#61655ddimgray
#9ea29adarkgray
Accent
#acdb80lightgreen
#acdb80lightgreen
Accent foreground
#142009black
#142009black
Destructive
#862204darkred
#df3907orangered
Destructive foreground
#fdcdbfpeachpuff
#ffffffwhite
Border
#e5e7eblavender
#1f2937darkslategray
Input
#e5e7eblavender
#1f2937darkslategray
Ring
#af80dbmediumpurple
#af80dbmediumpurple

Contrast

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

Light mode
Text on background20.32:1AAA
Text on card20.17:1AAA
Primary button6.33:1AA
Secondary button10.64:1AAA
Muted text5.20:1AA
Accent10.64:1AAA
Destructive6.54:1AA
Dark mode
Text on background20.23:1AAA
Text on card20.49:1AAA
Primary button6.33:1AA
Secondary button10.64:1AAA
Muted text6.72:1AA
Accent10.64:1AAA
Destructive4.45:1AA Large

CSS variables

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

:root {
  --radius: 0.5rem;
  --background: oklch(1 0 180);
  --foreground: oklch(0.118 0.025 310.467);
  --muted: oklch(0.952 0.022 129.375);
  --muted-foreground: oklch(0.5 0.013 129.404);
  --popover: oklch(0.992 0 161.565);
  --popover-foreground: oklch(0.103 0.021 310.694);
  --card: oklch(0.992 0 161.565);
  --card-foreground: oklch(0.103 0.021 310.694);
  --border: oklch(0.928 0.006 264.531);
  --input: oklch(0.928 0.006 264.531);
  --primary: oklch(0.681 0.139 306.867);
  --primary-foreground: oklch(0.171 0.048 305.847);
  --secondary: oklch(0.837 0.129 131.018);
  --secondary-foreground: oklch(0.225 0.044 131.694);
  --accent: oklch(0.837 0.129 131.018);
  --accent-foreground: oklch(0.225 0.044 131.694);
  --destructive: oklch(0.412 0.139 35.452);
  --destructive-foreground: oklch(0.887 0.058 37.592);
  --ring: oklch(0.681 0.139 306.867);
  --chart-1: oklch(0.681 0.139 306.867);
  --chart-2: oklch(0.837 0.129 131.018);
  --chart-3: oklch(0.837 0.129 131.018);
  --chart-4: oklch(0.852 0.118 130.774);
  --chart-5: oklch(0.678 0.146 306.722);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.086 0.009 309.954);
  --foreground: oklch(0.992 0.001 309.116);
  --muted: oklch(0.214 0.031 130.874);
  --muted-foreground: oklch(0.707 0.012 129.306);
  --popover: oklch(0.109 0.012 309.954);
  --popover-foreground: oklch(1 0 180);
  --card: oklch(0.109 0.012 309.954);
  --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.681 0.139 306.867);
  --primary-foreground: oklch(0.171 0.048 305.847);
  --secondary: oklch(0.837 0.129 131.018);
  --secondary-foreground: oklch(0.225 0.044 131.694);
  --accent: oklch(0.837 0.129 131.018);
  --accent-foreground: oklch(0.225 0.044 131.694);
  --destructive: oklch(0.594 0.208 34.528);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.681 0.139 306.867);
  --chart-1: oklch(0.681 0.139 306.867);
  --chart-2: oklch(0.837 0.129 131.018);
  --chart-3: oklch(0.837 0.129 131.018);
  --chart-4: oklch(0.852 0.118 130.774);
  --chart-5: oklch(0.678 0.146 306.722);
}