Resources
Changelog
Entries name the components and tokens they affect, so you can tell whether a release concerns you without reading a diff.
Versioning
The system follows semantic versioning. A major release removes or renames something; a minor adds; a patch fixes. Deprecations ship one minor release ahead of removal at the earliest, and always with a migration path.
2.4.0Permalink to this section
Command menu, the table toolbar pattern, and a stricter reduced-motion implementation.
- Command menu with ⌘K / Ctrl+K, grouped results and locally stored recent pages.
- Table toolbar pattern, covering selection mode and bulk actions.
- EmptyState component, with guidance for the four kinds of empty screen.
- Reduced motion now removes transforms outright rather than shortening durations. Opacity and colour transitions are preserved.
- Tooltip delay raised from 200ms to 320ms, so passing over a toolbar no longer flashes tips.
- Select trigger no longer grows past its column when an option label is long; it truncates instead.
- Dialog footer buttons stack in the correct order below 640px, with the confirming action on top.
2.3.0Permalink to this section
Component token layer, and the beginning of dark-theme groundwork.
- Component token layer, with documented override points for Button, Input, Card, Dialog and Tooltip.
- --surface-sunken semantic token for inset regions.
- All components migrated from semantic tokens to their component tokens where one exists.
- Tailwind theme moved to @theme inline, so utilities resolve variables at the point of use.
- --accent renamed to --interactive-accent. The old name still resolves and will be removed in 3.0.
2.2.0Permalink to this section
Dropdown Menu, Tooltip and the icon-button accessibility contract.
- Dropdown Menu, with checkbox items, radio groups, submenus and shortcut hints.
- Tooltip, opening on focus as well as hover and dismissible with Escape.
- IconButton's label prop is now required at the type level. Icon-only controls cannot ship without an accessible name.
- Focus returns to the trigger when a dropdown is closed with Escape rather than by selection.
2.1.0Permalink to this section
Form field wiring, and the validation-timing guidance.
- FormField, which assembles the aria-describedby chain from the label, description and message.
- Textarea character counter, announced only in the last 10% of the limit.
- Input, Textarea and Select share one focus treatment: a brand border plus a 3px ring.
- Read-only inputs stay focusable, so their value can be read and copied by keyboard.
2.0.0Permalink to this section
The three-layer token architecture. A breaking release, with a codemod.
- Primitive, semantic and component token layers, published as CSS custom properties.
- Motion tokens as both CSS custom properties and TypeScript constants.
- Every component now reads semantic tokens. No component references a colour value directly.
- The flat colour palette export. Replaced by the token layers; a codemod is provided.
- The theme prop on Button and Card. Use component token overrides instead.
1.4.0Permalink to this section
Tabs, Switch and Avatar.
- Tabs, implementing the WAI-ARIA tabs pattern with roving focus.
- Switch, for settings that commit immediately.
- Avatar and AvatarGroup, with an initials fallback and presence indicators.
- Badge gained the dot prop, always alongside a text label.