Skip to Content
Introduction

spacing-ui

Headless, accessible React UI primitives for React 18 and 19. Behavior + a11y. You bring the styles.

npm i @spacing-ui/core

What’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