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

Go to generator

10000+Themes for shadcn/ui

Productive for shadcn/ui

Productive is a shadcn/ui theme built around a vivid red primary color (#f60e48) with vivid blue accents (#0e48f6). The light mode uses a neutral background (#fefbfc). Dark mode keeps the vivid red primary (#f60e48) on a neutral background (#000000).

Color palette

TokenLightDark
Background
#fefbfcsnow
#000000black
Foreground
#0c0406black
#fdfcfcsnow
Card
#fdf7f8snow
#030303black
Card foreground
#080204black
#ffffffwhite
Popover
#fefbfcsnow
#000000black
Popover foreground
#0c0406black
#fdfcfcsnow
Primary
#f60e48crimson
#f60e48crimson
Primary foreground
#ffffffwhite
#ffffffwhite
Secondary
#48f60elawngreen
#48f60elawngreen
Secondary foreground
#0f3602darkgreen
#0f3602darkgreen
Muted
#d6ded3gainsboro
#242c21darkslategray
Muted foreground
#4f504edarkslategray
#b0b1afdarkgray
Accent
#0e48f6royalblue
#0e48f6royalblue
Accent foreground
#ffffffwhite
#ffffffwhite
Destructive
#a5180dfirebrick
#ee3c2fcrimson
Destructive foreground
#fde9e7linen
#ffffffwhite
Border
#e5e7eblavender
#1f2937darkslategray
Input
#e5e7eblavender
#1f2937darkslategray
Ring
#f60e48crimson
#f60e48crimson

Contrast

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

Light mode
Text on background19.70:1AAA
Text on card19.42:1AAA
Primary button4.13:1AA Large
Secondary button9.35:1AAA
Muted text5.89:1AA
Accent6.40:1AA
Destructive6.57:1AA
Dark mode
Text on background20.50:1AAA
Text on card20.67:1AAA
Primary button4.13:1AA Large
Secondary button9.35:1AAA
Muted text6.72:1AA
Accent6.40:1AA
Destructive3.93:1AA Large

CSS variables

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

:root {
  --radius: 0.5rem;
  --background: oklch(0.99 0.003 359.96);
  --foreground: oklch(0.122 0.019 359.944);
  --muted: oklch(0.892 0.017 137.795);
  --muted-foreground: oklch(0.429 0.003 137.775);
  --popover: oklch(0.99 0.003 359.96);
  --popover-foreground: oklch(0.122 0.019 359.944);
  --card: oklch(0.981 0.007 0.056);
  --card-foreground: oklch(0.106 0.017 359.797);
  --border: oklch(0.928 0.006 264.531);
  --input: oklch(0.928 0.006 264.531);
  --primary: oklch(0.62 0.245 18.635);
  --primary-foreground: oklch(1 0 180);
  --secondary: oklch(0.852 0.275 140.57);
  --secondary-foreground: oklch(0.294 0.09 139.15);
  --accent: oklch(0.505 0.262 264.088);
  --accent-foreground: oklch(1 0 180);
  --destructive: oklch(0.464 0.176 29.656);
  --destructive-foreground: oklch(0.949 0.022 22.489);
  --ring: oklch(0.62 0.245 18.635);
  --chart-1: oklch(0.62 0.245 18.635);
  --chart-2: oklch(0.852 0.275 140.57);
  --chart-3: oklch(0.505 0.262 264.088);
  --chart-4: oklch(0.856 0.269 140.14);
  --chart-5: oklch(0.626 0.248 19.305);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0 0 0);
  --foreground: oklch(0.992 0.001 359.908);
  --muted: oklch(0.28 0.022 137.914);
  --muted-foreground: oklch(0.758 0.003 137.769);
  --popover: oklch(0 0 0);
  --popover-foreground: oklch(0.992 0.001 359.908);
  --card: oklch(0.092 0 180);
  --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.62 0.245 18.635);
  --primary-foreground: oklch(1 0 180);
  --secondary: oklch(0.852 0.275 140.57);
  --secondary-foreground: oklch(0.294 0.09 139.15);
  --accent: oklch(0.505 0.262 264.088);
  --accent-foreground: oklch(1 0 180);
  --destructive: oklch(0.626 0.216 28.962);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.62 0.245 18.635);
  --chart-1: oklch(0.62 0.245 18.635);
  --chart-2: oklch(0.852 0.275 140.57);
  --chart-3: oklch(0.505 0.262 264.088);
  --chart-4: oklch(0.856 0.269 140.14);
  --chart-5: oklch(0.626 0.248 19.305);
}