Components
Interactive, live examples for every component live in the Histoire story build, linked below — this page intentionally doesn't duplicate those examples. Each entry links to the component's stories (light/dark, states, responsive behavior) and, where relevant, the sub-components it's used alongside.
Button
Primary/secondary/ghost/destructive variants, sizes, loading and icon-only states.
Input
Text/email/password/number, prefix/suffix slots, invalid + error message state.
NumberField
Text input + role=spinbutton (not native <input type=number> — supports locale formatting and aria-valuetext), increment/decrement buttons with press-and-hold repeat, locale-aware parsing.
Checkbox
Includes indeterminate state.
Switch
A boolean toggle styled as a switch, not a checkbox.
Select
Native <select> wrapped for consistent styling and error state.
Textarea
Multi-line text input with the same invalid/error pattern as Input.
Dialog
Modal dialog with focus trapping, Escape-to-close, and alertdialog support.
Sheet
Edge-anchored Dialog variant (top/right/bottom/left) that slides in, sharing Dialog's focus-trap/dismiss/inert-background composables and WAI-ARIA dialog pattern. Respects prefers-reduced-motion. Does not implement gesture/swipe-to-dismiss or drag snap-points — a deliberate v1 scope cut.
Popover
Anchored floating panel (built on Floating UI) with dismiss-on-outside-click/Escape.
PopoverTriggerPopoverContentTooltip
Hover/focus-triggered hint text; dismissible with Escape.
DropdownMenu
Anchored menu with roving arrow-key navigation, Home/End, and type-ahead. DropdownMenuContextTrigger adds a context-menu mode — a renderless scoped-slot trigger that anchors the same menu to pointer coordinates instead of a trigger element, opened by right-click or a ~700ms touch long-press, reusing DropdownMenu's existing keyboard/typeahead/dismiss logic unchanged. Submenus and checkbox/radio menu items aren't supported yet — a pre-existing DropdownMenu gap, not new scope here.
DropdownMenuTriggerDropdownMenuContentDropdownMenuItemDropdownMenuSeparatorDropdownMenuContextTriggerSeparator
Horizontal or vertical dividing rule; role=separator by default, or aria-hidden via a decorative prop. Also used internally by DropdownMenuSeparator.
DataTable
Sorting, client/server pagination, row selection (single/multiple), global + per-column filtering, container-query card collapse.
Pagination
Standalone page navigation with windowed ellipsis and an optional page-size picker; also used internally by DataTable.
Accordion
Single- or multiple-open mode, configurable heading level.
AccordionItemAccordionHeaderAccordionContentCollapsible
APG Disclosure pattern — a single trigger and panel, no heading level and no region/group semantics (a lone Accordion item without the group context).
Card
Themeable container with header/body/footer slots; optional real <button>/<a> interactive form.
Grid
Responsive column layout via container queries or viewport breakpoints; composes with Card.
Skeleton
Purely presentational loading placeholder (pulse or shimmer), aria-hidden, respects prefers-reduced-motion. Consumer owns loading announcements.
Badge
Decorative by default; pass a label for badges conveying a count or status that matters functionally.
ProgressBar
Determinate and indeterminate modes, role=progressbar with correct aria-value* attributes.
Avatar
Image with graceful fallback to initials or an icon on load failure or when no image is given.
Breadcrumb
Container-query-driven collapse of intermediate items into a menu once the trail is too long.
Splitter
Draggable and keyboard-resizable panes (2+), horizontal or vertical, with per-pane min/max and v-model persisted sizes.
SplitterPaneSlider
Draggable and keyboard-adjustable single-value slider, horizontal or vertical, with locale-aware aria-valuetext. Shares its pointer/keyboard drag plumbing with Splitter via useDragValue.
Combobox
Filterable, keyboard-navigable combobox (APG 1.2 aria-activedescendant pattern) — the text input keeps real DOM focus throughout. Single- or multi-select via one `multiple` prop; multi-select renders removable tags (Backspace-on-empty removes the last one). Supports async loading/empty/error states (the consumer owns fetching/debouncing; Combobox just consumes the resulting state). See design-docs/combobox.md.
ComboboxInputComboboxContentComboboxOptionCommandPalette
Modal command menu (⌘K-style) — a search input plus a filterable action list, sharing its aria-activedescendant listbox machinery (useActiveDescendant) and dismiss/focus-trap/inert-background composables with Combobox and Dialog respectively, rather than composing either directly. Each item is its own action (@select), not a persisted value.
CommandPaletteItemCalendar
Standalone inline WAI-ARIA grid calendar — single-date or range selection, full keyboard support, locale-aware. DatePicker composes this internally for its popover.
DatePicker
Single-date or range selection via a WAI-ARIA grid dialog, full keyboard support, locale-aware (Intl-based, no date dependency), and a typed-text-input companion.
TreeTable
role=treegrid nested data table — expand/collapse, per-sibling-group sort, ancestor-preserving filter, roving-tabindex keyboard grid, and card-collapse at narrow widths.
This completes the initial component list from CLAUDE.md.