@cube-dev/ui-kit 0.0.0-canary-bef9600 → 0.0.0-canary-3908511

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (666) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GridProvider.js +1 -1
  13. package/dist/components/HiddenInput.js +1 -1
  14. package/dist/components/Root.d.ts +0 -6
  15. package/dist/components/Root.js +102 -125
  16. package/dist/components/Root.js.map +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +11 -5
  20. package/dist/components/actions/Button/Button.js.map +1 -1
  21. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  22. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  23. package/dist/components/actions/ButtonSplit/context.js +1 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  25. package/dist/components/actions/CommandMenu/styled.js +1 -1
  26. package/dist/components/actions/ItemAction/ItemAction.js +27 -25
  27. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  30. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  31. package/dist/components/actions/Link/Link.js +1 -1
  32. package/dist/components/actions/Menu/Menu.js +1 -1
  33. package/dist/components/actions/Menu/MenuCollectionItem.js +4 -7
  34. package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -1
  35. package/dist/components/actions/Menu/MenuItem.js +60 -69
  36. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  37. package/dist/components/actions/Menu/MenuSection.js +1 -1
  38. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  39. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  40. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  41. package/dist/components/actions/Menu/context.js +1 -1
  42. package/dist/components/actions/Menu/styled.js +1 -4
  43. package/dist/components/actions/Menu/styled.js.map +1 -1
  44. package/dist/components/actions/actions-run.js +1 -1
  45. package/dist/components/actions/index.js +1 -1
  46. package/dist/components/actions/use-action.js +14 -15
  47. package/dist/components/actions/use-action.js.map +1 -1
  48. package/dist/components/actions/use-anchored-menu.js +1 -1
  49. package/dist/components/actions/use-context-menu.js +1 -1
  50. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  51. package/dist/components/content/Alert/Alert.js +1 -1
  52. package/dist/components/content/Alert/use-alert.js +1 -1
  53. package/dist/components/content/Avatar/Avatar.js +1 -1
  54. package/dist/components/content/Badge/Badge.js +1 -1
  55. package/dist/components/content/Card/Card.js +1 -1
  56. package/dist/components/content/Content.js +1 -1
  57. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  58. package/dist/components/content/CopySnippet/CopySnippet.d.ts +8 -8
  59. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  60. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  61. package/dist/components/content/Divider.js +1 -1
  62. package/dist/components/content/Footer.js +1 -1
  63. package/dist/components/content/Header.js +1 -1
  64. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  65. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  66. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  67. package/dist/components/content/Item/Item.js +4 -16
  68. package/dist/components/content/Item/Item.js.map +1 -1
  69. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  70. package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
  71. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  72. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  73. package/dist/components/content/Layout/GridLayout.js +1 -1
  74. package/dist/components/content/Layout/Layout.js +28 -15
  75. package/dist/components/content/Layout/Layout.js.map +1 -1
  76. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  77. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  78. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  79. package/dist/components/content/Layout/LayoutContent.js +1 -1
  80. package/dist/components/content/Layout/LayoutContext.js +20 -10
  81. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  82. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  83. package/dist/components/content/Layout/LayoutFooter.js +12 -9
  84. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  85. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  86. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  87. package/dist/components/content/Layout/LayoutPane.js +1 -1
  88. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  89. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  90. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  91. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  92. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  93. package/dist/components/content/Layout/index.js +1 -1
  94. package/dist/components/content/Layout/utils.js +1 -1
  95. package/dist/components/content/Paragraph.js +1 -1
  96. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  97. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  98. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  99. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  100. package/dist/components/content/Result/Result.js +1 -1
  101. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  102. package/dist/components/content/Tag/Tag.js +1 -1
  103. package/dist/components/content/Text.d.ts +14 -14
  104. package/dist/components/content/Text.js +1 -1
  105. package/dist/components/content/TextItem/TextItem.js +1 -1
  106. package/dist/components/content/Title.js +1 -1
  107. package/dist/components/content/Tree/Tree.js +1 -1
  108. package/dist/components/content/Tree/TreeNode.js +1 -1
  109. package/dist/components/content/Tree/styled.js +1 -1
  110. package/dist/components/content/Tree/tree-index.js +1 -1
  111. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  112. package/dist/components/content/Tree/use-load-data.js +1 -1
  113. package/dist/components/content/highlightText.js +1 -1
  114. package/dist/components/content/use-auto-tooltip.js +3 -3
  115. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  116. package/dist/components/data/DataTable/DataTable.js +1 -1
  117. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  118. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  119. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  120. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  121. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  122. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  123. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  124. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  125. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  126. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  127. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  128. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  129. package/dist/components/data/TableBase/RowCollection.js +1 -1
  130. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  131. package/dist/components/data/TableBase/TableRow.js +1 -1
  132. package/dist/components/data/TableBase/TableView.js +1 -1
  133. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  134. package/dist/components/data/TableBase/column-header.js +1 -1
  135. package/dist/components/data/TableBase/column-menu.js +1 -1
  136. package/dist/components/data/TableBase/column-styles.js +1 -1
  137. package/dist/components/data/TableBase/column-tint.js +1 -1
  138. package/dist/components/data/TableBase/row-menu.js +1 -1
  139. package/dist/components/data/TableBase/styled.js +1 -1
  140. package/dist/components/data/TableBase/table-tree.js +1 -1
  141. package/dist/components/data/TableBase/types.js +1 -1
  142. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  143. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  144. package/dist/components/data/TableBase/use-column-order.js +1 -1
  145. package/dist/components/data/TableBase/use-column-window.js +1 -1
  146. package/dist/components/data/TableBase/use-container-width.js +1 -1
  147. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  148. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  149. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  150. package/dist/components/data/TableBase/use-table-search.js +1 -1
  151. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  152. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  153. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  154. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  155. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  156. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  157. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  158. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  159. package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -5
  160. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  161. package/dist/components/fields/Checkbox/context.js +1 -1
  162. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  163. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  164. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  165. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  166. package/dist/components/fields/ComboBox/ComboBox.d.ts +26 -6
  167. package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
  168. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  169. package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
  170. package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
  171. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  172. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  173. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  174. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  175. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  176. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  177. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  178. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  179. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  180. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  181. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  182. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  183. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  184. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  185. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  186. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  187. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  188. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  189. package/dist/components/fields/DatePicker/parseDate.d.ts +0 -7
  190. package/dist/components/fields/DatePicker/parseDate.js +3 -17
  191. package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
  192. package/dist/components/fields/DatePicker/period.js +1 -1
  193. package/dist/components/fields/DatePicker/props.js +1 -1
  194. package/dist/components/fields/DatePicker/utils.js +1 -1
  195. package/dist/components/fields/FileInput/FileInput.js +1 -1
  196. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  197. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  198. package/dist/components/fields/Input/Input.d.ts +2 -2
  199. package/dist/components/fields/Input/Input.js +2 -2
  200. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  201. package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
  202. package/dist/components/fields/ListBox/ListBox.js +293 -143
  203. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  204. package/dist/components/fields/ListBox/optionId.js +1 -1
  205. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +15 -12
  206. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  207. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  208. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  209. package/dist/components/fields/NumberInput/NumberInput.d.ts +0 -7
  210. package/dist/components/fields/NumberInput/NumberInput.js +136 -128
  211. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  212. package/dist/components/fields/NumberInput/StepButton.js +38 -48
  213. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  214. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
  215. package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
  216. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  217. package/dist/components/fields/Picker/Picker.d.ts +1 -1
  218. package/dist/components/fields/Picker/Picker.js +8 -3
  219. package/dist/components/fields/Picker/Picker.js.map +1 -1
  220. package/dist/components/fields/RadioGroup/Radio.d.ts +12 -12
  221. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  222. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  223. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  224. package/dist/components/fields/RadioGroup/context.js +1 -1
  225. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  226. package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
  227. package/dist/components/fields/SearchInput/SearchInput.js +22 -29
  228. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  229. package/dist/components/fields/Select/Select.d.ts +12 -1
  230. package/dist/components/fields/Select/Select.js +365 -207
  231. package/dist/components/fields/Select/Select.js.map +1 -1
  232. package/dist/components/fields/Slider/Gradation.js +1 -1
  233. package/dist/components/fields/Slider/HueSlider.js +1 -1
  234. package/dist/components/fields/Slider/RangeSlider.js +3 -4
  235. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  236. package/dist/components/fields/Slider/Slider.js +1 -1
  237. package/dist/components/fields/Slider/SliderBase.js +1 -1
  238. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  239. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  240. package/dist/components/fields/Slider/elements.js +1 -1
  241. package/dist/components/fields/Slider/index.js +1 -1
  242. package/dist/components/fields/Switch/Switch.js +1 -1
  243. package/dist/components/fields/TagInput/TagInput.js +1 -1
  244. package/dist/components/fields/TagInput/TagList.js +1 -1
  245. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  246. package/dist/components/fields/TagInput/useTagError.js +1 -1
  247. package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
  248. package/dist/components/fields/TextArea/TextArea.js +49 -63
  249. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  250. package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
  251. package/dist/components/fields/TextInput/TextInput.js +42 -46
  252. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  253. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
  254. package/dist/components/fields/TextInput/TextInputBase.js +32 -10
  255. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  256. package/dist/components/fields/TextInput/displayed-validation.js +50 -0
  257. package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
  258. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  259. package/dist/components/fields/TextInputMapper/TextInputMapper.js +2 -2
  260. package/dist/components/fields/TriggerActions.js +1 -1
  261. package/dist/components/fields/color/ColorPanel.js +1 -1
  262. package/dist/components/fields/color/channels.js +1 -1
  263. package/dist/components/fields/color/color.js +1 -1
  264. package/dist/components/fields/color/context.js +1 -1
  265. package/dist/components/fields/index.d.ts +2 -2
  266. package/dist/components/fields/option-origin-press.js +78 -0
  267. package/dist/components/fields/option-origin-press.js.map +1 -0
  268. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  269. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  270. package/dist/components/form/Form/Field.js +1 -1
  271. package/dist/components/form/Form/Form.js +1 -1
  272. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  273. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  274. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  275. package/dist/components/form/Form/SubmitError.js +1 -1
  276. package/dist/components/form/Form/backend.js +1 -1
  277. package/dist/components/form/Form/index.js +1 -1
  278. package/dist/components/form/Form/modern/actions.js +1 -1
  279. package/dist/components/form/Form/modern/context.js +1 -1
  280. package/dist/components/form/Form/modern/controller.js +1 -1
  281. package/dist/components/form/Form/modern/field-binding.js +1 -1
  282. package/dist/components/form/Form/modern/field.js +1 -1
  283. package/dist/components/form/Form/modern/react.js +1 -1
  284. package/dist/components/form/Form/modern/store.js +1 -1
  285. package/dist/components/form/Form/modern/validation.js +1 -1
  286. package/dist/components/form/Form/modern/values.js +1 -1
  287. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  288. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  289. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  290. package/dist/components/form/Form/use-field/use-field.js +1 -1
  291. package/dist/components/form/Form/use-form.js +1 -1
  292. package/dist/components/form/Form/validation.js +1 -1
  293. package/dist/components/form/Label.js +1 -1
  294. package/dist/components/form/field-chrome.js +1 -1
  295. package/dist/components/form/legacy-tooltip.js +1 -1
  296. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  297. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  298. package/dist/components/form/validation/use-validation-props.js +1 -1
  299. package/dist/components/form/wrapper.js +1 -1
  300. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  301. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  302. package/dist/components/layout/Flex.js +1 -1
  303. package/dist/components/layout/Flow.js +1 -1
  304. package/dist/components/layout/Grid.js +1 -1
  305. package/dist/components/layout/Panel.js +1 -1
  306. package/dist/components/layout/Prefix.js +1 -1
  307. package/dist/components/layout/ResizablePanel.js +1 -1
  308. package/dist/components/layout/Space.js +1 -1
  309. package/dist/components/layout/Suffix.js +1 -1
  310. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  311. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  312. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  313. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  314. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  315. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  316. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  317. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  318. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  319. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  320. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  321. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  322. package/dist/components/navigation/Tabs/styled.js +1 -1
  323. package/dist/components/navigation/Tabs/types.js +1 -1
  324. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  325. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  326. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  327. package/dist/components/other/Calendar/Calendar.js +1 -1
  328. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  329. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  330. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  331. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  332. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  333. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  334. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  335. package/dist/components/other/Calendar/styled.js +1 -1
  336. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  337. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  338. package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
  339. package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
  340. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  341. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +3 -2
  342. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  343. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  344. package/dist/components/overlays/Dialog/Dialog.js +28 -14
  345. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  346. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  347. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  348. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
  349. package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
  350. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  351. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  352. package/dist/components/overlays/Dialog/context.js +1 -1
  353. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  354. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  355. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  356. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
  357. package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
  358. package/dist/components/overlays/Modal/Modal.js +1 -1
  359. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  360. package/dist/components/overlays/Modal/Overlay.js +3 -2
  361. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  362. package/dist/components/overlays/Modal/Popover.js +1 -1
  363. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  364. package/dist/components/overlays/Modal/Tray.js +1 -1
  365. package/dist/components/overlays/Modal/Underlay.js +1 -1
  366. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  367. package/dist/components/overlays/Notifications/Notification.js +1 -1
  368. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  369. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  370. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  371. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  372. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  373. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  374. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  375. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  376. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  377. package/dist/components/overlays/Notifications/index.js +1 -1
  378. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  379. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  380. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  381. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  382. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  383. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  384. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  385. package/dist/components/overlays/Toast/index.js +1 -1
  386. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  387. package/dist/components/overlays/Toast/useToast.js +1 -1
  388. package/dist/components/overlays/Tooltip/Tooltip.d.ts +8 -0
  389. package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
  390. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  391. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  392. package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
  393. package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
  394. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  395. package/dist/components/overlays/Tooltip/context.js +1 -1
  396. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  397. package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
  398. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -1
  399. package/dist/components/portal/Portal.js +1 -1
  400. package/dist/components/portal/PortalProvider.js +1 -1
  401. package/dist/components/portal/usePortal.js +1 -1
  402. package/dist/components/shared/DraggableCollection.js +1 -1
  403. package/dist/components/shared/InvalidIcon.js +1 -1
  404. package/dist/components/shared/ValidIcon.js +1 -1
  405. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  406. package/dist/components/status/Spin/Cube.js +1 -1
  407. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  408. package/dist/components/status/Spin/Spin.js +1 -1
  409. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  410. package/dist/data/item-themes.js +1 -1
  411. package/dist/data/themes.js +1 -1
  412. package/dist/eslint-plugin/defaults.generated.js +11 -17
  413. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  414. package/dist/eslint-plugin/index.js +1 -1
  415. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  416. package/dist/i18n/I18nProvider.js +1 -1
  417. package/dist/i18n/createFormatter.js +1 -1
  418. package/dist/i18n/index.js +1 -1
  419. package/dist/i18n/instance.js +1 -1
  420. package/dist/i18n/locales/de-DE/uikit.js +6 -4
  421. package/dist/i18n/locales/en-US/uikit.js +6 -4
  422. package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
  423. package/dist/i18n/locales/es-ES/uikit.js +6 -4
  424. package/dist/i18n/locales/es-MX/uikit.js +6 -4
  425. package/dist/i18n/locales/fr-FR/uikit.js +6 -4
  426. package/dist/i18n/locales/it-IT/uikit.js +6 -4
  427. package/dist/i18n/locales/ja-JP/uikit.js +6 -4
  428. package/dist/i18n/locales/nb-NO/uikit.js +6 -4
  429. package/dist/i18n/locales/pt-BR/uikit.js +6 -4
  430. package/dist/i18n/locales/pt-PT/uikit.js +6 -4
  431. package/dist/i18n/locales/sv-SE/uikit.js +6 -4
  432. package/dist/i18n/locales/vi-VN/uikit.js +6 -4
  433. package/dist/i18n/locales.js +1 -1
  434. package/dist/i18n/namespace.js +1 -1
  435. package/dist/i18n/useFormatter.js +1 -1
  436. package/dist/i18n/useI18n.js +1 -1
  437. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  438. package/dist/icons/AdjustmentsIcon.js +1 -1
  439. package/dist/icons/AiIcon.js +1 -1
  440. package/dist/icons/AreaChartIcon.js +1 -1
  441. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  442. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  443. package/dist/icons/BackwardIcon.js +1 -1
  444. package/dist/icons/BarChartIcon.js +1 -1
  445. package/dist/icons/BellFilledIcon.js +1 -1
  446. package/dist/icons/BellIcon.js +1 -1
  447. package/dist/icons/BooleanIcon.js +1 -1
  448. package/dist/icons/CalendarEditIcon.js +1 -1
  449. package/dist/icons/CalendarIcon.js +1 -1
  450. package/dist/icons/CaretDownIcon.js +1 -1
  451. package/dist/icons/CaretUpIcon.js +1 -1
  452. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  453. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  454. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  455. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  456. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  457. package/dist/icons/ChartBarLineIcon.js +1 -1
  458. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  459. package/dist/icons/ChartBarStackedIcon.js +1 -1
  460. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  461. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  462. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  463. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  464. package/dist/icons/ChartBubbleIcon.js +1 -1
  465. package/dist/icons/ChartDonut2Icon.js +1 -1
  466. package/dist/icons/ChartFunnelIcon.js +1 -1
  467. package/dist/icons/ChartHeatmapIcon.js +1 -1
  468. package/dist/icons/ChartKPIIcon.js +1 -1
  469. package/dist/icons/ChartPie2Icon.js +1 -1
  470. package/dist/icons/ChartScatterIcon.js +1 -1
  471. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  472. package/dist/icons/CheckCircleIcon.js +1 -1
  473. package/dist/icons/CheckIcon.js +1 -1
  474. package/dist/icons/CircleFilledIcon.js +1 -1
  475. package/dist/icons/ClearIcon.js +1 -1
  476. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  477. package/dist/icons/CloseCircleIcon.js +1 -1
  478. package/dist/icons/CloseIcon.js +1 -1
  479. package/dist/icons/CodeIcon.js +1 -1
  480. package/dist/icons/ColumnTotalIcon.js +1 -1
  481. package/dist/icons/CopyIcon.js +1 -1
  482. package/dist/icons/CountIcon.js +1 -1
  483. package/dist/icons/CubeIcon.js +1 -1
  484. package/dist/icons/CubePauseIcon.js +1 -1
  485. package/dist/icons/CubePlayIcon.js +1 -1
  486. package/dist/icons/CurrencyDollarIcon.js +1 -1
  487. package/dist/icons/DangerIcon.js +1 -1
  488. package/dist/icons/DashboardIcon.js +1 -1
  489. package/dist/icons/DatabaseIcon.js +1 -1
  490. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  491. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  492. package/dist/icons/DirectionIcon.js +1 -1
  493. package/dist/icons/DonutIcon.js +1 -1
  494. package/dist/icons/DownIcon.js +1 -1
  495. package/dist/icons/EditIcon.js +1 -1
  496. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  497. package/dist/icons/ExclamationCircleIcon.js +1 -1
  498. package/dist/icons/ExclamationIcon.js +1 -1
  499. package/dist/icons/EyeIcon.js +1 -1
  500. package/dist/icons/EyeInvisibleIcon.js +1 -1
  501. package/dist/icons/FilterIcon.js +1 -1
  502. package/dist/icons/FolderFilledIcon.js +1 -1
  503. package/dist/icons/FolderIcon.js +1 -1
  504. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  505. package/dist/icons/FolderOpenIcon.js +1 -1
  506. package/dist/icons/ForwardIcon.js +1 -1
  507. package/dist/icons/GripVerticalIcon.js +1 -1
  508. package/dist/icons/HierarchyIcon.js +1 -1
  509. package/dist/icons/HierarchyOpenIcon.js +1 -1
  510. package/dist/icons/Icon.js +1 -1
  511. package/dist/icons/InfoCircleIcon.js +1 -1
  512. package/dist/icons/InfoIcon.js +1 -1
  513. package/dist/icons/KeyIcon.js +1 -1
  514. package/dist/icons/LeftIcon.js +1 -1
  515. package/dist/icons/LineChartIcon.js +1 -1
  516. package/dist/icons/LoadingIcon.js +1 -1
  517. package/dist/icons/LockFilledIcon.js +1 -1
  518. package/dist/icons/LockIcon.js +1 -1
  519. package/dist/icons/MoreIcon.js +1 -1
  520. package/dist/icons/NotAllowedIcon.js +1 -1
  521. package/dist/icons/Number123Icon.js +1 -1
  522. package/dist/icons/NumberIcon.js +1 -1
  523. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  524. package/dist/icons/PauseCircleIcon.js +1 -1
  525. package/dist/icons/PauseIcon.js +1 -1
  526. package/dist/icons/PercentageIcon.js +1 -1
  527. package/dist/icons/PieChartIcon.js +1 -1
  528. package/dist/icons/PipetteIcon.js +1 -1
  529. package/dist/icons/PlayCircleIcon.js +1 -1
  530. package/dist/icons/PlayIcon.js +1 -1
  531. package/dist/icons/PlusIcon.js +1 -1
  532. package/dist/icons/ProgressBarIcon.js +1 -1
  533. package/dist/icons/ReloadIcon.js +1 -1
  534. package/dist/icons/ReportIcon.js +1 -1
  535. package/dist/icons/ReturnIcon.js +1 -1
  536. package/dist/icons/RightIcon.js +1 -1
  537. package/dist/icons/RowTotalsIcon.js +1 -1
  538. package/dist/icons/SchemeIcon.js +1 -1
  539. package/dist/icons/SearchIcon.js +1 -1
  540. package/dist/icons/SemanticQueryIcon.js +1 -1
  541. package/dist/icons/SettingsIcon.js +1 -1
  542. package/dist/icons/ShieldFilledIcon.js +1 -1
  543. package/dist/icons/ShieldIcon.js +1 -1
  544. package/dist/icons/SlashIcon.js +1 -1
  545. package/dist/icons/SparklesIcon.js +1 -1
  546. package/dist/icons/SqlIcon.js +1 -1
  547. package/dist/icons/StatsIcon.js +1 -1
  548. package/dist/icons/StopIcon.js +1 -1
  549. package/dist/icons/StringIcon.js +1 -1
  550. package/dist/icons/SubtotalsIcon.js +1 -1
  551. package/dist/icons/SwitchIcon.js +1 -1
  552. package/dist/icons/TableIcon.js +1 -1
  553. package/dist/icons/ThumbsDownIcon.js +1 -1
  554. package/dist/icons/ThumbsUpIcon.js +1 -1
  555. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  556. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  557. package/dist/icons/ThunderboltIcon.js +1 -1
  558. package/dist/icons/TimeIcon.js +1 -1
  559. package/dist/icons/TrashIcon.js +1 -1
  560. package/dist/icons/UnlockIcon.js +1 -1
  561. package/dist/icons/UpIcon.js +1 -1
  562. package/dist/icons/UserGroupIcon.js +1 -1
  563. package/dist/icons/UserIcon.js +1 -1
  564. package/dist/icons/UserLockIcon.js +1 -1
  565. package/dist/icons/ViewIcon.js +1 -1
  566. package/dist/icons/WarningFilledIcon.js +1 -1
  567. package/dist/icons/WarningIcon.js +1 -1
  568. package/dist/icons/wrap-icon.js +1 -1
  569. package/dist/index.d.ts +1 -1
  570. package/dist/index.js +2 -2
  571. package/dist/probe/canonicalize.js +1 -1
  572. package/dist/probe/css.js +1 -1
  573. package/dist/probe/index.js +1 -1
  574. package/dist/provider.js +1 -1
  575. package/dist/providers/TrackingProvider.js +1 -1
  576. package/dist/providers/navigation-url.js +3 -15
  577. package/dist/providers/navigation-url.js.map +1 -1
  578. package/dist/providers/navigationAdapter.default.js +1 -1
  579. package/dist/providers/use-navigation.js +1 -1
  580. package/dist/tokens/all-tokens.js +1 -1
  581. package/dist/tokens/base.js +1 -1
  582. package/dist/tokens/color-seed.js +1 -1
  583. package/dist/tokens/color-theme.js +1 -1
  584. package/dist/tokens/colors.js +1 -1
  585. package/dist/tokens/layout.js +1 -1
  586. package/dist/tokens/lazy-styles.js +1 -1
  587. package/dist/tokens/legacy-color.js +1 -1
  588. package/dist/tokens/palette-config.js +1 -1
  589. package/dist/tokens/palette.js +1 -1
  590. package/dist/tokens/resolve.js +1 -1
  591. package/dist/tokens/shadows.js +1 -1
  592. package/dist/tokens/sizes.js +1 -1
  593. package/dist/tokens/spacing.js +1 -1
  594. package/dist/tokens/typography.js +1 -1
  595. package/dist/utils/ResizeSensor.js +1 -1
  596. package/dist/utils/colors.js +1 -1
  597. package/dist/utils/dotize.js +1 -1
  598. package/dist/utils/is-dev-env.js +1 -1
  599. package/dist/utils/modules.js +1 -1
  600. package/dist/utils/promise.js +1 -1
  601. package/dist/utils/raf.js +1 -1
  602. package/dist/utils/random.js +1 -1
  603. package/dist/utils/range.js +1 -1
  604. package/dist/utils/react/RenderCache.js +1 -1
  605. package/dist/utils/react/Slots.js +1 -1
  606. package/dist/utils/react/chain.js +1 -1
  607. package/dist/utils/react/disabledProps.js +1 -1
  608. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  609. package/dist/utils/react/index.js +1 -1
  610. package/dist/utils/react/interactions.js +1 -1
  611. package/dist/utils/react/isTextOnly.js +1 -1
  612. package/dist/utils/react/mapProps.js +1 -1
  613. package/dist/utils/react/mergeProps.js +1 -1
  614. package/dist/utils/react/nullableValue.js +18 -9
  615. package/dist/utils/react/nullableValue.js.map +1 -1
  616. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  617. package/dist/utils/react/programmaticFocus.js +1 -1
  618. package/dist/utils/react/resolveIcon.js +1 -1
  619. package/dist/utils/react/sharedStore.js +1 -1
  620. package/dist/utils/react/useBufferedValue.js +1 -1
  621. package/dist/utils/react/useCombinedRefs.js +1 -1
  622. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  623. package/dist/utils/react/useEventBus.js +1 -1
  624. package/dist/utils/react/useId.js +1 -1
  625. package/dist/utils/react/useIsDarwin.js +1 -1
  626. package/dist/utils/react/useKeySymbols.js +1 -1
  627. package/dist/utils/react/useLayoutEffect.js +1 -1
  628. package/dist/utils/react/useLocalStorage.js +1 -1
  629. package/dist/utils/react/useMergeStyles.js +1 -1
  630. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  631. package/dist/utils/react/usePopoverSync.js +1 -1
  632. package/dist/utils/react/useQaProps.js +1 -1
  633. package/dist/utils/react/useScheme.js +1 -1
  634. package/dist/utils/react/useViewportSize.js +1 -1
  635. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  636. package/dist/utils/selection.js +1 -1
  637. package/dist/utils/styles.js +1 -1
  638. package/dist/utils/tree.js +1 -1
  639. package/dist/utils/warnings.js +1 -1
  640. package/dist/version.js +2 -2
  641. package/docs/Theming.md +1 -2
  642. package/docs/components/Root.md +1 -1
  643. package/docs/components/actions/Button.md +8 -2
  644. package/docs/components/actions/Link.md +1 -1
  645. package/docs/components/actions/Menu.md +2 -4
  646. package/docs/components/content/InfoBadge.md +2 -0
  647. package/docs/components/content/ItemBadge.md +4 -0
  648. package/docs/components/content/Layout.md +2 -1
  649. package/docs/components/fields/ComboBox.md +25 -18
  650. package/docs/components/fields/FilterListBox.md +2 -2
  651. package/docs/components/fields/FilterPicker.md +2 -2
  652. package/docs/components/fields/ListBox.md +14 -10
  653. package/docs/components/fields/NumberInput.md +11 -20
  654. package/docs/components/fields/PasswordInput.md +6 -7
  655. package/docs/components/fields/Picker.md +6 -5
  656. package/docs/components/fields/RadioGroup.md +1 -1
  657. package/docs/components/fields/SearchInput.md +7 -6
  658. package/docs/components/fields/Select.md +14 -8
  659. package/docs/components/fields/TextArea.md +4 -3
  660. package/docs/components/fields/TextInput.md +13 -6
  661. package/docs/components/overlays/AlertDialog.md +7 -1
  662. package/docs/components/overlays/Dialog.md +5 -5
  663. package/docs/components/overlays/DialogTrigger.md +6 -6
  664. package/docs/components/overlays/Tooltip.md +17 -6
  665. package/docs/components/overlays/TooltipTrigger.md +2 -0
  666. package/package.json +1 -1
@@ -25,7 +25,7 @@ A versatile action component that triggers commands and navigates users.
25
25
  - **`tooltip`** `string | boolean | object` — Tooltip content. Use a string for simple text, `true` for auto tooltip on overflow, or an object with `{ title, auto, placement, ...tooltipProps }`
26
26
  - **`defaultTooltipPlacement`** `Placement` (default: `top`) — Default placement for the button's tooltip
27
27
  - **`isDisabled`** `boolean` (default: `false`) — Disables the button. Unlike fields, a button doesn't inherit this from `<Provider isDisabled>` or `<Form isDisabled>`, so actions such as Cancel stay live in a disabled form; pass it to each button you want disabled. Of the buttons, only `Form.Submit` and `Form.Reset` inherit it. `ItemButton` behaves like `Button`, and `ItemAction` inherits only its parent item's disabled state
28
- - **`isLoading`** `boolean` (default: `false`) — Show loading spinner and disable interactions
28
+ - **`isLoading`** `boolean` (default: `false`) — Show loading spinner and disable interactions. A button that is only loading keeps the focus it has, so a keyboard press that starts the work does not drop focus to the page; it is marked `aria-disabled` and `aria-busy` and Tab skips it until loading ends. A button that is also `isDisabled` is natively disabled
29
29
  - **`isSelected`** `boolean` (default: `false`) — Marks the button as pressed / selected (toggle)
30
30
  - **`to`** `string` — Destination URL or route; prefix with `!` to open in new tab, `@` to bypass router
31
31
  - **`htmlType`** `'button' | 'submit' | 'reset'` — HTML button type attribute
@@ -198,6 +198,10 @@ import { IconPlus } from '@tabler/icons-react';
198
198
 
199
199
  A disabled button keeps showing its tooltip. Browsers stop dispatching mouse events on elements carrying the native `disabled` attribute, so a button that has a tooltip is marked with `aria-disabled` instead and kept inert: `onPress` never fires and clicks (including the ones Enter and Space produce) do nothing. Such a button also stays in the tab order, so keyboard users can focus it, see its focus ring and read the tooltip, and the keys that would open a `MenuTrigger` menu do nothing. Buttons rendered as links (`to`) are always marked this way, since `disabled` is not a valid attribute on an anchor.
200
200
 
201
+ Only a tooltip you pass counts: a string, or an object with a `title` and no `auto: true`. The automatic tooltip that shows a truncated label depends on the layout, so a disabled button with only that one stays natively disabled, and whether it is a Tab stop does not change with the window width.
202
+
203
+ Give a disabled button its own `tooltip` rather than wrapping it in a `TooltipProvider`: a natively disabled button receives neither hover nor focus, so a tooltip around it never opens.
204
+
201
205
  ### Custom Size
202
206
 
203
207
  ```jsx
@@ -229,7 +233,9 @@ A disabled button keeps showing its tooltip. Browsers stop dispatching mouse eve
229
233
 
230
234
  - `aria-label`, `aria-labelledby` – Accessible name.
231
235
  - `aria-pressed` – Derived from `isSelected`. Not emitted when the button renders as a link (`to`) or when the call site sets its own `role` — a button acting as a tab or an option wants `aria-selected` / `aria-current` instead. An explicit `aria-pressed` always wins.
232
- - `aria-disabled` – Announces the disabled state whenever the native `disabled` attribute cannot be used: on links, and on buttons that carry a tooltip.
236
+ - `aria-disabled` – Announces the disabled state whenever the native `disabled` attribute cannot be used: on links, on buttons that carry a tooltip you passed, and on buttons that are only loading.
237
+ - `aria-busy` – Set while `isLoading`.
238
+ - `aria-describedby` – An open tooltip is added to the button's own description, after it.
233
239
  - Additional ARIA attributes supported by React Aria's `useButton`.
234
240
 
235
241
  ## Behaviour Inside Popovers
@@ -59,7 +59,7 @@ These properties allow direct style application without using the `styles` prop:
59
59
  <Link to="../parent-page">Parent</Link>
60
60
  ```
61
61
 
62
- A string is external only when it starts with a URL scheme (`https:`, `mailto:`, `tel:`) or with `//`. A colon later in a path or query, as in `/models/cube:orders` or `..?thread=a:b`, stays router navigation. Write a relative path whose first segment holds a colon as `./cube:orders`. Leading and trailing spaces and control characters are dropped first, as the browser's URL parser drops them, so `" https://cube.dev"` is external and `" /pricing"` navigates to `/pricing`. A no-break space is kept, as the parser keeps it.
62
+ A string is external only when it starts with a URL scheme (`https:`, `mailto:`, `tel:`) or with `//`. A colon later in a path or query, as in `/models/cube:orders` or `..?thread=a:b`, stays router navigation. Write a relative path whose first segment holds a colon as `./cube:orders`.
63
63
 
64
64
  ### 2) Open in a new tab (`!` prefix)
65
65
 
@@ -178,7 +178,7 @@ For detailed information about all available item properties, see [Item document
178
178
 
179
179
  #### Navigation Items
180
180
 
181
- Navigation items render native anchors. An ordinary click or Enter/Space activation uses the navigation adapter passed to [Root](../Root.md) and closes the menu. Without a custom adapter, activation stays native and preserves the anchor's attributes. Modified clicks, middle clicks, downloads, other targets, and external destinations retain browser link behavior. A `to` or `href` is told external the same way as a [Link](./Link.md) `to`, after dropping the spaces and control characters the browser drops around a URL. Right-click offers the browser's link commands. Disabled links have no destination and cannot navigate.
181
+ Navigation items render native anchors. An ordinary click or Enter/Space activation uses the navigation adapter passed to [Root](../Root.md) and closes the menu. Without a custom adapter, activation stays native and preserves the anchor's attributes. Modified clicks, middle clicks, downloads, other targets, and external destinations retain browser link behavior. Right-click offers the browser's link commands. Disabled links have no destination and cannot navigate.
182
182
 
183
183
  Loading items are disabled by default. Set `isDisabled={false}` to keep a loading item available; `disabledKeys` still applies.
184
184
 
@@ -213,7 +213,7 @@ An item's `onAction()` and the Menu's `onAction(key)` compose: when both are sup
213
213
 
214
214
  Use the item callback for a command that belongs to that item, or handle commands centrally using the Menu callback and item keys. Supplying both is useful for additional observation, such as recording an activation; avoid executing the same command in both callbacks.
215
215
 
216
- The native link target covers the complete row, including padding, gaps and whitespace. The icon, label and description pass pointer presses through to it, so it receives every click, modified click, middle click and right-click on the row, however long the text. Right-click anywhere on that target offers the browser's link commands. Independent controls in the prefix, suffix or actions slots retain their own targets. The primary native anchor owns menu-item semantics and keyboard focus, while Item's original list element owns layout and styling. Command content has no link destination.
216
+ The native link target covers the complete row, including padding, gaps and whitespace. Right-click anywhere on that target offers the browser's link commands. Independent controls in the prefix, suffix or actions slots retain their own targets. The primary native anchor owns menu-item semantics and keyboard focus, while Item's original list element owns layout and styling. Command content has no link destination.
217
217
 
218
218
  #### Inline Actions
219
219
 
@@ -273,8 +273,6 @@ Do not use the forwarded row ref or a role selector as a proxy for the primary f
273
273
 
274
274
  Use named style slots or their `data-element` markers for content styling. Selectors that depend on the Label, Description or Icon being a particular HTML tag need to allow their native anchor host. A private native target is also a child of the row; use slot markers instead of child-position selectors for content.
275
275
 
276
- In tests, click a navigation row, or a command row with inline actions, through its role, as `getByRole('menuitem', { name })`, rather than through its label, description or icon. Those slots let presses through to the primary anchor, so a click on them fails: a browser test reports that the anchor "intercepts pointer events", and jsdom's user-event rejects an element with `pointer-events: none`.
277
-
278
276
  #### Example with Rich Items
279
277
 
280
278
  ```jsx
@@ -29,6 +29,8 @@ Every field's `labelTooltip` prop already renders an `InfoBadge` next to the lab
29
29
 
30
30
  The accessible name is the tooltip text when it's plain text. Rich tooltip content can't serve as a name, so a localized `More information` label is used instead — pass `aria-label` to override it (`label` still works but is deprecated).
31
31
 
32
+ A non-interactive badge is exposed as `role="img"` with that name and is not a Tab stop. When `aria-label` replaces a plain-text tooltip as the name, the tooltip text becomes the badge's description, so screen reader users still get it. Rich tooltip content on a non-interactive badge opens on hover only; make the badge interactive (`to` or `onPress`) when keyboard users need to read it.
33
+
32
34
  ### Base Properties
33
35
 
34
36
  Supports [Base properties](../../BaseProperties.md).
@@ -17,6 +17,10 @@ A non-interactive badge indicator for list items. Similar to `ItemAction` but wi
17
17
  - **`isSelected`** `boolean` (default: `false`) — Selected state (for checkmark)
18
18
  - **`tooltip`** `string | object` — Tooltip content shown on hover for icon-only badges. A string shows tooltip text; an object supports `{ title, ...tooltipProps }` for advanced configuration.
19
19
 
20
+ ### Accessibility
21
+
22
+ A badge is never focusable. An icon-only badge with a name — `aria-label`, or a plain-text `tooltip` — is exposed as `role="img"` with that name. When the name is not the tooltip text, the tooltip text also becomes the badge's description (`aria-description`), so screen reader users get it without hovering. Rich tooltip content has no plain text, so it is available on hover only. Pass `role` to use another role.
23
+
20
24
  ### Base Properties
21
25
 
22
26
  Supports [Base properties](../../BaseProperties.md).
@@ -226,6 +226,7 @@ Footer area with support for inverted content order (primary actions on right).
226
226
 
227
227
  - **`invertOrder`** `boolean` (default: `false`) — Reverse child order (primary on right)
228
228
  - **`children`** `ReactNode` — Footer content
229
+ - **`role`** `string` — Overrides the landmark role. The footer of a top-level Layout is `contentinfo`; a footer inside a panel or a nested Layout gets `role="none"`, so it adds no landmark. To name such a footer, pass `role="group"` with an `aria-label`.
229
230
 
230
231
  ---
231
232
 
@@ -802,7 +803,7 @@ function ApplicationShell() {
802
803
 
803
804
  - `Layout.Header` uses semantic heading elements (`h1`-`h6`) based on `level` prop
804
805
  - `Layout.Toolbar` has `role="toolbar"` for proper announcement
805
- - `Layout.Footer` has `role="contentinfo"` for landmark navigation
806
+ - `Layout.Footer` of a top-level Layout has `role="contentinfo"` for landmark navigation; footers inside panels and nested Layouts add no landmark
806
807
  - Breadcrumbs use Link components with proper navigation semantics
807
808
  - Panel close buttons have accessible labels
808
809
 
@@ -27,19 +27,19 @@ A combobox component that combines a text input with a dropdown list, allowing u
27
27
  - **`selectedKey`** `string` — The currently selected key (controlled)
28
28
  - **`defaultSelectedKey`** `string` — The key of the initially selected item (uncontrolled)
29
29
  - **`allowsCustomValue`** `boolean` (default: `false`) — Whether the combo box allows custom values to be entered
30
- - **`shouldCommitOnBlur`** `boolean` (default: `true`) — Whether to commit custom value on blur in allowsCustomValue mode
30
+ - **`shouldCommitOnBlur`** `boolean` (default: `true`) — Whether to commit custom value on blur in allowsCustomValue mode. When `false`, blur discards the uncommitted text
31
31
  - **`clearOnBlur`** `boolean` (default: `false`) — Whether to clear selection and input on blur when the text names no selectable item (only applies to non-custom-value mode)
32
32
  - **`isClearable`** `boolean` (default: `false`) — Whether the combo box is clearable using ESC keyboard button or clear button inside the input
33
33
  - **`sortSelectedToTop`** `boolean` (default: `true when items provided, false otherwise`) — Whether to sort selected item to the top when popover opens (only works with items prop)
34
- - **`popoverTrigger`** `'focus' | 'input' | 'manual'` (default: `input`) — How the popover is triggered
34
+ - **`popoverTrigger`** `'focus' | 'input' | 'manual'` (default: `input`) — When the list opens on its own, see **popoverTrigger** below
35
35
  - **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter function or false to disable filtering. If not provided, uses default contains filter
36
36
  - **`hideTrigger`** `boolean` (default: `false`) — Whether to hide the trigger button
37
- - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — ComboBox size
37
+ - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — ComboBox size, which the options in the list share
38
38
  - **`listGap`** `number` — Space between options, in pixels. Defaults to a hairline (`1bw`)
39
39
  - **`necessityIndicator`** `'label' | 'icon'` — How the required state should be indicated
40
40
  - **`onSelectionChange`** `(key: Key | null) => void` — Callback fired when the selected option changes
41
41
  - **`onInputChange`** `(value: string) => void` — Callback fired when the input text changes
42
- - **`onOpenChange`** `(isOpen: boolean) => void` — Callback fired when the popover opens or closes
42
+ - **`onOpenChange`** `(isOpen: boolean) => void` — Callback fired when the list shows or hides. Not called on mount, nor while typed text that matches nothing keeps the list hidden
43
43
  - **`prefix`** `ReactNode` — Content rendered before the input
44
44
  - **`suffix`** `ReactNode` — Content rendered after the input
45
45
  - **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to validation/loading icons
@@ -56,7 +56,7 @@ A combobox component that combines a text input with a dropdown list, allowing u
56
56
 
57
57
  #### Notable Properties
58
58
 
59
- **onKeyDown** - Runs before ComboBox's own key handling, listed under [Keyboard Navigation](#keyboard-navigation). Calling `e.preventDefault()` takes the key over: ComboBox skips its handling for that event, so a prevented `ArrowDown` does not open the popover or move focus, and a prevented `Enter` does not select the focused option or commit a custom value. Without `preventDefault()` the built-in handling runs as usual after your handler. The event is React Aria's keyboard event (`KeyboardEvent` from `@react-types/shared`), whose propagation stops at the input unless you call `e.continuePropagation()`.
59
+ **onKeyDown** - Runs before ComboBox's own key handling, listed under [Keyboard Navigation](#keyboard-navigation). Calling `e.preventDefault()` takes the key over: ComboBox skips its handling for that event, so a prevented `ArrowDown` does not open the popover or move focus, and a prevented `Enter` does not select the focused option or commit a custom value. Without `preventDefault()` the built-in handling runs as usual after your handler. The event is React Aria's keyboard event (`KeyboardEvent` from `@react-types/shared`). `Escape` and `Tab` go on to ancestors, so a surrounding `Dialog` still closes on `Escape` and keeps `Tab` inside, unless ComboBox acts on them: `Escape` that closes the list or clears the value stops at the input. Other keys stop at the input unless you call `e.continuePropagation()`.
60
60
 
61
61
  ```jsx
62
62
  <ComboBox
@@ -76,7 +76,7 @@ A combobox component that combines a text input with a dropdown list, allowing u
76
76
  </ComboBox>
77
77
  ```
78
78
 
79
- **Enter inside a form.** `preventDefault()` stops the browser's form submission and ComboBox's own handling together; it cannot stop just one. With `allowsCustomValue`, the popover closed and text that matches no option, the built-in `Enter` commits the typed value and lets the event through, so the surrounding form submits. A handler that prevents that `Enter` stops both: the form does not submit, and the value is not committed until the input loses focus (when `shouldCommitOnBlur` is on, the default). In earlier versions such a handler stopped only the submit, and the value was still committed on `Enter`. To keep that behavior, commit the value in your handler:
79
+ **Enter inside a form.** `preventDefault()` stops the browser's form submission and ComboBox's own handling together; it cannot stop just one. With `allowsCustomValue` and the popover closed, the built-in `Enter` commits the typed value and lets the event through, so the surrounding form submits. A handler that prevents that `Enter` stops both: the form does not submit, and the value is not committed until the input loses focus (when `shouldCommitOnBlur` is on, the default). In earlier versions such a handler stopped only the submit, and the value was still committed on `Enter`. To keep that behavior, commit the value in your handler:
80
80
 
81
81
  ```jsx
82
82
  const [selectedKey, setSelectedKey] = useState(null);
@@ -106,21 +106,25 @@ const [selectedKey, setSelectedKey] = useState(null);
106
106
 
107
107
  **sortSelectedToTop** - When using the `items` prop (data-driven mode), the selected item will automatically appear at the top of the list when the popover opens. This is enabled by default when using `items`, but disabled when using JSX children. Set to `false` to maintain the original order.
108
108
 
109
- **allowsCustomValue** - Enables users to enter values that aren't in the predefined options list. Custom values can be committed by pressing Enter or on blur (controlled by `shouldCommitOnBlur`). **Important**: When enabled, typing in the input will clear the current selection. When disabled (default), typing only filters the options without clearing the selection.
109
+ **allowsCustomValue** - Enables users to enter values that aren't in the predefined options list. Custom values can be committed by pressing Enter or on blur (controlled by `shouldCommitOnBlur`). With the list open, Enter picks the highlighted option; with it closed (press `Escape` first), Enter commits the typed text, even when it is part of an option's label. The text is committed trimmed, and empty or whitespace-only text clears the selection (`null`). **Important**: When enabled, typing in the input will clear the current selection. When disabled (default), typing only filters the options without clearing the selection.
110
110
 
111
- **shouldCommitOnBlur** - When `true` (default), custom values are committed when the input loses focus. When `false`, custom values only commit when Enter is pressed. Only applies when `allowsCustomValue` is enabled.
111
+ **shouldCommitOnBlur** - When `true` (default), custom values are committed when the input loses focus. When `false`, only Enter or picking an option commits, and leaving the input discards the uncommitted text: the input shows the selected option's label again, so the text always agrees with the value. As typing clears the selection, that usually leaves the input empty. Only applies when `allowsCustomValue` is enabled.
112
+
113
+ **isReadOnly** - The list doesn't open, from the chevron, the arrow keys, a press in the input or focus, and neither keys nor blur change the value or the text. The clear button is hidden.
112
114
 
113
115
  **clearOnBlur** - When `true`, text that names no selectable item clears both the selection and the input when the input loses focus. When `false` (default), the input reverts to showing the current selection, and empty text still clears it. Only applies to non-custom-value mode. Useful for search-like scenarios where you want to reset after each interaction.
114
116
 
115
- **Blur** - Without `allowsCustomValue`, leaving the input selects the item the text names exactly, or else the only item it still matches, unless that item is in `disabledKeys`. Among items sharing the label, the selected one wins, then the first enabled one. Empty text clears the selection. Other text reverts to the selection, or clears with `clearOnBlur`; a disabled item that is already selected stays selected.
117
+ **Blur** - Without `allowsCustomValue`, leaving the input selects the item the text names exactly, or else the only item it still matches, unless that item is in `disabledKeys`. The exact match follows the filter's rules for case, accents and locale. Among items sharing the label, the selected one wins, then the first enabled one. Empty text clears the selection. Other text reverts to the selection, or clears with `clearOnBlur`; a disabled item that is already selected stays selected. Blur reports only what it changes: leaving a field without editing it calls neither `onSelectionChange` nor `onInputChange`.
118
+
119
+ **Presses in the input** - A press in the input opens a closed list, whether the input already had focus or not, unless `popoverTrigger` is `manual`. The list shows the options the typed text leaves, and text that matches nothing keeps it hidden, so a press that moves the caret does not change what `Enter` commits; the chevron and the arrow keys show every option instead. A press in the input while the list is open only moves the caret; the chevron still toggles the list. A click on the field label only focuses the input.
116
120
 
117
121
  **Outside presses** - While the list is open, a press on an enabled control outside it reaches the control on the first click, after the typed text settles as it does on `Tab`. The control has to be in the dialog, popover or menu the field sits in, or anywhere on the page when the field is in none; an enabled UI Kit `Button` or `ItemButton` is reached from anywhere. A press anywhere else, such as blank space, a dialog's backdrop or a control outside the field's dialog or popover, only closes the list and keeps the input focused with its text. A press on a disabled control keeps the focus and text too; the list stays open unless the control is only `aria-disabled`.
118
122
 
119
123
  **popoverTrigger** - Controls how the popover opens:
120
124
 
121
125
  - `manual` - Only opens via trigger button or arrow keys
122
- - `input` (default) - Opens when user types + manual triggers
123
- - `focus` - Opens on input focus + typing + manual triggers
126
+ - `input` (default) - Opens when the user types or presses the input + manual triggers
127
+ - `focus` - Opens on input focus + typing + presses + manual triggers
124
128
 
125
129
  **filter** - Custom filter function or `false` to disable filtering. By default, uses a contains-based filter. Provide a custom function `(textValue, inputValue) => boolean` to customize filtering logic.
126
130
 
@@ -208,8 +212,8 @@ The `mods` property accepts the following modifiers you can override:
208
212
  ### Popover Trigger Modes
209
213
 
210
214
  - `manual` - Only opens via trigger button or arrow keys
211
- - `input` - Opens when user types + manual triggers (default)
212
- - `focus` - Opens on input focus + typing + manual triggers
215
+ - `input` - Opens when the user types or presses the input + manual triggers (default)
216
+ - `focus` - Opens on input focus + typing + presses + manual triggers
213
217
 
214
218
  ### Validation States
215
219
 
@@ -366,6 +370,8 @@ const categories = [
366
370
 
367
371
  ### Loading State
368
372
 
373
+ The input shows the selected option's label. A `selectedKey` whose option has not loaded yet shows the key until the option arrives. Once the input has shown a label for the selected key, it keeps that label while the options leave the item out, for example during a refetch or a server-side search.
374
+
369
375
  ```jsx
370
376
  <ComboBox isLoading label="Fruit" placeholder="Select a fruit...">
371
377
  <ComboBox.Item key="apple">Apple</ComboBox.Item>
@@ -565,11 +571,11 @@ const [selectedKey, setSelectedKey] = useState(null);
565
571
 
566
572
  ### Keyboard Navigation
567
573
 
568
- - `Tab` - Moves focus to/from the combobox input
574
+ - `Tab` - Moves focus to/from the combobox input and closes the popover. The chevron and clear buttons are not Tab stops
569
575
  - `ArrowDown` - Opens popover (if closed) or moves focus to next option
570
576
  - `ArrowUp` - Opens popover (if closed) or moves focus to previous option
571
- - `Enter` - Selects the focused option and closes popover
572
- - `Escape` - Closes popover (if open) or clears input (if clearable and popover closed)
577
+ - `Enter` - Selects the focused option and closes popover. Pressed right after typing, it picks the first match. With `allowsCustomValue` and the popover closed, commits the typed text. Ignored while an input method (IME) is composing text
578
+ - `Escape` - Closes popover (if open) or clears input (if clearable and popover closed); otherwise it goes on, so a surrounding dialog closes
573
579
  - `Home` - Moves focus to the first option (when popover is open)
574
580
  - `End` - Moves focus to the last option (when popover is open)
575
581
  - Typing - Filters options based on input value
@@ -588,10 +594,11 @@ An `onKeyDown` handler runs before all of these and can skip any of them for a k
588
594
  ### ARIA Properties
589
595
 
590
596
  - `role="combobox"` - Identifies the input as a combobox
591
- - `aria-expanded` - Indicates whether the popover is open or closed
597
+ - `aria-expanded` - Indicates whether the list is shown
592
598
  - `aria-haspopup="listbox"` - Indicates the combobox has a listbox popup
599
+ - `aria-autocomplete="list"` - Indicates that typing filters the options
593
600
  - `aria-controls` - References the listbox ID when popover is open
594
- - `aria-activedescendant` - References the currently focused option
601
+ - `aria-activedescendant` - References the currently focused option, while it is shown
595
602
  - `aria-label` - Provides accessible label when no visible label exists
596
603
  - `aria-required` - Indicates required fields
597
604
  - `aria-invalid` - Indicates validation errors
@@ -36,8 +36,8 @@ A searchable list selection component that combines a ListBox with an integrated
36
36
  - **`description`** `string` — Field description
37
37
  - **`header`** `ReactNode` — Custom header content
38
38
  - **`footer`** `ReactNode` — Custom footer content
39
- - **`showSelectAll`** `boolean` (default: `false`) — Whether to show "Select All" option in multiple mode
40
- - **`selectAllLabel`** `string` (default: `All`) — Label for the "Select All" option
39
+ - **`showSelectAll`** `boolean` (default: `false`) — Whether to show "Select All" checkbox in multiple mode. Under a search it selects or deselects only the options shown, and selected options the search hides stay selected
40
+ - **`selectAllLabel`** `string` (default: `Select All`) — Label for the "Select All" checkbox
41
41
  - **`searchValue`** `string` — Controlled search input value
42
42
  - **`onSearchChange`** `(value: string) => void` — Callback when search input changes
43
43
  - **`onSelectionChange`** `(keys: Key | Key[] | 'all' | null) => void` — Callback when selection changes
@@ -50,8 +50,8 @@ Choose a different component when the interaction has another shape:
50
50
  - **`renderSummary`** `((args: { selectedLabels, selectedKeys, selectionMode }) => ReactNode) | false` — Custom renderer for the summary shown inside the trigger when there is a selection
51
51
  - **`isCheckable`** `boolean` (default: `false`) — Whether to show checkboxes for multiple selection mode
52
52
  - **`shouldFocusWrap`** `boolean` (default: `false`) — Whether keyboard navigation should wrap around
53
- - **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All" option in multiple selection mode
54
- - **`selectAllLabel`** `string` (default: `All`) — Label for the "Select All" option
53
+ - **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All" checkbox in multiple selection mode. Under a search it selects or deselects only the options shown, and selected options the search hides stay selected
54
+ - **`selectAllLabel`** `string` (default: `All`) — Label for the "Select All" checkbox
55
55
  - **`description`** `string` — Field description
56
56
  - **`message`** `string` — Help or error message
57
57
  - **`listBoxStyles`** `Styles` — Custom styles for the dropdown list container within the popover
@@ -31,7 +31,7 @@ A versatile list selection component that allows users to select one or more ite
31
31
  - **`shape`** `'card' | 'plain' | 'popover'` (default: `card`) — Visual shape of the ListBox
32
32
  - **`listGap`** `number` — Space between options, in pixels. Defaults to a hairline (`1bw`)
33
33
  - **`filter`** `(nodes: Iterable<Node>) => Iterable<Node>` — Filter function for the list items
34
- - **`emptyLabel`** `ReactNode` (default: `No items`) — Label shown when no items are available
34
+ - **`emptyLabel`** `ReactNode` (default: `No items`) — Label shown when no items are available. The empty listbox stays in the document, described by this label
35
35
  - **`header`** `ReactNode` — Custom header content
36
36
  - **`footer`** `ReactNode` — Custom footer content
37
37
  - **`focusOnHover`** `boolean` (default: `true`) — Whether moving the pointer over an option will move DOM focus to that option
@@ -41,13 +41,13 @@ A versatile list selection component that allows users to select one or more ite
41
41
  - **`shouldFocusWrap`** `boolean` (default: `false`) — Whether keyboard navigation should wrap around
42
42
  - **`description`** `string` — Field description
43
43
  - **`message`** `string` — Help or error message
44
- - **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All" option in multiple selection mode
45
- - **`selectAllLabel`** `string` (default: `Select All`) — Label for the "Select All" option
44
+ - **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All" checkbox in multiple selection mode
45
+ - **`selectAllLabel`** `string` (default: `Select All`) — Label for the "Select All" checkbox
46
46
  - **`onSelectionChange`** `(keys: Key | Key[] | 'all' | null) => void` — Callback when selection changes
47
47
  - **`onEscape`** `() => void` — Callback when Escape key is pressed
48
48
  - **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked (non-checkbox area)
49
49
  - **`items`** `Iterable<T>` — Array of items for dynamic content with render function pattern
50
- - **`disableSelectionToggle`** `boolean` (default: `false`) — When true, clicking an already-selected item keeps it selected instead of toggling it off
50
+ - **`disableSelectionToggle`** `boolean` (default: `false`) — When true, clicking an already-selected item keeps it selected instead of toggling it off (single selection mode)
51
51
  - **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop item reordering. Disables virtualization when active
52
52
  - **`onReorder`** `(newOrder: string[]) => void` — Callback when items are reordered via drag-and-drop or keyboard (Alt+Arrow)
53
53
 
@@ -137,18 +137,21 @@ The `mods` property accepts the following modifiers you can override:
137
137
 
138
138
  **showSelectAll** (`boolean`, default: `false`)
139
139
 
140
- - When `true` in multiple selection mode, displays a "Select All" option in the header
141
- - The checkbox shows three states: unchecked (none selected), indeterminate (some selected), checked (all selected)
140
+ - When `true` in multiple selection mode, displays a "Select All" checkbox above the list
141
+ - The checkbox shows three states: unchecked (none selected), indeterminate (some selected), checked (every selectable item the list shows is selected, however it got there). Disabled items don't count
142
+ - A press while it is not checked selects every item, reported as `'all'`. A press while it is checked takes the items the list shows out of the selection, so selected keys that are not among its items stay selected
143
+ - Under a `filter` that hides items, it acts on the items shown: a press adds them to the selection or, once all of them are selected, removes them. Selected items the filter hides stay selected
144
+ - It sits outside the listbox as its own Tab stop: `Tab` / `Shift+Tab` reach it and `Space` toggles it
142
145
  - Only works with `selectionMode="multiple"`
143
146
 
144
147
  **selectAllLabel** (`ReactNode`, default: `'Select All'`)
145
148
 
146
- - Custom label for the "Select All" option
149
+ - Custom label for the "Select All" checkbox
147
150
  - Only used when `showSelectAll={true}`
148
151
 
149
152
  **allValueProps** (`Partial<CubeItemProps>`)
150
153
 
151
- - Props to customize the styling and behavior of the "Select All" option
154
+ - Props to customize the styling and behavior of the "Select All" checkbox
152
155
  - Accepts any Item props like `styles`, `icon`, etc.
153
156
 
154
157
  **disallowEmptySelection** (`boolean`, default: `false`)
@@ -163,7 +166,7 @@ The `mods` property accepts the following modifiers you can override:
163
166
 
164
167
  **disableSelectionToggle** (`boolean`, default: `false`)
165
168
 
166
- - When `true`, clicking an already-selected item keeps it selected instead of toggling it off
169
+ - When `true`, clicking an already-selected item keeps it selected instead of toggling it off, and `onSelectionChange` reports that item again. Applies in single selection mode, set or by default
167
170
  - Useful when embedding ListBox inside components like ComboBox
168
171
 
169
172
  **disabledKeys** (`Key[]`)
@@ -700,6 +703,7 @@ const [keyOrder, setKeyOrder] = useState([
700
703
  ### Keyboard Navigation
701
704
 
702
705
  - `Tab` - Moves focus to/from the ListBox. A disabled ListBox is not in the Tab order
706
+ - `Tab` / `Shift+Tab` - Reach the "Select All" checkbox (with `showSelectAll`), which `Space` toggles
703
707
  - `Arrow Keys` - Navigate between options
704
708
  - `Space/Enter` - Select/deselect the focused option
705
709
  - `Home/End` - Move to first/last option
@@ -823,7 +827,7 @@ function Example() {
823
827
 
824
828
  ### Virtualization
825
829
 
826
- For large datasets, use the `items` prop with a render function. This enables automatic virtualization — only visible items are rendered in the DOM, providing smooth scrolling even with thousands of items.
830
+ For large datasets, use the `items` prop with a render function. This enables automatic virtualization — only visible items are rendered in the DOM, providing smooth scrolling even with thousands of items. Moving focus to an option that isn't rendered (`End`, `Home`, `Page Down`, typeahead, or the selected option when the list takes focus) scrolls the list to it.
827
831
 
828
832
  ```jsx
829
833
  const items = Array.from({ length: 1000 }, (_, i) => ({
@@ -16,14 +16,13 @@ A number input component that allows users to enter numeric values and increment
16
16
 
17
17
  ### Properties
18
18
 
19
- - **`value`** `number` — The numeric value in controlled mode
19
+ - **`value`** `number | null` — The numeric value in controlled mode. `null` clears the field and keeps it controlled
20
20
  - **`defaultValue`** `number` — The default numeric value in uncontrolled mode
21
21
  - **`placeholder`** `string` — Placeholder text when input is empty
22
22
  - **`icon`** `ReactElement` — Icon element rendered before the input
23
23
  - **`prefix`** — Input decoration before the main input
24
24
  - **`suffix`** — Input decoration after the main input
25
- - **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of `suffix` relative to the stepper buttons. `before` keeps a unit next to the number (`40 px ⌃⌄`); `after` places the suffix after the steppers. The validation/loading icon always comes before both
26
- - **`actions`** `ReactNode` — Controls placed last, after the steppers and `suffix` whatever `suffixPosition` is
25
+ - **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to validation/loading icons
27
26
  - **`hideStepper`** `boolean` (default: `false`) — Whether to hide the stepper buttons
28
27
  - **`minValue`** `number` — Minimum allowed value
29
28
  - **`maxValue`** `number` — Maximum allowed value
@@ -32,10 +31,11 @@ A number input component that allows users to enter numeric values and increment
32
31
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
33
32
  - **`autoComplete`** `string` (default: `off`) — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`cc-number`, `one-time-code`, …). A number field opts out of autofill by default.
34
33
  - **`isWheelDisabled`** `boolean` — Whether scrolling the mouse wheel changes the value
35
- - **`decrementAriaLabel`** `string` — Custom aria-label for the decrement button
36
- - **`incrementAriaLabel`** `string` — Custom aria-label for the increment button
34
+ - **`decrementAriaLabel`** `string` — Custom aria-label for the decrement button, in place of the translated "Decrease {label}"
35
+ - **`incrementAriaLabel`** `string` — Custom aria-label for the increment button, in place of the translated "Increase {label}"
37
36
  - **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced
38
- - **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
37
+ - **`wrapperProps`** `Props` — Direct props passed to the input wrapper element, merged with the `group` props React Aria puts there: event handlers are chained
38
+ - **`validate`** `(value: number) => ValidationError | true | null | undefined` — Client-side validation. React Aria sets `aria-invalid` from the returned errors at once; the invalid style and the message follow after the user edits or leaves the field, so an empty field does not open in red. A typed number is checked once it commits, on blur or `Enter`. An explicit `errorMessage` replaces the returned message, and an explicit `isInvalid` (or a form's validation) takes over from `validate` entirely
39
39
  - **`onChange`** `function` — Callback fired when the input value changes
40
40
  - **`onBlur`** `function` — Callback fired when the input loses focus
41
41
  - **`onFocus`** `function` — Callback fired when the input receives focus
@@ -110,7 +110,7 @@ The `mods` prop accepts the following modifiers you can override:
110
110
  - **`disabled`** `boolean` — Forces disabled appearance.
111
111
  - **`invalid`** `boolean` — Forces invalid state styling.
112
112
  - **`valid`** `boolean` — Forces valid state styling.
113
- - **`loading`** `boolean` — Displays loading spinner.
113
+ - **`hovered`** `boolean` — Forces hover appearance.
114
114
  - **`prefix`** `boolean` — Indicates presence of prefix content.
115
115
  - **`suffix`** `boolean` — Indicates presence of suffix content.
116
116
 
@@ -140,14 +140,6 @@ The `mods` prop accepts the following modifiers you can override:
140
140
  <NumberInput label="Amount" hideStepper />
141
141
  ```
142
142
 
143
- ### With a Unit Suffix
144
-
145
- A unit sits between the number and the steppers. Pass `suffixPosition="after"` to put the suffix after the steppers instead.
146
-
147
- ```jsx
148
- <NumberInput label="Width" defaultValue={40} suffix={<Text>px</Text>} />
149
- ```
150
-
151
143
  ### With Min/Max/Step
152
144
 
153
145
  ```jsx
@@ -178,17 +170,16 @@ A unit sits between the number and the steppers. Pass `suffixPosition="after"` t
178
170
 
179
171
  ### Screen Reader Support
180
172
 
181
- - Announces role "spinbutton"
182
- - Announces label, description, and validation messages
183
- - Announces min/max/step constraints
173
+ - Announces a text field described as "Number field", with its label, description and validation messages
174
+ - The stepper buttons are named after the field ("Increase Quantity", "Decrease Quantity"), translated with the UI Kit locale. With a label that is not text, the name is "Increase" or "Decrease" and the label is read after it. They are not in the `Tab` order, and pressing one does not close a popover the field sits in
184
175
  - State changes like "invalid" or "required" are announced
185
- - Loading state is announced to screen readers
176
+ - The loading indicator is visual only: `isLoading` is not announced
186
177
 
187
178
  ### ARIA Properties
188
179
 
189
180
  - `aria-label`, `aria-labelledby` – Accessible name for the input
190
181
  - `aria-describedby` – Links to description and error messages
191
- - `aria-invalid` – Managed automatically based on `isInvalid`
182
+ - `aria-invalid` – Managed automatically based on `isInvalid` and `validate`
192
183
  - `aria-required` – Set when `isRequired` is true
193
184
  - Additional ARIA attributes supported by React Aria's `useNumberField`
194
185
 
@@ -16,7 +16,7 @@ A password input is a specialized text field that masks user input to protect se
16
16
 
17
17
  ### Properties
18
18
 
19
- - **`value`** `string` — The password value in controlled mode
19
+ - **`value`** `string | null` — The password value in controlled mode. `null` clears the field and keeps it controlled
20
20
  - **`defaultValue`** `string` — The default password value in uncontrolled mode
21
21
  - **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
22
22
  - **`placeholder`** `string` — Placeholder text when input is empty
@@ -26,7 +26,7 @@ A password input is a specialized text field that masks user input to protect se
26
26
  - **`suffixPosition`** `'before' | 'after'` (default: `after`) — Position of suffix relative to validation/loading icons
27
27
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
28
28
  - **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`current-password`, `new-password`, `off`, …). The lowercase `autocomplete` alias is deprecated.
29
- - **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced
29
+ - **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced. The explicit `isDisabled`, `maxLength`, `minLength`, `autoFocus` and `autoComplete` props win over the same attributes in `inputProps` when they are set; one left unset keeps the `inputProps` value
30
30
  - **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
31
31
  - **`onChange`** `function` — Callback fired when the input value changes
32
32
  - **`onBlur`** `function` — Callback fired when the input loses focus
@@ -186,8 +186,8 @@ The `mods` property accepts the following modifiers you can override:
186
186
 
187
187
  ### Keyboard Navigation
188
188
 
189
- - `Tab` - Moves focus to the password input
190
- - `Shift + Tab` - Moves focus to the toggle button
189
+ - `Tab` - Moves focus to the password input, then to the toggle button, which comes after it
190
+ - `Shift + Tab` - Moves focus from the toggle button back to the input
191
191
  - `Enter` - Toggles password visibility when toggle button is focused
192
192
  - `Space` - Toggles password visibility when toggle button is focused
193
193
  - All standard text input keyboard shortcuts work for text entry
@@ -195,8 +195,7 @@ The `mods` property accepts the following modifiers you can override:
195
195
  ### Screen Reader Support
196
196
 
197
197
  - Component announces as "password" input type to screen readers
198
- - Toggle button announces its purpose ("Toggle masking", "Show password", "Hide password")
199
- - Current visibility state is communicated when changed
198
+ - The toggle is a toggle button named "Show password" (translated with the UI Kit locale). Its name stays the same, and `aria-pressed` reports whether the password is shown: "Show password, pressed" while it is visible, "Show password, not pressed" while it is masked
200
199
  - Validation errors and requirements are announced
201
200
 
202
201
  ### ARIA Properties
@@ -206,7 +205,7 @@ The `mods` property accepts the following modifiers you can override:
206
205
  - `aria-describedby` - References additional descriptive text
207
206
  - `aria-invalid` - Indicates validation state
208
207
  - `aria-required` - Indicates if password entry is required
209
- - Toggle button includes appropriate `aria-label` for its function
208
+ - The toggle button has `aria-label="Show password"` and `aria-pressed`, `true` while the password is shown
210
209
 
211
210
  ## Best Practices
212
211
 
@@ -629,9 +629,9 @@ The Picker component is built with React Aria hooks and provides comprehensive a
629
629
 
630
630
  ### Screen Reader Support
631
631
 
632
- - Trigger button announces as "button" with current selection state
633
- - When empty: announces placeholder text
634
- - When selected: announces selected item(s) or count
632
+ - The trigger is a button named by the field `label` (or `aria-label`), so its name does not change with the selection
633
+ - The value the trigger shows is its description, announced after the name: the selected item(s), the `renderSummary` output, or the placeholder while empty (for example "Status, button, Open")
634
+ - With `renderSummary={false}` the trigger shows no value, so it has no value description
635
635
  - Popover opening/closing is announced to screen readers
636
636
  - Item selection changes are announced immediately
637
637
  - Loading state announces "loading" to users
@@ -644,9 +644,10 @@ The component automatically manages ARIA attributes:
644
644
 
645
645
  - **`aria-label`** — Labels the trigger when no visible label exists
646
646
  - **`aria-labelledby`** — Associates the label with the trigger
647
- - **`aria-describedby`** — Associates help text and error messages
647
+ - **`aria-describedby`** — Associates the displayed value, then help text and error messages
648
+ - **`aria-haspopup="dialog"`** — The trigger opens a popover dialog that holds the list
648
649
 
649
- The following ARIA attributes are automatically managed by React Aria and do not need to be set manually: `aria-expanded`, `aria-haspopup`, `aria-invalid`, `aria-required`, `aria-disabled`.
650
+ The trigger also sets `aria-expanded`, and `aria-controls` while the popover is open; none of these need to be set manually. A disabled Picker disables the trigger button.
650
651
 
651
652
  ### Best Practices for Accessibility
652
653
 
@@ -29,7 +29,7 @@ If the control is not a field — a toolbar that swaps which view is on screen,
29
29
  ### Properties
30
30
 
31
31
  - **`children`** — Radio elements that define the available options
32
- - **`value`** `string` — The currently selected value (controlled)
32
+ - **`value`** `string | null` — The currently selected value (controlled). `null` selects nothing and keeps the group controlled
33
33
  - **`defaultValue`** `string` — The default selected value (uncontrolled)
34
34
  - **`type`** `'radio' | 'button' | 'tabs'` (default: `radio`) — Visual type for all radios in the group (button/tabs default to horizontal)
35
35
  - **`orientation`** `undefined | 'vertical' | 'horizontal'` (default: `undefined`) — Orientation of the radio group. When unset it is derived from `type`: `horizontal` for `button` and `tabs`, `vertical` otherwise
@@ -16,7 +16,7 @@ A search input provides a specialized text field for search functionality, featu
16
16
 
17
17
  ### Properties
18
18
 
19
- - **`value`** `string` — The search value in controlled mode
19
+ - **`value`** `string | null` — The search value in controlled mode. `null` clears the field and keeps it controlled
20
20
  - **`defaultValue`** `string` — The default search value in uncontrolled mode
21
21
  - **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
22
22
  - **`placeholder`** `string` — Placeholder text when input is empty
@@ -24,14 +24,15 @@ A search input provides a specialized text field for search functionality, featu
24
24
  - **`prefix`** `ReactNode` — Content rendered before the input
25
25
  - **`suffix`** — Input decoration after the main input (before clear button)
26
26
  - **`suffixPosition`** `'before' | 'after'` (default: `after`) — Position of suffix relative to validation/loading state icons
27
- - **`isClearable`** `boolean` (default: `false`) — Whether the search input shows a clear button
27
+ - **`isClearable`** `boolean` (default: `false`) — Whether the search input shows a clear button while it has text. `Escape` clears the input either way
28
28
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
29
29
  - **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`off` to suppress autofill on a filter field). The lowercase `autocomplete` alias is deprecated.
30
30
  - **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced
31
31
  - **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
32
+ - **`inputRef`** `RefObject<HTMLInputElement>` — Ref to the native input element. It is the same element the clear button returns focus to
32
33
  - **`onChange`** `function` — Callback fired when the search value changes
33
34
  - **`onSubmit`** `function` — Callback fired when search is submitted
34
- - **`onClear`** `function` — Callback fired when search is cleared
35
+ - **`onClear`** `function` — Callback fired after the text is cleared, by the clear button or by `Escape`. Not called when there was no text to clear
35
36
  - **`onBlur`** `function` — Callback fired when the input loses focus
36
37
  - **`onFocus`** `function` — Callback fired when the input receives focus
37
38
 
@@ -179,8 +180,8 @@ const [searchValue, setSearchValue] = useState('');
179
180
 
180
181
  ### Keyboard Navigation
181
182
 
182
- - `Tab` - Moves focus to the search input
183
- - `Escape` - Clears the search input (when `isClearable` is true)
183
+ - `Tab` - Moves focus to the search input. The clear button is skipped: it is not in the `Tab` order
184
+ - `Escape` - Clears the search input and calls `onClear`, whether or not `isClearable` is set, as in a native search field. With the input already empty, `Escape` is left to the surrounding UI, so a `Dialog` closes on the next press
184
185
  - `Enter` - Submits search or triggers onSubmit callback
185
186
  - All standard text input keyboard shortcuts work for text entry
186
187
 
@@ -189,7 +190,7 @@ const [searchValue, setSearchValue] = useState('');
189
190
  - Component announces as "search" input type to screen readers
190
191
  - Search icon and clear button have appropriate labels
191
192
  - Current search value and results count are announced when available
192
- - Loading states and validation errors are communicated
193
+ - `isInvalid` sets `aria-invalid` on the input. The loading indicator is visual only: `isLoading` is not announced
193
194
 
194
195
  ### ARIA Properties
195
196