Zero
Headless, accessible compound components that render a stable, machine-readable anatomy and no styling — and design systems as pure data, compiled to plain layered CSS. Swap the whole look of an app with one import; generate a new one against the published manifest.
Unstyled, by contract
Every part renders data-scope / data-part / data-state and nothing else. No classes, no inline styles — the anatomy is a machine-readable contract a stylesheet selects on.
One two-way model prop
model={() => state.open} binds a signal property both ways. No value / defaultValue / onValueChange triplets — a named model per extra piece of state when a component has more than one.
Native platform first
<dialog> and the top layer instead of a Portal, the popover attribute, <details> disclosure, real form inputs that post before hydration. The platform does the work; zero adds the anatomy.
A design system is data
Typed tokens and per-part recipes, compiled by @sigx/zero-kit into plain layered CSS. Swap the whole look of an app by swapping one import; keep the components.
Generatable, and validated
The anatomy manifest ships as JSON with ready-made selectors, so a design system can be generated against it — and sigx zero:validate checks token completeness, WCAG contrast and state coverage before it ships.
Typed to the design system
One import of a design system’s generated /register module narrows every color, size and variant prop to exactly what its compiled CSS answers to. Or use its ./components module for vendor-named props.
