spacing-ui
Headless, accessible React UI primitives for React 18 and 19. Behavior + a11y. You bring the styles.
npm i @spacing-ui/coreWhat’s in the box
Eight primitives, zero runtime dependencies beyond React, full keyboard and ARIA support out of the box — with a design-token layer for coherent theming across your app.
- Select — combobox + listbox, type-ahead, keyboard nav
- Tooltip — delay/skip-delay, focus + hover, ARIA-described
- Dialog — modal, focus trap, scroll lock, return focus
- Tabs — automatic or manual activation, roving tabindex
- Accordion — single or multiple, collapsible, arrow nav
- Switch — controlled or uncontrolled, ARIA switch role
- Checkbox — supports
indeterminate("mixed") - RadioGroup — roving tabindex, arrow keys, horizontal or vertical
Why headless?
Styled component kits (Material UI, Chakra) lock you into their design system. Headless means you get the hard parts — keyboard handling, focus management, ARIA attributes, controlled/uncontrolled state — and you decide how it looks.
Bring Tailwind, CSS Modules, vanilla CSS, or anything else. The docs site ships a small token + keyframe layer you can lift straight into your project.
Next steps
Last updated on