Generate feedback colors (success, warning, error, and info) for shadcn/ui
Go to generatorUsed by 4k+ developers. Want me to build your product next? Let's work together.
Soap is a shadcn/ui theme built around a vivid deep pink primary color (#841058) with vivid deep blue accents (#105884). The light mode uses a neutral background (#fdf7fb). Dark mode keeps the vivid deep pink primary (#841058) on a pink-tinted background (#0b0409).
| Token | Light | Dark |
|---|---|---|
| Background | #fdf7fbsnow | #0b0409black |
| Foreground | #11030cblack | #fbf9fasnow |
| Card | #fcf3f8lavenderblush | #0f050bblack |
| Card foreground | #0d0309black | #fdfcfdwhite |
| Popover | #fdf7fbsnow | #0b0409black |
| Popover foreground | #11030cblack | #fbf9fasnow |
| Primary | #841058purple | #841058purple |
| Primary foreground | #f9cde8mistyrose | #f9cde8mistyrose |
| Secondary | #588410olivedrab | #588410olivedrab |
| Secondary foreground | #ffffffwhite | #ffffffwhite |
| Muted | #e5ebdbgainsboro | #1e2414black |
| Muted foreground | #65685edimgray | #9da197darkgray |
| Accent | #105884teal | #105884teal |
| Accent foreground | #cde8f9lavender | #cde8f9lavender |
| Destructive | #b81b0afirebrick | #f44734tomato |
| Destructive foreground | #fef6f5lavenderblush | #ffffffwhite |
| Border | #e5e7eblavender | #1f2937darkslategray |
| Input | #e5e7eblavender | #1f2937darkslategray |
| Ring | #841058purple | #841058purple |
WCAG 2 contrast ratios between each background and its foreground color.
| Text on background | 19.04:1 | AAA |
| Text on card | 18.65:1 | AAA |
| Primary button | 6.79:1 | AA |
| Secondary button | 4.43:1 | AA Large |
| Muted text | 4.67:1 | AA |
| Accent | 6.02:1 | AA |
| Destructive | 6.15:1 | AA |
| Text on background | 19.34:1 | AAA |
| Text on card | 19.57:1 | AAA |
| Primary button | 6.79:1 | AA |
| Secondary button | 4.43:1 | AA Large |
| Muted text | 6.03:1 | AA |
| Accent | 6.02:1 | AA |
| Destructive | 3.61:1 | AA Large |
Paste this into your globals.css to use Soap in your shadcn/ui project.
:root {
--radius: 0.5rem;
--background: oklch(0.981 0.008 339.652);
--foreground: oklch(0.134 0.034 341.998);
--muted: oklch(0.932 0.023 124.014);
--muted-foreground: oklch(0.512 0.016 124.107);
--popover: oklch(0.981 0.008 339.652);
--popover-foreground: oklch(0.134 0.034 341.998);
--card: oklch(0.972 0.012 339.746);
--card-foreground: oklch(0.121 0.03 340.234);
--border: oklch(0.928 0.006 264.531);
--input: oklch(0.928 0.006 264.531);
--primary: oklch(0.413 0.161 349.673);
--primary-foreground: oklch(0.894 0.061 340.913);
--secondary: oklch(0.561 0.145 129.903);
--secondary-foreground: oklch(1 0 180);
--accent: oklch(0.441 0.099 242.748);
--accent-foreground: oklch(0.917 0.037 235.131);
--destructive: oklch(0.502 0.192 30.471);
--destructive-foreground: oklch(0.98 0.009 25.066);
--ring: oklch(0.413 0.161 349.673);
--chart-1: oklch(0.413 0.161 349.673);
--chart-2: oklch(0.561 0.145 129.903);
--chart-3: oklch(0.441 0.099 242.748);
--chart-4: oklch(0.602 0.156 129.994);
--chart-5: oklch(0.416 0.164 350.076);
}
.dark {
--radius: 0.5rem;
--background: oklch(0.124 0.021 339.831);
--foreground: oklch(0.984 0.002 339.515);
--muted: oklch(0.25 0.031 125.644);
--muted-foreground: oklch(0.701 0.015 123.955);
--popover: oklch(0.124 0.021 339.831);
--popover-foreground: oklch(0.984 0.002 339.515);
--card: oklch(0.137 0.024 341.425);
--card-foreground: oklch(0.992 0.001 339.492);
--border: oklch(0.278 0.03 256.848);
--input: oklch(0.278 0.03 256.848);
--primary: oklch(0.413 0.161 349.673);
--primary-foreground: oklch(0.894 0.061 340.913);
--secondary: oklch(0.561 0.145 129.903);
--secondary-foreground: oklch(1 0 180);
--accent: oklch(0.441 0.099 242.748);
--accent-foreground: oklch(0.917 0.037 235.131);
--destructive: oklch(0.646 0.213 30.134);
--destructive-foreground: oklch(1 0 180);
--ring: oklch(0.413 0.161 349.673);
--chart-1: oklch(0.413 0.161 349.673);
--chart-2: oklch(0.561 0.145 129.903);
--chart-3: oklch(0.441 0.099 242.748);
--chart-4: oklch(0.602 0.156 129.994);
--chart-5: oklch(0.416 0.164 350.076);
}