@cube-dev/ui-kit 0.195.0 → 0.197.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 (705) hide show
  1. package/dist/CHANGELOG.md +180 -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.d.ts +6 -0
  16. package/dist/components/Root.js +125 -102
  17. package/dist/components/Root.js.map +1 -1
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.js +11 -5
  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.d.ts +9 -4
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  26. package/dist/components/actions/ButtonSplit/context.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/dist/components/actions/CommandMenu/styled.js +1 -1
  29. package/dist/components/actions/ItemAction/ItemAction.js +27 -25
  30. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  31. package/dist/components/actions/ItemActionContext.js +1 -1
  32. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  33. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +1 -1
  36. package/dist/components/actions/Menu/MenuCollectionItem.js +7 -4
  37. package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -1
  38. package/dist/components/actions/Menu/MenuItem.js +69 -60
  39. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  40. package/dist/components/actions/Menu/MenuSection.js +1 -1
  41. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  42. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  43. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  44. package/dist/components/actions/Menu/context.js +1 -1
  45. package/dist/components/actions/Menu/styled.js +1 -4
  46. package/dist/components/actions/Menu/styled.js.map +1 -1
  47. package/dist/components/actions/actions-run.js +1 -1
  48. package/dist/components/actions/index.js +1 -1
  49. package/dist/components/actions/use-action.js +15 -14
  50. package/dist/components/actions/use-action.js.map +1 -1
  51. package/dist/components/actions/use-anchored-menu.js +1 -1
  52. package/dist/components/actions/use-context-menu.js +1 -1
  53. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  54. package/dist/components/content/Alert/Alert.js +1 -1
  55. package/dist/components/content/Alert/use-alert.js +1 -1
  56. package/dist/components/content/Avatar/Avatar.js +1 -1
  57. package/dist/components/content/Badge/Badge.js +1 -1
  58. package/dist/components/content/Card/Card.js +1 -1
  59. package/dist/components/content/Content.js +1 -1
  60. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  61. package/dist/components/content/CopySnippet/CopySnippet.d.ts +16 -16
  62. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  63. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  64. package/dist/components/content/Divider.js +1 -1
  65. package/dist/components/content/Footer.js +1 -1
  66. package/dist/components/content/Header.js +1 -1
  67. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  68. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  69. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  70. package/dist/components/content/Item/Item.js +16 -4
  71. package/dist/components/content/Item/Item.js.map +1 -1
  72. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  73. package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
  74. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  75. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  76. package/dist/components/content/Layout/GridLayout.js +1 -1
  77. package/dist/components/content/Layout/Layout.js +29 -15
  78. package/dist/components/content/Layout/Layout.js.map +1 -1
  79. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  80. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  81. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  82. package/dist/components/content/Layout/LayoutContent.js +1 -1
  83. package/dist/components/content/Layout/LayoutContext.js +20 -10
  84. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  85. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  86. package/dist/components/content/Layout/LayoutFooter.js +12 -9
  87. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  88. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  89. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  90. package/dist/components/content/Layout/LayoutPane.js +1 -1
  91. package/dist/components/content/Layout/LayoutPanel.d.ts +7 -3
  92. package/dist/components/content/Layout/LayoutPanel.js +75 -3
  93. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  94. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  95. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  96. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  97. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  98. package/dist/components/content/Layout/index.js +1 -1
  99. package/dist/components/content/Layout/utils.js +1 -1
  100. package/dist/components/content/Paragraph.js +1 -1
  101. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  102. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  103. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  104. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  105. package/dist/components/content/Result/Result.js +1 -1
  106. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  107. package/dist/components/content/Tag/Tag.js +1 -1
  108. package/dist/components/content/Text.js +1 -1
  109. package/dist/components/content/TextItem/TextItem.js +1 -1
  110. package/dist/components/content/Title.js +1 -1
  111. package/dist/components/content/Tree/Tree.js +1 -1
  112. package/dist/components/content/Tree/TreeNode.js +2 -1
  113. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  114. package/dist/components/content/Tree/styled.js +1 -1
  115. package/dist/components/content/Tree/tree-index.js +1 -1
  116. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  117. package/dist/components/content/Tree/use-load-data.js +1 -1
  118. package/dist/components/content/highlightText.js +1 -1
  119. package/dist/components/content/use-auto-tooltip.js +3 -3
  120. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  121. package/dist/components/data/DataTable/DataTable.js +1 -1
  122. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  123. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  124. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  125. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  126. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -1
  127. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  128. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  129. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  130. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  131. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  132. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  133. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  134. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  135. package/dist/components/data/TableBase/RowCollection.js +1 -1
  136. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  137. package/dist/components/data/TableBase/TableRow.js +1 -1
  138. package/dist/components/data/TableBase/TableView.js +3 -1
  139. package/dist/components/data/TableBase/TableView.js.map +1 -1
  140. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  141. package/dist/components/data/TableBase/column-header.js +1 -1
  142. package/dist/components/data/TableBase/column-menu.js +1 -1
  143. package/dist/components/data/TableBase/column-styles.js +1 -1
  144. package/dist/components/data/TableBase/column-tint.js +1 -1
  145. package/dist/components/data/TableBase/row-menu.js +1 -1
  146. package/dist/components/data/TableBase/styled.js +1 -1
  147. package/dist/components/data/TableBase/table-tree.js +1 -1
  148. package/dist/components/data/TableBase/types.js +1 -1
  149. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  150. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  151. package/dist/components/data/TableBase/use-column-order.js +1 -1
  152. package/dist/components/data/TableBase/use-column-window.js +1 -1
  153. package/dist/components/data/TableBase/use-container-width.js +1 -1
  154. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  155. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  156. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  157. package/dist/components/data/TableBase/use-table-search.js +1 -1
  158. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  159. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  160. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  161. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  162. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  163. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  164. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  165. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  166. package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -5
  167. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  168. package/dist/components/fields/Checkbox/context.js +1 -1
  169. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  170. package/dist/components/fields/ColorPicker/ColorPicker.js +3 -1
  171. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  172. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  173. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -1
  174. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  175. package/dist/components/fields/ComboBox/ComboBox.d.ts +27 -7
  176. package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
  177. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  178. package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
  179. package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
  180. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  181. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  182. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  183. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  184. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  185. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  186. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  187. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  188. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  189. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  190. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  191. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  192. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  193. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  194. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  195. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  196. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  197. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  198. package/dist/components/fields/DatePicker/parseDate.d.ts +7 -0
  199. package/dist/components/fields/DatePicker/parseDate.js +17 -3
  200. package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
  201. package/dist/components/fields/DatePicker/period.js +1 -1
  202. package/dist/components/fields/DatePicker/props.js +1 -1
  203. package/dist/components/fields/DatePicker/utils.js +1 -1
  204. package/dist/components/fields/FileInput/FileInput.js +1 -1
  205. package/dist/components/fields/FilterListBox/FilterListBox.js +2 -1
  206. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  207. package/dist/components/fields/FilterPicker/FilterPicker.js +15 -6
  208. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  209. package/dist/components/fields/Input/Input.d.ts +2 -2
  210. package/dist/components/fields/Input/Input.js +2 -2
  211. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  212. package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
  213. package/dist/components/fields/ListBox/ListBox.js +298 -146
  214. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  215. package/dist/components/fields/ListBox/optionId.js +1 -1
  216. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +150 -139
  217. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  218. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  219. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  220. package/dist/components/fields/NumberInput/NumberInput.d.ts +6 -1
  221. package/dist/components/fields/NumberInput/NumberInput.js +136 -128
  222. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  223. package/dist/components/fields/NumberInput/StepButton.js +38 -48
  224. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  225. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
  226. package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
  227. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  228. package/dist/components/fields/Picker/Picker.d.ts +1 -1
  229. package/dist/components/fields/Picker/Picker.js +22 -8
  230. package/dist/components/fields/Picker/Picker.js.map +1 -1
  231. package/dist/components/fields/RadioGroup/Radio.d.ts +12 -12
  232. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  233. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  234. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  235. package/dist/components/fields/RadioGroup/context.js +1 -1
  236. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -6
  237. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  238. package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
  239. package/dist/components/fields/SearchInput/SearchInput.js +22 -34
  240. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  241. package/dist/components/fields/Select/Select.d.ts +12 -1
  242. package/dist/components/fields/Select/Select.js +365 -207
  243. package/dist/components/fields/Select/Select.js.map +1 -1
  244. package/dist/components/fields/Slider/Gradation.js +1 -1
  245. package/dist/components/fields/Slider/HueSlider.js +1 -1
  246. package/dist/components/fields/Slider/RangeSlider.js +3 -4
  247. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  248. package/dist/components/fields/Slider/Slider.js +1 -1
  249. package/dist/components/fields/Slider/SliderBase.js +1 -1
  250. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  251. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  252. package/dist/components/fields/Slider/elements.js +1 -1
  253. package/dist/components/fields/Slider/index.js +1 -1
  254. package/dist/components/fields/Switch/Switch.js +1 -1
  255. package/dist/components/fields/TagInput/TagInput.js +2 -2
  256. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  257. package/dist/components/fields/TagInput/TagList.js +1 -1
  258. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  259. package/dist/components/fields/TagInput/useTagError.js +1 -1
  260. package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
  261. package/dist/components/fields/TextArea/TextArea.js +49 -63
  262. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  263. package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
  264. package/dist/components/fields/TextInput/TextInput.js +42 -46
  265. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  266. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
  267. package/dist/components/fields/TextInput/TextInputBase.js +32 -10
  268. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  269. package/dist/components/fields/TextInput/displayed-validation.js +50 -0
  270. package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
  271. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  272. package/dist/components/fields/TextInputMapper/TextInputMapper.js +20 -17
  273. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  274. package/dist/components/fields/TriggerActions.js +1 -1
  275. package/dist/components/fields/color/ColorPanel.js +3 -1
  276. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  277. package/dist/components/fields/color/channels.js +1 -1
  278. package/dist/components/fields/color/color.js +1 -1
  279. package/dist/components/fields/color/context.js +1 -1
  280. package/dist/components/fields/index.d.ts +2 -2
  281. package/dist/components/fields/option-origin-press.js +78 -0
  282. package/dist/components/fields/option-origin-press.js.map +1 -0
  283. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +10 -8
  284. package/dist/components/form/FieldWrapper/FieldWrapper.js +214 -159
  285. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  286. package/dist/components/form/FieldWrapper/field-description.js +3 -3
  287. package/dist/components/form/FieldWrapper/field-description.js.map +1 -1
  288. package/dist/components/form/FieldWrapper/types.d.ts +4 -3
  289. package/dist/components/form/Form/Field.js +1 -1
  290. package/dist/components/form/Form/Form.js +1 -1
  291. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  292. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  293. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  294. package/dist/components/form/Form/SubmitError.js +1 -1
  295. package/dist/components/form/Form/backend.js +1 -1
  296. package/dist/components/form/Form/index.js +1 -1
  297. package/dist/components/form/Form/modern/actions.js +1 -1
  298. package/dist/components/form/Form/modern/context.js +1 -1
  299. package/dist/components/form/Form/modern/controller.js +1 -1
  300. package/dist/components/form/Form/modern/field-binding.js +1 -1
  301. package/dist/components/form/Form/modern/field.js +1 -1
  302. package/dist/components/form/Form/modern/react.js +1 -1
  303. package/dist/components/form/Form/modern/store.js +1 -1
  304. package/dist/components/form/Form/modern/validation.js +1 -1
  305. package/dist/components/form/Form/modern/values.js +1 -1
  306. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  307. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  308. package/dist/components/form/Form/use-field/use-field-props.js +21 -33
  309. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  310. package/dist/components/form/Form/use-field/use-field.js +1 -1
  311. package/dist/components/form/Form/use-form.js +1 -1
  312. package/dist/components/form/Form/validation.js +1 -1
  313. package/dist/components/form/Label.js +1 -1
  314. package/dist/components/form/field-chrome.js +4 -34
  315. package/dist/components/form/field-chrome.js.map +1 -1
  316. package/dist/components/form/legacy-tooltip.js +1 -1
  317. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  318. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  319. package/dist/components/form/validation/use-validation-props.js +1 -1
  320. package/dist/components/form/wrapper.d.ts +6 -17
  321. package/dist/components/form/wrapper.js +6 -14
  322. package/dist/components/form/wrapper.js.map +1 -1
  323. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  324. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  325. package/dist/components/layout/Flex.js +1 -1
  326. package/dist/components/layout/Flow.js +1 -1
  327. package/dist/components/layout/Grid.js +1 -1
  328. package/dist/components/layout/Panel.js +1 -1
  329. package/dist/components/layout/Prefix.js +1 -1
  330. package/dist/components/layout/ResizablePanel.js +1 -1
  331. package/dist/components/layout/Space.js +1 -1
  332. package/dist/components/layout/Suffix.js +1 -1
  333. package/dist/components/navigation/Pagination/Pagination.js +3 -1
  334. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  335. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  336. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  337. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  338. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  339. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  340. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  341. package/dist/components/navigation/Tabs/TabPicker.js +2 -1
  342. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  343. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  344. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  345. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  346. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  347. package/dist/components/navigation/Tabs/styled.js +1 -1
  348. package/dist/components/navigation/Tabs/types.js +1 -1
  349. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  350. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  351. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  352. package/dist/components/other/Calendar/Calendar.js +1 -1
  353. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  354. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  355. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  356. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  357. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  358. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  359. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  360. package/dist/components/other/Calendar/styled.js +1 -1
  361. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  362. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  363. package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
  364. package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
  365. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  366. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +3 -2
  367. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  368. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  369. package/dist/components/overlays/Dialog/Dialog.js +28 -14
  370. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  371. package/dist/components/overlays/Dialog/DialogContainer.d.ts +4 -2
  372. package/dist/components/overlays/Dialog/DialogContainer.js +40 -34
  373. package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
  374. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  375. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
  376. package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
  377. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  378. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  379. package/dist/components/overlays/Dialog/context.js +1 -1
  380. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  381. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  382. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  383. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
  384. package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
  385. package/dist/components/overlays/Modal/Modal.js +1 -1
  386. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  387. package/dist/components/overlays/Modal/Overlay.js +9 -3
  388. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  389. package/dist/components/overlays/Modal/Popover.d.ts +1 -1
  390. package/dist/components/overlays/Modal/Popover.js +31 -29
  391. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  392. package/dist/components/overlays/Modal/Tray.js +69 -60
  393. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  394. package/dist/components/overlays/Modal/Underlay.js +1 -1
  395. package/dist/components/overlays/Modal/index.d.ts +1 -1
  396. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  397. package/dist/components/overlays/Notifications/Notification.js +1 -1
  398. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  399. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  400. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  401. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  402. package/dist/components/overlays/Notifications/OverlayContainer.js +18 -32
  403. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  404. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  405. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  406. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  407. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  408. package/dist/components/overlays/Notifications/index.js +1 -1
  409. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  410. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  411. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  412. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  413. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  414. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  415. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  416. package/dist/components/overlays/Toast/index.js +1 -1
  417. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  418. package/dist/components/overlays/Toast/useToast.js +1 -1
  419. package/dist/components/overlays/Tooltip/Tooltip.d.ts +8 -0
  420. package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
  421. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  422. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  423. package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
  424. package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
  425. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  426. package/dist/components/overlays/Tooltip/context.js +1 -1
  427. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  428. package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
  429. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -1
  430. package/dist/components/portal/Portal.js +1 -1
  431. package/dist/components/portal/PortalProvider.js +1 -1
  432. package/dist/components/portal/usePortal.js +1 -1
  433. package/dist/components/shared/DraggableCollection.js +1 -1
  434. package/dist/components/shared/InvalidIcon.js +1 -1
  435. package/dist/components/shared/ValidIcon.js +1 -1
  436. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  437. package/dist/components/status/Spin/Cube.js +1 -1
  438. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  439. package/dist/components/status/Spin/Spin.js +1 -1
  440. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  441. package/dist/data/item-themes.js +1 -1
  442. package/dist/data/themes.js +1 -1
  443. package/dist/eslint-plugin/defaults.generated.js +11 -17
  444. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  445. package/dist/eslint-plugin/index.js +1 -1
  446. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  447. package/dist/i18n/I18nProvider.js +1 -1
  448. package/dist/i18n/createFormatter.js +1 -1
  449. package/dist/i18n/index.js +1 -1
  450. package/dist/i18n/instance.js +1 -1
  451. package/dist/i18n/locales/de-DE/uikit.js +6 -4
  452. package/dist/i18n/locales/en-US/uikit.js +6 -4
  453. package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
  454. package/dist/i18n/locales/es-ES/uikit.js +6 -4
  455. package/dist/i18n/locales/es-MX/uikit.js +6 -4
  456. package/dist/i18n/locales/fr-FR/uikit.js +6 -4
  457. package/dist/i18n/locales/it-IT/uikit.js +6 -4
  458. package/dist/i18n/locales/ja-JP/uikit.js +6 -4
  459. package/dist/i18n/locales/nb-NO/uikit.js +6 -4
  460. package/dist/i18n/locales/pt-BR/uikit.js +6 -4
  461. package/dist/i18n/locales/pt-PT/uikit.js +6 -4
  462. package/dist/i18n/locales/sv-SE/uikit.js +6 -4
  463. package/dist/i18n/locales/vi-VN/uikit.js +6 -4
  464. package/dist/i18n/locales.js +1 -1
  465. package/dist/i18n/namespace.js +1 -1
  466. package/dist/i18n/useFormatter.js +1 -1
  467. package/dist/i18n/useI18n.js +1 -1
  468. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  469. package/dist/icons/AdjustmentsIcon.js +1 -1
  470. package/dist/icons/AiIcon.js +1 -1
  471. package/dist/icons/AreaChartIcon.js +1 -1
  472. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  473. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  474. package/dist/icons/BackwardIcon.js +1 -1
  475. package/dist/icons/BarChartIcon.js +1 -1
  476. package/dist/icons/BellFilledIcon.js +1 -1
  477. package/dist/icons/BellIcon.js +1 -1
  478. package/dist/icons/BooleanIcon.js +1 -1
  479. package/dist/icons/CalendarEditIcon.js +1 -1
  480. package/dist/icons/CalendarIcon.js +1 -1
  481. package/dist/icons/CaretDownIcon.js +1 -1
  482. package/dist/icons/CaretUpIcon.js +1 -1
  483. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  484. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  485. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  486. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  487. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  488. package/dist/icons/ChartBarLineIcon.js +1 -1
  489. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  490. package/dist/icons/ChartBarStackedIcon.js +1 -1
  491. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  492. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  493. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  494. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  495. package/dist/icons/ChartBubbleIcon.js +1 -1
  496. package/dist/icons/ChartDonut2Icon.js +1 -1
  497. package/dist/icons/ChartFunnelIcon.js +1 -1
  498. package/dist/icons/ChartHeatmapIcon.js +1 -1
  499. package/dist/icons/ChartKPIIcon.js +1 -1
  500. package/dist/icons/ChartPie2Icon.js +1 -1
  501. package/dist/icons/ChartScatterIcon.js +1 -1
  502. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  503. package/dist/icons/CheckCircleIcon.js +1 -1
  504. package/dist/icons/CheckIcon.js +1 -1
  505. package/dist/icons/CircleFilledIcon.js +1 -1
  506. package/dist/icons/ClearIcon.js +1 -1
  507. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  508. package/dist/icons/CloseCircleIcon.js +1 -1
  509. package/dist/icons/CloseIcon.js +1 -1
  510. package/dist/icons/CodeIcon.js +1 -1
  511. package/dist/icons/ColumnTotalIcon.js +1 -1
  512. package/dist/icons/CopyIcon.js +1 -1
  513. package/dist/icons/CountIcon.js +1 -1
  514. package/dist/icons/CubeIcon.js +1 -1
  515. package/dist/icons/CubePauseIcon.js +1 -1
  516. package/dist/icons/CubePlayIcon.js +1 -1
  517. package/dist/icons/CurrencyDollarIcon.js +1 -1
  518. package/dist/icons/DangerIcon.js +1 -1
  519. package/dist/icons/DashboardIcon.js +1 -1
  520. package/dist/icons/DatabaseIcon.js +1 -1
  521. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  522. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  523. package/dist/icons/DirectionIcon.js +1 -1
  524. package/dist/icons/DonutIcon.js +1 -1
  525. package/dist/icons/DownIcon.js +1 -1
  526. package/dist/icons/EditIcon.js +1 -1
  527. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  528. package/dist/icons/ExclamationCircleIcon.js +1 -1
  529. package/dist/icons/ExclamationIcon.js +1 -1
  530. package/dist/icons/EyeIcon.js +1 -1
  531. package/dist/icons/EyeInvisibleIcon.js +1 -1
  532. package/dist/icons/FilterIcon.js +1 -1
  533. package/dist/icons/FolderFilledIcon.js +1 -1
  534. package/dist/icons/FolderIcon.js +1 -1
  535. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  536. package/dist/icons/FolderOpenIcon.js +1 -1
  537. package/dist/icons/ForwardIcon.js +1 -1
  538. package/dist/icons/GripVerticalIcon.js +1 -1
  539. package/dist/icons/HierarchyIcon.js +1 -1
  540. package/dist/icons/HierarchyOpenIcon.js +1 -1
  541. package/dist/icons/Icon.js +1 -1
  542. package/dist/icons/InfoCircleIcon.js +1 -1
  543. package/dist/icons/InfoIcon.js +1 -1
  544. package/dist/icons/KeyIcon.js +1 -1
  545. package/dist/icons/LeftIcon.js +1 -1
  546. package/dist/icons/LineChartIcon.js +1 -1
  547. package/dist/icons/LoadingIcon.js +1 -1
  548. package/dist/icons/LockFilledIcon.js +1 -1
  549. package/dist/icons/LockIcon.js +1 -1
  550. package/dist/icons/MoreIcon.js +1 -1
  551. package/dist/icons/NotAllowedIcon.js +1 -1
  552. package/dist/icons/Number123Icon.js +1 -1
  553. package/dist/icons/NumberIcon.js +1 -1
  554. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  555. package/dist/icons/PauseCircleIcon.js +1 -1
  556. package/dist/icons/PauseIcon.js +1 -1
  557. package/dist/icons/PercentageIcon.js +1 -1
  558. package/dist/icons/PieChartIcon.js +1 -1
  559. package/dist/icons/PipetteIcon.js +1 -1
  560. package/dist/icons/PlayCircleIcon.js +1 -1
  561. package/dist/icons/PlayIcon.js +1 -1
  562. package/dist/icons/PlusIcon.js +1 -1
  563. package/dist/icons/ProgressBarIcon.js +1 -1
  564. package/dist/icons/ReloadIcon.js +1 -1
  565. package/dist/icons/ReportIcon.js +1 -1
  566. package/dist/icons/ReturnIcon.js +1 -1
  567. package/dist/icons/RightIcon.js +1 -1
  568. package/dist/icons/RowTotalsIcon.js +1 -1
  569. package/dist/icons/SchemeIcon.js +1 -1
  570. package/dist/icons/SearchIcon.js +1 -1
  571. package/dist/icons/SemanticQueryIcon.js +1 -1
  572. package/dist/icons/SettingsIcon.js +1 -1
  573. package/dist/icons/ShieldFilledIcon.js +1 -1
  574. package/dist/icons/ShieldIcon.js +1 -1
  575. package/dist/icons/SlashIcon.js +1 -1
  576. package/dist/icons/SparklesIcon.js +1 -1
  577. package/dist/icons/SqlIcon.js +1 -1
  578. package/dist/icons/StatsIcon.js +1 -1
  579. package/dist/icons/StopIcon.js +1 -1
  580. package/dist/icons/StringIcon.js +1 -1
  581. package/dist/icons/SubtotalsIcon.js +1 -1
  582. package/dist/icons/SwitchIcon.js +1 -1
  583. package/dist/icons/TableIcon.js +1 -1
  584. package/dist/icons/ThumbsDownIcon.js +1 -1
  585. package/dist/icons/ThumbsUpIcon.js +1 -1
  586. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  587. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  588. package/dist/icons/ThunderboltIcon.js +1 -1
  589. package/dist/icons/TimeIcon.js +1 -1
  590. package/dist/icons/TrashIcon.js +1 -1
  591. package/dist/icons/UnlockIcon.js +1 -1
  592. package/dist/icons/UpIcon.js +1 -1
  593. package/dist/icons/UserGroupIcon.js +1 -1
  594. package/dist/icons/UserIcon.js +1 -1
  595. package/dist/icons/UserLockIcon.js +1 -1
  596. package/dist/icons/ViewIcon.js +1 -1
  597. package/dist/icons/WarningFilledIcon.js +1 -1
  598. package/dist/icons/WarningIcon.js +1 -1
  599. package/dist/icons/wrap-icon.js +1 -1
  600. package/dist/index.d.ts +1 -1
  601. package/dist/index.js +2 -2
  602. package/dist/probe/canonicalize.js +1 -1
  603. package/dist/probe/css.js +1 -1
  604. package/dist/probe/index.js +1 -1
  605. package/dist/provider.js +1 -1
  606. package/dist/providers/TrackingProvider.js +1 -1
  607. package/dist/providers/navigation-url.js +15 -3
  608. package/dist/providers/navigation-url.js.map +1 -1
  609. package/dist/providers/navigationAdapter.default.js +1 -1
  610. package/dist/providers/use-navigation.js +1 -1
  611. package/dist/shared/form.d.ts +11 -12
  612. package/dist/tokens/all-tokens.js +1 -1
  613. package/dist/tokens/base.js +1 -1
  614. package/dist/tokens/color-seed.js +1 -1
  615. package/dist/tokens/color-theme.js +1 -1
  616. package/dist/tokens/colors.js +1 -1
  617. package/dist/tokens/layout.js +1 -1
  618. package/dist/tokens/lazy-styles.js +1 -1
  619. package/dist/tokens/legacy-color.js +1 -1
  620. package/dist/tokens/palette-config.js +1 -1
  621. package/dist/tokens/palette.js +1 -1
  622. package/dist/tokens/resolve.js +1 -1
  623. package/dist/tokens/shadows.js +1 -1
  624. package/dist/tokens/sizes.js +1 -1
  625. package/dist/tokens/spacing.js +1 -1
  626. package/dist/tokens/typography.js +1 -1
  627. package/dist/utils/ResizeSensor.js +1 -1
  628. package/dist/utils/colors.js +1 -1
  629. package/dist/utils/dotize.js +1 -1
  630. package/dist/utils/is-dev-env.js +1 -1
  631. package/dist/utils/modules.js +1 -1
  632. package/dist/utils/promise.js +1 -1
  633. package/dist/utils/raf.js +1 -1
  634. package/dist/utils/random.js +1 -1
  635. package/dist/utils/range.js +1 -1
  636. package/dist/utils/react/RenderCache.js +1 -1
  637. package/dist/utils/react/Slots.js +1 -1
  638. package/dist/utils/react/chain.js +1 -1
  639. package/dist/utils/react/disabledProps.js +1 -1
  640. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  641. package/dist/utils/react/index.js +1 -1
  642. package/dist/utils/react/interactions.js +1 -1
  643. package/dist/utils/react/isTextOnly.js +1 -1
  644. package/dist/utils/react/mapProps.js +1 -1
  645. package/dist/utils/react/mergeProps.js +1 -1
  646. package/dist/utils/react/nullableValue.js +18 -9
  647. package/dist/utils/react/nullableValue.js.map +1 -1
  648. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  649. package/dist/utils/react/programmaticFocus.js +1 -1
  650. package/dist/utils/react/resolveIcon.js +1 -1
  651. package/dist/utils/react/sharedStore.js +1 -1
  652. package/dist/utils/react/useBufferedValue.js +1 -1
  653. package/dist/utils/react/useCombinedRefs.js +1 -1
  654. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  655. package/dist/utils/react/useEventBus.js +1 -1
  656. package/dist/utils/react/useId.js +1 -1
  657. package/dist/utils/react/useIsDarwin.js +1 -1
  658. package/dist/utils/react/useKeySymbols.js +1 -1
  659. package/dist/utils/react/useLayoutEffect.js +1 -1
  660. package/dist/utils/react/useLocalStorage.js +1 -1
  661. package/dist/utils/react/useMergeStyles.js +1 -1
  662. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  663. package/dist/utils/react/usePopoverSync.js +1 -1
  664. package/dist/utils/react/useQaProps.js +1 -1
  665. package/dist/utils/react/useScheme.js +1 -1
  666. package/dist/utils/react/useViewportSize.js +1 -1
  667. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  668. package/dist/utils/selection.js +1 -1
  669. package/dist/utils/styles.js +1 -1
  670. package/dist/utils/tree.js +1 -1
  671. package/dist/utils/warnings.js +1 -1
  672. package/dist/version.js +2 -2
  673. package/docs/ComplexLayout.md +1 -1
  674. package/docs/CreateComponent.md +6 -0
  675. package/docs/FieldProperties.md +31 -6
  676. package/docs/Theming.md +2 -1
  677. package/docs/Usage.md +6 -0
  678. package/docs/components/Root.md +1 -1
  679. package/docs/components/actions/Button.md +8 -2
  680. package/docs/components/actions/ButtonSplit.md +27 -1
  681. package/docs/components/actions/Link.md +1 -1
  682. package/docs/components/actions/Menu.md +4 -2
  683. package/docs/components/content/InfoBadge.md +2 -0
  684. package/docs/components/content/ItemBadge.md +4 -0
  685. package/docs/components/content/Layout.md +41 -6
  686. package/docs/components/fields/ComboBox.md +30 -19
  687. package/docs/components/fields/FilterListBox.md +2 -2
  688. package/docs/components/fields/FilterPicker.md +2 -2
  689. package/docs/components/fields/ListBox.md +14 -10
  690. package/docs/components/fields/NumberInput.md +20 -11
  691. package/docs/components/fields/PasswordInput.md +6 -7
  692. package/docs/components/fields/Picker.md +6 -5
  693. package/docs/components/fields/RadioGroup.md +1 -1
  694. package/docs/components/fields/SearchInput.md +7 -6
  695. package/docs/components/fields/Select.md +14 -8
  696. package/docs/components/fields/TagInput.md +8 -1
  697. package/docs/components/fields/TextArea.md +4 -3
  698. package/docs/components/fields/TextInput.md +13 -6
  699. package/docs/components/overlays/AlertDialog.md +7 -1
  700. package/docs/components/overlays/Dialog.md +5 -5
  701. package/docs/components/overlays/DialogContainer.md +26 -10
  702. package/docs/components/overlays/DialogTrigger.md +6 -6
  703. package/docs/components/overlays/Tooltip.md +17 -6
  704. package/docs/components/overlays/TooltipTrigger.md +2 -0
  705. package/package.json +1 -1
@@ -201,7 +201,7 @@ Panels support four rendering modes via the `mode` prop:
201
201
 
202
202
  - **`default`** — Standard panel, pushes content (Content Push: Yes, Overlay: No)
203
203
  - **`sticky`** — Floats over content (Content Push: No, Overlay: No)
204
- - **`overlay`** — With dismissable backdrop (Content Push: Yes, Overlay: Yes)
204
+ - **`overlay`** — With dismissable backdrop, floats over content (Content Push: No, Overlay: Yes)
205
205
  - **`dialog`** — Renders as modal dialog (Content Push: No, Overlay: Dialog)
206
206
 
207
207
  ### Sticky Panel
@@ -19,6 +19,10 @@ Form-aware inputs use `useFieldProps` for both legacy instances and modern contr
19
19
 
20
20
  The [compiled custom-control example](https://github.com/cube-js/cube-ui-kit/blob/main/typecheck/consumer/modern-form-examples.tsx) shows explicit DOM forwarding, async validation, and default adoption. Shared input rule props accept existing legacy validators; use `ModernValidationRule` for strict modern success/error return types, and adapt legacy validators that resolve data before migrating them.
21
21
 
22
+ ## Style forwarding through overlays
23
+
24
+ Forward consumer styles to the element that owns them. DialogContainer's `styles` targets the overlay content shell, while Dialog owns its own root styles. Layout.Panel keeps these channels explicit: `dialogProps.styles` for the shell and `dialogStyles` for its implicit Dialog, separate from inline panel `styles`. Avoid selectors that reach through the overlay to override its child.
25
+
22
26
  ## Core Concepts
23
27
 
24
28
  ### 1. Base Properties with `filterBaseProps`
@@ -425,6 +429,8 @@ export function Action(
425
429
 
426
430
  ## Form Integration
427
431
 
432
+ Call `wrapWithField` consistently: it renders stable field chrome by default and handles `isBare` as the explicit opt-out. Do not infer presentation from a label, form binding or message content. Pass React Aria's label props to the wrapper so a supplied label remains associated with the control in both modes. Inner controls whose parent owns the field chrome should receive `isBare` to avoid nested fields.
433
+
428
434
  For input components that need to integrate with forms, see the [Field documentation](./components/form/Field.md) for comprehensive guidance on:
429
435
 
430
436
  - Form state management
@@ -20,16 +20,41 @@ For modern forms, follow the [use-case guide](./components/form/ModernForm.md).
20
20
  ## Labels & Description
21
21
 
22
22
  - **`label`** `ReactNode` — Label text displayed above or beside the input.
23
- - **`labelPosition`** `'top' | 'side' | 'split'` (default: `top`) — Position of the label relative to the input.
24
- - **`description`** `ReactNode` — Description text placed below the label. A field without a label shows it too, unless it is `isBare`.
25
- - **`isBare`** `boolean` — For inline use: a field without a `label` renders the bare control. Without `isBare`, such a field renders the field wrapper when it is bound to a form, whose validation errors need a place, or is passed `description`, `errorMessage` or `message`. A text prop counts whatever it holds at the moment, so the input keeps its place and its focus when a message comes and goes. A wrapped field is laid out by its wrapper, as a labelled one is: layout props on the input such as `flexGrow`, `width` or `gridArea` stay on the input, so set them in `fieldStyles` to place the field, or pass `isBare`. With `isBare` the texts are not shown, and the control keeps its invalid state (`aria-invalid` and the invalid styles). The error text is not linked to anything, though, so a screen reader says the field is invalid without saying why: show the reason some other way, such as a tooltip or a message for the whole row, and point `aria-describedby` at it. No effect on a field with a `label`.
26
- - **`forceField`** `boolean` — **Deprecated.** A field without a `label` now renders the field wrapper by itself when it is bound to a form or is passed `description`, `errorMessage` or `message`; set `isBare` to keep the bare control instead. `forceField` still forces the wrapper and warns once in development.
23
+ - **`labelPosition`** `'top' | 'side' | 'split'` (default: `top`) — Position of the label relative to the input. Side and split layouts reserve a label column only when a label is present.
24
+ - **`description`** `ReactNode` — Help text. It appears below a top label or the control when there is no visible label, and beside the control with a side or split label. It remains independent of the error message.
25
+ - **`isBare`** `boolean` (default: `false`) — Render the control without field layout, description or message text. A supplied `label` remains as a visually hidden accessible label; label tooltips, suffixes and extra content are omitted. Form binding, invalid state and control styles still apply. Use this explicitly for inline controls or when a parent already renders their field chrome. Provide `aria-describedby` when the error is explained elsewhere. With `isBare` omitted or `false`, field chrome always renders, including for standalone inputs without a label. Message values never choose whether the wrapper exists, so adding or removing messages keeps the control mounted and focused. Layout props on the control stay there; use `fieldStyles` to place the entire field.
26
+ - **`forceField`** `boolean` — **Deprecated.** Fields render chrome by default, so remove this prop. It has no presentation effect; `isBare` is the explicit opt-out even if `forceField` is also supplied.
27
27
  - **`extra`** `ReactNode` — Additional content displayed next to the label.
28
28
  - **`labelTooltip`** `ReactNode` — Content of an info badge shown next to the label. Only rendered when the field has a label. (Formerly `tooltip`. On most fields `tooltip` is gone; on `Select` and `Checkbox` it is the control's own tooltip, as on `Item` and `Button`.)
29
29
  - **`labelSuffix`** `ReactNode` — Content displayed after the label text.
30
30
  - **`labelProps`** `object` — Additional HTML props passed to the label element.
31
31
  - **`labelStyles`** `Styles` — Tasty styles for the label element.
32
32
 
33
+ ## Field presentation
34
+
35
+ ```jsx
36
+ // Default chrome gives generated errors a place, even without a visible label.
37
+ <TagInput aria-label="Recipients" />
38
+
39
+ // A row that owns the label and error opts its inner control out explicitly.
40
+ <TextInput isBare aria-label="Amount" aria-describedby="row-error" />
41
+
42
+ // Suppress only the error slot; keep the label and description.
43
+ <TextInput name="name" label="Name" description="Shown on invoices" errorMessage={null} />
44
+ ```
45
+
46
+ The field wrapper stays in place when a label, description or message appears or disappears. Changing `isBare` changes the presentation structure and may remount the control; keep that mode stable while editing. Individual checkbox and radio options keep their group's inline presentation.
47
+
48
+ ### Field sizing and alignment
49
+
50
+ Set `fieldStyles` to size the entire field, including its label, description and feedback. Control-level `width`, `styles` and `wrapperStyles` continue to size the control itself:
51
+
52
+ ```jsx
53
+ <TextInput label="Name" fieldStyles={{ width: '40x' }} />
54
+ ```
55
+
56
+ Fields without labels no longer reserve an empty side or split label column. If a row should intentionally align with neighbouring side labels, add `fieldStyles={{ padding: '$full-label-width left' }}`. For a nameless legacy `Form.Item`, put that padding on the item's `styles` instead; it owns the wrapper. Remove deprecated `forceField` when migrating these rows.
57
+
33
58
  ## Necessity Indicators
34
59
 
35
60
  - **`isRequired`** `boolean` (default: `false`) — Whether user input is required before form submission. Marks the label, sets `aria-required` on the input, and adds a `required` validation rule.
@@ -79,8 +104,8 @@ For modern forms, follow the [use-case guide](./components/form/ModernForm.md).
79
104
  - **`rulesKey`** `string` — Manual modern function revision. Skips validator/transform source comparison; declarative constraints are always compared. Update it when a function or its captures change.
80
105
  - **`errorPolicy`** `'first' | 'all'` — Modern rule error collection policy, inherited from the controller by default.
81
106
  - **`showValid`** `boolean` — Whether to show the valid state icon after successful validation.
82
- - **`errorMessage`** `ReactNode` — Error message always displayed in danger state, regardless of validation state.
83
- - **`message`** `ReactNode` — _(deprecated)_ Use `errorMessage` for errors and `description` for help text.
107
+ - **`errorMessage`** `ReactNode` — Error text displayed in danger state, regardless of validation state. `undefined` allows the form-generated error or the deprecated `message` fallback. An explicit `null`, `false` or empty string suppresses the error text and its fallback, while the control retains its invalid state. The description remains visible.
108
+ - **`message`** `ReactNode` — _(deprecated)_ Fallback text used only when `errorMessage` is `undefined`. Use `errorMessage` for errors and `description` for help text. `message={null}` does not suppress a generated `errorMessage`.
84
109
 
85
110
  ## Styling
86
111
 
package/docs/Theming.md CHANGED
@@ -414,7 +414,7 @@ Note the distinction from `contrastLevel`: the level is a config seed the app su
414
414
 
415
415
  ## `<Root palette>`
416
416
 
417
- `<Root>` accepts the same config as a prop, applied during render so the first paint is already correct:
417
+ `<Root>` accepts the same config as a prop. The first mount applies it during render, so the first paint (and SSR output) is already correct. A later change applies in a layout effect, which still lands before paint and does not update other components while `<Root>` renders, so the prop alone is enough — there is no need to call `setPaletteConfig()` before changing it:
418
418
 
419
419
  ```tsx
420
420
  <Root palette={{ accent: userBrandColor }}>
@@ -429,6 +429,7 @@ Removing the prop entirely is the one thing that does _not_ reset the palette
429
429
  This is a convenience wrapper over `setPaletteConfig()`, not a separate scope. **The palette is process-global** — Glaze's own config is, and so is the single `body` rule the tokens are injected into. One palette per process, not per tree and not per request:
430
430
 
431
431
  - Two `<Root>`s with different `palette` props will fight over the same tokens.
432
+ - `<Root>`'s layout effect runs after its descendants' layout effects in the same commit, so a `setPaletteConfig()` call from a descendant's layout effect in a commit that also mounts `<Root>` or changes its `palette` loses to the prop. Call it from a passive effect or an event handler instead. A `<Root>` that mounts while another tree is already rendered also applies its palette during its first render, which updates that tree mid-render and makes React warn.
432
433
  - Under SSR, apply the palette in code that runs on **both** server and client. A client-only `setPaletteConfig` disposes and replaces the server-rendered token block on the first render, which is visible as a flash. Per-request palettes are not supported.
433
434
 
434
435
  ## Caveats
package/docs/Usage.md CHANGED
@@ -15,6 +15,10 @@ For styling engine internals see the [Tasty documentation](./tasty/usage.md). Ta
15
15
 
16
16
  Pass your router's `useHref` and `useNavigate` hooks through `Root`'s `navigation` adapter. `Menu.Item`, like `Button`, `ItemButton`, and `Link`, accepts `to` destinations. Its label and description expose native anchors for modified-click, middle-click and link context-menu commands; the complete row supports ordinary click and keyboard activation. Use `navigationOptions` for router options and `target`, `rel`, or `download` for native link behavior. Nested providers and overlays inherit the adapter unless they explicitly supply another one.
17
17
 
18
+ ## Overlay sizing
19
+
20
+ DialogContainer accepts `type="tray"` and `styles` for its overlay content shell. Its child Dialog has separate styles and size bounds. Layout.Panel exposes those same channels through `dialogProps.styles` and `dialogStyles` in dialog mode; inline panel styles and stored width remain independent. Keep the tray type and change dimensions to expand it without remounting its content.
21
+
18
22
  ## React Compiler
19
23
 
20
24
  UI Kit ships components optimized with React Compiler and requires React and React DOM 19.3 or newer. Your application does not need to enable Compiler to use this build. Adoption is incremental: functions with known compatibility diagnostics remain unoptimized, and the legacy form's mutable render paths are explicitly excluded.
@@ -496,3 +500,5 @@ Inputs subscribe to their own values and errors. For other reactive UI, use `For
496
500
  ### Shared field integration
497
501
 
498
502
  Built-in inputs have field support; they do not need a `Field` wrapper. Modern `name` and `field` bindings, and legacy string `name` bindings, connect through `useFieldProps`. Custom controls use that hook and `wrapWithField`. [Field Properties](./FieldProperties.md) documents shared labels, validation, state, and presentation props.
503
+
504
+ Fields render stable chrome by default, including without a visible label. Use `isBare` for inline controls or when a parent owns the field layout and feedback; a supplied label remains accessible but visually hidden. Message content never chooses whether the wrapper exists. `errorMessage={null}` suppresses error text and its fallback while preserving the description and invalid state.
@@ -13,7 +13,7 @@ The root application wrapper. Provides theme context, global styles, portal cont
13
13
  - **`navigation`** `NavigationAdapter` — Custom navigation adapter for routing
14
14
  - **`tracking`** `TrackingProps` — Analytics/tracking event configuration
15
15
  - **`tokens`** `Record<string, string>` — Custom design tokens (CSS custom properties)
16
- - **`palette`** `PaletteConfig` — Tune the generated color palette. Every zone — `accent`, `base` and each status theme — takes the same seed: a color, or `{ hue, saturation }`. Plus the global `surfaceMode`, `pastel` and `contrastLevel`. Applied during render, so the first paint is already correct. Describes the whole palette, so dropping a field drops that customization. A convenience wrapper over `setPaletteConfig()` — the palette is process-global, not per tree. See [Theming](../Theming.md)
16
+ - **`palette`** `PaletteConfig` — Tune the generated color palette. Every zone — `accent`, `base` and each status theme — takes the same seed: a color, or `{ hue, saturation }`. Plus the global `surfaceMode`, `pastel` and `contrastLevel`. The first mount applies it during render, so the first paint is already correct; a later change applies in a layout effect, still before paint. Describes the whole palette, so dropping a field drops that customization. A convenience wrapper over `setPaletteConfig()` — the palette is process-global, not per tree. See [Theming](../Theming.md)
17
17
  - **`fonts`** `boolean` — Whether to load default fonts
18
18
  - **`font`** `string` — Custom font family name
19
19
  - **`monospaceFont`** `string` — Custom monospace font family name
@@ -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
@@ -50,7 +50,33 @@ These properties allow direct style application without using the `styles` prop:
50
50
 
51
51
  ### Context Inheritance
52
52
 
53
- `type`, `theme`, `size`, and `isDisabled` set on `Button.Split` are inherited by all child `Button` components via context. Explicitly passed props on individual buttons always take precedence.
53
+ `type`, `theme`, `size`, and `isDisabled` set on `Button.Split` are inherited via context by every `Button` in the split, including a `Button` that a `DialogTrigger` or `Menu.Trigger` in the split uses as its trigger. A `type`, `theme` or `size` passed to an individual `Button` takes precedence. `isDisabled` does not: a disabled split disables every `Button` in it, whatever that `Button`'s own `isDisabled`.
54
+
55
+ Inheritance stops at the overlay. Buttons in a popover, dialog or menu opened from the split keep their own defaults, so a confirm popover's Cancel button is neither restyled nor disabled by the split. A `Button.Split` rendered inside such an overlay styles its own Buttons as usual.
56
+
57
+ ```jsx
58
+ <Button.Split type="primary" size="small" isDisabled={isShipping}>
59
+ <DialogTrigger type="popover">
60
+ <Button>Ship</Button>
61
+ <Dialog>
62
+ <Content>Ship these changes?</Content>
63
+ <Footer>
64
+ {/* not restyled or disabled by the split: each keeps its own props */}
65
+ <Button type="primary" onPress={ship}>
66
+ Ship now
67
+ </Button>
68
+ <Button>Cancel</Button>
69
+ </Footer>
70
+ </Dialog>
71
+ </DialogTrigger>
72
+ <Menu.Trigger placement="bottom end">
73
+ <Button aria-label="More ship options" icon={<DirectionIcon to="down" />} />
74
+ <Menu onAction={onShipOption}>
75
+ <Menu.Item key="schedule">Schedule…</Menu.Item>
76
+ </Menu>
77
+ </Menu.Trigger>
78
+ </Button.Split>
79
+ ```
54
80
 
55
81
  ## Modes
56
82
 
@@ -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`.
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.
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. 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. 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.
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. 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. 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.
217
217
 
218
218
  #### Inline Actions
219
219
 
@@ -273,6 +273,8 @@ 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
+
276
278
  #### Example with Rich Items
277
279
 
278
280
  ```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
 
@@ -265,12 +266,13 @@ Collapsible side panel with resizing, transitions, and multiple rendering modes.
265
266
  - **`onSizeChange`** `(size: number) => void` — Size change callback
266
267
  - **`sizeStorageKey`** `string` — localStorage key for persisting size
267
268
  - **`hasTransition`** `boolean` (default: `false`) — Enable slide animation
268
- - **`isDismissable`** `boolean` (default: `true`) — Allow dismissing overlay/dialog by click or Escape
269
+ - **`isDismissable`** `boolean` (default: `true`) — Allow dismissing overlay/dialog by click or Escape, and an overlay panel by focus moving into the main content
269
270
  - **`overlayStyles`** `Styles` — Styles for the overlay backdrop in overlay mode
270
271
  - **`isDialogOpen`** `boolean` — Controlled dialog state (mode="dialog")
271
272
  - **`defaultIsDialogOpen`** `boolean` (default: `false`) — Initial dialog state
272
273
  - **`onDialogOpenChange`** `(isOpen: boolean) => void` — Dialog state callback
273
- - **`dialogProps`** `CubeDialogContainerProps` — Props for dialog mode
274
+ - **`dialogProps`** `CubeDialogContainerProps` — Props for DialogContainer in dialog mode, including `type="tray"` and overlay-shell `styles`
275
+ - **`dialogStyles`** `Styles` — Styles for the inner Dialog root in dialog mode; inline panel `styles` remain independent
274
276
  - **`innerRef`** `ForwardedRef<HTMLDivElement>` — Ref for the inner content element
275
277
  - **`innerProps`** `HTMLAttributes<HTMLDivElement>` — Props to spread on the Inner sub-element
276
278
 
@@ -278,7 +280,7 @@ Collapsible side panel with resizing, transitions, and multiple rendering modes.
278
280
 
279
281
  - `default` — Standard panel that pushes content aside (propagates size, no overlay)
280
282
  - `sticky` — Panel floats over content without affecting layout (no size propagation, no overlay)
281
- - `overlay` — Panel with dismissable backdrop overlay (propagates size, with overlay)
283
+ - `overlay` — Panel floats over content with a dismissable backdrop overlay (no size propagation, with overlay)
282
284
  - `dialog` — Panel renders as a modal dialog (no size propagation, overlay via Dialog)
283
285
 
284
286
  **Modifiers:**
@@ -496,6 +498,35 @@ function ResizablePanelExample() {
496
498
  }
497
499
  ```
498
500
 
501
+ ### Expandable Panel Tray
502
+
503
+ ```jsx
504
+ const dimensions = {
505
+ width: expanded ? '100dvw' : '(100dvw - 2x)',
506
+ height: expanded ? '100dvh' : '60dvh',
507
+ };
508
+
509
+ <Layout height="100dvh">
510
+ <Layout.Panel
511
+ side="right"
512
+ mode="dialog"
513
+ isDialogOpen={isOpen}
514
+ onDialogOpenChange={setIsOpen}
515
+ dialogProps={{ type: 'tray', styles: dimensions }}
516
+ dialogStyles={dimensions}
517
+ >
518
+ <Button onPress={() => setExpanded(!expanded)}>
519
+ {expanded ? 'Collapse' : 'Expand'}
520
+ </Button>
521
+ <Button onPress={() => setIsOpen(false)}>Close chat</Button>
522
+ {/* Conversation and composer */}
523
+ </Layout.Panel>
524
+ <Layout.Content>{/* Page content */}</Layout.Content>
525
+ </Layout>
526
+ ```
527
+
528
+ `dialogProps.styles` sizes the overlay shell; `dialogStyles` sizes its Dialog root. Both have independent default bounds. Keep the native tray type while expanding its dimensions to preserve mounted content, input selection and local state. Switching tray to a modal/fullscreen type remounts the overlay subtree. The tray retains native modal focus, backdrop and dismissal behavior in either size. Layout.Panel suppresses the built-in visible Close button; provide your own Close action. Its inline size and `sizeStorageKey` are independent of these dialog styles.
529
+
499
530
  ### Persistent Panel Size
500
531
 
501
532
  Use `sizeStorageKey` to persist panel size to localStorage. The size is automatically restored on mount.
@@ -634,6 +665,8 @@ In `overlay` mode, a semi-transparent backdrop appears behind the panel. The pan
634
665
  - Pressing Escape anywhere in the Layout
635
666
  - Moving focus to the main content area
636
667
 
668
+ Focus closes the panel only when it enters the main content from outside it, for example with a programmatic `focus()`, `Tab` from a control before the Layout, or `Shift+Tab` out of the panel when no other panel comes before it; moving between controls of the main content does not. Panels come after the main content in tab order, so `Tab` from the panel's last control leaves the Layout and keeps the panel open. Focus moving inside the panel, into a popover, menu or dialog opened from it, or into another `Layout.Panel` of the same Layout keeps it open. Other panels of the same Layout can sit under the backdrop; a click on them then closes the overlay panel, but `Tab` still reaches their controls. Opening the panel moves focus to its first control, unless focus already moved elsewhere as it opened (for example to a field with `autoFocus` inside it), so a menu or dialog that opened it can close without handing focus back to the main content. A panel already open when its Layout first renders leaves page focus alone. Closing the panel returns focus to the element that had it when the panel opened, if focus is still in the panel or was lost with it; focus moved elsewhere, by the user or in `onOpenChange`, stays there. If that element is gone by then, as a menu item is, move focus yourself in `onOpenChange`.
669
+
637
670
  ```jsx
638
671
  function OverlayPanelExample() {
639
672
  const [isPanelOpen, setIsPanelOpen] = useState(true);
@@ -669,7 +702,7 @@ You can customize the overlay styles using the `overlayStyles` prop:
669
702
  </Layout.Panel>
670
703
  ```
671
704
 
672
- To prevent dismissing the overlay by clicking or pressing Escape, set `isDismissable={false}`:
705
+ To prevent dismissing the overlay by clicking, pressing Escape or moving focus to the main content, set `isDismissable={false}`:
673
706
 
674
707
  ```jsx
675
708
  <Layout.Panel mode="overlay" isDismissable={false}>
@@ -788,7 +821,9 @@ function ApplicationShell() {
788
821
  ### Keyboard Navigation
789
822
 
790
823
  - `Tab` - Navigate between interactive elements
791
- - Focus management is handled automatically when panels open/close
824
+ - An overlay panel closes on Escape or when focus enters the main content from outside it; focus moving inside it or into another panel of the same Layout keeps it open
825
+ - Panels come after the main content in tab order, so `Tab` from a panel's last control leaves the Layout
826
+ - An overlay panel moves focus to its first control when it opens and returns it to the opener when it closes; in `dialog` mode the dialog manages focus, and other modes leave focus alone
792
827
  - Resize handlers can be focused and resized using arrow keys:
793
828
  - `Arrow keys` - Resize panel by 10px
794
829
  - `Shift + Arrow keys` - Resize panel by 50px
@@ -798,7 +833,7 @@ function ApplicationShell() {
798
833
 
799
834
  - `Layout.Header` uses semantic heading elements (`h1`-`h6`) based on `level` prop
800
835
  - `Layout.Toolbar` has `role="toolbar"` for proper announcement
801
- - `Layout.Footer` has `role="contentinfo"` for landmark navigation
836
+ - `Layout.Footer` of a top-level Layout has `role="contentinfo"` for landmark navigation; footers inside panels and nested Layouts add no landmark
802
837
  - Breadcrumbs use Link components with proper navigation semantics
803
838
  - Panel close buttons have accessible labels
804
839
 
@@ -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
31
- - **`clearOnBlur`** `boolean` (default: `false`) — Whether to clear selection and input on blur (only applies to non-custom-value mode)
30
+ - **`shouldCommitOnBlur`** `boolean` (default: `true`) — Whether to commit custom value on blur in allowsCustomValue mode. When `false`, blur discards the uncommitted text
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,17 +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
112
 
113
- **clearOnBlur** - When `true`, clears both the selection and input when the input loses focus. When `false` (default), the input reverts to showing the current selection. Only applies to non-custom-value mode. Useful for search-like scenarios where you want to reset after each interaction.
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.
114
+
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.
116
+
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.
120
+
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`.
114
122
 
115
123
  **popoverTrigger** - Controls how the popover opens:
116
124
 
117
125
  - `manual` - Only opens via trigger button or arrow keys
118
- - `input` (default) - Opens when user types + manual triggers
119
- - `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
120
128
 
121
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.
122
130
 
@@ -204,8 +212,8 @@ The `mods` property accepts the following modifiers you can override:
204
212
  ### Popover Trigger Modes
205
213
 
206
214
  - `manual` - Only opens via trigger button or arrow keys
207
- - `input` - Opens when user types + manual triggers (default)
208
- - `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
209
217
 
210
218
  ### Validation States
211
219
 
@@ -362,6 +370,8 @@ const categories = [
362
370
 
363
371
  ### Loading State
364
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
+
365
375
  ```jsx
366
376
  <ComboBox isLoading label="Fruit" placeholder="Select a fruit...">
367
377
  <ComboBox.Item key="apple">Apple</ComboBox.Item>
@@ -561,11 +571,11 @@ const [selectedKey, setSelectedKey] = useState(null);
561
571
 
562
572
  ### Keyboard Navigation
563
573
 
564
- - `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
565
575
  - `ArrowDown` - Opens popover (if closed) or moves focus to next option
566
576
  - `ArrowUp` - Opens popover (if closed) or moves focus to previous option
567
- - `Enter` - Selects the focused option and closes popover
568
- - `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
569
579
  - `Home` - Moves focus to the first option (when popover is open)
570
580
  - `End` - Moves focus to the last option (when popover is open)
571
581
  - Typing - Filters options based on input value
@@ -584,10 +594,11 @@ An `onKeyDown` handler runs before all of these and can skip any of them for a k
584
594
  ### ARIA Properties
585
595
 
586
596
  - `role="combobox"` - Identifies the input as a combobox
587
- - `aria-expanded` - Indicates whether the popover is open or closed
597
+ - `aria-expanded` - Indicates whether the list is shown
588
598
  - `aria-haspopup="listbox"` - Indicates the combobox has a listbox popup
599
+ - `aria-autocomplete="list"` - Indicates that typing filters the options
589
600
  - `aria-controls` - References the listbox ID when popover is open
590
- - `aria-activedescendant` - References the currently focused option
601
+ - `aria-activedescendant` - References the currently focused option, while it is shown
591
602
  - `aria-label` - Provides accessible label when no visible label exists
592
603
  - `aria-required` - Indicates required fields
593
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