Components, crafted with care.
Components your LLM can't easily get wrong. shadcn-style parts on Base UI and StyleX, with no className or style, so an off-brand choice is hard to even write.
Docs · Installation · Components · For agents
An LLM writes p-5, bg-zinc-100 and text-[#3b82f6] fluently. It passes lint, renders fine and sits slightly off your system. A rule in CLAUDE.md makes that less likely, not impossible.
So Constella moves the rules out of prose and into types:
- No
classNameorstyle. A part can't be restyled from outside. sxtakes tokens. Color, space, radius, shadow, type size, layer and motion come from named roles, never raw values.- Variants are closed lists, not free strings.
Two teams got there first. Polar: "make it hard to express an off-brand decision in code in the first place" (Orbit). Linear: "the endless configurability became a liability" (Styling Linear for the future). Constella grew out of studying both.