Everything speaks token
Components never name a colour, a radius or a shadow — skins do. That is the whole trick.
One contract, fifty voices
Semantic roles like surface, text and primary are the only vocabulary a component is allowed to read. Skins rewrite the roles, not the rules.
Works with JavaScript off
Every visual piece is a stylesheet. The runtime only adds behaviour: dialogs, tabs, toasts, tables. Delete it and the page still looks right.
Base plus one skin
Ship the core and a single skin, gzipped, and you are done. The full fifty-skin bundle exists for playgrounds, not payloads.
Pricing
Same component tree on every tier — only the tokens differ. Sound familiar?
Hobby
For side projects and quick prototypes.
- All 50 skins
- Unlimited personal projects
- Community support
- Custom skin audits
Studio Most popular
For teams shipping real products.
- Everything in Hobby
- Contrast-audited dark palettes
- Priority issues on GitHub
- TypeScript declarations
Agency
For client work at volume.
- Everything in Studio
- Unlimited client seats
- Custom skin commissioning
- White-glove migration
Word of mouth
We reskinned an entire dashboard suite from neo-brutalist to clinical for a hospital client. One attribute. The design review took longer than the migration.
The token contract is stricter than my own design system, and that is exactly why I trust it. Sixty components, zero hardcoded colours. Obsessive in the good way.
FAQ
Do skins change layout or only looks?
Looks only. Spacing scales, type and motion are tier-one primitives every skin inherits, so your layout survives the switch intact.
Can I ship just one skin?
Yes. Load the base bundle plus a single skin file — roughly 32 KB gzipped all together.
How is dark mode handled?
Every skin ships a light and a dark palette, both contrast-audited against WCAG targets. Toggle with one attribute or one function call.
What if I disagree with a knob?
Every component reads tier-three knobs you can override — button radius, card shadow, badge transform. Restyle without forking.