@cube-dev/ui-kit 0.187.2 → 0.188.0

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 (633) hide show
  1. package/dist/CHANGELOG.md +33 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.d.ts +4 -0
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Action/Action.js.map +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.js +2 -2
  21. package/dist/components/actions/Button/Button.js.map +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +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 +3 -3
  31. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  32. package/dist/components/actions/Link/Link.js +1 -1
  33. package/dist/components/actions/Menu/Menu.js +1 -1
  34. package/dist/components/actions/Menu/MenuItem.js +1 -1
  35. package/dist/components/actions/Menu/MenuSection.js +7 -5
  36. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  37. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  38. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  39. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  40. package/dist/components/actions/Menu/context.js +1 -1
  41. package/dist/components/actions/Menu/styled.js +1 -1
  42. package/dist/components/actions/actions-run.js +1 -1
  43. package/dist/components/actions/index.js +1 -1
  44. package/dist/components/actions/use-action.d.ts +4 -0
  45. package/dist/components/actions/use-action.js +6 -1
  46. package/dist/components/actions/use-action.js.map +1 -1
  47. package/dist/components/actions/use-anchored-menu.js +1 -1
  48. package/dist/components/actions/use-context-menu.js +1 -1
  49. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  50. package/dist/components/content/Alert/Alert.js +1 -1
  51. package/dist/components/content/Alert/use-alert.js +1 -1
  52. package/dist/components/content/Avatar/Avatar.js +1 -1
  53. package/dist/components/content/Badge/Badge.js +1 -1
  54. package/dist/components/content/Card/Card.js +1 -1
  55. package/dist/components/content/Content.js +1 -1
  56. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  57. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  58. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  59. package/dist/components/content/Divider.js +1 -1
  60. package/dist/components/content/Footer.js +1 -1
  61. package/dist/components/content/Header.js +1 -1
  62. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  63. package/dist/components/content/InfoBadge/InfoBadge.d.ts +7 -1
  64. package/dist/components/content/InfoBadge/InfoBadge.js +6 -1
  65. package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
  66. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  67. package/dist/components/content/Item/Item.js +1 -1
  68. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  69. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  70. package/dist/components/content/Layout/GridLayout.js +1 -1
  71. package/dist/components/content/Layout/Layout.js +1 -1
  72. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  73. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  74. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  75. package/dist/components/content/Layout/LayoutContent.js +1 -1
  76. package/dist/components/content/Layout/LayoutContext.js +1 -1
  77. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  78. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  79. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  80. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  81. package/dist/components/content/Layout/LayoutPane.js +1 -1
  82. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  83. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  84. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  85. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  86. package/dist/components/content/Layout/index.js +1 -1
  87. package/dist/components/content/Layout/utils.js +1 -1
  88. package/dist/components/content/Paragraph.js +1 -1
  89. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  90. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  91. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  92. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  93. package/dist/components/content/Result/Result.js +1 -1
  94. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  95. package/dist/components/content/Tag/Tag.js +1 -1
  96. package/dist/components/content/Text.js +1 -1
  97. package/dist/components/content/TextItem/TextItem.js +1 -1
  98. package/dist/components/content/Title.js +1 -1
  99. package/dist/components/content/Tree/Tree.js +1 -1
  100. package/dist/components/content/Tree/TreeNode.js +1 -1
  101. package/dist/components/content/Tree/styled.js +1 -1
  102. package/dist/components/content/Tree/tree-index.js +1 -1
  103. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  104. package/dist/components/content/Tree/use-load-data.js +1 -1
  105. package/dist/components/content/highlightText.js +1 -1
  106. package/dist/components/content/use-auto-tooltip.js +1 -1
  107. package/dist/components/data/DataTable/DataTable.js +31 -5
  108. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  109. package/dist/components/data/DataTable/types.d.ts +3 -1
  110. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  111. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  112. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  113. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  114. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  115. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  116. package/dist/components/data/TableBase/RowCollection.js +1 -1
  117. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  118. package/dist/components/data/TableBase/TableRow.js +1 -1
  119. package/dist/components/data/TableBase/TableView.js +9 -7
  120. package/dist/components/data/TableBase/TableView.js.map +1 -1
  121. package/dist/components/data/TableBase/column-menu.js +1 -1
  122. package/dist/components/data/TableBase/column-styles.js +82 -0
  123. package/dist/components/data/TableBase/column-styles.js.map +1 -0
  124. package/dist/components/data/TableBase/column-tint.js +1 -1
  125. package/dist/components/data/TableBase/row-menu.js +1 -1
  126. package/dist/components/data/TableBase/styled.js +1 -1
  127. package/dist/components/data/TableBase/table-tree.js +1 -1
  128. package/dist/components/data/TableBase/types.d.ts +11 -0
  129. package/dist/components/data/TableBase/types.js +1 -1
  130. package/dist/components/data/TableBase/types.js.map +1 -1
  131. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  132. package/dist/components/data/TableBase/use-column-order.js +1 -1
  133. package/dist/components/data/TableBase/use-container-width.js +1 -1
  134. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  135. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  136. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  137. package/dist/components/data/TableBase/use-table-search.js +1 -1
  138. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  139. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  140. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  141. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  142. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  143. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  144. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  145. package/dist/components/fields/Checkbox/context.js +1 -1
  146. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  147. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  148. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  149. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  150. package/dist/components/fields/ComboBox/ComboBox.d.ts +9 -4
  151. package/dist/components/fields/ComboBox/ComboBox.js +2 -1
  152. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  153. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  154. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  155. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  156. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  157. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  158. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  159. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  160. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  161. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  162. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  163. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  164. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  165. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  166. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  167. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  168. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  169. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  170. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  171. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  172. package/dist/components/fields/DatePicker/period.js +1 -1
  173. package/dist/components/fields/DatePicker/props.js +1 -1
  174. package/dist/components/fields/DatePicker/utils.js +1 -1
  175. package/dist/components/fields/FileInput/FileInput.js +1 -1
  176. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  177. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  178. package/dist/components/fields/Input/Input.js +1 -1
  179. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  180. package/dist/components/fields/ListBox/ListBox.js +1 -1
  181. package/dist/components/fields/ListBox/optionId.js +1 -1
  182. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +46 -44
  183. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  184. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  185. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  186. package/dist/components/fields/NumberInput/NumberInput.d.ts +2 -2
  187. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  188. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  189. package/dist/components/fields/NumberInput/StepButton.js +3 -3
  190. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  191. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +2 -1
  192. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  193. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  194. package/dist/components/fields/Picker/Picker.js +1 -1
  195. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  196. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  197. package/dist/components/fields/RadioGroup/context.js +1 -1
  198. package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +9 -4
  199. package/dist/components/fields/SearchComboBox/SearchComboBox.js +2 -1
  200. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  201. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  202. package/dist/components/fields/Select/Select.js +1 -1
  203. package/dist/components/fields/Slider/Gradation.js +1 -1
  204. package/dist/components/fields/Slider/HueSlider.js +1 -1
  205. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  206. package/dist/components/fields/Slider/Slider.js +1 -1
  207. package/dist/components/fields/Slider/SliderBase.js +1 -1
  208. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  209. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  210. package/dist/components/fields/Slider/elements.js +1 -1
  211. package/dist/components/fields/Slider/index.js +1 -1
  212. package/dist/components/fields/Switch/Switch.js +1 -1
  213. package/dist/components/fields/TagInput/TagInput.js +170 -158
  214. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  215. package/dist/components/fields/TagInput/TagList.js +1 -1
  216. package/dist/components/fields/TextArea/TextArea.js +1 -1
  217. package/dist/components/fields/TextInput/TextInput.d.ts +2 -2
  218. package/dist/components/fields/TextInput/TextInput.js +1 -1
  219. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  220. package/dist/components/fields/TextInput/TextInputBase.d.ts +2 -2
  221. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  222. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  223. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  224. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  225. package/dist/components/fields/TriggerActions.js +1 -1
  226. package/dist/components/fields/color/ColorPanel.js +1 -1
  227. package/dist/components/fields/color/channels.js +1 -1
  228. package/dist/components/fields/color/color.js +1 -1
  229. package/dist/components/fields/color/context.js +1 -1
  230. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  231. package/dist/components/form/Form/Field.js +1 -1
  232. package/dist/components/form/Form/Form.js +1 -1
  233. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  234. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  235. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  236. package/dist/components/form/Form/SubmitError.js +1 -1
  237. package/dist/components/form/Form/backend.js +1 -1
  238. package/dist/components/form/Form/index.js +1 -1
  239. package/dist/components/form/Form/modern/actions.js +1 -1
  240. package/dist/components/form/Form/modern/context.js +1 -1
  241. package/dist/components/form/Form/modern/controller.js +1 -1
  242. package/dist/components/form/Form/modern/field-binding.js +1 -1
  243. package/dist/components/form/Form/modern/field.js +1 -1
  244. package/dist/components/form/Form/modern/react.js +1 -1
  245. package/dist/components/form/Form/modern/store.js +1 -1
  246. package/dist/components/form/Form/modern/validation.js +1 -1
  247. package/dist/components/form/Form/modern/values.js +1 -1
  248. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  249. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  250. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  251. package/dist/components/form/Form/use-field/use-field.js +1 -1
  252. package/dist/components/form/Form/use-form.js +1 -1
  253. package/dist/components/form/Form/validation.js +1 -1
  254. package/dist/components/form/Label.js +1 -1
  255. package/dist/components/form/legacy-tooltip.js +1 -1
  256. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  257. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  258. package/dist/components/form/validation/use-validation-props.js +1 -1
  259. package/dist/components/form/wrapper.js +1 -1
  260. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  261. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  262. package/dist/components/layout/Board/Board.js +1 -1
  263. package/dist/components/layout/Board/BoardProvider.js +1 -1
  264. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  265. package/dist/components/layout/Board/Widget.js +1 -1
  266. package/dist/components/layout/Board/WidgetHost.js +1 -1
  267. package/dist/components/layout/Board/board-context.js +1 -1
  268. package/dist/components/layout/Board/board-store.js +1 -1
  269. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  270. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  271. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  272. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  273. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  274. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  275. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  276. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  277. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  278. package/dist/components/layout/Board/index.js +1 -1
  279. package/dist/components/layout/Board/responsive-utils.js +1 -1
  280. package/dist/components/layout/Board/use-board-layout.js +1 -1
  281. package/dist/components/layout/Board/use-board-registry.js +1 -1
  282. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  283. package/dist/components/layout/Board/use-board-selection.js +1 -1
  284. package/dist/components/layout/Flex.js +1 -1
  285. package/dist/components/layout/Flow.js +1 -1
  286. package/dist/components/layout/Grid.js +1 -1
  287. package/dist/components/layout/Panel.js +1 -1
  288. package/dist/components/layout/Prefix.js +1 -1
  289. package/dist/components/layout/ResizablePanel.js +1 -1
  290. package/dist/components/layout/Space.js +1 -1
  291. package/dist/components/layout/Suffix.js +1 -1
  292. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  293. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  294. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  295. package/dist/components/navigation/Tabs/TabButton.js +470 -407
  296. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  297. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  298. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  299. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  300. package/dist/components/navigation/Tabs/Tabs.js +22 -4
  301. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  302. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  303. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  304. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  305. package/dist/components/navigation/Tabs/styled.js +1 -1
  306. package/dist/components/navigation/Tabs/types.d.ts +1 -1
  307. package/dist/components/navigation/Tabs/types.js +1 -1
  308. package/dist/components/navigation/Tabs/types.js.map +1 -1
  309. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  310. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  311. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  312. package/dist/components/other/Calendar/Calendar.js +1 -1
  313. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  314. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  315. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  316. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  317. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  318. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  319. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  320. package/dist/components/other/Calendar/styled.js +1 -1
  321. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  322. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  323. package/dist/components/overlays/AlertDialog/AlertDialog.js +78 -116
  324. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  325. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  326. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  327. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  328. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  329. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  330. package/dist/components/overlays/Dialog/DialogForm.d.ts +2 -2
  331. package/dist/components/overlays/Dialog/DialogForm.js +4 -5
  332. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  333. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  334. package/dist/components/overlays/Dialog/ModernDialogForm.js +5 -6
  335. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
  336. package/dist/components/overlays/Dialog/context.js +1 -1
  337. package/dist/components/overlays/Dialog/default-button-text.js +30 -0
  338. package/dist/components/overlays/Dialog/default-button-text.js.map +1 -0
  339. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  340. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  341. package/dist/components/overlays/Modal/Modal.js +1 -1
  342. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  343. package/dist/components/overlays/Modal/Overlay.js +1 -1
  344. package/dist/components/overlays/Modal/Popover.js +1 -1
  345. package/dist/components/overlays/Modal/Tray.js +1 -1
  346. package/dist/components/overlays/Modal/Underlay.js +1 -1
  347. package/dist/components/overlays/Notifications/Notification.js +1 -1
  348. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  349. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  350. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  351. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  352. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  353. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  354. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  355. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  356. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  357. package/dist/components/overlays/Notifications/index.js +1 -1
  358. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  359. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  360. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  361. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  362. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  363. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  364. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  365. package/dist/components/overlays/Toast/index.js +1 -1
  366. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  367. package/dist/components/overlays/Toast/useToast.js +1 -1
  368. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  369. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  370. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  371. package/dist/components/overlays/Tooltip/context.js +1 -1
  372. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  373. package/dist/components/portal/Portal.js +1 -1
  374. package/dist/components/portal/PortalProvider.js +1 -1
  375. package/dist/components/portal/usePortal.js +1 -1
  376. package/dist/components/shared/DraggableCollection.js +1 -1
  377. package/dist/components/shared/InvalidIcon.js +1 -1
  378. package/dist/components/shared/ValidIcon.js +1 -1
  379. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  380. package/dist/components/status/Spin/Cube.js +1 -1
  381. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  382. package/dist/components/status/Spin/Spin.js +1 -1
  383. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  384. package/dist/data/item-themes.js +1 -1
  385. package/dist/data/themes.js +1 -1
  386. package/dist/eslint-plugin/defaults.generated.js +2 -2
  387. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  388. package/dist/eslint-plugin/index.js +1 -1
  389. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  390. package/dist/i18n/I18nProvider.js +1 -1
  391. package/dist/i18n/createFormatter.js +1 -1
  392. package/dist/i18n/index.js +1 -1
  393. package/dist/i18n/instance.js +1 -1
  394. package/dist/i18n/locales/de-DE/uikit.js +4 -1
  395. package/dist/i18n/locales/en-US/uikit.js +4 -1
  396. package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -0
  397. package/dist/i18n/locales/es-ES/uikit.js +4 -1
  398. package/dist/i18n/locales/es-MX/uikit.js +4 -1
  399. package/dist/i18n/locales/fr-FR/uikit.js +4 -1
  400. package/dist/i18n/locales/it-IT/uikit.js +4 -1
  401. package/dist/i18n/locales/ja-JP/uikit.js +4 -1
  402. package/dist/i18n/locales/nb-NO/uikit.js +4 -1
  403. package/dist/i18n/locales/pt-BR/uikit.js +4 -1
  404. package/dist/i18n/locales/pt-PT/uikit.js +4 -1
  405. package/dist/i18n/locales/sv-SE/uikit.js +4 -1
  406. package/dist/i18n/locales/vi-VN/uikit.js +4 -1
  407. package/dist/i18n/locales.js +1 -1
  408. package/dist/i18n/useFormatter.js +1 -1
  409. package/dist/i18n/useI18n.js +1 -1
  410. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  411. package/dist/icons/AdjustmentsIcon.js +1 -1
  412. package/dist/icons/AiIcon.js +1 -1
  413. package/dist/icons/AreaChartIcon.js +1 -1
  414. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  415. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  416. package/dist/icons/BackwardIcon.js +1 -1
  417. package/dist/icons/BarChartIcon.js +1 -1
  418. package/dist/icons/BellFilledIcon.js +1 -1
  419. package/dist/icons/BellIcon.js +1 -1
  420. package/dist/icons/BooleanIcon.js +1 -1
  421. package/dist/icons/CalendarEditIcon.js +1 -1
  422. package/dist/icons/CalendarIcon.js +1 -1
  423. package/dist/icons/CaretDownIcon.js +1 -1
  424. package/dist/icons/CaretUpIcon.js +1 -1
  425. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  426. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  427. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  428. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  429. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  430. package/dist/icons/ChartBarLineIcon.js +1 -1
  431. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  432. package/dist/icons/ChartBarStackedIcon.js +1 -1
  433. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  434. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  435. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  436. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  437. package/dist/icons/ChartBubbleIcon.js +1 -1
  438. package/dist/icons/ChartDonut2Icon.js +1 -1
  439. package/dist/icons/ChartFunnelIcon.js +1 -1
  440. package/dist/icons/ChartHeatmapIcon.js +1 -1
  441. package/dist/icons/ChartKPIIcon.js +1 -1
  442. package/dist/icons/ChartPie2Icon.js +1 -1
  443. package/dist/icons/ChartScatterIcon.js +1 -1
  444. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  445. package/dist/icons/CheckCircleIcon.js +1 -1
  446. package/dist/icons/CheckIcon.js +1 -1
  447. package/dist/icons/CircleFilledIcon.js +1 -1
  448. package/dist/icons/ClearIcon.js +1 -1
  449. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  450. package/dist/icons/CloseCircleIcon.js +1 -1
  451. package/dist/icons/CloseIcon.js +1 -1
  452. package/dist/icons/CodeIcon.js +1 -1
  453. package/dist/icons/ColumnTotalIcon.js +1 -1
  454. package/dist/icons/CopyIcon.js +1 -1
  455. package/dist/icons/CountIcon.js +1 -1
  456. package/dist/icons/CubeIcon.js +1 -1
  457. package/dist/icons/CubePauseIcon.js +1 -1
  458. package/dist/icons/CubePlayIcon.js +1 -1
  459. package/dist/icons/CurrencyDollarIcon.js +1 -1
  460. package/dist/icons/DangerIcon.js +1 -1
  461. package/dist/icons/DashboardIcon.js +1 -1
  462. package/dist/icons/DatabaseIcon.js +1 -1
  463. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  464. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  465. package/dist/icons/DirectionIcon.js +1 -1
  466. package/dist/icons/DonutIcon.js +1 -1
  467. package/dist/icons/DownIcon.js +1 -1
  468. package/dist/icons/EditIcon.js +1 -1
  469. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  470. package/dist/icons/ExclamationCircleIcon.js +1 -1
  471. package/dist/icons/ExclamationIcon.js +1 -1
  472. package/dist/icons/EyeIcon.js +1 -1
  473. package/dist/icons/EyeInvisibleIcon.js +1 -1
  474. package/dist/icons/FilterIcon.js +1 -1
  475. package/dist/icons/FolderFilledIcon.js +1 -1
  476. package/dist/icons/FolderIcon.js +1 -1
  477. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  478. package/dist/icons/FolderOpenIcon.js +1 -1
  479. package/dist/icons/ForwardIcon.js +1 -1
  480. package/dist/icons/GripVerticalIcon.js +1 -1
  481. package/dist/icons/HierarchyIcon.js +1 -1
  482. package/dist/icons/HierarchyOpenIcon.js +1 -1
  483. package/dist/icons/Icon.js +1 -1
  484. package/dist/icons/InfoCircleIcon.js +1 -1
  485. package/dist/icons/InfoIcon.js +1 -1
  486. package/dist/icons/KeyIcon.js +1 -1
  487. package/dist/icons/LeftIcon.js +1 -1
  488. package/dist/icons/LineChartIcon.js +1 -1
  489. package/dist/icons/LoadingIcon.js +1 -1
  490. package/dist/icons/LockFilledIcon.js +1 -1
  491. package/dist/icons/LockIcon.js +1 -1
  492. package/dist/icons/MoreIcon.js +1 -1
  493. package/dist/icons/NotAllowedIcon.js +1 -1
  494. package/dist/icons/Number123Icon.js +1 -1
  495. package/dist/icons/NumberIcon.js +1 -1
  496. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  497. package/dist/icons/PauseCircleIcon.js +1 -1
  498. package/dist/icons/PauseIcon.js +1 -1
  499. package/dist/icons/PercentageIcon.js +1 -1
  500. package/dist/icons/PieChartIcon.js +1 -1
  501. package/dist/icons/PipetteIcon.js +1 -1
  502. package/dist/icons/PlayCircleIcon.js +1 -1
  503. package/dist/icons/PlayIcon.js +1 -1
  504. package/dist/icons/PlusIcon.js +1 -1
  505. package/dist/icons/ProgressBarIcon.js +1 -1
  506. package/dist/icons/ReloadIcon.js +1 -1
  507. package/dist/icons/ReportIcon.js +1 -1
  508. package/dist/icons/ReturnIcon.js +1 -1
  509. package/dist/icons/RightIcon.js +1 -1
  510. package/dist/icons/RowTotalsIcon.js +1 -1
  511. package/dist/icons/SchemeIcon.js +1 -1
  512. package/dist/icons/SearchIcon.js +1 -1
  513. package/dist/icons/SemanticQueryIcon.js +1 -1
  514. package/dist/icons/SettingsIcon.js +1 -1
  515. package/dist/icons/ShieldFilledIcon.js +1 -1
  516. package/dist/icons/ShieldIcon.js +1 -1
  517. package/dist/icons/SlashIcon.js +1 -1
  518. package/dist/icons/SparklesIcon.js +1 -1
  519. package/dist/icons/SqlIcon.js +1 -1
  520. package/dist/icons/StatsIcon.js +1 -1
  521. package/dist/icons/StopIcon.js +1 -1
  522. package/dist/icons/StringIcon.js +1 -1
  523. package/dist/icons/SubtotalsIcon.js +1 -1
  524. package/dist/icons/SwitchIcon.js +1 -1
  525. package/dist/icons/TableIcon.js +1 -1
  526. package/dist/icons/ThumbsDownIcon.js +1 -1
  527. package/dist/icons/ThumbsUpIcon.js +1 -1
  528. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  529. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  530. package/dist/icons/ThunderboltIcon.js +1 -1
  531. package/dist/icons/TimeIcon.js +1 -1
  532. package/dist/icons/TrashIcon.js +1 -1
  533. package/dist/icons/UnlockIcon.js +1 -1
  534. package/dist/icons/UpIcon.js +1 -1
  535. package/dist/icons/UserGroupIcon.js +1 -1
  536. package/dist/icons/UserIcon.js +1 -1
  537. package/dist/icons/UserLockIcon.js +1 -1
  538. package/dist/icons/ViewIcon.js +1 -1
  539. package/dist/icons/WarningFilledIcon.js +1 -1
  540. package/dist/icons/WarningIcon.js +1 -1
  541. package/dist/icons/wrap-icon.js +1 -1
  542. package/dist/index.d.ts +2 -2
  543. package/dist/index.js +1 -1
  544. package/dist/probe/canonicalize.js +1 -1
  545. package/dist/probe/css.js +1 -1
  546. package/dist/probe/index.js +1 -1
  547. package/dist/provider.js +1 -1
  548. package/dist/providers/TrackingProvider.js +1 -1
  549. package/dist/providers/navigationAdapter.default.js +1 -1
  550. package/dist/shared/form.d.ts +29 -1
  551. package/dist/shared/index.d.ts +1 -1
  552. package/dist/tokens/all-tokens.js +1 -1
  553. package/dist/tokens/base.js +1 -1
  554. package/dist/tokens/color-seed.js +1 -1
  555. package/dist/tokens/color-theme.js +1 -1
  556. package/dist/tokens/colors.js +1 -1
  557. package/dist/tokens/layout.js +1 -1
  558. package/dist/tokens/lazy-styles.js +1 -1
  559. package/dist/tokens/legacy-color.js +1 -1
  560. package/dist/tokens/palette-config.js +1 -1
  561. package/dist/tokens/palette.js +1 -1
  562. package/dist/tokens/resolve.js +1 -1
  563. package/dist/tokens/shadows.js +1 -1
  564. package/dist/tokens/sizes.js +1 -1
  565. package/dist/tokens/spacing.js +1 -1
  566. package/dist/tokens/typography.js +1 -1
  567. package/dist/utils/ResizeSensor.js +1 -1
  568. package/dist/utils/colors.js +1 -1
  569. package/dist/utils/dotize.js +1 -1
  570. package/dist/utils/is-dev-env.js +1 -1
  571. package/dist/utils/modules.js +1 -1
  572. package/dist/utils/promise.js +1 -1
  573. package/dist/utils/raf.js +1 -1
  574. package/dist/utils/random.js +1 -1
  575. package/dist/utils/range.js +1 -1
  576. package/dist/utils/react/RenderCache.js +1 -1
  577. package/dist/utils/react/Slots.js +1 -1
  578. package/dist/utils/react/chain.js +1 -1
  579. package/dist/utils/react/disabledProps.js +1 -1
  580. package/dist/utils/react/escapePropagation.js +1 -1
  581. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  582. package/dist/utils/react/index.js +1 -1
  583. package/dist/utils/react/interactions.js +1 -1
  584. package/dist/utils/react/isTextOnly.js +1 -1
  585. package/dist/utils/react/mapProps.js +1 -1
  586. package/dist/utils/react/mergeProps.js +1 -1
  587. package/dist/utils/react/nullableValue.js +1 -1
  588. package/dist/utils/react/programmaticFocus.js +1 -1
  589. package/dist/utils/react/resolveIcon.js +1 -1
  590. package/dist/utils/react/sharedStore.js +1 -1
  591. package/dist/utils/react/useBufferedValue.js +1 -1
  592. package/dist/utils/react/useCombinedRefs.js +1 -1
  593. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  594. package/dist/utils/react/useEventBus.js +1 -1
  595. package/dist/utils/react/useId.js +1 -1
  596. package/dist/utils/react/useIsDarwin.js +1 -1
  597. package/dist/utils/react/useKeySymbols.js +1 -1
  598. package/dist/utils/react/useLayoutEffect.js +1 -1
  599. package/dist/utils/react/useLocalStorage.js +1 -1
  600. package/dist/utils/react/useMergeStyles.js +1 -1
  601. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  602. package/dist/utils/react/usePopoverSync.js +1 -1
  603. package/dist/utils/react/useQaProps.js +1 -1
  604. package/dist/utils/react/useScheme.js +1 -1
  605. package/dist/utils/react/useViewportSize.js +1 -1
  606. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  607. package/dist/utils/selection.js +1 -1
  608. package/dist/utils/styles.js +1 -1
  609. package/dist/utils/tree.js +1 -1
  610. package/dist/utils/warnings.js +1 -1
  611. package/dist/version.js +2 -2
  612. package/docs/components/actions/Action.md +1 -1
  613. package/docs/components/actions/Button.md +4 -2
  614. package/docs/components/actions/ItemButton.md +1 -0
  615. package/docs/components/actions/Link.md +1 -1
  616. package/docs/components/content/InfoBadge.md +1 -1
  617. package/docs/components/content/Item.md +1 -1
  618. package/docs/components/data/DataTable.md +18 -0
  619. package/docs/components/data/ItemTable.md +3 -1
  620. package/docs/components/fields/ComboBox.md +49 -1
  621. package/docs/components/fields/FilterPicker.md +3 -3
  622. package/docs/components/fields/NumberInput.md +27 -0
  623. package/docs/components/fields/PasswordInput.md +24 -0
  624. package/docs/components/fields/Picker.md +3 -3
  625. package/docs/components/fields/SearchComboBox.md +3 -1
  626. package/docs/components/fields/TagInput.md +4 -2
  627. package/docs/components/fields/TextArea.md +24 -0
  628. package/docs/components/fields/TextInput.md +24 -0
  629. package/docs/components/navigation/Tabs.md +8 -3
  630. package/docs/components/overlays/AlertDialog.md +3 -3
  631. package/docs/components/overlays/DialogForm.md +3 -3
  632. package/docs/components/overlays/UseDialogContainer.md +4 -7
  633. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.187.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
2
2
  import { Fragment, isValidElement } from "react";
3
3
 
4
4
  //#region src/utils/react/wrapNodeIfPlain.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.187.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
2
2
  //#region src/utils/selection.ts
3
3
  /**
4
4
  * Deduplicate/toggle keys in a selection: if a key appears twice it is
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.187.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
2
2
  //#region src/utils/styles.ts
3
3
  /**
4
4
  * Split properties into style and non-style properties.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.187.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
2
2
  //#region src/utils/tree.ts
3
3
  function toFlatTree(tree, includingFolders) {
4
4
  return tree.reduce((result, node) => {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.187.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
2
2
  import { isDevEnvOrTest } from "./is-dev-env.js";
3
3
 
4
4
  //#region src/utils/warnings.ts
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.187.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.187.2";
3
+ const VERSION = "0.188.0";
4
4
  const TASTY_VERSION = "3.9.3";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
@@ -11,7 +11,7 @@ A low-level action element that can render as `<button>`, `<a>`, or `<span>`. Wh
11
11
  ## Properties
12
12
 
13
13
  - **`to`** `NavigateArg` — Navigation target (renders as `<a>` when provided)
14
- - **`label`** `string` — Accessible label for screen readers
14
+ - **`label`** `string` — **Deprecated.** Use `aria-label` for the accessible name and `children` for visible text
15
15
  - **`htmlType`** `'button' | 'submit' | 'reset'` — HTML button type
16
16
  - **`download`** `string` — Download attribute for link mode
17
17
  - **`onPress`** `() => void` — Press event handler (React Aria)
@@ -21,7 +21,7 @@ A versatile action component that triggers commands and navigates users.
21
21
  - **`icon`** — Icon rendered before the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
22
22
  - **`rightIcon`** — Icon rendered after the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
23
23
  - **`children`** `ReactNode` — Button label or custom content
24
- - **`label`** `string` — Accessible label for the button (used as `aria-label`)
24
+ - **`label`** `string` — **Deprecated.** Use `children` for visible text and `aria-label` for the accessible name of an icon-only button
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
  - **`isLoading`** `boolean` (default: `false`) — Show loading spinner and disable interactions
@@ -222,7 +222,7 @@ A disabled button keeps showing its tooltip. Browsers stop dispatching mouse eve
222
222
 
223
223
  - Announces role "button".
224
224
  - Announces state changes such as "pressed", "disabled", or "selected".
225
- - Provide `label`/`aria-label` when the button has no visible text.
225
+ - Provide `aria-label` when the button has no visible text.
226
226
 
227
227
  ### ARIA Properties
228
228
 
@@ -254,6 +254,8 @@ There are three ways to keep the popover open when a Button is pressed:
254
254
  </div>
255
255
  ```
256
256
 
257
+ On a wrapper, `data-popover-keep` also tells any popover opened from inside it (a field's listbox, a menu) that a click in the wrapper is not outside, so that popover stays open. When only presses should be ignored, use `data-popover-keep-on-press` instead. A modern `DialogForm` marks its `<form>` this way.
258
+
257
259
  3. **Custom non-Cube triggers.** Call `useDismissParentPopover()` yourself if your control should dismiss the popover but does not extend `Button` / `ItemButton`:
258
260
  ```jsx
259
261
  const dismiss = useDismissParentPopover();
@@ -208,6 +208,7 @@ Like `Button`, an `ItemButton` press inside an open popover **dismisses that pop
208
208
  Toggle Mode
209
209
  </ItemButton>
210
210
  ```
211
+ - **Presses only via `data-popover-keep-on-press`** — the same opt-out without making a click in the subtree count as inside a popover opened from it. See [Button](./Button.md).
211
212
  - **Custom non-Cube triggers** — call `useDismissParentPopover()` directly if you build a control on top of something other than `Button` / `ItemButton`.
212
213
 
213
214
  The dismiss is dispatched via the EventBus, which defers with `setTimeout(0)` — so synchronous `onPress` handlers (and the React state updates they trigger) flush BEFORE the popover closes. This makes the "open a hoisted modal from a popover footer" pattern work without flicker: the modal mounts first, then the popover closes behind it.
@@ -308,7 +308,7 @@ These options are passed to the router's `navigate` function and have no effect
308
308
 
309
309
  - Renders as an `<a>` element when `to` is a string/object; as a `<button>` when `to` is a number or omitted.
310
310
  - Keyboard interaction and focus management are handled by React Aria.
311
- - Provide `label`/`aria-label` when there is no visible text.
311
+ - Provide `aria-label` when there is no visible text.
312
312
 
313
313
  ### ARIA Properties
314
314
 
@@ -27,7 +27,7 @@ Every field's `labelTooltip` prop already renders an `InfoBadge` next to the lab
27
27
 
28
28
  ### Accessibility
29
29
 
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` or `label` to override it.
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
32
  ### Base Properties
33
33
 
@@ -32,7 +32,7 @@ A foundational component that provides a standardized layout and styling for ite
32
32
  - **`actions`** `ReactNode | true` — Inline action buttons displayed on the right side. Use `Item.Action` for consistent styling
33
33
  - **`autoHideActions`** `boolean` (default: `false`) — When true, actions are hidden by default and shown only on hover, focus, or focus-within
34
34
  - **`preserveActionsSpace`** `boolean` (default: `false`) — When true, preserves the actions width when hidden (only changes opacity). Only applies when `autoHideActions` is true
35
- - **`disableActionsFocus`** `boolean` (default: `true`) — When true, action buttons are not focusable via keyboard
35
+ - **`disableActionsFocus`** `boolean` (default: `false`) — When true, action buttons are not focusable via keyboard
36
36
  - **`hotkeys`** `string` — Keyboard shortcut displayed as a badge (e.g. `"cmd+s"`)
37
37
  - **`tooltip`** `string | boolean | object` (default: `true`) — Tooltip content. `true` enables auto tooltip on overflow, a string shows fixed tooltip text, an object supports advanced configuration `{ title, auto, placement, ...tooltipProps }`
38
38
  - **`highlight`** `string` — Text to highlight within the item label
@@ -142,6 +142,24 @@ Per column, on `CubeDataTableColumn`: `isReorderable`, `color` and `colorScope`
142
142
 
143
143
  Presentational, not a Cube type. `number` right-aligns the column and switches it to tabular figures, so digits line up down the column and a total lines up with the rows above it.
144
144
 
145
+ The figures sit under the column's own `cellStyles`, so those still apply in either form. A function is still called per cell, and its result is merged over the figures.
146
+
147
+ #### Column `cellStyles`
148
+
149
+ Tasty styles for one column's body cells, exactly as in ItemTable: tokens, units, presets and state maps all work, and a state key asks about the cell itself. In the table-level `cellStyles` a bare key asks about the table instead, so a map copied from there that keys on `shape=card` or `column-dividers` matches nothing in a column; `@own(...)` asks about the cell in both. Values read as tasty, not CSS: `paddingLeft: 24` sets all four sides (the others to 0), so set one side with the CSS longhand and a unit (`paddingInlineStart: '24px'`); a bare number takes a unit on tasty's own properties (pass `lineHeight: '1.2'` for a unitless one) but not on plain CSS ones (`borderRadius: '4px'`, or `radius`); colors inside `border` / `outline` must be tokens (`'1px solid #red'`); a vendor key needs its CSS name in quotes (`'-webkit-line-clamp': 2`), since a capitalised `WebkitLineClamp` reads as a sub-element; and `textOverflow: 'ellipsis'` also adds `overflow: hidden` and `white-space: nowrap`. The function form runs per cell with the cell's context, which is how a pinned row is styled apart from the body:
150
+
151
+ ```jsx
152
+ {
153
+ key: 'orders',
154
+ title: 'Orders',
155
+ dataType: 'number',
156
+ cellStyles: (ctx) =>
157
+ ctx.section === 'pinnedBottom' ? { color: '#surface-text-soft-2' } : undefined,
158
+ }
159
+ ```
160
+
161
+ Cells with equal styles share one class, so a function that returns a few distinct objects costs a few classes, however many rows there are. A column's own styles win over the table's cell paint, its `color` tint and the table-level `cellStyles` below.
162
+
145
163
  Loading, empty and error states, pagination, footer slots, virtualization, column resize and persistence all behave exactly as they do in `ItemTable` — they come from the shared renderer.
146
164
 
147
165
  ### Base Properties
@@ -144,7 +144,7 @@ interface CubeItemTableColumn<T> {
144
144
  compare?: (a, b, rowA, rowB) => number; // client-side comparator
145
145
 
146
146
  render?: (value, row, i, ctx) => ReactNode;
147
- cellStyles?: Styles | ((ctx) => Styles | undefined);
147
+ cellStyles?: Styles | ((ctx) => Styles | undefined); // tasty styles for this column's body cells
148
148
  cellProps?: (ctx) => Record<string, any> | undefined;
149
149
 
150
150
  align?: 'start' | 'center' | 'end';
@@ -156,6 +156,8 @@ interface CubeItemTableColumn<T> {
156
156
  }
157
157
  ```
158
158
 
159
+ **`cellStyles` is tasty, not inline CSS.** Tokens, units, presets, recipes and state maps all work, and a state key asks about the cell itself, so `{ color: { '': '#surface-text', '@own(pinned=bottom)': '#surface-text-soft-2' } }` dims only a pinned row. That differs from the table-level `cellStyles` slot, where a bare key asks about the table: a map copied from there that keys on `shape=card` or `column-dividers` matches nothing in a column, while `@own(...)` asks about the cell in both. Values read as tasty too, not CSS: `paddingLeft: 24` sets all four sides (the others to 0), so set one side with the CSS longhand and a unit (`paddingInlineStart: '24px'`); a bare number takes a unit on tasty's own properties (pass `lineHeight: '1.2'` for a unitless one) but not on plain CSS ones (`borderRadius: '4px'`, or `radius`); colors inside `border` / `outline` must be tokens (`'1px solid #red'`); a vendor key needs its CSS name in quotes (`'-webkit-line-clamp': 2`), since a capitalised `WebkitLineClamp` reads as a sub-element; and `textOverflow: 'ellipsis'` also adds `overflow: hidden` and `white-space: nowrap`. The function form runs per cell with the same `ctx` as `render`, for styles that depend on the row: `(ctx) => ctx.row.status === 'failed' ? { color: '#danger-text' } : undefined`. Cells with equal styles share one class, so a function that returns a few distinct objects costs a few classes, not one per cell. A column's own styles win over the table's cell paint, its `color` tint and the table-level `cellStyles`.
160
+
159
161
  **The value pipeline is the escape hatch.** `getValue`, `format` and `compare` exist so a column whose displayed text differs from its raw value stays sortable, searchable and copyable. `render` is for appearance only — sorting and searching never see its output, which is why an object-valued column with no `format` renders empty rather than `"[object Object]"`.
160
162
 
161
163
  #### `CubeTableColumnHeader`
@@ -52,10 +52,56 @@ A combobox component that combines a text input with a dropdown list, allowing u
52
52
  - **`containerPadding`** `number` (default: `8`) — Minimum padding in pixels between the popover and viewport edges
53
53
  - **`onFocus`** `() => void` — Callback fired when focus enters the ComboBox
54
54
  - **`onBlur`** `() => void` — Callback fired when focus leaves the ComboBox
55
- - **`onKeyDown`** `(e: KeyboardEvent) => void` — Callback fired when a key is pressed on the input
55
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Callback fired when a key is pressed on the input, before the component's own key handling. Call `e.preventDefault()` to skip that handling for the key, see **onKeyDown** below
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()`.
60
+
61
+ ```jsx
62
+ <ComboBox
63
+ label="Assignee"
64
+ onKeyDown={(e) => {
65
+ // Enter is ours while the popover is closed
66
+ if (e.key === 'Enter' && !isOpen) {
67
+ e.preventDefault();
68
+ submit();
69
+ }
70
+ }}
71
+ onOpenChange={setIsOpen}
72
+ >
73
+ {users.map((user) => (
74
+ <ComboBox.Item key={user.id}>{user.name}</ComboBox.Item>
75
+ ))}
76
+ </ComboBox>
77
+ ```
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:
80
+
81
+ ```jsx
82
+ const [selectedKey, setSelectedKey] = useState(null);
83
+
84
+ <ComboBox
85
+ allowsCustomValue
86
+ label="Tag"
87
+ selectedKey={selectedKey}
88
+ onSelectionChange={setSelectedKey}
89
+ onKeyDown={(e) => {
90
+ if (e.key === 'Enter' && !isOpen) {
91
+ // Stops the form submit and the built-in commit
92
+ e.preventDefault();
93
+ // so commit the typed value here
94
+ setSelectedKey(e.currentTarget.value.trim() || null);
95
+ }
96
+ }}
97
+ onOpenChange={setIsOpen}
98
+ >
99
+ {tags.map((tag) => (
100
+ <ComboBox.Item key={tag}>{tag}</ComboBox.Item>
101
+ ))}
102
+ </ComboBox>;
103
+ ```
104
+
59
105
  **defaultInputValue** - Sets the initial input value in uncontrolled mode. This is useful when you want to display a specific text in the input field on mount without selecting any option. When both `defaultInputValue` and `defaultSelectedKey` are provided, `defaultInputValue` takes priority. The value can be changed by the user and is not enforced after initial render.
60
106
 
61
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.
@@ -524,6 +570,8 @@ const [selectedKey, setSelectedKey] = useState(null);
524
570
  - `End` - Moves focus to the last option (when popover is open)
525
571
  - Typing - Filters options based on input value
526
572
 
573
+ An `onKeyDown` handler runs before all of these and can skip any of them for a key by calling `e.preventDefault()`.
574
+
527
575
  ### Screen Reader Support
528
576
 
529
577
  - Input announces as "combobox" with appropriate expanded/collapsed state
@@ -166,7 +166,7 @@ These properties allow direct style application without using the `styles` prop:
166
166
  The `mods` property accepts the following modifiers you can override:
167
167
 
168
168
  - **`placeholder`** `boolean` — Applied when no selection is made
169
- - **`selected`** `boolean` — Applied when items are selected
169
+ - **`selected`** `boolean` — Not set by the component. Pass `mods={{ selected: true }}` to give the trigger its brand-tinted selected fill, e.g. while a filter is active. Holding a value doesn't set it
170
170
 
171
171
  ## Sub-components
172
172
 
@@ -324,8 +324,8 @@ const categories = [
324
324
 
325
325
  ### Button Types
326
326
 
327
- - `outline` - Default outlined button style; `isSelected` adds brand-tinted fill
328
- - `clear` - Transparent background button; `isSelected` adds brand-tinted fill
327
+ - `outline` - Default outlined button style; `mods={{ selected: true }}` adds a brand-tinted fill
328
+ - `clear` - Transparent background button; `mods={{ selected: true }}` adds a brand-tinted fill
329
329
  - `primary` - Primary brand color button
330
330
 
331
331
  ### Sizes
@@ -38,6 +38,31 @@ A number input component that allows users to enter numeric values and increment
38
38
  - **`onChange`** `function` — Callback fired when the input value changes
39
39
  - **`onBlur`** `function` — Callback fired when the input loses focus
40
40
  - **`onFocus`** `function` — Callback fired when the input receives focus
41
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Callback fired when a key is pressed in the input. See [Keyboard Events](#keyboard-events)
42
+ - **`onKeyUp`** `(e: KeyboardEvent) => void` — Callback fired when a key is released in the input
43
+
44
+ #### Keyboard Events
45
+
46
+ `onKeyDown` and `onKeyUp` are attached to the `<input>` by React Aria's `useNumberField`, which handles some keys itself and runs that handling **before** your `onKeyDown`:
47
+
48
+ - `ArrowUp` / `ArrowDown` and `PageUp` / `PageDown` step the value, unless a modifier key is held
49
+ - `Home` / `End` set the value to `minValue` / `maxValue`, when those are set
50
+ - `Enter` commits the typed number, firing `onChange` when the value changed
51
+
52
+ Because they run first, `e.preventDefault()` in `onKeyDown` cannot cancel them: it cancels only what the browser would do with the key, such as submitting a surrounding form on `Enter`. That makes NumberInput the exception among the fields with built-in key handling (`ComboBox`, `SearchComboBox`, `TagInput` and `CommandTextArea` run your handler first and skip their own handling for a key you prevent), and it is what makes an `Enter` handler work here: by the time it runs, the typed number is committed and any `onChange` for it has fired.
53
+
54
+ ```jsx
55
+ <NumberInput
56
+ label="Limit"
57
+ onChange={setLimit}
58
+ onKeyDown={(e) => {
59
+ // `onChange` has already been called with the committed number.
60
+ if (e.key === 'Enter') onCommit();
61
+ }}
62
+ />
63
+ ```
64
+
65
+ The handler receives React Aria's keyboard event rather than a plain React one. Keys other than `Enter` continue to ancestors as usual; `Enter` stops at the input unless you call `e.continuePropagation()`.
41
66
 
42
67
  ### Base Properties
43
68
 
@@ -137,7 +162,9 @@ The `mods` prop accepts the following modifiers you can override:
137
162
  - `Tab` – Moves focus to the input field
138
163
  - `Shift + Tab` – Moves focus away from the input
139
164
  - Arrow keys – Increment/decrement value
165
+ - `PageUp`/`PageDown` – Increment/decrement value
140
166
  - `Home`/`End` – Set to min/max value
167
+ - `Enter` – Commits the typed value
141
168
  - Standard text editing shortcuts
142
169
 
143
170
  ### Screen Reader Support
@@ -31,6 +31,30 @@ A password input is a specialized text field that masks user input to protect se
31
31
  - **`onChange`** `function` — Callback fired when the input value changes
32
32
  - **`onBlur`** `function` — Callback fired when the input loses focus
33
33
  - **`onFocus`** `function` — Callback fired when the input receives focus
34
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Callback fired when a key is pressed in the input. See [Keyboard Events](#keyboard-events)
35
+ - **`onKeyUp`** `(e: KeyboardEvent) => void` — Callback fired when a key is released in the input
36
+
37
+ #### Keyboard Events
38
+
39
+ `onKeyDown` and `onKeyUp` are attached to the `<input>` by React Aria's `useTextField`. PasswordInput has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels only what the browser would do with the key, such as typing the character or submitting a surrounding form on `Enter`. The visibility toggle is a separate button and never sees the input's keys.
40
+
41
+ The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` the key stops at the input: React Aria stops its propagation after your handler. A parent's `onKeyDown` no longer sees it, and neither does a surrounding `Dialog`, so `Escape` stops closing it. Call `e.continuePropagation()` for the keys that should travel on:
42
+
43
+ ```jsx
44
+ <PasswordInput
45
+ label="Password"
46
+ onKeyDown={(e) => {
47
+ if (e.key === 'Enter') {
48
+ e.preventDefault(); // keep a surrounding form from submitting
49
+ signIn();
50
+ } else {
51
+ e.continuePropagation(); // let Escape still close a Dialog
52
+ }
53
+ }}
54
+ />
55
+ ```
56
+
57
+ The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler.
34
58
 
35
59
  ### Base Properties
36
60
 
@@ -155,7 +155,7 @@ These properties allow direct style application without using the `styles` prop:
155
155
  The `mods` property accepts the following modifiers you can override:
156
156
 
157
157
  - **`placeholder`** `boolean` — Applied when no selection is made
158
- - **`selected`** `boolean` — Applied when items are selected
158
+ - **`selected`** `boolean` — Not set by the component. Pass `mods={{ selected: true }}` to give the trigger its brand-tinted selected fill, e.g. while a filter is active. Holding a value doesn't set it
159
159
 
160
160
  ## Sub-components
161
161
 
@@ -324,8 +324,8 @@ For large datasets or dynamic content, use the `items` prop with a render functi
324
324
 
325
325
  The trigger button supports various visual styles via the `type` prop:
326
326
 
327
- - **`outline`** (default) — Outlined button with border. Use case: Standard form inputs. `isSelected` adds brand-tinted fill.
328
- - **`clear`** — Transparent background. Use case: Toolbar actions, compact interfaces. `isSelected` adds brand-tinted fill.
327
+ - **`outline`** (default) — Outlined button with border. Use case: Standard form inputs. `mods={{ selected: true }}` adds a brand-tinted fill.
328
+ - **`clear`** — Transparent background. Use case: Toolbar actions, compact interfaces. `mods={{ selected: true }}` adds a brand-tinted fill.
329
329
  - **`primary`** — Primary brand color. Use case: Emphasized selections
330
330
 
331
331
  ### Trigger Button Themes
@@ -46,7 +46,7 @@ Choose a different component when the interaction has another outcome:
46
46
  - **`onOpenChange`** `(isOpen: boolean) => void` — Fired when the popover opens or closes
47
47
  - **`onFocus`** `() => void` — Fired when focus enters the component
48
48
  - **`onBlur`** `() => void` — Fired when focus leaves the component
49
- - **`onKeyDown`** `(e: KeyboardEvent) => void` — Fired when a key is pressed on the input
49
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Fired when a key is pressed on the input, before the component's own key handling. Call `e.preventDefault()` to skip that handling for the key: a prevented `Enter` selects nothing and does not call `onSubmit`, a prevented `ArrowDown` does not open the popover. The event is React Aria's keyboard event, whose propagation stops at the input unless the handler calls `e.continuePropagation()`
50
50
  - **`prefix`** `ReactNode` — Content rendered before the input
51
51
  - **`suffix`** `ReactNode` — Content rendered after the input
52
52
  - **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to status icons
@@ -229,6 +229,8 @@ useEffect(() => {
229
229
  - `Home` / `End` - Moves focus to the first / last suggestion (when the popover is open)
230
230
  - Typing - Filters suggestions based on the input value
231
231
 
232
+ An `onKeyDown` handler runs before all of these and can skip any of them for a key by calling `e.preventDefault()`.
233
+
232
234
  ### ARIA Properties
233
235
 
234
236
  - `role="combobox"` - Identifies the input as a combobox
@@ -377,13 +377,15 @@ const [recipients, setRecipients] = useState(['ana@acme.com']);
377
377
  - The input's description reads the current values ("Selected: …") and says that Backspace moves to them, so the user hears what is already added and how to reach it
378
378
  - Focus on a chip reads its label, its position and React Aria's hint to press Delete or Backspace to remove it
379
379
  - A polite live region announces "Added …" and "Removed …" when the user adds or removes a value. Changes made from outside the field are not announced
380
- - The chips are a grid named "Selected values" followed by the field's label. Each chip is a row, and its remove button reads "Remove" followed by the chip's label. An invalid chip is described by its validation message, not only by its color
380
+ - The chips, the popover trigger, the clear button and the options listbox are named after the field, however the field is named. With a visible label or `aria-labelledby`, they point at the same elements: the grid reads "Selected values" followed by the field's name, the trigger "Show options" followed by it, and the listbox the field's name alone. An `aria-label` has no element to point at, so its text is joined in: "Selected values, …", "Show options, …", "Clear text, …", and the listbox takes the `aria-label`. Next to a visible label or `aria-labelledby` it comes first, as it does on the input itself: with `aria-label="Values"` and `aria-labelledby` pointing at "Primary key", the input reads "Values Primary key" and the grid "Selected values, Values Primary key". Each row of a table whose fields are labelled by a header and a row cell so gets its own names
381
+ - Each chip is a row, and its remove button reads "Remove" followed by the chip's label. An invalid chip is described by its validation message, not only by its color
381
382
  - A rejected value marks the input invalid. With a visible label its message is shown under the field and announced as an alert, again for each new attempt. Without one, the message is announced through the live region
382
383
  - A disabled field's chips are out of the Tab order, and so are locked chips. A read-only field's chips stay focusable, without remove buttons
383
- - The clear button is named "Clear text" followed by the field's label. Escape does the same from the keyboard
384
+ - The clear button is named "Clear text" followed by the field's name. Escape does the same from the keyboard
384
385
 
385
386
  ### ARIA Properties
386
387
 
388
+ - `aria-label` / `aria-labelledby` - Name the input when there is no visible label, and through it the chips, the buttons and the listbox. Pass one of them, or `label`
387
389
  - `aria-describedby` - Adds the summary of current values and the Backspace hint to the input's own descriptions, such as one passed in `aria-describedby`
388
390
  - `aria-invalid` - Set while a typed value is rejected, or when the field is invalid
389
391
  - `role="combobox"`, `aria-expanded`, `aria-controls`, `aria-activedescendant`, `aria-autocomplete="list"` - Set when options are given. `aria-activedescendant` follows both arrow keys and clicks
@@ -59,6 +59,30 @@ These properties allow direct style application without using the `styles` prop:
59
59
  - **`onChange`** `function` — Callback fired when the input value changes
60
60
  - **`onBlur`** `function` — Callback fired when the input loses focus
61
61
  - **`onFocus`** `function` — Callback fired when the input receives focus
62
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Callback fired when a key is pressed in the textarea. See [Keyboard Events](#keyboard-events)
63
+ - **`onKeyUp`** `(e: KeyboardEvent) => void` — Callback fired when a key is released in the textarea
64
+
65
+ ### Keyboard Events
66
+
67
+ `onKeyDown` and `onKeyUp` are attached to the `<textarea>` by React Aria's `useTextField`. TextArea has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels only what the browser would do with the key, such as inserting a newline on `Enter`.
68
+
69
+ The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` the key stops at the textarea: React Aria stops its propagation after your handler. A parent's `onKeyDown` no longer sees it, and neither does a surrounding `Dialog`, so `Escape` stops closing it. Call `e.continuePropagation()` for the keys that should travel on:
70
+
71
+ ```jsx
72
+ <TextArea
73
+ label="Comment"
74
+ onKeyDown={(e) => {
75
+ if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {
76
+ e.preventDefault(); // no newline
77
+ send();
78
+ } else {
79
+ e.continuePropagation(); // let Escape still close a Dialog
80
+ }
81
+ }}
82
+ />
83
+ ```
84
+
85
+ The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler.
62
86
 
63
87
  ### Base Properties
64
88
 
@@ -39,6 +39,30 @@ A text input component that allows users to input custom text entries with a key
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
42
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Callback fired when a key is pressed in the input. See [Keyboard Events](#keyboard-events)
43
+ - **`onKeyUp`** `(e: KeyboardEvent) => void` — Callback fired when a key is released in the input
44
+
45
+ #### Keyboard Events
46
+
47
+ `onKeyDown` and `onKeyUp` are attached to the `<input>` by React Aria's `useTextField`. TextInput has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels only what the browser would do with the key, such as typing the character or submitting a surrounding form on `Enter`.
48
+
49
+ The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` the key stops at the input: React Aria stops its propagation after your handler. A parent's `onKeyDown` no longer sees it, and neither does a surrounding `Dialog`, so `Escape` stops closing it. Call `e.continuePropagation()` for the keys that should travel on:
50
+
51
+ ```jsx
52
+ <TextInput
53
+ label="Name"
54
+ onKeyDown={(e) => {
55
+ if (e.key === 'Enter') {
56
+ e.preventDefault(); // keep a surrounding form from submitting
57
+ commit();
58
+ } else {
59
+ e.continuePropagation(); // let Escape still close a Dialog
60
+ }
61
+ }}
62
+ />
63
+ ```
64
+
65
+ The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler.
42
66
 
43
67
  ### Base Properties
44
68
 
@@ -203,13 +203,18 @@ The `width` style prop (inherited from Item) is useful for file-style tabs where
203
203
 
204
204
  Optional wrapper for tabs when using explicit panel placement.
205
205
 
206
+ - **`qa`** `string` — `data-qa` attribute on the `role="tablist"` element
207
+ - **`qaVal`** `string` — `data-qaval` attribute on the `role="tablist"` element
208
+
206
209
  ```jsx
207
- <Tabs.List>
210
+ <Tabs.List qa="ReportTabs">
208
211
  <Tab key="tab1" title="Tab 1" />
209
212
  <Tab key="tab2" title="Tab 2" />
210
213
  </Tabs.List>
211
214
  ```
212
215
 
216
+ `Tabs.List` also works without `Tabs.Panel`, so wrap the tabs in it whenever a test needs a stable selector for the tab list. The `qa` prop on `Tabs` itself lands on the outer wrapper, not on the tab list.
217
+
213
218
  ### Tabs.Panel
214
219
 
215
220
  Explicit panel definition for advanced layout control.
@@ -676,7 +681,7 @@ When both are in the same slot:
676
681
 
677
682
  ### Navigation-Only Tabs
678
683
 
679
- Use tabs without panel content for navigation purposes.
684
+ Use tabs without panel content for navigation purposes. Use this only when each tab leads to a different page or route; content that belongs to a tab goes in a panel (`renderPanel` or `Tab` children), so the tab can point screen readers at it.
680
685
 
681
686
  ```jsx
682
687
  const [view, setView] = useState('overview');
@@ -877,7 +882,7 @@ When `Tabs` is rendered inside a [`Board`](../layout/Board.md), tab switching be
877
882
  - `aria-label` - Set via `label` prop on Tabs
878
883
  - `aria-selected` - Managed automatically for active tab
879
884
  - `aria-disabled` - Applied when `isDisabled` is true
880
- - `aria-controls` - Links tabs to their panels automatically
885
+ - `aria-controls` - Links the selected tab to its panel automatically; omitted for a tab that has no panel
881
886
  - `aria-labelledby` - Links panels to their tabs automatically
882
887
  - `aria-haspopup` - Set to "menu" when tab has a menu
883
888
 
@@ -15,8 +15,8 @@ A modal dialog for important messages that require user acknowledgment. Extends
15
15
  - **`danger`** `boolean` — Applies danger styling for destructive actions
16
16
  - **`noActions`** `boolean` — Hide the action buttons entirely
17
17
  - **`actions`** `object` — Customize buttons:
18
- - `confirm` — Confirm button props or `false` to hide (default: `{ label: 'Ok', type: 'primary' }`)
19
- - `cancel` — Cancel button props or `true` to show (default: hidden, uses `{ label: 'Cancel' }`)
18
+ - `confirm` — Confirm button props or `false` to hide (default: `{ children: 'Ok', type: 'primary' }`)
19
+ - `cancel` — Cancel button props or `true` to show (default: hidden, uses `{ children: 'Cancel' }`). Set a button's text with `children`; `label` still works but is deprecated
20
20
  - `secondary` — Optional secondary button props
21
21
  - **`size`** `'S' | 'M' | 'L' | 'small' | 'medium' | 'large'` — The size of the dialog
22
22
  - **`isDismissable`** `boolean` (default: `false`) — Whether the dialog is dismissable
@@ -50,7 +50,7 @@ These properties allow direct style application without using the `styles` prop:
50
50
  title="Confirm Delete"
51
51
  content="Are you sure you want to delete this item?"
52
52
  actions={{
53
- confirm: { label: 'Delete', type: 'danger' },
53
+ confirm: { children: 'Delete', type: 'danger' },
54
54
  cancel: true,
55
55
  }}
56
56
  />
@@ -21,8 +21,8 @@ The examples below use modern controllers. See [Modern Form](../form/ModernForm.
21
21
  - **`form`** `FormController<T> | CubeFormInstance<T>` — Modern controller (recommended) or legacy instance. Omitting it selects legacy behavior.
22
22
  - **`title`** `string` — Dialog title
23
23
  - **`danger`** `boolean` — Give the submit button the danger theme
24
- - **`submitProps`** `CubeButtonProps` (legacy) / `Omit<CubeSubmitButtonProps<T>, 'form'>` (modern) — Customize the submit button, including its label and modern `disableOnInvalid`
25
- - **`cancelProps`** `CubeButtonProps` — Customize the cancel button, including its label
24
+ - **`submitProps`** `CubeButtonProps` (legacy) / `Omit<CubeSubmitButtonProps<T>, 'form'>` (modern) — Customize the submit button, including its text (`children`) and modern `disableOnInvalid`
25
+ - **`cancelProps`** `CubeButtonProps` — Customize the cancel button, including its text (`children`)
26
26
  - **`preserve`** `boolean` (default: `false`) — Retain values when the editing session ends. Keep the controller mounted above the dialog to retain a draft across dialog unmounts.
27
27
  - **`noActions`** `boolean` — Hide the default submit/cancel buttons
28
28
  - **`children`** `ReactNode | ((dismiss: () => void) => ReactNode)` — Fields, or a render function for custom actions
@@ -80,7 +80,7 @@ function EditProfile({ initialProfile, save }) {
80
80
  <DialogForm
81
81
  form={form}
82
82
  title="Edit profile"
83
- submitProps={{ label: 'Save' }}
83
+ submitProps={{ children: 'Save' }}
84
84
  onSubmit={(values, { signal }) => save(values, signal)}
85
85
  >
86
86
  <TextInput name="name" label="Name" isRequired />
@@ -184,10 +184,7 @@ function UserFormDialog({ onSubmit, initialData, onCancel }) {
184
184
  onSubmit={onSubmit}
185
185
  onDismiss={onCancel}
186
186
  submitProps={{
187
- label: 'Save User'
188
- }}
189
- cancelProps={{
190
- label: 'Cancel'
187
+ children: 'Save User'
191
188
  }}
192
189
  >
193
190
  <TextInput
@@ -270,11 +267,11 @@ function ConfirmDialog({ message, onConfirm, onCancel, danger }) {
270
267
  danger={danger}
271
268
  actions={{
272
269
  confirm: {
273
- label: 'Confirm',
270
+ children: 'Confirm',
274
271
  onPress: onConfirm
275
272
  },
276
273
  cancel: {
277
- label: 'Cancel',
274
+ children: 'Cancel',
278
275
  onPress: onCancel
279
276
  }
280
277
  }}
@@ -289,7 +286,7 @@ function InfoDialog({ title, content }) {
289
286
  content={content}
290
287
  actions={{
291
288
  confirm: {
292
- label: 'OK'
289
+ children: 'OK'
293
290
  },
294
291
  cancel: false
295
292
  }}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.187.2",
3
+ "version": "0.188.0",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {