Design tokens stay in charge
Color, spacing, radius, and elevation all resolve from @takeoff-design/tokens. Rebrand and theme at the token layer instead of patching components one by one.
The promise is not “everything for everyone.” It is a narrower, more durable guarantee: React 19 only, compound composition, token-driven styling, and customization that stays additive over time.
Color, spacing, radius, and elevation all resolve from @takeoff-design/tokens. Rebrand and theme at the token layer instead of patching components one by one.
Roots own state, named parts own content and layout. That keeps the surface close to the rendered anatomy and avoids convenience props that drift over time.
ARIA wiring, keyboard behavior, focus management, and reduced-motion expectations come from Spar primitives and remain intact in the React layer.
Props, slot names, and documented data-* hooks are typed from the same public surface these docs describe, so autocomplete reflects the contract instead of tribal knowledge.
The library targets React 19 on purpose. Peer dependencies, examples, and documentation all align around the same baseline instead of splitting across legacy branches.
Components read CSS custom properties and expose classNames and slotProps where customization is expected. You extend the surface without replacing the owner nodes it depends on.