Why teams choose it

A small surface with a strong contract.

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.

01 / Token contract

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.

02 / API shape

Structure where structure is real

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.

03 / Accessibility

A11Y is preserved in the wrapper

ARIA wiring, keyboard behavior, focus management, and reduced-motion expectations come from Spar primitives and remain intact in the React layer.

04 / TypeScript

Types match the docs

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.

05 / React baseline

One modern support target

The library targets React 19 on purpose. Peer dependencies, examples, and documentation all align around the same baseline instead of splitting across legacy branches.

06 / Theming

Customization stays additive

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.