Releases

Every published version of @human-kit/ui, newest first — generated from the changelog.

  1. 1.0.0-beta.0

    • Promote the library to its first public beta, exiting the alpha prerelease line.

  2. 1.0.0-alpha.22

    • Add the new Toggle primitive with a single Root part.

      • support controlled and uncontrolled selected state with selected, defaultSelected, and onChange
      • expose native button semantics with aria-pressed, disabled behavior, and keyboard activation
      • add styling hooks for selected, unselected, pressed, hover, focus, and focus-visible states
      • expose the ./toggle package entry and add docs/demo coverage
      #55
    • Add a filter prop to ComboBox.Root so consumers can customize local option filtering or pass null to disable it for externally filtered lists.

      #55
    • Add the new Tabs primitive with Root, List, Tab, Indicator, and Panel parts.

      • support controlled and uncontrolled selection, including null values
      • add automatic and manual keyboard activation with horizontal and vertical roving focus
      • include accessible tab and tabpanel wiring, SSR-ready default selection, disabled tabs, and indicator positioning hooks
      • expose the ./tabs package entry and add docs/demo coverage
      #55
    • Add an autofocus prop to Input that reliably focuses the element on mount.

      Native autofocus only focuses the first autofocus element inserted per document, so it silently fails for inputs that mount inside an already-open popover/dialog or that remount as a view swaps. The prop focuses the underlying input on mount instead, so it works every time the input appears.

      #55
    • Add Menu, an accessible dropdown / action menu following the WAI-ARIA menu button pattern.

      • Compose Menu.Root, Menu.Trigger, and Menu.Content (portal + floating + role="menu" panel), built on the same positioning/presence primitives as Popover.
      • Menu.Item with onSelect, disabled, closeOnSelect, and textValue; arrow-key navigation, typeahead, Home/End, and hover highlighting via roving focus.
      • Menu.Separator, plus Menu.Group + Menu.GroupLabel with aria-labelledby wiring.
      • Menu.SubmenuRoot + Menu.SubmenuTrigger for nested submenus, with a layer stack so only the topmost menu handles Escape / outside-press, ArrowRight/ArrowLeft open/close, and sibling submenus collapse on hover.
      • Menu.Root exposes open/defaultOpen/onOpenChange (with cancelable details), loop, typeahead, and closeOnSelect. Escape and selection return focus to the trigger; Tab and outside interaction close the whole chain.
      #55
    • Add the ToggleGroup primitive with single and multiple selection, roving focus, disabled reconciliation, SSR-safe default selection, documentation, and demo coverage.

      #55
    • Add short helper types to the public table module for column-driven wrappers and consumer-defined table abstractions.

      • export RowData, Row, ColumnDef, CellContext, CellProps, and CellRenderer
      • keep these helpers generic so consumers can build any wrapper shape on top of the existing table primitives
      #55
    • Add a new headless Tree component with hierarchical keyboard navigation, controlled and uncontrolled expansion state, configurable selection propagation, section headers, and docs/demo coverage.

      #55
    • Bias Table.Body virtualization overscan toward the current scroll direction when no explicit overscan distribution is provided, reducing the chance of visible blanking ahead of the viewport during fast scrolling.

      #55
    • Summary

      Add the composable NumberField component with locale-aware formatting, spinbutton semantics, steppers, wheel scrubbing, and pointer scrubbing.

      #55
    • Fix nested popovers dismissing together: add a popover layer stack so only the topmost open popover handles Escape, outside-press, outside-scroll, and focus-out. Closing a nested popover (e.g. a date picker calendar inside a filter popover) no longer closes its ancestors.

      #55
    • Table Body typing and overscan

      Improve Table.Body item-driven typings and virtualization defaults.

      • Infer the children(item) snippet parameter from the items element type in item-driven mode.
      • Make body virtualization derive overscan automatically from the current viewport row count when it is not provided.
      #53
    • Summary

      Add the headless TextArea primitive with native textarea semantics, shared focus state attributes, RAC-style state props, and opt-in auto-resize.

      #55
  3. 1.0.0-alpha.21

    • Table Body typing and overscan

      Improve Table.Body item-driven typings and virtualization defaults.

      • Infer the children(item) snippet parameter from the items element type in item-driven mode.
      • Increase the default body virtualization overscan from 6 to 18 rows when it is not provided.
      #53
  4. 1.0.0-alpha.20

    • Replace implicit table header sorting with an explicit Table.SortTrigger part. Table.Column no longer accepts allowsSorting; columns become sortable by composing Table.SortTrigger inside Table.ColumnHeaderCell.

      This change prevents nested header actions like filter popovers from triggering sort through click bubbling and lets sortable headers take DOM focus directly through the trigger while keeping the table grid navigation contract.

      #51
  5. 1.0.0-alpha.19

    • Fix Table minimum width calculations so relative and resizable columns preserve measured minimum widths more reliably during layout and resize updates.

      #49
  6. 1.0.0-alpha.18

    • Fix Table column sizing and ordering edge cases by keeping trailing flexible columns in sync during resize recovery, recomputing relative widths after viewport or container size changes, avoiding one-pixel width loss from relative-column rounding, and updating body cell column indices correctly when keyed columns reorder.

      #46
  7. 1.0.0-alpha.17

    • RAC-style Table Widths

      Add % and fr support to table width state, and preserve a flexible trailing column during resize so RAC-style resizable tables can keep filling the available width.

      #43
    • Width Contract

      Treat Table.Column.width as a fixed width that disables user resizing, while keeping defaultWidth as the uncontrolled resizable initial width.

      #43
  8. 1.0.0-alpha.16

    • Fix table accessibility helper nodes so the sort live region and selection-unavailable description stay visually hidden without contributing to page overflow.

      #41
  9. 1.0.0-alpha.15

    • Summary

      Clean up the Table contract by removing the legacy Table.Column.allowsResizing prop, exporting explicit public prop types for Table.Root, Table.Column, Table.ColumnHeaderCell, and Table.ColumnResizer, and documenting the intended composition model separately from internal normalized column metadata.

      #39
  10. 1.0.0-alpha.14

    • Add table row actions and selection-only disabled behavior.

      • add onRowAction to Table.Root with RAC-style interaction rules across selectionMode and selectionBehavior
      • add disabledBehavior="selection" | "all" to split selection disabling from fully disabled rows
      • expose actionable and selection-disabled row/cell state through data attributes for styling
      • document and demo manual testing flows for toggle-mode actions, replace-mode double click actions, and disabled row behavior
      #37
  11. 1.0.0-alpha.13

    • Fix ComboBox and ListBox interaction regressions around input behavior, focus handling, and virtual focus scrolling.

      This disables native browser autocomplete on ComboBox inputs, prevents the reused ListBox root from stealing DOM focus, avoids filtering flashes during popover close animations, and keeps hover-driven virtual focus from auto-scrolling overflowed option lists.

      #35
  12. 1.0.0-alpha.12

    • Fix ListBox and ComboBox interaction state issues so keyboard focus, hover, and virtual focus stay in sync.

      This includes clearing item data-focus-visible on pointer hover, tightening ListBox focus ownership, skipping disabled ComboBox options during keyboard navigation, and continuing keyboard navigation from the clicked option in multiselect flows.

      #33
  13. 1.0.0-alpha.11

    • Add follow-up ComboBox and Popover improvements after the previous prerelease changeset was already consumed.

      • Forward Popover.Content configuration props through ComboBox.Popover, including positioning options like offset, placement, shouldFlip, shouldCloseOnEscape, and shouldCloseOnBlur.
      • Ensure ComboBox virtual focus marks the active ListBox.Item with data-focus-visible during keyboard navigation.
      • Keep the interactive ComboBox docs aligned with the shared popover positioning behavior.
      #31
  14. 1.0.0-alpha.10

    • Add new ComboBox trigger and clear parts, plus pending and scroll improvements.

      • Add ComboBox.Trigger as the primary trigger part while keeping ComboBox.Button as a compatibility alias.
      • Add ComboBox.Clear to reset the input and clear the current selection without stealing focus.
      • Reflect isPending on trigger and clear affordances while keeping the root as the main async state source.
      • Clear the selected value when a single-select combobox input is fully emptied.
      • Allow wheel events to stay inside the combobox when a descendant scroll container can continue scrolling.
      • Prevent page scroll when neither the popover nor a descendant scroll container can scroll further.
      • Add docs coverage for pending state and the pattern where overflow is applied to ComboBox.List instead of ComboBox.Popover.
      #28
  15. 1.0.0-alpha.9

    • Summary

      Make ComboBox.Input render through the shared Input primitive while preserving existing combobox behavior and accessibility semantics.

      #25
  16. 1.0.0-alpha.8

    • Summary

      Upgrade Input to a focus-aware native input primitive with RAC-style disabled, read-only, invalid, and required state props.

      #22
  17. 1.0.0-alpha.7

    • Summary

      Add a new headless Button component with modality-aware focus state, pressed and hovered data attributes, and RAC-style pending semantics.

      #20
  18. 1.0.0-alpha.6

    • Fix published package entrypoints so generated ESM files no longer import sibling TypeScript source paths.

      #18
  19. 1.0.0-alpha.5

    • Add Table.Checkbox and Table.CheckboxIndicator for explicit row selection controls in body cells and select-all behavior in header cells, including keyboard navigation integration with the table grid.

      Add hiddenColumns (bindable) and defaultHiddenColumns props to Table.Root for controlled and uncontrolled column visibility. Hidden columns are excluded from grid navigation, visible column counts (aria-colcount), and resize interactions while preserving their registered widths.

      Add aria-colindex to header and body cells for accurate screen reader column position announcements.

      #16
    • Table Column Resizing

      Add column resizing support to Table.

      • add Table.ColumnResizer as a public part
      • add column width and resize APIs to Table.Root and Table.Column
      • render managed column widths through colgroup
      • document and demo resizable table columns
      #16
    • Add a new Table component with composable parts, grid-style keyboard navigation, row selection, sorting support, docs, and tests.

      #16
    • Add a new headless Checkbox component with Root and Indicator parts.

      • Add tri-state checkbox behavior with checked and indeterminate bindings.
      • Sync a hidden native input for form submission and label targeting.
      • Export Checkbox from the root library entrypoint and package subpath exports.
      • Add baseline docs and browser tests for checkbox interaction.
      #16
    • Update Table.ColumnResizer keyboard interaction to use an explicit Enter-to-resize mode.

      • Focused resize handles now enter keyboard resize mode with Enter and exit with Enter.
      • Escape cancels keyboard resizing, restores the starting width, and returns focus to the header cell.
      • Update table docs, demo styling, and tests to reflect the new focus and resize flow.
      #16
    • Fix table column resizing so keyboard interactions use the same resize lifecycle as pointer input, add Pointer Events support for touch and pen resizing, announce committed width changes to screen readers, respect RTL keyboard controls, support cancelling pointer drags with Escape, and reduce resize overhead with cached column lookups plus animation-frame batched drag updates. Also make table cell and header column indices react correctly when keyed column order changes and replace module-level table instance counters with per-root token generation to avoid shared SSR and test state.

      #16
  20. 1.0.0-alpha.4

    • Refactor TimePicker panel to Apple-like wheel architecture.

      • Replace TimePicker.Column/TimePicker.ColumnCell with TimePicker.WheelColumn/TimePicker.WheelItem.
      • Migrate panel semantics from listbox/option to spinbutton per wheel column.
      • Remove shouldCloseOnSelect and closeOnSelect from TimePicker.Root; wheel selection now commits on snap without auto-close.
      • Replace root context column APIs with wheel APIs: getWheelOptions, getSelectedWheelValue, selectWheelValue.
      • Update docs and tests for wheel interaction and focus behavior.
      #13
  21. 1.0.0-alpha.3

    • Standardize focus-visible modality behavior across overlay flows.

      • Remove DatePicker local interaction modality state and rely on shared input-modality primitive.
      • Restore DatePicker trigger focus via focusWithModality for consistent pointer/keyboard semantics.
      • Unify close-modality resolution between Popover and Dialog through shared primitive helper.
      • Align DatePicker input modality handling with shared focus-visible contract.
      • Expand input-modality tests and document primitive usage in the focus-state contract.
      #11
  22. 1.0.0-alpha.2

    • Add the new Calendar component as a public feature release.

      • introduce single and range selection modes
      • add keyboard navigation and accessibility improvements
      • include docs/demo integration and supporting tests
      #6
  23. 1.0.0-alpha.1

    • Initial release of @human-kit/ui

      • ComboBox (single & multi-select with tags, virtual focus, filtering)
      • Dialog (modal with portal, overlay, nested dialogs, focus trap)
      • ListBox (keyboard navigation, single selection)
      • Popover (floating UI positioning, click outside, trigger)
      • Input, Label, Portal primitives
      • Utility primitives (aria-hide-outside, scroll-lock, focus-trap, keyboard-navigation)
      #1