Theme generator
One brand color, every component.
Pick a brand, neutrals and a shape, or import a shadcn theme. Every token is derived with AA contrast in light and dark, and the preview is built from the real library.
Orders
28 orders this week, 12 need attention.
Contrast
All 98 pairs pass
Text pairs need 4.5:1 (WCAG AA), the focus ring 3:1, in light and dark.
- brand-foregroundon brand4.56AA
- brand-soft-foregroundon card4.62AA
- muted-foregroundon card4.63AA
- warning-soft-foregroundon card4.63AA
A theme generator that speaks shadcn
The Wingo UI theme generator turns one brand color into a full set of Tailwind CSS v4 design tokens: surfaces, text levels, brand and status tones, the focus ring, chart colors, radius and font, in light and dark. Already have a shadcn/ui or tweakcn theme? Import it: paste its CSS variables, and the generator maps them onto Wingo UI tokens, checks the contrast and shows the result on real components, ready to export as globals.css, a UIProvider config or theme.json.
FAQ
Can I import a shadcn theme?
Yes. Click Import (or open /theme?import=1) and paste the :root and .dark blocks from your globals.css. The importer reads --primary, --background, --foreground, --card, --popover, --muted, --border, --ring, --destructive, --radius and --font-sans, maps them onto the brand, neutral, status, radius and font settings, and updates the preview while you paste.
Does it work with tweakcn themes?
Yes. Paste the CSS that tweakcn copies, or the registry item JSON its theme links serve (the shadcn registry format with cssVars). Values from cssVars.theme, such as the radius and fonts, are read too.
Which color formats can I paste?
The bare HSL triplets of shadcn v3 (222.2 84% 4.9%), hsl(), rgb(), oklch() as written by shadcn v4 and Tailwind CSS v4, oklab() and hex. Alpha is ignored, and var() references to other variables in the same paste are resolved.
Why do some colors change after the import?
The generator keeps one brand color, one neutral family and four status colors, then derives every foreground, soft tone, focus ring and chart color again so each pair passes WCAG AA in light and dark. A gray --primary becomes the neutral solid fill, and --radius maps to the nearest radius step by the corner shadcn draws on a button.
What do I get when I export?
A globals.css block with :root, .dark and @theme inline, a ui.config.tsx with the UIProvider defaults, and a theme.json. Copy or download them; the generator runs in your browser and needs no account.