@cube-dev/ui-kit 0.201.0 → 0.203.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 (721) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +56 -0
  3. package/dist/README.md +1 -1
  4. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  5. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/dist/_internal/hooks/use-event.js +1 -1
  7. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  8. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  9. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  10. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  11. package/dist/_internal/hooks/use-warn.js +1 -1
  12. package/dist/components/Block.js +1 -1
  13. package/dist/components/CollectionItem.js +1 -1
  14. package/dist/components/GlobalStyles.js +1 -1
  15. package/dist/components/GridProvider.js +1 -1
  16. package/dist/components/HiddenInput.js +2 -1
  17. package/dist/components/HiddenInput.js.map +1 -1
  18. package/dist/components/Root.js +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  30. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  31. package/dist/components/actions/Link/Link.js +1 -1
  32. package/dist/components/actions/Menu/Menu.js +1 -1
  33. package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
  34. package/dist/components/actions/Menu/MenuItem.js +1 -1
  35. package/dist/components/actions/Menu/MenuSection.js +1 -1
  36. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  37. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  38. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  39. package/dist/components/actions/Menu/context.js +1 -1
  40. package/dist/components/actions/Menu/styled.js +1 -1
  41. package/dist/components/actions/actions-run.js +1 -1
  42. package/dist/components/actions/index.js +1 -1
  43. package/dist/components/actions/use-action.js +1 -1
  44. package/dist/components/actions/use-anchored-menu.js +1 -1
  45. package/dist/components/actions/use-context-menu.js +1 -1
  46. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  47. package/dist/components/content/Alert/Alert.js +1 -1
  48. package/dist/components/content/Alert/use-alert.js +1 -1
  49. package/dist/components/content/Avatar/Avatar.js +1 -1
  50. package/dist/components/content/Badge/Badge.js +1 -1
  51. package/dist/components/content/Card/Card.js +1 -1
  52. package/dist/components/content/Content.js +1 -1
  53. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  54. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  55. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  56. package/dist/components/content/Divider/Divider.d.ts +22 -0
  57. package/dist/components/content/Divider/Divider.js +159 -0
  58. package/dist/components/content/Divider/Divider.js.map +1 -0
  59. package/dist/components/content/Footer.js +1 -1
  60. package/dist/components/content/Header.js +1 -1
  61. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  62. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  63. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  64. package/dist/components/content/Item/Item.js +1 -1
  65. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  66. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  67. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  68. package/dist/components/content/Layout/GridLayout.js +1 -1
  69. package/dist/components/content/Layout/Layout.js +1 -1
  70. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  71. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  72. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  73. package/dist/components/content/Layout/LayoutContent.js +1 -1
  74. package/dist/components/content/Layout/LayoutContext.js +1 -1
  75. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  76. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  77. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  78. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  79. package/dist/components/content/Layout/LayoutPane.js +1 -1
  80. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  81. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  82. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  83. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  84. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  85. package/dist/components/content/Layout/index.js +1 -1
  86. package/dist/components/content/Layout/utils.js +1 -1
  87. package/dist/components/content/Paragraph.js +1 -1
  88. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  89. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  90. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  91. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  92. package/dist/components/content/Result/Result.js +1 -1
  93. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  94. package/dist/components/content/Tag/Tag.js +1 -1
  95. package/dist/components/content/Text.js +1 -1
  96. package/dist/components/content/TextItem/TextItem.js +1 -1
  97. package/dist/components/content/Title.js +1 -1
  98. package/dist/components/content/Tree/Tree.js +39 -14
  99. package/dist/components/content/Tree/Tree.js.map +1 -1
  100. package/dist/components/content/Tree/TreeNode.js +8 -7
  101. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  102. package/dist/components/content/Tree/checked-keys.js +158 -0
  103. package/dist/components/content/Tree/checked-keys.js.map +1 -0
  104. package/dist/components/content/Tree/rowId.js +16 -0
  105. package/dist/components/content/Tree/rowId.js.map +1 -0
  106. package/dist/components/content/Tree/styled.js +1 -1
  107. package/dist/components/content/Tree/tree-index.js +10 -2
  108. package/dist/components/content/Tree/tree-index.js.map +1 -1
  109. package/dist/components/content/Tree/types.d.ts +21 -1
  110. package/dist/components/content/Tree/use-checkbox-tree.js +17 -123
  111. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
  112. package/dist/components/content/Tree/use-load-data.js +1 -1
  113. package/dist/components/content/highlightText.js +1 -1
  114. package/dist/components/content/use-auto-tooltip.js +1 -1
  115. package/dist/components/data/DataTable/DataTable.js +1 -1
  116. package/dist/components/data/ItemTable/ItemTable.js +233 -178
  117. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  118. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  119. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  120. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  121. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  122. package/dist/components/data/ItemTable/index.d.ts +2 -2
  123. package/dist/components/data/ItemTable/item-table-sections.js +68 -0
  124. package/dist/components/data/ItemTable/item-table-sections.js.map +1 -0
  125. package/dist/components/data/ItemTable/types.d.ts +12 -0
  126. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  127. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  128. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  129. package/dist/components/data/ItemTable/use-item-table-selection.js +31 -27
  130. package/dist/components/data/ItemTable/use-item-table-selection.js.map +1 -1
  131. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  132. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  133. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  134. package/dist/components/data/TableBase/RowCollection.js +1 -1
  135. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  136. package/dist/components/data/TableBase/TableRow.js +1 -1
  137. package/dist/components/data/TableBase/TableRowLink.js +1 -1
  138. package/dist/components/data/TableBase/TableView.d.ts +1 -0
  139. package/dist/components/data/TableBase/TableView.js +86 -21
  140. package/dist/components/data/TableBase/TableView.js.map +1 -1
  141. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  142. package/dist/components/data/TableBase/column-header.js +1 -1
  143. package/dist/components/data/TableBase/column-menu.js +1 -1
  144. package/dist/components/data/TableBase/column-styles.js +1 -1
  145. package/dist/components/data/TableBase/column-tint.js +1 -1
  146. package/dist/components/data/TableBase/row-menu.js +1 -1
  147. package/dist/components/data/TableBase/styled.js +25 -1
  148. package/dist/components/data/TableBase/styled.js.map +1 -1
  149. package/dist/components/data/TableBase/table-body-sections.d.ts +3 -0
  150. package/dist/components/data/TableBase/table-body-sections.js +30 -0
  151. package/dist/components/data/TableBase/table-body-sections.js.map +1 -0
  152. package/dist/components/data/TableBase/table-tree.js +1 -1
  153. package/dist/components/data/TableBase/types.js +1 -1
  154. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  155. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  156. package/dist/components/data/TableBase/use-column-order.js +1 -1
  157. package/dist/components/data/TableBase/use-column-window.js +1 -1
  158. package/dist/components/data/TableBase/use-container-width.js +1 -1
  159. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  160. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  161. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  162. package/dist/components/data/TableBase/use-table-search.js +1 -1
  163. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  164. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  165. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  166. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  167. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  168. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  169. package/dist/components/data/index.d.ts +2 -2
  170. package/dist/components/fields/Checkbox/Checkbox.d.ts +3 -2
  171. package/dist/components/fields/Checkbox/Checkbox.js +21 -10
  172. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  173. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +3 -2
  174. package/dist/components/fields/Checkbox/CheckboxGroup.js +36 -42
  175. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  176. package/dist/components/fields/Checkbox/context.js +1 -1
  177. package/dist/components/fields/ColorInput/ColorInput.d.ts +3 -2
  178. package/dist/components/fields/ColorInput/ColorInput.js +5 -3
  179. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  180. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +9 -3
  181. package/dist/components/fields/ColorPicker/ColorPicker.js +182 -200
  182. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  183. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  184. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +3 -2
  185. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +143 -171
  186. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  187. package/dist/components/fields/ComboBox/ComboBox.d.ts +7 -5
  188. package/dist/components/fields/ComboBox/ComboBox.js +704 -639
  189. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  190. package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
  191. package/dist/components/fields/CommandTextArea/CommandTextArea.js +5 -4
  192. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  193. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  194. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  195. package/dist/components/fields/DatePicker/DateInput.d.ts +3 -2
  196. package/dist/components/fields/DatePicker/DateInput.js +6 -5
  197. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  198. package/dist/components/fields/DatePicker/DateInputBase.js +79 -76
  199. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  200. package/dist/components/fields/DatePicker/DatePicker.d.ts +3 -2
  201. package/dist/components/fields/DatePicker/DatePicker.js +84 -173
  202. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  203. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  204. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  205. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  206. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  207. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +3 -2
  208. package/dist/components/fields/DatePicker/DateRangePicker.js +116 -204
  209. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  210. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +3 -2
  211. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +288 -434
  212. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  213. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  214. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +3 -2
  215. package/dist/components/fields/DatePicker/PeriodPicker.js +87 -113
  216. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  217. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  218. package/dist/components/fields/DatePicker/TimeInput.d.ts +3 -2
  219. package/dist/components/fields/DatePicker/TimeInput.js +7 -6
  220. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  221. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  222. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  223. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  224. package/dist/components/fields/DatePicker/period.js +1 -1
  225. package/dist/components/fields/DatePicker/props.js +1 -1
  226. package/dist/components/fields/DatePicker/utils.js +1 -1
  227. package/dist/components/fields/FileInput/FileInput.d.ts +3 -2
  228. package/dist/components/fields/FileInput/FileInput.js +71 -100
  229. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  230. package/dist/components/fields/FilterListBox/FilterListBox.js +10 -65
  231. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  232. package/dist/components/fields/FilterListBox/styled.js +66 -0
  233. package/dist/components/fields/FilterListBox/styled.js.map +1 -0
  234. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +35 -3
  235. package/dist/components/fields/FilterPicker/FilterPicker.js +76 -15
  236. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  237. package/dist/components/fields/FilterPicker/FilterTree.js +413 -0
  238. package/dist/components/fields/FilterPicker/FilterTree.js.map +1 -0
  239. package/dist/components/fields/Input/Input.js +1 -1
  240. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  241. package/dist/components/fields/ListBox/ListBox.d.ts +3 -2
  242. package/dist/components/fields/ListBox/ListBox.js +7 -10
  243. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  244. package/dist/components/fields/ListBox/optionId.js +1 -1
  245. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  246. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  247. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  248. package/dist/components/fields/NumberInput/NumberInput.js +40 -21
  249. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  250. package/dist/components/fields/NumberInput/StepButton.js +52 -37
  251. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  252. package/dist/components/fields/PasswordInput/PasswordInput.js +5 -3
  253. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  254. package/dist/components/fields/Picker/Picker.d.ts +9 -3
  255. package/dist/components/fields/Picker/Picker.js +12 -11
  256. package/dist/components/fields/Picker/Picker.js.map +1 -1
  257. package/dist/components/fields/RadioGroup/Radio.js +152 -154
  258. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  259. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +3 -2
  260. package/dist/components/fields/RadioGroup/RadioGroup.js +85 -111
  261. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  262. package/dist/components/fields/RadioGroup/context.js +1 -1
  263. package/dist/components/fields/RadioGroup/context.js.map +1 -1
  264. package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +9 -4
  265. package/dist/components/fields/SearchComboBox/SearchComboBox.js +16 -23
  266. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  267. package/dist/components/fields/SearchInput/SearchInput.js +52 -48
  268. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  269. package/dist/components/fields/Select/Select.d.ts +3 -2
  270. package/dist/components/fields/Select/Select.js +8 -10
  271. package/dist/components/fields/Select/Select.js.map +1 -1
  272. package/dist/components/fields/Slider/Gradation.js +1 -1
  273. package/dist/components/fields/Slider/HueSlider.js +1 -1
  274. package/dist/components/fields/Slider/RangeSlider.js +19 -26
  275. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  276. package/dist/components/fields/Slider/Slider.js +51 -58
  277. package/dist/components/fields/Slider/Slider.js.map +1 -1
  278. package/dist/components/fields/Slider/SliderBase.js +61 -60
  279. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  280. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  281. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  282. package/dist/components/fields/Slider/elements.js +1 -1
  283. package/dist/components/fields/Slider/index.js +1 -1
  284. package/dist/components/fields/Slider/types.d.ts +3 -3
  285. package/dist/components/fields/Switch/Switch.d.ts +12 -2
  286. package/dist/components/fields/Switch/Switch.js +97 -165
  287. package/dist/components/fields/Switch/Switch.js.map +1 -1
  288. package/dist/components/fields/TagInput/TagInput.d.ts +5 -2
  289. package/dist/components/fields/TagInput/TagInput.js +18 -13
  290. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  291. package/dist/components/fields/TagInput/TagList.js +1 -1
  292. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  293. package/dist/components/fields/TagInput/useTagError.js +1 -1
  294. package/dist/components/fields/TextArea/TextArea.js +5 -3
  295. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  296. package/dist/components/fields/TextInput/TextInput.js +5 -3
  297. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  298. package/dist/components/fields/TextInput/TextInputBase.d.ts +25 -4
  299. package/dist/components/fields/TextInput/TextInputBase.js +214 -106
  300. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  301. package/dist/components/fields/TextInput/displayed-validation.js +1 -1
  302. package/dist/components/fields/TextInput/index.d.ts +2 -2
  303. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  304. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  305. package/dist/components/fields/TriggerActions.js +1 -1
  306. package/dist/components/fields/color/ColorPanel.js +1 -1
  307. package/dist/components/fields/color/channels.js +1 -1
  308. package/dist/components/fields/color/color.js +1 -1
  309. package/dist/components/fields/color/context.js +1 -1
  310. package/dist/components/fields/index.d.ts +2 -2
  311. package/dist/components/fields/option-origin-press.js +1 -1
  312. package/dist/components/form/FieldWrapper/FieldWrapper.js +120 -57
  313. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  314. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  315. package/dist/components/form/Form/Field.js +1 -1
  316. package/dist/components/form/Form/Form.js +1 -1
  317. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  318. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  319. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  320. package/dist/components/form/Form/SubmitError.js +1 -1
  321. package/dist/components/form/Form/backend.js +1 -1
  322. package/dist/components/form/Form/index.js +1 -1
  323. package/dist/components/form/Form/modern/actions.js +1 -1
  324. package/dist/components/form/Form/modern/context.js +1 -1
  325. package/dist/components/form/Form/modern/controller.js +1 -1
  326. package/dist/components/form/Form/modern/field-binding.js +1 -1
  327. package/dist/components/form/Form/modern/field.js +1 -1
  328. package/dist/components/form/Form/modern/react.js +1 -1
  329. package/dist/components/form/Form/modern/store.js +1 -1
  330. package/dist/components/form/Form/modern/validation.js +1 -1
  331. package/dist/components/form/Form/modern/values.js +1 -1
  332. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  333. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  334. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  335. package/dist/components/form/Form/use-field/use-field.js +1 -1
  336. package/dist/components/form/Form/use-form.js +1 -1
  337. package/dist/components/form/Form/validation.js +1 -1
  338. package/dist/components/form/Label.js +1 -1
  339. package/dist/components/form/field-chrome.js +1 -1
  340. package/dist/components/form/field-chrome.js.map +1 -1
  341. package/dist/components/form/field-layout.d.ts +20 -0
  342. package/dist/components/form/field-layout.js +114 -0
  343. package/dist/components/form/field-layout.js.map +1 -0
  344. package/dist/components/form/index.d.ts +2 -1
  345. package/dist/components/form/legacy-tooltip.js +15 -2
  346. package/dist/components/form/legacy-tooltip.js.map +1 -1
  347. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  348. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  349. package/dist/components/form/validation/use-validation-props.js +1 -1
  350. package/dist/components/form/wrapper.js +6 -2
  351. package/dist/components/form/wrapper.js.map +1 -1
  352. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  353. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  354. package/dist/components/layout/Flex.js +1 -1
  355. package/dist/components/layout/Flow.js +1 -1
  356. package/dist/components/layout/Grid.js +1 -1
  357. package/dist/components/layout/Panel.js +1 -1
  358. package/dist/components/layout/Prefix.js +1 -1
  359. package/dist/components/layout/ResizablePanel.js +1 -1
  360. package/dist/components/layout/Space.js +1 -1
  361. package/dist/components/layout/Suffix.js +1 -1
  362. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  363. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  364. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  365. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  366. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  367. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  368. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  369. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  370. package/dist/components/navigation/Tabs/Tabs.js +7 -3
  371. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  372. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  373. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  374. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  375. package/dist/components/navigation/Tabs/styled.js +18 -18
  376. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  377. package/dist/components/navigation/Tabs/types.js +1 -1
  378. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  379. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  380. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  381. package/dist/components/other/Calendar/Calendar.js +1 -1
  382. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  383. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  384. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  385. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  386. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  387. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  388. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  389. package/dist/components/other/Calendar/styled.js +1 -1
  390. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  391. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  392. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  393. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  394. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  395. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  396. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  397. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  398. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  399. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  400. package/dist/components/overlays/Dialog/context.js +1 -1
  401. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  402. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  403. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  404. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
  405. package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
  406. package/dist/components/overlays/Modal/Modal.js +1 -1
  407. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  408. package/dist/components/overlays/Modal/Overlay.js +1 -1
  409. package/dist/components/overlays/Modal/Popover.js +1 -1
  410. package/dist/components/overlays/Modal/Tray.js +1 -1
  411. package/dist/components/overlays/Modal/Underlay.js +1 -1
  412. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  413. package/dist/components/overlays/Notifications/Notification.js +1 -1
  414. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  415. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  416. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  417. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  418. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  419. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  420. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +2 -2
  421. package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
  422. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  423. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  424. package/dist/components/overlays/Notifications/index.js +1 -1
  425. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  426. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  427. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  428. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  429. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  430. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  431. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  432. package/dist/components/overlays/Toast/index.js +1 -1
  433. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  434. package/dist/components/overlays/Toast/useToast.js +1 -1
  435. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  436. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  437. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  438. package/dist/components/overlays/Tooltip/context.js +1 -1
  439. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  440. package/dist/components/portal/Portal.js +1 -1
  441. package/dist/components/portal/PortalProvider.js +1 -1
  442. package/dist/components/portal/usePortal.js +1 -1
  443. package/dist/components/shared/DraggableCollection.js +1 -1
  444. package/dist/components/shared/InvalidIcon.js +1 -1
  445. package/dist/components/shared/ValidIcon.js +1 -1
  446. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  447. package/dist/components/status/Spin/Cube.js +1 -1
  448. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  449. package/dist/components/status/Spin/Spin.js +1 -1
  450. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  451. package/dist/data/item-themes.js +1 -1
  452. package/dist/data/themes.js +1 -1
  453. package/dist/eslint-plugin/defaults.generated.js +25 -1
  454. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  455. package/dist/eslint-plugin/index.js +1 -1
  456. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  457. package/dist/i18n/I18nProvider.js +1 -1
  458. package/dist/i18n/createFormatter.js +1 -1
  459. package/dist/i18n/index.js +1 -1
  460. package/dist/i18n/instance.js +1 -1
  461. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  462. package/dist/i18n/locales/en-US/uikit.js +1 -1
  463. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  464. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  465. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  466. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  467. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  468. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  469. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  470. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  471. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  472. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  473. package/dist/i18n/locales.js +1 -1
  474. package/dist/i18n/namespace.js +1 -1
  475. package/dist/i18n/useFormatter.js +1 -1
  476. package/dist/i18n/useI18n.js +1 -1
  477. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  478. package/dist/icons/AdjustmentsIcon.js +1 -1
  479. package/dist/icons/AiIcon.js +1 -1
  480. package/dist/icons/AreaChartIcon.js +1 -1
  481. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  482. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  483. package/dist/icons/BackwardIcon.js +1 -1
  484. package/dist/icons/BarChartIcon.js +1 -1
  485. package/dist/icons/BellFilledIcon.js +1 -1
  486. package/dist/icons/BellIcon.js +1 -1
  487. package/dist/icons/BooleanIcon.js +1 -1
  488. package/dist/icons/CalendarEditIcon.js +1 -1
  489. package/dist/icons/CalendarIcon.js +1 -1
  490. package/dist/icons/CaretDownIcon.js +1 -1
  491. package/dist/icons/CaretUpIcon.js +1 -1
  492. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  493. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  494. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  495. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  496. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  497. package/dist/icons/ChartBarLineIcon.js +1 -1
  498. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  499. package/dist/icons/ChartBarStackedIcon.js +1 -1
  500. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  501. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  502. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  503. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  504. package/dist/icons/ChartBubbleIcon.js +1 -1
  505. package/dist/icons/ChartDonut2Icon.js +1 -1
  506. package/dist/icons/ChartFunnelIcon.js +1 -1
  507. package/dist/icons/ChartHeatmapIcon.js +1 -1
  508. package/dist/icons/ChartKPIIcon.js +1 -1
  509. package/dist/icons/ChartPie2Icon.js +1 -1
  510. package/dist/icons/ChartScatterIcon.js +1 -1
  511. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  512. package/dist/icons/CheckCircleIcon.js +1 -1
  513. package/dist/icons/CheckIcon.js +1 -1
  514. package/dist/icons/CircleFilledIcon.js +1 -1
  515. package/dist/icons/ClearIcon.js +1 -1
  516. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  517. package/dist/icons/CloseCircleIcon.js +1 -1
  518. package/dist/icons/CloseIcon.js +1 -1
  519. package/dist/icons/CodeIcon.js +1 -1
  520. package/dist/icons/ColumnTotalIcon.js +1 -1
  521. package/dist/icons/CopyIcon.js +1 -1
  522. package/dist/icons/CountIcon.js +1 -1
  523. package/dist/icons/CubeIcon.js +1 -1
  524. package/dist/icons/CubePauseIcon.js +1 -1
  525. package/dist/icons/CubePlayIcon.js +1 -1
  526. package/dist/icons/CurrencyDollarIcon.js +1 -1
  527. package/dist/icons/DangerIcon.js +1 -1
  528. package/dist/icons/DashboardIcon.js +1 -1
  529. package/dist/icons/DatabaseIcon.js +1 -1
  530. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  531. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  532. package/dist/icons/DirectionIcon.js +1 -1
  533. package/dist/icons/DonutIcon.js +1 -1
  534. package/dist/icons/DownIcon.js +1 -1
  535. package/dist/icons/EditIcon.js +1 -1
  536. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  537. package/dist/icons/ExclamationCircleIcon.js +1 -1
  538. package/dist/icons/ExclamationIcon.js +1 -1
  539. package/dist/icons/EyeIcon.js +1 -1
  540. package/dist/icons/EyeInvisibleIcon.js +1 -1
  541. package/dist/icons/FilterIcon.js +1 -1
  542. package/dist/icons/FolderFilledIcon.js +1 -1
  543. package/dist/icons/FolderIcon.js +1 -1
  544. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  545. package/dist/icons/FolderOpenIcon.js +1 -1
  546. package/dist/icons/ForwardIcon.js +1 -1
  547. package/dist/icons/GripVerticalIcon.js +1 -1
  548. package/dist/icons/HierarchyIcon.js +1 -1
  549. package/dist/icons/HierarchyOpenIcon.js +1 -1
  550. package/dist/icons/Icon.js +1 -1
  551. package/dist/icons/InfoCircleIcon.js +1 -1
  552. package/dist/icons/InfoIcon.js +1 -1
  553. package/dist/icons/KeyIcon.js +1 -1
  554. package/dist/icons/LeftIcon.js +1 -1
  555. package/dist/icons/LineChartIcon.js +1 -1
  556. package/dist/icons/LoadingIcon.js +1 -1
  557. package/dist/icons/LockFilledIcon.js +1 -1
  558. package/dist/icons/LockIcon.js +1 -1
  559. package/dist/icons/MoreIcon.js +1 -1
  560. package/dist/icons/NotAllowedIcon.js +1 -1
  561. package/dist/icons/Number123Icon.js +1 -1
  562. package/dist/icons/NumberIcon.js +1 -1
  563. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  564. package/dist/icons/PauseCircleIcon.js +1 -1
  565. package/dist/icons/PauseIcon.js +1 -1
  566. package/dist/icons/PercentageIcon.js +1 -1
  567. package/dist/icons/PieChartIcon.js +1 -1
  568. package/dist/icons/PipetteIcon.js +1 -1
  569. package/dist/icons/PlayCircleIcon.js +1 -1
  570. package/dist/icons/PlayIcon.js +1 -1
  571. package/dist/icons/PlusIcon.js +1 -1
  572. package/dist/icons/ProgressBarIcon.js +1 -1
  573. package/dist/icons/ReloadIcon.js +1 -1
  574. package/dist/icons/ReportIcon.js +1 -1
  575. package/dist/icons/ReturnIcon.js +1 -1
  576. package/dist/icons/RightIcon.js +1 -1
  577. package/dist/icons/RowTotalsIcon.js +1 -1
  578. package/dist/icons/SchemeIcon.js +1 -1
  579. package/dist/icons/SearchIcon.js +1 -1
  580. package/dist/icons/SemanticQueryIcon.js +1 -1
  581. package/dist/icons/SettingsIcon.js +1 -1
  582. package/dist/icons/ShieldFilledIcon.js +1 -1
  583. package/dist/icons/ShieldIcon.js +1 -1
  584. package/dist/icons/SlashIcon.js +1 -1
  585. package/dist/icons/SparklesIcon.js +1 -1
  586. package/dist/icons/SqlIcon.js +1 -1
  587. package/dist/icons/StatsIcon.js +1 -1
  588. package/dist/icons/StopIcon.js +1 -1
  589. package/dist/icons/StringIcon.js +1 -1
  590. package/dist/icons/SubtotalsIcon.js +1 -1
  591. package/dist/icons/SwitchIcon.js +1 -1
  592. package/dist/icons/TableIcon.js +1 -1
  593. package/dist/icons/ThumbsDownIcon.js +1 -1
  594. package/dist/icons/ThumbsUpIcon.js +1 -1
  595. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  596. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  597. package/dist/icons/ThunderboltIcon.js +1 -1
  598. package/dist/icons/TimeIcon.js +1 -1
  599. package/dist/icons/TrashIcon.js +1 -1
  600. package/dist/icons/UnlockIcon.js +1 -1
  601. package/dist/icons/UpIcon.js +1 -1
  602. package/dist/icons/UserGroupIcon.js +1 -1
  603. package/dist/icons/UserIcon.js +1 -1
  604. package/dist/icons/UserLockIcon.js +1 -1
  605. package/dist/icons/ViewIcon.js +1 -1
  606. package/dist/icons/WarningFilledIcon.js +1 -1
  607. package/dist/icons/WarningIcon.js +1 -1
  608. package/dist/icons/wrap-icon.js +1 -1
  609. package/dist/index.d.ts +5 -4
  610. package/dist/index.js +4 -4
  611. package/dist/index.js.map +1 -1
  612. package/dist/probe/canonicalize.js +1 -1
  613. package/dist/probe/css.js +1 -1
  614. package/dist/probe/index.js +1 -1
  615. package/dist/provider.d.ts +5 -0
  616. package/dist/provider.js +19 -7
  617. package/dist/provider.js.map +1 -1
  618. package/dist/providers/TrackingProvider.js +1 -1
  619. package/dist/providers/navigation-url.js +1 -1
  620. package/dist/providers/navigationAdapter.default.js +1 -1
  621. package/dist/providers/use-navigation.js +1 -1
  622. package/dist/shared/form.d.ts +3 -1
  623. package/dist/tokens/all-tokens.js +1 -1
  624. package/dist/tokens/base.js +1 -1
  625. package/dist/tokens/color-seed.js +1 -1
  626. package/dist/tokens/color-theme.js +1 -1
  627. package/dist/tokens/colors.js +1 -1
  628. package/dist/tokens/layout.js +1 -1
  629. package/dist/tokens/lazy-styles.js +1 -1
  630. package/dist/tokens/legacy-color.js +1 -1
  631. package/dist/tokens/palette-config.js +1 -1
  632. package/dist/tokens/palette.js +1 -1
  633. package/dist/tokens/resolve.js +1 -1
  634. package/dist/tokens/shadows.js +1 -1
  635. package/dist/tokens/sizes.js +1 -1
  636. package/dist/tokens/spacing.js +1 -1
  637. package/dist/tokens/typography.js +1 -1
  638. package/dist/utils/ResizeSensor.js +1 -1
  639. package/dist/utils/colors.js +1 -1
  640. package/dist/utils/dotize.js +1 -1
  641. package/dist/utils/is-dev-env.js +1 -1
  642. package/dist/utils/modules.js +1 -1
  643. package/dist/utils/promise.js +1 -1
  644. package/dist/utils/raf.js +1 -1
  645. package/dist/utils/random.js +1 -1
  646. package/dist/utils/range.js +1 -1
  647. package/dist/utils/react/RenderCache.js +1 -1
  648. package/dist/utils/react/Slots.js +1 -1
  649. package/dist/utils/react/chain.js +1 -1
  650. package/dist/utils/react/disabledProps.js +29 -2
  651. package/dist/utils/react/disabledProps.js.map +1 -1
  652. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  653. package/dist/utils/react/index.js +1 -1
  654. package/dist/utils/react/interactions.js +1 -1
  655. package/dist/utils/react/isTextOnly.js +1 -1
  656. package/dist/utils/react/mapProps.js +1 -1
  657. package/dist/utils/react/mergeProps.js +1 -1
  658. package/dist/utils/react/nullableValue.js +1 -1
  659. package/dist/utils/react/overlayKeyPropagation.js +44 -7
  660. package/dist/utils/react/overlayKeyPropagation.js.map +1 -1
  661. package/dist/utils/react/programmaticFocus.js +1 -1
  662. package/dist/utils/react/resolveIcon.js +1 -1
  663. package/dist/utils/react/sharedStore.js +1 -1
  664. package/dist/utils/react/useBufferedValue.js +1 -1
  665. package/dist/utils/react/useCombinedRefs.js +1 -1
  666. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  667. package/dist/utils/react/useEventBus.js +1 -1
  668. package/dist/utils/react/useId.js +1 -1
  669. package/dist/utils/react/useIsDarwin.js +1 -1
  670. package/dist/utils/react/useKeySymbols.js +1 -1
  671. package/dist/utils/react/useLayoutEffect.js +1 -1
  672. package/dist/utils/react/useLocalStorage.js +1 -1
  673. package/dist/utils/react/useMergeStyles.js +1 -1
  674. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  675. package/dist/utils/react/usePopoverSync.js +1 -1
  676. package/dist/utils/react/useQaProps.js +1 -1
  677. package/dist/utils/react/useScheme.js +1 -1
  678. package/dist/utils/react/useViewportSize.js +1 -1
  679. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  680. package/dist/utils/selection.js +1 -1
  681. package/dist/utils/styles.js +1 -1
  682. package/dist/utils/tree.js +1 -1
  683. package/dist/utils/warnings.js +1 -1
  684. package/dist/version.js +2 -2
  685. package/docs/CreateComponent.md +1 -1
  686. package/docs/FieldProperties.md +29 -7
  687. package/docs/Usage.md +3 -0
  688. package/docs/components/content/Divider.md +103 -21
  689. package/docs/components/content/Tree.md +5 -4
  690. package/docs/components/data/ItemTable.md +25 -0
  691. package/docs/components/fields/Checkbox.md +7 -8
  692. package/docs/components/fields/ColorInput.md +11 -13
  693. package/docs/components/fields/ColorPicker.md +2 -2
  694. package/docs/components/fields/ColorSwatchGroup.md +2 -3
  695. package/docs/components/fields/ComboBox.md +9 -7
  696. package/docs/components/fields/CommandTextArea.md +4 -5
  697. package/docs/components/fields/DatePicker.md +1 -4
  698. package/docs/components/fields/FileInput.md +1 -5
  699. package/docs/components/fields/FilterListBox.md +0 -3
  700. package/docs/components/fields/FilterPicker.md +68 -5
  701. package/docs/components/fields/HueSlider.md +1 -3
  702. package/docs/components/fields/ListBox.md +0 -3
  703. package/docs/components/fields/NumberInput.md +9 -6
  704. package/docs/components/fields/PasswordInput.md +9 -8
  705. package/docs/components/fields/PeriodPicker.md +0 -4
  706. package/docs/components/fields/Picker.md +2 -4
  707. package/docs/components/fields/RadioGroup.md +4 -5
  708. package/docs/components/fields/SearchComboBox.md +2 -4
  709. package/docs/components/fields/SearchInput.md +16 -4
  710. package/docs/components/fields/Select.md +0 -3
  711. package/docs/components/fields/Slider.md +0 -2
  712. package/docs/components/fields/Switch.md +16 -3
  713. package/docs/components/fields/TagInput.md +3 -6
  714. package/docs/components/fields/TextArea.md +10 -8
  715. package/docs/components/fields/TextInput.md +52 -10
  716. package/docs/components/navigation/Tabs.md +47 -0
  717. package/docs/components/overlays/Tooltip.md +1 -1
  718. package/package.json +4 -2
  719. package/dist/components/content/Divider.d.ts +0 -7
  720. package/dist/components/content/Divider.js +0 -105
  721. package/dist/components/content/Divider.js.map +0 -1
@@ -23,8 +23,10 @@ A password input is a specialized text field that masks user input to protect se
23
23
  - **`icon`** — Icon element rendered before the input
24
24
  - **`prefix`** — Input decoration before the main input
25
25
  - **`suffix`** — Input decoration after the main input (before toggle button)
26
+ - **`tooltip`** `string | TooltipProviderProps` — The input's own tooltip, opened on hover over the field box and on keyboard focus. A disabled input with a tooltip stays focusable, so the keyboard reaches it too. See [TextInput](./TextInput.md#with-a-tooltip) for the behaviour.
26
27
  - **`suffixPosition`** `'before' | 'after'` (default: `after`) — Position of suffix relative to validation/loading icons
27
28
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
29
+ - **`shape`** `'default' | 'plain'` (default: `default`) — Shape of the field box. `plain` is square with no border at rest, for a field set flush in a container that draws its edges, such as a toolbar or a panel header. Its border keeps its width and shows on focus and in a valid or invalid state, so nothing shifts
28
30
  - **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`current-password`, `new-password`, `off`, …). The lowercase `autocomplete` alias is deprecated.
29
31
  - **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced. The explicit `isDisabled`, `maxLength`, `minLength`, `autoFocus` and `autoComplete` props win over the same attributes in `inputProps` when they are set; one left unset keeps the `inputProps` value
30
32
  - **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
@@ -36,9 +38,11 @@ A password input is a specialized text field that masks user input to protect se
36
38
 
37
39
  #### Keyboard Events
38
40
 
39
- `onKeyDown` and `onKeyUp` are attached to the `<input>` by React Aria's `useTextField`. PasswordInput has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels only what the browser would do with the key, such as typing the character or submitting a surrounding form on `Enter`. The visibility toggle is a separate button and never sees the input's keys.
41
+ `onKeyDown` and `onKeyUp` are attached to the `<input>` by React Aria's `useTextField`. PasswordInput has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels what the browser would do with the key, such as typing the character or submitting a surrounding form on `Enter`. The visibility toggle is a separate button and never sees the input's keys.
40
42
 
41
- The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` the key stops at the input: React Aria stops its propagation after your handler. A parent's `onKeyDown` no longer sees it, and neither does a surrounding `Dialog`, so `Escape` stops closing it. Call `e.continuePropagation()` for the keys that should travel on:
43
+ The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` React Aria stops the key's propagation after your handler: a parent's `onKeyDown` no longer sees it. Call `e.continuePropagation()` for the keys that should travel on.
44
+
45
+ `Escape` and `Tab` are the exception, as in every field: they go on to ancestors, so a surrounding `Dialog` still closes on `Escape` and moves focus on `Tab`. When your handler acts on one, call `e.preventDefault()` and it stays at the input. To sign in on `Enter`:
42
46
 
43
47
  ```jsx
44
48
  <PasswordInput
@@ -47,14 +51,12 @@ The handler receives React Aria's keyboard event rather than a plain React one,
47
51
  if (e.key === 'Enter') {
48
52
  e.preventDefault(); // keep a surrounding form from submitting
49
53
  signIn();
50
- } else {
51
- e.continuePropagation(); // let Escape still close a Dialog
52
54
  }
53
55
  }}
54
56
  />
55
57
  ```
56
58
 
57
- The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler.
59
+ The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler. In all of them, a prevented `Escape` or `Tab` stays at the input.
58
60
 
59
61
  ### Base Properties
60
62
 
@@ -86,11 +88,8 @@ Customizes the password input field specifically.
86
88
 
87
89
  These properties allow direct style application without using the `styles` prop:
88
90
 
89
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
90
91
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
91
92
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
92
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
93
- - **Color:** `color`, `fill`, `fade`, `image`
94
93
 
95
94
  ### Modifiers
96
95
 
@@ -98,10 +97,12 @@ The `mods` property accepts the following modifiers you can override:
98
97
 
99
98
  - **`focused`** `boolean` — Whether the input has focus
100
99
  - **`disabled`** `boolean` — Whether the password input is disabled
100
+ - **`readonly`** `boolean` — Whether the password input is read-only: a recessed fill and a softer border, except in high contrast, and no hover state
101
101
  - **`invalid`** `boolean` — Whether the password input has validation errors
102
102
  - **`valid`** `boolean` — Whether the password input is valid
103
103
  - **`hovered`** `boolean` — Whether the password input is being hovered
104
104
  - **`inside-form`** `boolean` — Whether the password input is inside a form field
105
+ - **`shape`** `'default' | 'plain'` — Set from `shape`: `plain` drops the radius, and the border colour at rest.
105
106
 
106
107
  ## Variants
107
108
 
@@ -63,12 +63,8 @@ Supports all [Field properties](../../FieldProperties.md)
63
63
 
64
64
  These properties allow direct style application without using the `styles` prop:
65
65
 
66
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
67
66
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
68
67
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
69
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
70
- - **Color:** `color`, `fill`, `fade`, `image`
71
- - **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
72
68
 
73
69
  ## Examples
74
70
 
@@ -59,7 +59,8 @@ Choose a different component when the interaction has another shape:
59
59
  - **`listBoxStyles`** `Styles` — Custom styles for the ListBox within the popover
60
60
  - **`popoverStyles`** `Styles` — Custom styles for the popover container
61
61
  - **`triggerStyles`** `Styles` — Custom styles for the trigger button
62
- - **`triggerTooltip`** `string | TooltipProps` — Tooltip for the trigger button (separate from `labelTooltip`)
62
+ - **`tooltip`** `string | TooltipProps` — Tooltip for the trigger button (separate from `labelTooltip`)
63
+ - **`triggerTooltip`** `string | TooltipProps` — _(deprecated)_ Use `tooltip`.
63
64
  - **`triggerDescription`** `string` — Description for the trigger button (separate from field description)
64
65
  - **`shouldFlip`** `boolean` — Whether to flip the popover placement when it overflows
65
66
  - **`placement`** `Placement` (default: `bottom start`) — Placement of the popover relative to the anchor, as a React Aria placement string (e.g. `'bottom start'`, `'top end'`)
@@ -144,11 +145,8 @@ Customizes the footer area when `footer` prop is provided.
144
145
 
145
146
  These properties allow direct style application without using the `styles` prop:
146
147
 
147
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
148
148
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
149
149
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
150
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`
151
- - **Color:** `color`, `fill`, `fade`, `image`
152
150
 
153
151
  ### Modifiers
154
152
 
@@ -56,7 +56,7 @@ A `button`- or `tabs`-type radio renders an [Item](../content/Item.md), so it ta
56
56
  - **`description`**, **`descriptionPlacement`**, **`descriptionProps`** — Secondary line, placed `inline` (default) or `block`
57
57
  - **`tooltip`** — Tooltip content, or `true` to show one only when the label is truncated. A button radio defaults to `true`; its label truncates only when the radio gets less room than it (an explicit `width`, say), and never with a `block` description, which keeps the label at full width. A classic radio's label wraps instead of truncating, so it shows a tooltip only when given content. Either way a disabled option still shows its tooltip — a good place to say why it is unavailable. Tooltips open on hover and when the option takes keyboard focus, and describe its input to screen readers. A disabled option whose tooltip can open stays focusable for that reason: it is marked `aria-disabled` rather than natively disabled, so a plain `<form>` submits it when it is selected, and it stays unselectable (see [Keyboard Navigation](#keyboard-navigation)). The info badge next to the group's label is the group's `labelTooltip`
58
58
  - **`hotkeys`**, **`keyboardShortcutProps`** — Keyboard shortcut that selects the option, rendered as a hint
59
- - **`isLoading`**, **`loadingSlot`** — Replaces a slot with a spinner and disables the option
59
+ - **`isLoading`**, **`loadingSlot`** — Replaces a slot with a spinner and disables the option, unless the radio itself sets `isDisabled={false}`
60
60
  - **`highlight`**, **`highlightCaseSensitive`**, **`highlightStyles`** — Highlights a substring of the label
61
61
  - **`level`** — Heading level for the label when `buttonType` is `card` or `header`
62
62
  - **`labelRef`** — Ref to the label element
@@ -91,12 +91,8 @@ Customizes the radio group container specifically.
91
91
 
92
92
  These properties allow direct style application without using the `styles` prop:
93
93
 
94
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
95
94
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
96
95
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
97
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
98
- - **Color:** `color`, `fill`, `fade`, `image`
99
- - **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
100
96
 
101
97
  ### Modifiers
102
98
 
@@ -106,6 +102,9 @@ The `mods` property accepts the following modifiers you can override:
106
102
  - **`tabs`** `boolean` — Whether the radio group uses tabs styling
107
103
  - **`inside-form`** `boolean` — Whether the radio group is inside a form field
108
104
  - **`side-label`** `boolean` — Whether the label is positioned at the side
105
+ - **`fill-width`** `boolean` — Set when the group's style props size its field's width (`width`, `inlineSize`, `flex*`); the group then fills it
106
+
107
+ Each `Radio` carries **`readonly`** while its group is `isReadOnly`. A classic radio then shows a recessed circle with a dark dot instead of the brand color; a button or tabs radio keeps its look. Neither takes a hover state.
109
108
 
110
109
  ## Variants
111
110
 
@@ -46,7 +46,7 @@ Choose a different component when the interaction has another outcome:
46
46
  - **`onOpenChange`** `(isOpen: boolean) => void` — Fired when the popover opens or closes
47
47
  - **`onFocus`** `() => void` — Fired when focus enters the component
48
48
  - **`onBlur`** `() => void` — Fired when focus leaves the component
49
- - **`onKeyDown`** `(e: KeyboardEvent) => void` — Fired when a key is pressed on the input, before the component's own key handling. Call `e.preventDefault()` to skip that handling for the key: a prevented `Enter` selects nothing and does not call `onSubmit`, a prevented `ArrowDown` does not open the popover. The event is React Aria's keyboard event, whose propagation stops at the input unless the handler calls `e.continuePropagation()`
49
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Fired when a key is pressed on the input, before the component's own key handling. Call `e.preventDefault()` to skip that handling for the key: a prevented `Enter` selects nothing and does not call `onSubmit`, a prevented `ArrowDown` does not open the popover. The event is React Aria's keyboard event. `Escape` and `Tab` go on to ancestors, so a surrounding `Dialog` still closes on `Escape` and moves focus on `Tab`, unless SearchComboBox acts on them or the handler prevents them. It acts on `Escape` while the list is open or the input has text: it closes the list, or clears the text, or, when `isClearable` is off, keeps the browser from clearing it, so the `Escape` that closes the dialog is the one pressed with the input empty. Other keys stop at the input unless the handler calls `e.continuePropagation()`
50
50
  - **`prefix`** `ReactNode` — Content rendered before the input
51
51
  - **`suffix`** `ReactNode` — Content rendered after the input
52
52
  - **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to status icons
@@ -115,11 +115,8 @@ Customizes section heading elements within grouped suggestions.
115
115
 
116
116
  These properties allow direct style application without using the `styles` prop:
117
117
 
118
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
119
118
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
120
119
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
121
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`
122
- - **Color:** `color`, `fill`, `fade`, `image`
123
120
 
124
121
  ### Modifiers
125
122
 
@@ -128,6 +125,7 @@ The `mods` property accepts the following modifiers you can override:
128
125
  - **`invalid`** `boolean` — Applied when validation state is invalid
129
126
  - **`valid`** `boolean` — Applied when validation state is valid
130
127
  - **`disabled`** `boolean` — Applied when the component is disabled
128
+ - **`readonly`** `boolean` — Applied when the component is read-only: a recessed fill and a softer border, except in high contrast
131
129
  - **`focused`** `boolean` — Applied when the input has focus
132
130
  - **`loading`** `boolean` — Applied when the loading indicator is visible
133
131
  - **`prefix`** `boolean` — Applied when prefix content is present
@@ -23,9 +23,11 @@ A search input provides a specialized text field for search functionality, featu
23
23
  - **`icon`** `ReactElement` — Icon element rendered before the input (default: search icon)
24
24
  - **`prefix`** `ReactNode` — Content rendered before the input
25
25
  - **`suffix`** — Input decoration after the main input (before clear button)
26
+ - **`tooltip`** `string | TooltipProviderProps` — The input's own tooltip, opened on hover over the field box and on keyboard focus. A disabled input with a tooltip stays focusable, so the keyboard reaches it too. See [TextInput](./TextInput.md#with-a-tooltip) for the behaviour. While it is open, the first `Escape` closes it and leaves the text; the next one clears it
26
27
  - **`suffixPosition`** `'before' | 'after'` (default: `after`) — Position of suffix relative to validation/loading state icons
27
28
  - **`isClearable`** `boolean` (default: `false`) — Whether the search input shows a clear button while it has text. `Escape` clears the input either way
28
29
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
30
+ - **`shape`** `'default' | 'plain'` (default: `default`) — Shape of the field box. `plain` is square with no border at rest, for a field set flush in a container that draws its edges, such as a toolbar or a panel header. Its border keeps its width and shows on focus and in a valid or invalid state, so nothing shifts
29
31
  - **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`off` to suppress autofill on a filter field). The lowercase `autocomplete` alias is deprecated.
30
32
  - **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced
31
33
  - **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
@@ -66,11 +68,8 @@ Customizes the search input field specifically.
66
68
 
67
69
  These properties allow direct style application without using the `styles` prop:
68
70
 
69
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
70
71
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
71
72
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
72
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
73
- - **Color:** `color`, `fill`, `fade`, `image`
74
73
 
75
74
  ### Modifiers
76
75
 
@@ -78,10 +77,12 @@ The `mods` property accepts the following modifiers you can override:
78
77
 
79
78
  - **`focused`** `boolean` — Whether the input has focus
80
79
  - **`disabled`** `boolean` — Whether the search input is disabled
80
+ - **`readonly`** `boolean` — Whether the search input is read-only: a recessed fill and a softer border, except in high contrast, and no hover state
81
81
  - **`invalid`** `boolean` — Whether the search input has validation errors
82
82
  - **`valid`** `boolean` — Whether the search input is valid
83
83
  - **`hovered`** `boolean` — Whether the search input is being hovered
84
84
  - **`inside-form`** `boolean` — Whether the search input is inside a form field
85
+ - **`shape`** `'default' | 'plain'` — Set from `shape`: `plain` drops the radius, and the border colour at rest.
85
86
 
86
87
  ## Variants
87
88
 
@@ -91,6 +92,17 @@ The `mods` property accepts the following modifiers you can override:
91
92
  - `medium` - Standard size
92
93
  - `large` - Emphasized size for prominent search functionality
93
94
 
95
+ ### Shapes
96
+
97
+ - `default` - A rounded field box with a border
98
+ - `plain` - A square field box with no border at rest, for a field set flush in a container that draws its edges, such as a toolbar or a panel header. The border still marks focus and validity.
99
+
100
+ ```jsx
101
+ <Block styles={{ border: 'bottom', fill: '#surface' }}>
102
+ <SearchInput shape="plain" width="100%" aria-label="Search models" placeholder="Search models" />
103
+ </Block>
104
+ ```
105
+
94
106
  ## Examples
95
107
 
96
108
  ### Basic Usage
@@ -181,7 +193,7 @@ const [searchValue, setSearchValue] = useState('');
181
193
  ### Keyboard Navigation
182
194
 
183
195
  - `Tab` - Moves focus to the search input. The clear button is skipped: it is not in the `Tab` order
184
- - `Escape` - Clears the search input and calls `onClear`, whether or not `isClearable` is set, as in a native search field. With the input already empty, `Escape` is left to the surrounding UI, so a `Dialog` closes on the next press
196
+ - `Escape` - Clears the search input and calls `onClear`, whether or not `isClearable` is set, as in a native search field. With the input already empty, `Escape` is left to the surrounding UI, so a `Dialog` closes on the next press. An `onKeyDown` that prevents it keeps it at the input, as in every field; one that doesn't leaves `Escape` and `Tab` going on to the surrounding UI
185
197
  - `Enter` - Submits search or triggers onSubmit callback
186
198
  - All standard text input keyboard shortcuts work for text entry
187
199
 
@@ -161,11 +161,8 @@ Customizes individual option items in the dropdown.
161
161
 
162
162
  These properties allow direct style application without using the `styles` prop:
163
163
 
164
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
165
164
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
166
165
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
167
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`
168
- - **Color:** `color`, `fill`, `fade`, `image`
169
166
 
170
167
  ### Modifiers
171
168
 
@@ -10,7 +10,6 @@ These properties allow direct style application without using the `styles` prop:
10
10
 
11
11
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
12
12
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
13
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`
14
13
 
15
14
  ## Examples
16
15
 
@@ -40,7 +39,6 @@ Pass `isValid` or `isInvalid` to tint the track fill and the thumb.
40
39
  - **`showValueLabel`** `boolean` — Whether the value label is displayed (defaults to `true` when `label` is present)
41
40
  - **`getValueLabel`** `(value: number) => string` — Custom function to format the value label
42
41
  - **`formatOptions`** `Intl.NumberFormatOptions` — Number format options for the value label display
43
- - **`inputWidth`** `string` — Width of the input area
44
42
  - **`trackStyles`** `Styles` — Custom styles for the track element
45
43
  - **`thumbStyles`** `Styles` — Custom styles for the thumb element
46
44
  - **`thumbTokens`** `Tokens` — Custom tokens for the thumb element (e.g., `#slider-thumb` for fill color)
@@ -20,6 +20,7 @@ A switch allows users to toggle between two states: on and off. It provides imme
20
20
  - **`isSelected`** `boolean` (default: `false`) — Whether the switch is selected (controlled)
21
21
  - **`defaultSelected`** `boolean` (default: `false`) — Whether the switch is selected by default (uncontrolled)
22
22
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Switch size
23
+ - **`tooltip`** `string | TooltipProviderProps` — Tooltip shown on hover over the switch and its inline label, including while disabled. A string, or `TooltipProvider` props such as `title` and `placement`. It also opens when the switch takes keyboard focus, and describes its input to screen readers. A disabled switch with a tooltip stays in the Tab order, marked `aria-disabled` rather than natively disabled, so the keyboard reaches the tooltip too, and a plain `<form>` submits it when it is on. The info badge next to a field label is `labelTooltip`
23
24
  - **`onChange`** — Callback fired when the switch value changes
24
25
  - **`onFocus`** — Callback fired when the switch receives focus
25
26
  - **`onBlur`** — Callback fired when the switch loses focus
@@ -58,7 +59,6 @@ These properties allow direct style application without using the `styles` prop:
58
59
 
59
60
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
60
61
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
61
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
62
62
 
63
63
  ### Modifiers
64
64
 
@@ -66,6 +66,7 @@ The `mods` property accepts the following modifiers you can override:
66
66
 
67
67
  - **`checked`** `boolean` — Whether the switch is in the "on" state
68
68
  - **`disabled`** `boolean` — Whether the switch is disabled
69
+ - **`readonly`** `boolean` — Whether the switch is read-only: a recessed track with a dark thumb instead of the brand fill, and no hover state
69
70
  - **`invalid`** `boolean` — Whether the switch has validation errors
70
71
  - **`valid`** `boolean` — Whether the switch is valid
71
72
  - **`focused`** `boolean` — Whether the switch has focus
@@ -109,6 +110,18 @@ Keep the label the same in both states. The switch announces its own on/off stat
109
110
 
110
111
  ### Disabled State
111
112
 
113
+ ### With a Tooltip
114
+
115
+ A disabled switch still shows its tooltip, which makes it a good place to say why it can't be changed. While it has a tooltip, it stays focusable and is marked `aria-disabled` instead of natively disabled, so keyboard users can read the reason too; `Space` and clicks still change nothing. Without a tooltip, a disabled switch is natively disabled and `Tab` skips it.
116
+
117
+ ```jsx
118
+ <Switch isDisabled tooltip="Add a schedule to turn this on">
119
+ Run on schedule
120
+ </Switch>
121
+ ```
122
+
123
+ Prefer `tooltip` to wrapping the switch in `TooltipProvider`: while disabled, a switch takes no trigger props from a wrapper, so that tooltip never opens.
124
+
112
125
  ### Loading State
113
126
 
114
127
  ### All States Overview
@@ -117,9 +130,9 @@ Keep the label the same in both states. The switch announces its own on/off stat
117
130
 
118
131
  ### Keyboard Navigation
119
132
 
120
- - `Tab` - Moves focus to the switch
133
+ - `Tab` - Moves focus to the switch. A disabled switch takes focus only while it has a `tooltip`, which then opens
121
134
  - `Space` - Toggles the switch state
122
- - `Enter` does not toggle the switch. Inside a form with a submit button, the browser submits the form instead.
135
+ - `Enter` does not toggle the switch. Inside a form with a submit button, the browser submits the form instead, unless the switch is disabled.
123
136
 
124
137
  ### Screen Reader Support
125
138
 
@@ -53,7 +53,7 @@ A multi-value field. The user types a value into a single-line input and commits
53
53
  - **`onOpenChange`** `(isOpen: boolean) => void` — Called when the suggestions popover opens or closes
54
54
  - **`onFocus`** `() => void` — Called when focus enters the component: the input, a chip or the popover
55
55
  - **`onBlur`** `() => void` — Called when focus leaves the component entirely, after the typed text is committed and before the press that moved focus is handled, so a Save click sees the new value
56
- - **`onKeyDown`** `(e: KeyboardEvent) => void` — Called when a key is pressed in the input, before the component handles it. Call `e.preventDefault()` to stop the built-in handling
56
+ - **`onKeyDown`** `(e: KeyboardEvent) => void` — Called when a key is pressed in the input, before the component handles it. Call `e.preventDefault()` to stop the built-in handling. `Escape` and `Tab` go on to ancestors, so a surrounding `Dialog` still closes on `Escape` and moves focus on `Tab`, unless TagInput acts on them or you prevent them
57
57
  - **`inputRef`**, **`wrapperRef`**, **`popoverRef`**, **`listBoxRef`** `RefObject` — Refs to the input, the bordered input box, the popover and its listbox. The forwarded `ref` points at the root, which holds the input and the chips
58
58
  - **`mods`** `Record<string, boolean>` — Modifiers for the bordered input box, see [Modifiers](#modifiers)
59
59
 
@@ -90,7 +90,7 @@ A standalone TagInput renders field chrome by default, so refused values show th
90
90
 
91
91
  #### styles
92
92
 
93
- Customizes the root element, a column holding the input box and the chips.
93
+ Styles the input element, a column holding the input box and the chips. Its style props place and size the field: see [Field properties](../../FieldProperties.md).
94
94
 
95
95
  #### wrapperStyles
96
96
 
@@ -144,12 +144,8 @@ Customizes option section headings.
144
144
 
145
145
  These properties allow direct style application without using the `styles` prop:
146
146
 
147
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
148
147
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
149
148
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
150
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
151
- - **Color:** `color`, `fill`, `fade`, `image`
152
- - **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
153
149
 
154
150
  ### Modifiers
155
151
 
@@ -157,6 +153,7 @@ The `mods` prop accepts the following modifiers for the bordered input box:
157
153
 
158
154
  - **`focused`** `boolean` — Forces focus ring appearance.
159
155
  - **`disabled`** `boolean` — Forces disabled appearance.
156
+ - **`readonly`** `boolean` — Set while `isReadOnly`: a recessed fill and a softer border, except in high contrast.
160
157
  - **`invalid`** `boolean` — Forces invalid state styling.
161
158
  - **`valid`** `boolean` — Forces valid state styling.
162
159
  - **`prefix`** `boolean` — Indicates presence of prefix content.
@@ -18,11 +18,8 @@ The TextArea component is a multi-line text input that allows users to enter and
18
18
 
19
19
  These properties allow direct style application without using the `styles` prop:
20
20
 
21
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
22
21
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
23
22
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
24
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
25
- - **Color:** `color`, `fill`, `fade`, `image`
26
23
 
27
24
  ## Variants
28
25
 
@@ -44,9 +41,11 @@ These properties allow direct style application without using the `styles` prop:
44
41
  - **`icon`** `ReactElement` — Icon element rendered before the input
45
42
  - **`prefix`** `ReactNode` — Input decoration before the main input
46
43
  - **`suffix`** `ReactNode` — Input decoration after the main input
44
+ - **`tooltip`** `string | TooltipProviderProps` — The input's own tooltip, opened on hover over the field box and on keyboard focus. A disabled input with a tooltip stays focusable, so the keyboard reaches it too. See [TextInput](./TextInput.md#with-a-tooltip) for the behaviour.
47
45
  - **`suffixPosition`** `'before' | 'after'` (default: `'before'`) — Position of suffix relative to validation/loading state icons
48
46
  - **`resize`** `string` — CSS resize value (e.g. `'vertical'`, `'none'`)
49
47
  - **`size`** `'small' | 'medium' | 'large'` (default: `'medium'`) — Input size
48
+ - **`shape`** `'default' | 'plain'` (default: `default`) — Shape of the field box. `plain` is square with no border at rest, for a field set flush in a container that draws its edges, such as a toolbar or a panel header. Its border keeps its width and shows on focus and in a valid or invalid state, so nothing shifts
50
49
  - **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`street-address`, `off`, …). The lowercase `autocomplete` alias is deprecated.
51
50
  - **`maxLength`** `number` — Maximum number of characters allowed
52
51
  - **`minLength`** `number` — Minimum number of characters required
@@ -65,9 +64,11 @@ These properties allow direct style application without using the `styles` prop:
65
64
 
66
65
  ### Keyboard Events
67
66
 
68
- `onKeyDown` and `onKeyUp` are attached to the `<textarea>` by React Aria's `useTextField`. TextArea has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels only what the browser would do with the key, such as inserting a newline on `Enter`.
67
+ `onKeyDown` and `onKeyUp` are attached to the `<textarea>` by React Aria's `useTextField`. TextArea has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels what the browser would do with the key, such as inserting a newline on `Enter`.
69
68
 
70
- The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` the key stops at the textarea: React Aria stops its propagation after your handler. A parent's `onKeyDown` no longer sees it, and neither does a surrounding `Dialog`, so `Escape` stops closing it. Call `e.continuePropagation()` for the keys that should travel on:
69
+ The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` React Aria stops the key's propagation after your handler: a parent's `onKeyDown` no longer sees it. Call `e.continuePropagation()` for the keys that should travel on.
70
+
71
+ `Escape` and `Tab` are the exception, as in every field: they go on to ancestors, so a surrounding `Dialog` still closes on `Escape` and moves focus on `Tab`. When your handler acts on one, call `e.preventDefault()` and it stays at the textarea:
71
72
 
72
73
  ```jsx
73
74
  <TextArea
@@ -76,14 +77,15 @@ The handler receives React Aria's keyboard event rather than a plain React one,
76
77
  if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {
77
78
  e.preventDefault(); // no newline
78
79
  send();
79
- } else {
80
- e.continuePropagation(); // let Escape still close a Dialog
80
+ } else if (e.key === 'Escape' && isEditing) {
81
+ e.preventDefault(); // keep a surrounding Dialog open
82
+ cancelEdit();
81
83
  }
82
84
  }}
83
85
  />
84
86
  ```
85
87
 
86
- The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler.
88
+ The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler. In all of them, a prevented `Escape` or `Tab` stays at the input.
87
89
 
88
90
  ### Base Properties
89
91
 
@@ -24,11 +24,13 @@ A text input component that allows users to input custom text entries with a key
24
24
  - **`prefix`** — Input decoration before the main input
25
25
  - **`suffix`** — Input decoration after the main input
26
26
  - **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to validation/loading state icons
27
+ - **`tooltip`** `string | TooltipProviderProps` — The input's own tooltip, a short hint about the value. It opens on hover over the field box and on keyboard focus, and describes the input. A string, or `TooltipProvider` props such as `title` and `placement` (`top` by default). A disabled input with a tooltip stays in the Tab order, marked `aria-disabled` and read-only rather than natively disabled, so the keyboard reaches the tooltip too. The info badge next to a field label is `labelTooltip`. See [With a Tooltip](#with-a-tooltip)
27
28
  - **`type`** `'text' | 'password' | 'email' | 'url' | 'tel' | 'search'` (default: `text`) — Input type
28
29
  - **`multiLine`** `boolean` (default: `false`) — Whether the input is multiline (textarea)
29
30
  - **`rows`** `number` — Number of visible rows for multiline input
30
31
  - **`resize`** `string` — CSS resize value for multiline input (e.g. `'vertical'`, `'none'`)
31
32
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
33
+ - **`shape`** `'default' | 'plain'` (default: `default`) — Shape of the field box. `plain` is square with no border at rest, for a field set flush in a container that draws its edges, such as a toolbar or a panel header. Its border keeps its width and shows on focus and in a valid or invalid state, so nothing shifts
32
34
  - **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`email`, `username`, `off`, …). The lowercase `autocomplete` alias is deprecated.
33
35
  - **`maxLength`** `number` — Maximum number of characters allowed
34
36
  - **`minLength`** `number` — Minimum number of characters required
@@ -45,9 +47,11 @@ A text input component that allows users to input custom text entries with a key
45
47
 
46
48
  #### Keyboard Events
47
49
 
48
- `onKeyDown` and `onKeyUp` are attached to the `<input>` by React Aria's `useTextField`. TextInput has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels only what the browser would do with the key, such as typing the character or submitting a surrounding form on `Enter`.
50
+ `onKeyDown` and `onKeyUp` are attached to the `<input>` by React Aria's `useTextField`. TextInput has no key handling of its own, so the handler simply receives the event: `e.preventDefault()` cancels what the browser would do with the key, such as typing the character or submitting a surrounding form on `Enter`.
49
51
 
50
- The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` the key stops at the input: React Aria stops its propagation after your handler. A parent's `onKeyDown` no longer sees it, and neither does a surrounding `Dialog`, so `Escape` stops closing it. Call `e.continuePropagation()` for the keys that should travel on:
52
+ The handler receives React Aria's keyboard event rather than a plain React one, and once you pass `onKeyDown` React Aria stops the key's propagation after your handler: a parent's `onKeyDown` no longer sees it. Call `e.continuePropagation()` for the keys that should travel on.
53
+
54
+ `Escape` and `Tab` are the exception, as in every field: they go on to ancestors, so a surrounding `Dialog` still closes on `Escape` and moves focus on `Tab`. When your handler acts on one, call `e.preventDefault()` and it stays at the input:
51
55
 
52
56
  ```jsx
53
57
  <TextInput
@@ -56,14 +60,15 @@ The handler receives React Aria's keyboard event rather than a plain React one,
56
60
  if (e.key === 'Enter') {
57
61
  e.preventDefault(); // keep a surrounding form from submitting
58
62
  commit();
59
- } else {
60
- e.continuePropagation(); // let Escape still close a Dialog
63
+ } else if (e.key === 'Escape') {
64
+ e.preventDefault(); // keep a surrounding Dialog open
65
+ revert();
61
66
  }
62
67
  }}
63
68
  />
64
69
  ```
65
70
 
66
- The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler.
71
+ The fields that do handle keys themselves (`ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`) run your `onKeyDown` first and skip their own handling for a key you prevent. `NumberInput` is the exception: React Aria runs its stepping and `Enter` commit before your handler. In all of them, a prevented `Escape` or `Tab` stays at the input.
67
72
 
68
73
  ### Base Properties
69
74
 
@@ -77,7 +82,7 @@ Supports all [Field properties](../../FieldProperties.md)
77
82
 
78
83
  #### styles
79
84
 
80
- Customizes the root element of the component.
85
+ Styles the input element. Its style props place and size the field: see [Field properties](../../FieldProperties.md).
81
86
 
82
87
  **Sub-elements:**
83
88
 
@@ -100,11 +105,8 @@ Additional HTML props passed to the input wrapper container.
100
105
 
101
106
  These properties allow direct style application without using the `styles` prop:
102
107
 
103
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
104
108
  - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
105
109
  - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
106
- - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
107
- - **Color:** `color`, `fill`, `fade`, `image`
108
110
 
109
111
  ### Modifiers
110
112
 
@@ -113,12 +115,14 @@ The `mods` prop accepts the following modifiers you can override:
113
115
  - **`focused`** `boolean` — Forces focus ring appearance.
114
116
  - **`hovered`** `boolean` — Forces hover appearance.
115
117
  - **`disabled`** `boolean` — Forces disabled appearance.
118
+ - **`readonly`** `boolean` — Set while `isReadOnly`: a recessed fill and a softer border, except in high contrast, and no hover state.
116
119
  - **`invalid`** `boolean` — Forces invalid state styling.
117
120
  - **`valid`** `boolean` — Forces valid state styling.
118
121
  - **`loadable`** `boolean` — Set when a `loadingIndicator` is given. The loading icon itself follows `isLoading`, which has no modifier.
119
122
  - **`multiline`** `boolean` — Set for a multiline input.
120
123
  - **`prefix`** `boolean` — Indicates presence of prefix content.
121
124
  - **`suffix`** `boolean` — Indicates presence of suffix content.
125
+ - **`shape`** `'default' | 'plain'` — Set from `shape`: `plain` drops the radius, and the border colour at rest.
122
126
 
123
127
  ## Variants
124
128
 
@@ -137,6 +141,17 @@ The `mods` prop accepts the following modifiers you can override:
137
141
  - `medium` – Standard height for most use cases
138
142
  - `large` – Emphasized height for important inputs
139
143
 
144
+ ### Shapes
145
+
146
+ - `default` – A rounded field box with a border
147
+ - `plain` – A square field box with no border at rest, for a field set flush in a container that draws its edges, such as a toolbar or a panel header. The border still marks focus and validity. See `SearchInput`'s Plain story.
148
+
149
+ ```jsx
150
+ <Block styles={{ border: 'bottom' }}>
151
+ <TextInput shape="plain" width="100%" aria-label="Title" placeholder="Untitled" />
152
+ </Block>
153
+ ```
154
+
140
155
  ## Examples
141
156
 
142
157
  ### Basic Usage
@@ -162,6 +177,33 @@ import { IconMail } from '@tabler/icons-react';
162
177
  />
163
178
  ```
164
179
 
180
+ ### With a Tooltip
181
+
182
+ `tooltip` gives an input without a visible label a short hint, such as what an empty value means or why the field is disabled. It is anchored to the field box, prefix and suffix included, so it never covers the text being typed.
183
+
184
+ ```jsx
185
+ <TextInput aria-label="Axis minimum" placeholder="Auto" tooltip="Empty is the lowest value in the data" />
186
+ ```
187
+
188
+ | When | What happens |
189
+ | --- | --- |
190
+ | The pointer hovers the field box | Opens after the tooltip delay |
191
+ | `Tab` moves focus to the input | Opens at once |
192
+ | A click or tap into the input | Doesn't open, and an open one closes: the user is about to type |
193
+ | Any key on the input | Closes until the next hover or keyboard focus |
194
+ | `Escape` while it is open | Closes the tooltip only. The key goes no further, so it doesn't clear a `SearchInput` or close a surrounding dialog |
195
+ | The input loses focus, or the pointer leaves | Closes |
196
+
197
+ A disabled field still shows its tooltip, which makes it the place to say why it can't be changed. While it has a tooltip it stays focusable, marked `aria-disabled` and read-only instead of natively disabled, so keyboard users can read the reason too. It takes no text, `NumberInput` doesn't step, `Enter` submits nothing, and a click on it or on its label doesn't focus it, as with a natively disabled field. Screen readers announce it as disabled and read-only. Not being natively disabled, its value is part of a plain `<form>`'s submitted data, except `NumberInput`'s, which submits through a hidden input that is disabled with the field. A ui-kit `Form` that handles its own submission is not affected. Without a tooltip, a disabled input is natively disabled and `Tab` skips it.
198
+
199
+ ```jsx
200
+ <NumberInput isDisabled aria-label="Font size" tooltip="Turn data labels on to change this" />
201
+ ```
202
+
203
+ Keep the tooltip a hint. It is never the field's name (give the input a `label` or `aria-label`), an error (`errorMessage`) or anything the user needs to fill the field in (`description`): touch users never see it. When keyboard users must learn why a field can't be edited and a tooltip is not enough, show it as a `description`, or use `isReadOnly`. Prefer `tooltip` to wrapping the input in `TooltipProvider`: a disabled input takes no trigger props from a wrapper, so that tooltip never opens.
204
+
205
+ To switch the tooltip off and on while the input can have focus, keep `tooltip` set with a non-empty `title` and toggle its `isDisabled` (`tooltip={{ title, isDisabled: !isEmpty }}`). Setting and clearing `tooltip`, or emptying its `title`, remounts the field box, and the input loses focus mid-typing.
206
+
165
207
  ### Multiline Text Area
166
208
 
167
209
  ```jsx
@@ -188,7 +230,7 @@ import { IconMail } from '@tabler/icons-react';
188
230
 
189
231
  ### Keyboard Navigation
190
232
 
191
- - `Tab` – Moves focus to the input field
233
+ - `Tab` – Moves focus to the input field. A disabled field takes focus only while it has a `tooltip`, which then opens
192
234
  - `Shift + Tab` – Moves focus away from the input
193
235
  - Standard text editing shortcuts (Ctrl+A, Ctrl+C, etc.)
194
236
 
@@ -105,6 +105,53 @@ For individual tabs:
105
105
  - **`draggable`** `boolean` — True when tab can be dragged (reorderable)
106
106
  - **`dragging`** `boolean` — True when tab is being dragged
107
107
 
108
+ ### Theming
109
+
110
+ Tabs has no theming props. To dress the tabs in your own colors and font, re-declare the tokens they read through `tabListStyles`, `styles` or `tokens`:
111
+
112
+ - **Title** — `#surface-text-soft`. A disabled title keeps `#disabled-surface-text`.
113
+ - **Active title** of a `default` or `narrow` tab, and a hovered `narrow` title — `#primary-accent-text`
114
+ - **Selection indicator** — `#primary-accent-surface`: the line a `default` or `narrow` tab draws on the edge facing the panels, and the same edge of a selected `file` tab
115
+ - **Title font** — `$font-sans`, which the tab's typography preset takes its font family from
116
+
117
+ Tabs read these names directly, so overriding the legacy aliases they replaced (`#dark-02`, `#primary-text`, `#primary`) no longer reaches them.
118
+
119
+ Put the tokens in `tabListStyles` to keep them to the tabs. In `tokens` or `styles` on `Tabs` they are declared on its outer wrapper, so they reach everything inside that reads them, the panels included: there `#primary-accent-surface` also fills primary buttons and `$font-sans` sets the body text. Use them there for a `Tabs` without panels, or when the panels should take the theme too. A `font` in a tab's own `styles` wins over the preset for that tab alone. The same tokens also color the tab's focus and editing ring (`#primary-accent-text`), the drag-and-drop indicator and the spring-load hint (`#primary-accent-surface`), so an override recolors those too.
120
+
121
+ ```jsx
122
+ <Tabs
123
+ defaultActiveKey="overview"
124
+ tabListStyles={{
125
+ '#surface-text-soft': '#success-accent-text-soft',
126
+ '#primary-accent-text': '#success-accent-text',
127
+ '#primary-accent-surface': '#success-accent-surface',
128
+ '$font-sans': 'Georgia, serif',
129
+ }}
130
+ >
131
+ <Tab key="overview" title="Overview" />
132
+ <Tab key="activity" title="Activity" />
133
+ <Tab key="query" title="Query" styles={{ font: 'monospace' }} />
134
+ </Tabs>
135
+ ```
136
+
137
+ A navigation strip with no panels, themed with your own tokens:
138
+
139
+ ```jsx
140
+ <Tabs
141
+ activeKey={activeKey}
142
+ tokens={{
143
+ '#surface-text-soft': '#widget-text-secondary',
144
+ '#primary-accent-text': '#widget-title',
145
+ '#primary-accent-surface': '#widget-title',
146
+ '$font-sans': '$widget-title-font',
147
+ }}
148
+ onChange={setActiveKey}
149
+ >
150
+ <Tab key="sales" title="Sales" />
151
+ <Tab key="marketing" title="Marketing" />
152
+ </Tabs>
153
+ ```
154
+
108
155
  ## Variants
109
156
 
110
157
  ### Types