@cube-dev/ui-kit 0.0.0-canary-bada6bd → 0.0.0-canary-09a7efe

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 (602) hide show
  1. package/README.md +1 -1
  2. package/dist/README.md +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  28. package/dist/components/actions/ItemButton/ItemButton.js +3 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/actions-run.js +1 -1
  40. package/dist/components/actions/index.js +1 -1
  41. package/dist/components/actions/use-action.js +3 -5
  42. package/dist/components/actions/use-action.js.map +1 -1
  43. package/dist/components/actions/use-anchored-menu.js +1 -1
  44. package/dist/components/actions/use-context-menu.js +1 -1
  45. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  46. package/dist/components/content/Alert/Alert.js +1 -1
  47. package/dist/components/content/Alert/use-alert.js +1 -1
  48. package/dist/components/content/Avatar/Avatar.js +1 -1
  49. package/dist/components/content/Badge/Badge.js +1 -1
  50. package/dist/components/content/Card/Card.js +1 -1
  51. package/dist/components/content/Content.js +1 -1
  52. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  53. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  54. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  55. package/dist/components/content/Divider.js +1 -1
  56. package/dist/components/content/Footer.js +1 -1
  57. package/dist/components/content/Header.js +1 -1
  58. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  59. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  60. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  61. package/dist/components/content/Item/Item.js +3 -3
  62. package/dist/components/content/Item/Item.js.map +1 -1
  63. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  64. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  65. package/dist/components/content/Layout/GridLayout.js +1 -1
  66. package/dist/components/content/Layout/Layout.js +1 -1
  67. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  68. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  69. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  70. package/dist/components/content/Layout/LayoutContent.js +1 -1
  71. package/dist/components/content/Layout/LayoutContext.js +1 -1
  72. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  73. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  74. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  75. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutPane.js +1 -1
  77. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  78. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  79. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  80. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  81. package/dist/components/content/Layout/index.js +1 -1
  82. package/dist/components/content/Layout/utils.js +1 -1
  83. package/dist/components/content/Paragraph.js +1 -1
  84. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  85. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  86. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  87. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  88. package/dist/components/content/Result/Result.js +1 -1
  89. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  90. package/dist/components/content/Tag/Tag.js +1 -1
  91. package/dist/components/content/Text.d.ts +14 -14
  92. package/dist/components/content/Text.js +1 -1
  93. package/dist/components/content/TextItem/TextItem.js +1 -1
  94. package/dist/components/content/Title.js +1 -1
  95. package/dist/components/content/Tree/Tree.js +1 -1
  96. package/dist/components/content/Tree/TreeNode.js +1 -1
  97. package/dist/components/content/Tree/styled.js +1 -1
  98. package/dist/components/content/Tree/tree-index.js +1 -1
  99. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  100. package/dist/components/content/Tree/use-load-data.js +1 -1
  101. package/dist/components/content/highlightText.js +1 -1
  102. package/dist/components/content/use-auto-tooltip.js +3 -3
  103. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  104. package/dist/components/data/DataTable/DataTable.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  106. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  108. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  109. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  110. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  111. package/dist/components/data/TableBase/RowCollection.js +1 -1
  112. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  113. package/dist/components/data/TableBase/TableRow.js +1 -1
  114. package/dist/components/data/TableBase/TableView.js +1 -1
  115. package/dist/components/data/TableBase/column-menu.js +1 -1
  116. package/dist/components/data/TableBase/column-tint.js +1 -1
  117. package/dist/components/data/TableBase/row-menu.js +1 -1
  118. package/dist/components/data/TableBase/styled.js +1 -1
  119. package/dist/components/data/TableBase/table-tree.js +1 -1
  120. package/dist/components/data/TableBase/types.js +1 -1
  121. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  122. package/dist/components/data/TableBase/use-column-order.js +1 -1
  123. package/dist/components/data/TableBase/use-container-width.js +1 -1
  124. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  125. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  126. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  127. package/dist/components/data/TableBase/use-table-search.js +1 -1
  128. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  129. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  130. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  131. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  132. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  133. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  134. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  135. package/dist/components/fields/Checkbox/context.js +1 -1
  136. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  137. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  138. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  139. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  140. package/dist/components/fields/ComboBox/ComboBox.js +90 -43
  141. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  142. package/dist/components/fields/CommandTextArea/CommandTextArea.js +3 -2
  143. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  144. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  145. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  146. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  147. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  148. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  149. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  150. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  151. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  152. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  153. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  154. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  157. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  158. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  159. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  160. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  161. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  162. package/dist/components/fields/DatePicker/period.js +1 -1
  163. package/dist/components/fields/DatePicker/props.js +1 -1
  164. package/dist/components/fields/DatePicker/utils.js +1 -1
  165. package/dist/components/fields/FileInput/FileInput.js +1 -1
  166. package/dist/components/fields/FilterListBox/FilterListBox.js +28 -18
  167. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  168. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  169. package/dist/components/fields/Input/Input.js +1 -1
  170. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  171. package/dist/components/fields/ListBox/ListBox.d.ts +2 -2
  172. package/dist/components/fields/ListBox/ListBox.js +1 -2
  173. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  174. package/dist/components/fields/ListBox/optionId.js +16 -0
  175. package/dist/components/fields/ListBox/optionId.js.map +1 -0
  176. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +120 -110
  177. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  178. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  179. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +44 -22
  180. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  181. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  182. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  183. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  184. package/dist/components/fields/Picker/Picker.js +1 -1
  185. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  186. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  187. package/dist/components/fields/RadioGroup/context.js +1 -1
  188. package/dist/components/fields/SearchComboBox/SearchComboBox.js +3 -2
  189. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  190. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  191. package/dist/components/fields/Select/Select.js +1 -1
  192. package/dist/components/fields/Slider/Gradation.js +1 -1
  193. package/dist/components/fields/Slider/HueSlider.js +1 -1
  194. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  195. package/dist/components/fields/Slider/Slider.js +1 -1
  196. package/dist/components/fields/Slider/SliderBase.js +1 -1
  197. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  198. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  199. package/dist/components/fields/Slider/elements.js +1 -1
  200. package/dist/components/fields/Slider/index.js +1 -1
  201. package/dist/components/fields/Switch/Switch.js +1 -1
  202. package/dist/components/fields/TagInput/TagInput.d.ts +182 -0
  203. package/dist/components/fields/TagInput/TagInput.js +1856 -0
  204. package/dist/components/fields/TagInput/TagInput.js.map +1 -0
  205. package/dist/components/fields/TagInput/TagList.js +355 -0
  206. package/dist/components/fields/TagInput/TagList.js.map +1 -0
  207. package/dist/components/fields/TagInput/index.d.ts +2 -0
  208. package/dist/components/fields/TextArea/TextArea.js +1 -1
  209. package/dist/components/fields/TextInput/TextInput.js +1 -1
  210. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -0
  211. package/dist/components/fields/TextInput/TextInputBase.js +8 -6
  212. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  213. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  214. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  215. package/dist/components/fields/TriggerActions.js +1 -1
  216. package/dist/components/fields/color/ColorPanel.js +1 -1
  217. package/dist/components/fields/color/channels.js +1 -1
  218. package/dist/components/fields/color/color.js +1 -1
  219. package/dist/components/fields/color/context.js +1 -1
  220. package/dist/components/fields/index.d.ts +2 -0
  221. package/dist/components/form/FieldWrapper/FieldWrapper.js +13 -2
  222. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  223. package/dist/components/form/Form/Field.js +1 -1
  224. package/dist/components/form/Form/Form.js +1 -1
  225. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  226. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  227. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  228. package/dist/components/form/Form/SubmitError.js +1 -1
  229. package/dist/components/form/Form/backend.js +1 -1
  230. package/dist/components/form/Form/index.js +1 -1
  231. package/dist/components/form/Form/modern/actions.js +1 -1
  232. package/dist/components/form/Form/modern/context.js +1 -1
  233. package/dist/components/form/Form/modern/controller.js +1 -1
  234. package/dist/components/form/Form/modern/field-binding.js +1 -1
  235. package/dist/components/form/Form/modern/field.js +1 -1
  236. package/dist/components/form/Form/modern/react.js +1 -1
  237. package/dist/components/form/Form/modern/store.js +1 -1
  238. package/dist/components/form/Form/modern/validation.js +1 -1
  239. package/dist/components/form/Form/modern/values.js +1 -1
  240. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  241. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  242. package/dist/components/form/Form/use-field/use-field.js +1 -1
  243. package/dist/components/form/Form/use-form.js +1 -1
  244. package/dist/components/form/Form/validation.js +1 -1
  245. package/dist/components/form/Label.js +1 -1
  246. package/dist/components/form/legacy-tooltip.js +1 -1
  247. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  248. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  249. package/dist/components/form/validation/use-validation-props.js +1 -1
  250. package/dist/components/form/wrapper.js +1 -1
  251. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  252. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  253. package/dist/components/layout/Board/Board.js +1 -1
  254. package/dist/components/layout/Board/BoardProvider.js +1 -1
  255. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  256. package/dist/components/layout/Board/Widget.js +1 -1
  257. package/dist/components/layout/Board/WidgetHost.js +1 -1
  258. package/dist/components/layout/Board/board-context.js +1 -1
  259. package/dist/components/layout/Board/board-store.js +1 -1
  260. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  261. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  262. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  263. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  264. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  265. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  266. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  267. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  268. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  269. package/dist/components/layout/Board/index.js +1 -1
  270. package/dist/components/layout/Board/responsive-utils.js +1 -1
  271. package/dist/components/layout/Board/use-board-layout.js +1 -1
  272. package/dist/components/layout/Board/use-board-registry.js +1 -1
  273. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  274. package/dist/components/layout/Board/use-board-selection.js +1 -1
  275. package/dist/components/layout/Flex.js +1 -1
  276. package/dist/components/layout/Flow.js +1 -1
  277. package/dist/components/layout/Grid.js +1 -1
  278. package/dist/components/layout/Panel.js +1 -1
  279. package/dist/components/layout/Prefix.js +1 -1
  280. package/dist/components/layout/ResizablePanel.js +1 -1
  281. package/dist/components/layout/Space.js +1 -1
  282. package/dist/components/layout/Suffix.js +1 -1
  283. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  284. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  285. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  286. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  287. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  288. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  289. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  290. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  291. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  292. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  293. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  294. package/dist/components/navigation/Tabs/styled.js +1 -1
  295. package/dist/components/navigation/Tabs/types.js +1 -1
  296. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  297. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  298. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  299. package/dist/components/other/Calendar/Calendar.js +1 -1
  300. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  301. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  302. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  303. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  304. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  305. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  306. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  307. package/dist/components/other/Calendar/styled.js +1 -1
  308. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  309. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  310. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  311. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  312. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  313. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  314. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  315. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  316. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  317. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  318. package/dist/components/overlays/Dialog/context.js +1 -1
  319. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  320. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  321. package/dist/components/overlays/Modal/Modal.js +1 -1
  322. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  323. package/dist/components/overlays/Modal/Overlay.js +1 -1
  324. package/dist/components/overlays/Modal/Popover.js +1 -1
  325. package/dist/components/overlays/Modal/Tray.js +1 -1
  326. package/dist/components/overlays/Modal/Underlay.js +1 -1
  327. package/dist/components/overlays/Notifications/Notification.js +1 -1
  328. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  329. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  330. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  331. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  332. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  333. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  334. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  335. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  336. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  337. package/dist/components/overlays/Notifications/index.js +1 -1
  338. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  339. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  340. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  341. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  342. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  343. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  344. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  345. package/dist/components/overlays/Toast/index.js +1 -1
  346. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  347. package/dist/components/overlays/Toast/useToast.js +1 -1
  348. package/dist/components/overlays/Tooltip/Tooltip.js +14 -12
  349. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  350. package/dist/components/overlays/Tooltip/TooltipProvider.d.ts +6 -0
  351. package/dist/components/overlays/Tooltip/TooltipProvider.js +43 -38
  352. package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
  353. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  354. package/dist/components/overlays/Tooltip/context.js +1 -1
  355. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  356. package/dist/components/portal/Portal.js +1 -1
  357. package/dist/components/portal/PortalProvider.js +1 -1
  358. package/dist/components/portal/usePortal.js +1 -1
  359. package/dist/components/shared/DraggableCollection.js +1 -1
  360. package/dist/components/shared/InvalidIcon.js +1 -1
  361. package/dist/components/shared/ValidIcon.js +1 -1
  362. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  363. package/dist/components/status/Spin/Cube.js +1 -1
  364. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  365. package/dist/components/status/Spin/Spin.js +1 -1
  366. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  367. package/dist/data/item-themes.js +1 -1
  368. package/dist/data/themes.js +1 -1
  369. package/dist/eslint-plugin/defaults.generated.js +47 -1
  370. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  371. package/dist/eslint-plugin/index.js +1 -1
  372. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  373. package/dist/i18n/I18nProvider.js +1 -1
  374. package/dist/i18n/createFormatter.js +1 -1
  375. package/dist/i18n/index.js +1 -1
  376. package/dist/i18n/instance.js +1 -1
  377. package/dist/i18n/locales/de-DE/uikit.js +18 -1
  378. package/dist/i18n/locales/en-US/uikit.js +18 -1
  379. package/dist/i18n/locales/en-US/uikit.json.d.ts +22 -2
  380. package/dist/i18n/locales/es-ES/uikit.js +18 -1
  381. package/dist/i18n/locales/es-MX/uikit.js +18 -1
  382. package/dist/i18n/locales/fr-FR/uikit.js +18 -1
  383. package/dist/i18n/locales/it-IT/uikit.js +18 -1
  384. package/dist/i18n/locales/ja-JP/uikit.js +18 -1
  385. package/dist/i18n/locales/nb-NO/uikit.js +18 -1
  386. package/dist/i18n/locales/pt-BR/uikit.js +18 -1
  387. package/dist/i18n/locales/pt-PT/uikit.js +18 -1
  388. package/dist/i18n/locales/sv-SE/uikit.js +18 -1
  389. package/dist/i18n/locales/vi-VN/uikit.js +18 -1
  390. package/dist/i18n/locales.js +1 -1
  391. package/dist/i18n/useFormatter.js +1 -1
  392. package/dist/i18n/useI18n.js +1 -1
  393. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  394. package/dist/icons/AdjustmentsIcon.js +1 -1
  395. package/dist/icons/AiIcon.js +1 -1
  396. package/dist/icons/AreaChartIcon.js +1 -1
  397. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  398. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  399. package/dist/icons/BackwardIcon.js +1 -1
  400. package/dist/icons/BarChartIcon.js +1 -1
  401. package/dist/icons/BellFilledIcon.js +1 -1
  402. package/dist/icons/BellIcon.js +1 -1
  403. package/dist/icons/BooleanIcon.js +1 -1
  404. package/dist/icons/CalendarEditIcon.js +1 -1
  405. package/dist/icons/CalendarIcon.js +1 -1
  406. package/dist/icons/CaretDownIcon.js +1 -1
  407. package/dist/icons/CaretUpIcon.js +1 -1
  408. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  409. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  410. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  411. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  412. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  413. package/dist/icons/ChartBarLineIcon.js +1 -1
  414. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  415. package/dist/icons/ChartBarStackedIcon.js +1 -1
  416. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  417. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  418. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  419. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  420. package/dist/icons/ChartBubbleIcon.js +1 -1
  421. package/dist/icons/ChartDonut2Icon.js +1 -1
  422. package/dist/icons/ChartFunnelIcon.js +1 -1
  423. package/dist/icons/ChartHeatmapIcon.js +1 -1
  424. package/dist/icons/ChartKPIIcon.js +1 -1
  425. package/dist/icons/ChartPie2Icon.js +1 -1
  426. package/dist/icons/ChartScatterIcon.js +1 -1
  427. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  428. package/dist/icons/CheckCircleIcon.js +1 -1
  429. package/dist/icons/CheckIcon.js +1 -1
  430. package/dist/icons/CircleFilledIcon.js +1 -1
  431. package/dist/icons/ClearIcon.js +1 -1
  432. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  433. package/dist/icons/CloseCircleIcon.js +1 -1
  434. package/dist/icons/CloseIcon.js +1 -1
  435. package/dist/icons/CodeIcon.js +1 -1
  436. package/dist/icons/ColumnTotalIcon.js +1 -1
  437. package/dist/icons/CopyIcon.js +1 -1
  438. package/dist/icons/CountIcon.js +1 -1
  439. package/dist/icons/CubeIcon.js +1 -1
  440. package/dist/icons/CubePauseIcon.js +1 -1
  441. package/dist/icons/CubePlayIcon.js +1 -1
  442. package/dist/icons/CurrencyDollarIcon.js +1 -1
  443. package/dist/icons/DangerIcon.js +1 -1
  444. package/dist/icons/DashboardIcon.js +1 -1
  445. package/dist/icons/DatabaseIcon.js +1 -1
  446. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  447. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  448. package/dist/icons/DirectionIcon.js +1 -1
  449. package/dist/icons/DonutIcon.js +1 -1
  450. package/dist/icons/DownIcon.js +1 -1
  451. package/dist/icons/EditIcon.js +1 -1
  452. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  453. package/dist/icons/ExclamationCircleIcon.js +1 -1
  454. package/dist/icons/ExclamationIcon.js +1 -1
  455. package/dist/icons/EyeIcon.js +1 -1
  456. package/dist/icons/EyeInvisibleIcon.js +1 -1
  457. package/dist/icons/FilterIcon.js +1 -1
  458. package/dist/icons/FolderFilledIcon.js +1 -1
  459. package/dist/icons/FolderIcon.js +1 -1
  460. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  461. package/dist/icons/FolderOpenIcon.js +1 -1
  462. package/dist/icons/ForwardIcon.js +1 -1
  463. package/dist/icons/GripVerticalIcon.js +1 -1
  464. package/dist/icons/HierarchyIcon.js +1 -1
  465. package/dist/icons/HierarchyOpenIcon.js +1 -1
  466. package/dist/icons/Icon.js +1 -1
  467. package/dist/icons/InfoCircleIcon.js +1 -1
  468. package/dist/icons/InfoIcon.js +1 -1
  469. package/dist/icons/KeyIcon.js +1 -1
  470. package/dist/icons/LeftIcon.js +1 -1
  471. package/dist/icons/LineChartIcon.js +1 -1
  472. package/dist/icons/LoadingIcon.js +1 -1
  473. package/dist/icons/LockFilledIcon.js +1 -1
  474. package/dist/icons/LockIcon.js +1 -1
  475. package/dist/icons/MoreIcon.js +1 -1
  476. package/dist/icons/NotAllowedIcon.js +1 -1
  477. package/dist/icons/Number123Icon.js +1 -1
  478. package/dist/icons/NumberIcon.js +1 -1
  479. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  480. package/dist/icons/PauseCircleIcon.js +1 -1
  481. package/dist/icons/PauseIcon.js +1 -1
  482. package/dist/icons/PercentageIcon.js +1 -1
  483. package/dist/icons/PieChartIcon.js +1 -1
  484. package/dist/icons/PipetteIcon.js +1 -1
  485. package/dist/icons/PlayCircleIcon.js +1 -1
  486. package/dist/icons/PlayIcon.js +1 -1
  487. package/dist/icons/PlusIcon.js +1 -1
  488. package/dist/icons/ProgressBarIcon.js +1 -1
  489. package/dist/icons/ReloadIcon.js +1 -1
  490. package/dist/icons/ReportIcon.js +1 -1
  491. package/dist/icons/ReturnIcon.js +1 -1
  492. package/dist/icons/RightIcon.js +1 -1
  493. package/dist/icons/RowTotalsIcon.js +1 -1
  494. package/dist/icons/SchemeIcon.js +1 -1
  495. package/dist/icons/SearchIcon.js +1 -1
  496. package/dist/icons/SemanticQueryIcon.js +1 -1
  497. package/dist/icons/SettingsIcon.js +1 -1
  498. package/dist/icons/ShieldFilledIcon.js +1 -1
  499. package/dist/icons/ShieldIcon.js +1 -1
  500. package/dist/icons/SlashIcon.js +1 -1
  501. package/dist/icons/SparklesIcon.js +1 -1
  502. package/dist/icons/SqlIcon.js +1 -1
  503. package/dist/icons/StatsIcon.js +1 -1
  504. package/dist/icons/StopIcon.js +1 -1
  505. package/dist/icons/StringIcon.js +1 -1
  506. package/dist/icons/SubtotalsIcon.js +1 -1
  507. package/dist/icons/SwitchIcon.js +1 -1
  508. package/dist/icons/TableIcon.js +1 -1
  509. package/dist/icons/ThumbsDownIcon.js +1 -1
  510. package/dist/icons/ThumbsUpIcon.js +1 -1
  511. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  512. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  513. package/dist/icons/ThunderboltIcon.js +1 -1
  514. package/dist/icons/TimeIcon.js +1 -1
  515. package/dist/icons/TrashIcon.js +1 -1
  516. package/dist/icons/UnlockIcon.js +1 -1
  517. package/dist/icons/UpIcon.js +1 -1
  518. package/dist/icons/UserGroupIcon.js +1 -1
  519. package/dist/icons/UserIcon.js +1 -1
  520. package/dist/icons/UserLockIcon.js +1 -1
  521. package/dist/icons/ViewIcon.js +1 -1
  522. package/dist/icons/WarningFilledIcon.js +1 -1
  523. package/dist/icons/WarningIcon.js +1 -1
  524. package/dist/icons/wrap-icon.js +1 -1
  525. package/dist/index.d.ts +2 -1
  526. package/dist/index.js +3 -2
  527. package/dist/index.js.map +1 -1
  528. package/dist/probe/canonicalize.js +1 -1
  529. package/dist/probe/css.js +1 -1
  530. package/dist/probe/index.js +1 -1
  531. package/dist/provider.js +1 -1
  532. package/dist/providers/TrackingProvider.js +1 -1
  533. package/dist/providers/navigationAdapter.default.js +1 -1
  534. package/dist/tokens/all-tokens.js +1 -1
  535. package/dist/tokens/base.js +1 -1
  536. package/dist/tokens/color-seed.js +1 -1
  537. package/dist/tokens/color-theme.js +1 -1
  538. package/dist/tokens/colors.js +1 -1
  539. package/dist/tokens/layout.js +1 -1
  540. package/dist/tokens/lazy-styles.js +1 -1
  541. package/dist/tokens/legacy-color.js +1 -1
  542. package/dist/tokens/palette-config.js +1 -1
  543. package/dist/tokens/palette.js +1 -1
  544. package/dist/tokens/resolve.js +1 -1
  545. package/dist/tokens/shadows.js +1 -1
  546. package/dist/tokens/sizes.js +1 -1
  547. package/dist/tokens/spacing.js +1 -1
  548. package/dist/tokens/typography.d.ts +1 -0
  549. package/dist/tokens/typography.js +10 -1
  550. package/dist/tokens/typography.js.map +1 -1
  551. package/dist/utils/ResizeSensor.js +1 -1
  552. package/dist/utils/colors.js +1 -1
  553. package/dist/utils/dotize.js +1 -1
  554. package/dist/utils/is-dev-env.js +1 -1
  555. package/dist/utils/modules.js +1 -1
  556. package/dist/utils/promise.js +1 -1
  557. package/dist/utils/raf.js +1 -1
  558. package/dist/utils/random.js +1 -1
  559. package/dist/utils/range.js +1 -1
  560. package/dist/utils/react/RenderCache.js +1 -1
  561. package/dist/utils/react/Slots.js +1 -1
  562. package/dist/utils/react/chain.js +1 -1
  563. package/dist/utils/react/disabledProps.js +1 -1
  564. package/dist/utils/react/escapePropagation.js +1 -1
  565. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  566. package/dist/utils/react/index.js +1 -1
  567. package/dist/utils/react/interactions.js +1 -1
  568. package/dist/utils/react/isTextOnly.js +1 -1
  569. package/dist/utils/react/mapProps.js +1 -1
  570. package/dist/utils/react/mergeProps.js +1 -1
  571. package/dist/utils/react/nullableValue.js +1 -1
  572. package/dist/utils/react/programmaticFocus.js +1 -1
  573. package/dist/utils/react/resolveIcon.js +1 -1
  574. package/dist/utils/react/sharedStore.js +1 -1
  575. package/dist/utils/react/useBufferedValue.js +1 -1
  576. package/dist/utils/react/useCombinedRefs.js +1 -1
  577. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  578. package/dist/utils/react/useEventBus.js +1 -1
  579. package/dist/utils/react/useId.js +1 -1
  580. package/dist/utils/react/useIsDarwin.js +1 -1
  581. package/dist/utils/react/useKeySymbols.js +1 -1
  582. package/dist/utils/react/useLayoutEffect.js +1 -1
  583. package/dist/utils/react/useLocalStorage.js +1 -1
  584. package/dist/utils/react/useMergeStyles.js +1 -1
  585. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  586. package/dist/utils/react/usePopoverSync.js +1 -1
  587. package/dist/utils/react/useQaProps.js +1 -1
  588. package/dist/utils/react/useScheme.js +1 -1
  589. package/dist/utils/react/useViewportSize.js +1 -1
  590. package/dist/utils/react/wrapNodeIfPlain.js +3 -4
  591. package/dist/utils/react/wrapNodeIfPlain.js.map +1 -1
  592. package/dist/utils/selection.js +1 -1
  593. package/dist/utils/styles.js +1 -1
  594. package/dist/utils/tree.js +1 -1
  595. package/dist/utils/warnings.js +1 -1
  596. package/dist/version.js +2 -2
  597. package/docs/Usage.md +10 -9
  598. package/docs/components/actions/ItemButton.md +2 -2
  599. package/docs/components/fields/TagInput.md +429 -0
  600. package/docs/components/overlays/TooltipProvider.md +1 -0
  601. package/package.json +1 -1
  602. package/tasty.config.ts +2 -1
@@ -0,0 +1,429 @@
1
+ # TagInput
2
+
3
+ A multi-value field. The user types a value into a single-line input and commits it with Enter or a comma, and each value becomes a removable chip listed below the input. The same component covers free-form lists (email addresses, numbers, IAM principals) and picking several values from suggestions, with an optional custom value on top.
4
+
5
+ ## When to Use
6
+
7
+ - The value is a list of short strings the user types or pastes: recipients, domains, bin boundaries, tags
8
+ - The user picks several values from a long list and should see what is picked while searching for the next one
9
+ - A list of options where the user may also add a value that is not in it (`allowsCustomValue`)
10
+ - Not for a short, fixed list of options: use [FilterPicker](./FilterPicker.md) or CheckboxGroup
11
+
12
+ ## Component
13
+
14
+ ---
15
+
16
+ ### Properties
17
+
18
+ - **`children`** `ReactNode | (item: T) => ReactElement` — `TagInput.Item` elements, or a render function for `items`, that suggest values. Without options the field accepts any typed value
19
+ - **`items`** `Iterable<T>` — Options to suggest, as data
20
+ - **`placeholder`** `string` — Placeholder text for the input
21
+ - **`icon`** `ReactElement` — Icon element rendered before the input
22
+ - **`prefix`** `ReactNode` — Input decoration before the main input
23
+ - **`suffix`** `ReactNode` — Input decoration after the main input
24
+ - **`suffixPosition`** `'before' | 'after'` — Whether the suffix goes before or after the validation and loading icons
25
+ - **`tagProps`** `(value: string) => Partial<CubeTagProps>` — Props for each chip's `Tag` (theme, icon, label), by value. A string `children` also names the value to screen readers, and `isDisabled` locks the chip
26
+ - **`value`** `string[]` — The values in controlled mode
27
+ - **`defaultValue`** `string[]` — The initial values in uncontrolled mode
28
+ - **`inputValue`** `string` — The text being typed, in controlled mode
29
+ - **`defaultInputValue`** `string` — The initial text being typed, in uncontrolled mode
30
+ - **`allowsCustomValue`** `boolean` (default: `false`) — Whether typed values that are not among the options are accepted. Only applies when options are given
31
+ - **`delimiters`** `string[]` (default: `[',']`) — Characters that commit the typed text and split pasted text. Pasted text is also split on line breaks
32
+ - **`validateTag`** `(value: string) => boolean | string | null | undefined` — Checks one value before it becomes a chip. Return `false` or a message to reject it
33
+ - **`normalizeTag`** `(value: string) => string` — Rewrites a typed value before it is checked and added. Return an empty string to drop it
34
+ - **`maxTags`** `number` — The most values the field holds. Values past it are refused and stay in the input
35
+ - **`shouldCommitOnBlur`** `boolean` (default: `true`) — Whether leaving the field commits the typed text
36
+ - **`isClearable`** `boolean` (default: `false`) — Whether a button in the input clears the typed text. It shows while there is text
37
+ - **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter for the options, or `false` to show every option
38
+ - **`popoverTrigger`** `'focus' | 'input' | 'manual'` (default: `input`) — When the suggestions popover opens
39
+ - **`hideTrigger`** `boolean` (default: `false`) — Whether to hide the button that toggles the popover
40
+ - **`disabledKeys`** `Iterable<Key>` — Keys of options that cannot be picked
41
+ - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Size of the input. The chips follow it
42
+ - **`direction`** `'bottom' | 'top'` (default: `bottom`) — Where the suggestions popover opens
43
+ - **`shouldFlip`** `boolean` (default: `true`) — Whether the popover flips when there is no room
44
+ - **`overlayOffset`** `number` (default: `8`) — Distance between the input and the popover, in pixels
45
+ - **`containerPadding`** `number` (default: `8`) — Minimum space between the popover and the viewport edge, in pixels
46
+ - **`autoComplete`** `string` (default: `off`) — HTML `autocomplete` attribute for the input
47
+ - **`inputMode`** `'text' | 'email' | 'url' | 'tel' | 'numeric' | 'decimal' | 'search' | 'none'` — Which virtual keyboard the input asks for. The input stays a text input, so the browser does not validate what is typed
48
+ - **`enterKeyHint`** `'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'` — The label of the virtual keyboard's Enter key
49
+ - **`onChange`** `(value: string[]) => void` — Called with the whole new list of values
50
+ - **`onInputChange`** `(value: string) => void` — Called when the text being typed changes
51
+ - **`onClear`** `() => void` — Called when the clear button is pressed
52
+ - **`onOpenChange`** `(isOpen: boolean) => void` — Called when the suggestions popover opens or closes
53
+ - **`onFocus`** `() => void` — Called when focus enters the component: the input, a chip or the popover
54
+ - **`onBlur`** `() => void` — Called when focus leaves the component entirely
55
+ - **`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
+ - **`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
57
+ - **`mods`** `Record<string, boolean>` — Modifiers for the bordered input box, see [Modifiers](#modifiers)
58
+
59
+ #### Notable Properties
60
+
61
+ **delimiters** - Typing a delimiter commits the text before it, and pasting splits the text on every delimiter and line break, so a column copied from a spreadsheet or a comma-separated list becomes one chip per entry. A single pasted value is inserted as plain text for the user to finish. Pass `[]` when a value may contain a comma: only Enter and pasted line breaks separate values then.
62
+
63
+ **validateTag** - Runs on every value about to become a chip. A rejected value stays in the input, the field turns invalid and the message shows below it until the text is edited. A value picked from the options is not checked. Values already in `value` that fail the check are drawn in the danger theme and carry the message as their description, so an invalid entry loaded from the server stands out. Duplicates are always refused, with a message of their own.
64
+
65
+ **normalizeTag** - Runs on typed text before anything else looks at it, so the duplicate check, `validateTag` and the new chip all see the rewritten value: lowercase an email address, strip thousands separators, write a number one way. The rejected text that stays in the input is what the user typed. Picked options keep their keys.
66
+
67
+ **maxTags** - A hard limit on the number of values. Past it, typed, pasted and picked values are refused with a message and stay in the input, while values up to the limit are still added. For a limit that only flags the field, use a `rules` entry instead.
68
+
69
+ **tagProps** - Called per value. Return a theme, an icon or `qa` for the chip. A string `children` replaces the chip's text and also names the value in the input's description and in the "Added"/"Removed" announcements, for values whose label does not come from the options. `isDisabled: true` locks the chip: it has no remove button, the keyboard skips it, and its option cannot be unpicked. An invalid chip stays in the danger theme whatever theme it asks for.
70
+
71
+ **children / items** - Options turn the input into a combobox. Typing filters them and focuses the option whose label is exactly the typed text, or else the first match. Enter or a click toggles the focused option, and the popover stays open so the user can pick several in a row. Typed text means "add": pressing Enter on an option that is already a chip refuses it as a duplicate, and unpicking it takes the arrow keys, a click, or an empty input. A picked option shows a checked box. Without `allowsCustomValue`, typed text must match an option by key or label, and on blur a query that matches nothing is dropped. With it, the typed text is offered as its own option after the matches, the same way [FilterListBox](./FilterListBox.md) does, and custom values already added are listed there too, checked and sorted, so they can be unpicked from the list as well as from their chips. One unpicked in the list stays there, unchecked, until focus leaves the field, so it can be picked back. An option in `disabledKeys` is refused however it is entered. A chip for an option shows the option's label, while the value holds its key. The label is remembered, so it survives server-side filtering (`filter={false}` with changing `items`).
72
+
73
+ ### Base Properties
74
+
75
+ Supports [Base properties](../../BaseProperties.md)
76
+
77
+ ### Field Properties
78
+
79
+ Supports all [Field properties](../../FieldProperties.md)
80
+
81
+ ### Styling Properties
82
+
83
+ #### styles
84
+
85
+ Customizes the root element, a column holding the input box and the chips.
86
+
87
+ #### wrapperStyles
88
+
89
+ Customizes the bordered input box.
90
+
91
+ **Sub-elements:**
92
+
93
+ - `Prefix` - Container for prefix content and icons
94
+ - `Suffix` - Container for suffix content, validation icons, the clear button and the popover trigger, which always comes last
95
+ - `InputIcon` - Container for the left icon
96
+ - `ValidationIcon` - Container for validation state icons
97
+ - `State` - Container for the validation and loading icons
98
+
99
+ #### inputStyles
100
+
101
+ Customizes the text input element.
102
+
103
+ #### tagListStyles
104
+
105
+ Customizes the wrapping row of chips.
106
+
107
+ #### tagStyles
108
+
109
+ Customizes every chip. Use `tagProps` for per-value props.
110
+
111
+ #### triggerStyles
112
+
113
+ Customizes the button that toggles the popover.
114
+
115
+ #### overlayStyles
116
+
117
+ Customizes the popover.
118
+
119
+ #### listBoxStyles
120
+
121
+ Customizes the listbox in the popover.
122
+
123
+ #### optionStyles
124
+
125
+ Customizes each option.
126
+
127
+ #### sectionStyles
128
+
129
+ Customizes option sections.
130
+
131
+ #### headingStyles
132
+
133
+ Customizes option section headings.
134
+
135
+ ### Style Properties
136
+
137
+ These properties allow direct style application without using the `styles` prop:
138
+
139
+ - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
140
+ - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `blockMargin`, `inlineMargin`, `inset`, `blockInset`, `inlineInset`, `position`, `scrollMargin`, `blockScrollMargin`, `inlineScrollMargin`, `scrollPadding`, `blockScrollPadding`, `inlineScrollPadding`
141
+ - **Dimension:** `width`, `height`, `blockSize`, `inlineSize`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
142
+ - **Block:** `border`, `blockBorder`, `inlineBorder`, `radius`, `shadow`, `outline`, `padding`, `blockPadding`, `inlinePadding`, `overflow`, `scrollbar`, `textAlign`
143
+ - **Color:** `color`, `fill`, `fade`, `image`
144
+ - **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
145
+
146
+ ### Modifiers
147
+
148
+ The `mods` prop accepts the following modifiers for the bordered input box:
149
+
150
+ - **`focused`** `boolean` — Forces focus ring appearance.
151
+ - **`disabled`** `boolean` — Forces disabled appearance.
152
+ - **`invalid`** `boolean` — Forces invalid state styling.
153
+ - **`valid`** `boolean` — Forces valid state styling.
154
+ - **`prefix`** `boolean` — Indicates presence of prefix content.
155
+ - **`suffix`** `boolean` — Indicates presence of suffix content.
156
+
157
+ ## Variants
158
+
159
+ ### Sizes
160
+
161
+ - `small` - Compact input with extra-small chips
162
+ - `medium` - Default size, with extra-small chips
163
+ - `large` - Emphasized input with small chips
164
+
165
+ ### Validation States
166
+
167
+ ### Disabled and Read-only
168
+
169
+ A disabled field's chips drop out of the Tab order. A read-only field keeps them focusable but shows no remove buttons and ignores Delete.
170
+
171
+ ## Examples
172
+
173
+ ### Free-form Values
174
+
175
+ ```jsx
176
+ const EMAIL = /^[^\s@,]+@[^\s@,]+\.[^\s@,]+$/;
177
+
178
+ <TagInput
179
+ label="Also send to"
180
+ placeholder="name@company.com"
181
+ defaultValue={['ana@acme.com']}
182
+ validateTag={(value) => EMAIL.test(value) || 'Enter an email address'}
183
+ />;
184
+ ```
185
+
186
+ ### Pasting a List
187
+
188
+ Pasted text is split on delimiters and line breaks. Accepted entries become chips, rejected ones stay in the input with the message from `validateTag`.
189
+
190
+ ### Picking from Suggestions
191
+
192
+ ```jsx
193
+ <TagInput label="Allowed actions" placeholder="Search actions">
194
+ <TagInput.Item key="read">read</TagInput.Item>
195
+ <TagInput.Item key="refresh">refresh</TagInput.Item>
196
+ <TagInput.Item key="rebuild">rebuild</TagInput.Item>
197
+ <TagInput.Item key="deploy">deploy</TagInput.Item>
198
+ </TagInput>
199
+ ```
200
+
201
+ ### Suggestions with Custom Values
202
+
203
+ ```jsx
204
+ <TagInput
205
+ allowsCustomValue
206
+ label="Allowed actions"
207
+ placeholder="Search or add an action"
208
+ >
209
+ <TagInput.Item key="read">read</TagInput.Item>
210
+ <TagInput.Item key="refresh">refresh</TagInput.Item>
211
+ </TagInput>
212
+ ```
213
+
214
+ ### Data-driven Options
215
+
216
+ ```jsx
217
+ const members = [
218
+ { key: 'orders.count', label: 'Orders count' },
219
+ { key: 'orders.status', label: 'Order status' },
220
+ ];
221
+
222
+ <TagInput label="Members" items={members}>
223
+ {(member) => <TagInput.Item key={member.key}>{member.label}</TagInput.Item>}
224
+ </TagInput>;
225
+ ```
226
+
227
+ ### Per-chip Props
228
+
229
+ ```jsx
230
+ <TagInput
231
+ label="Members"
232
+ defaultValue={['orders.count', 'orders.status']}
233
+ tagProps={(value) => ({
234
+ theme: isMeasure(value) ? 'primary' : 'success',
235
+ })}
236
+ >
237
+ {members.map((key) => (
238
+ <TagInput.Item key={key}>{key}</TagInput.Item>
239
+ ))}
240
+ </TagInput>
241
+ ```
242
+
243
+ ### Values with Commas
244
+
245
+ ```jsx
246
+ <TagInput
247
+ label="Allowed IAM principals"
248
+ delimiters={[]}
249
+ description="Only Enter and pasted line breaks separate values."
250
+ />
251
+ ```
252
+
253
+ ### Many Values in a Narrow Field
254
+
255
+ ```jsx
256
+ <TagInput
257
+ label="Bin boundaries"
258
+ width="240px"
259
+ placeholder="Add a number"
260
+ defaultValue={['0', '10', '25', '50', '75', '100']}
261
+ validateTag={(value) => Number.isFinite(Number(value)) || 'Enter a number'}
262
+ />
263
+ ```
264
+
265
+ ### Moving Between the Input and the Chips
266
+
267
+ Tab goes from the input to the chips. Backspace in the empty input does too, landing on the last chip without removing it; the next Backspace removes it and moves to the one before. From a chip, Escape goes back to the input, and so does typing, which carries on in the input.
268
+
269
+ ### Locked Values and Clearing the Text
270
+
271
+ A locked chip has no remove button and the keyboard skips it. The clear button inside the input clears only the typed text, never the chips, and shows while there is text to clear.
272
+
273
+ ```jsx
274
+ <TagInput
275
+ isClearable
276
+ label="Owners"
277
+ defaultValue={['you@acme.com', 'ana@acme.com']}
278
+ tagProps={(value) =>
279
+ value === currentUser ? { isDisabled: true, children: `${value} (you)` } : undefined
280
+ }
281
+ />
282
+ ```
283
+
284
+ ### A Limit on the Number of Values
285
+
286
+ ```jsx
287
+ <TagInput label="Reviewers" maxTags={3} description="Up to three reviewers." />
288
+ ```
289
+
290
+ ### Rewriting Typed Values
291
+
292
+ ```jsx
293
+ <TagInput
294
+ label="Also send to"
295
+ normalizeTag={(value) => value.toLowerCase()}
296
+ validateTag={validateEmail}
297
+ />
298
+ ```
299
+
300
+ With the rewrite, `Ana@Acme.com` is a duplicate of `ana@acme.com` rather than a second chip.
301
+
302
+ ### Numbers
303
+
304
+ The value is always a `string[]`. Map a numeric model at the boundary, and let `normalizeTag` write each number one way, so `10.0` is a duplicate of `10`:
305
+
306
+ ```jsx
307
+ const [bounds, setBounds] = useState([0, 10, 25]);
308
+
309
+ <TagInput
310
+ label="Bin boundaries"
311
+ inputMode="decimal"
312
+ delimiters={[',', ';', ' ']}
313
+ value={bounds.map(String)}
314
+ onChange={(next) => setBounds(next.map(Number).sort((a, b) => a - b))}
315
+ normalizeTag={(value) =>
316
+ Number.isFinite(Number(value)) ? String(Number(value)) : value
317
+ }
318
+ validateTag={(value) => Number.isFinite(Number(value)) || 'Enter a number'}
319
+ />;
320
+ ```
321
+
322
+ For numbers written with thousands separators, turn the comma delimiter off and strip them in `normalizeTag`: `delimiters={[]}` with `normalizeTag={(value) => value.replaceAll(',', '')}`.
323
+
324
+ ### Labels for Values Outside the Options
325
+
326
+ When a value's label is not in the options, for example because the options are loaded on demand or leave out what is already picked, give the chip its label in `tagProps`:
327
+
328
+ ```jsx
329
+ <TagInput
330
+ label="Roles"
331
+ items={unpickedRoles}
332
+ tagProps={(id) => ({ children: roleTitles[id] })}
333
+ >
334
+ {(role) => <TagInput.Item key={role.id}>{role.title}</TagInput.Item>}
335
+ </TagInput>
336
+ ```
337
+
338
+ ### Controlled
339
+
340
+ ```jsx
341
+ const [recipients, setRecipients] = useState(['ana@acme.com']);
342
+
343
+ <TagInput label="Recipients" value={recipients} onChange={setRecipients} />;
344
+ ```
345
+
346
+ ### Side Label
347
+
348
+ ```jsx
349
+ <TagInput
350
+ labelPosition="side"
351
+ label="Also send to"
352
+ description="Press Enter or type a comma to add an address."
353
+ />
354
+ ```
355
+
356
+ ## Accessibility
357
+
358
+ ### Keyboard Navigation
359
+
360
+ - `Tab` - Moves focus from the input to the chips, then out of the field. The chips are one Tab stop; the popover trigger and the clear button are not Tab stops. Tabbing away closes the popover and commits the typed text
361
+ - `Shift+Tab` - Moves back from the chips to the input
362
+ - `Enter` - Commits the typed text. With the popover open, toggles the focused option, the one `aria-activedescendant` announces; with text typed, an option that is already a chip is refused as a duplicate rather than removed. Never submits a surrounding form, even with nothing typed, so one Enter too many after the last value does not send a half-filled dialog
363
+ - `,` (or another delimiter) - Commits the text before the caret and keeps the rest typed
364
+ - `Escape` - Closes the popover, or clears the typed text when it is closed
365
+ - `Backspace` in the empty input - Moves focus to the last chip without removing it, and closes the popover. A Backspace held down to clear the text stops at the empty input
366
+ - `ArrowDown` / `ArrowUp` - Opens the popover or moves through the options
367
+ - `Home` / `End` - Moves to the first or last option while the popover is open
368
+ - `ArrowLeft` / `ArrowRight` - Moves between chips. Locked chips are skipped
369
+ - `Delete` / `Backspace` on a chip - Removes it and focuses its neighbour, or the input when no chip is left. Holding the key down removes one chip, not the whole row
370
+ - `Escape` on a chip - Moves focus back to the input
371
+ - Typing on a chip - Moves focus back to the input, where the typed character lands
372
+
373
+ ### Screen Reader Support
374
+
375
+ - Without options the input is a text field. With options it is a combobox with a multi-select listbox of checkable options
376
+ - The input's description reads the current values ("Selected: …") and says that Backspace moves to them, so the user hears what is already added and how to reach it
377
+ - Focus on a chip reads its label, its position and React Aria's hint to press Delete or Backspace to remove it
378
+ - A polite live region announces "Added …" and "Removed …" when the user adds or removes a value. Changes made from outside the field are not announced
379
+ - The chips are a grid named "Selected values" followed by the field's label. Each chip is a row, and its remove button reads "Remove" followed by the chip's label. An invalid chip is described by its validation message, not only by its color
380
+ - A rejected value marks the input invalid. With a visible label its message is shown under the field and announced as an alert, again for each new attempt. Without one, the message is announced through the live region
381
+ - A disabled field's chips are out of the Tab order, and so are locked chips. A read-only field's chips stay focusable, without remove buttons
382
+ - The clear button is named "Clear text" followed by the field's label. Escape does the same from the keyboard
383
+
384
+ ### ARIA Properties
385
+
386
+ - `aria-describedby` - Adds the summary of current values and the Backspace hint to the input's own descriptions, such as one passed in `aria-describedby`
387
+ - `aria-invalid` - Set while a typed value is rejected, or when the field is invalid
388
+ - `role="combobox"`, `aria-expanded`, `aria-controls`, `aria-activedescendant`, `aria-autocomplete="list"` - Set when options are given. `aria-activedescendant` follows both arrow keys and clicks
389
+
390
+ ## Best Practices
391
+
392
+ 1. **Do**: Validate each value with `validateTag` and the whole list with `rules`
393
+
394
+ ```jsx
395
+ <TagInput
396
+ name="recipients"
397
+ validateTag={validateEmail}
398
+ rules={[{ max: 5, type: 'array', message: 'Up to five recipients' }]}
399
+ />
400
+ ```
401
+
402
+ 2. **Don't**: Use it for a handful of fixed options. A CheckboxGroup or [FilterPicker](./FilterPicker.md) shows the choices without typing
403
+
404
+ 3. **Do**: Say how to add a value in the `description` or `placeholder` when the delimiter is not obvious
405
+
406
+ 4. **Do**: Turn delimiters off with `delimiters={[]}` when a value may contain a comma
407
+
408
+ ## Integration with Forms
409
+
410
+ The field value is an array of strings. With a `name`, the form stores the array and validates on change by default, and array rules like `{ type: 'array', max: 5 }` apply to it. The input itself holds only the text being typed, so it carries no `name` and a native form submission does not include it.
411
+
412
+ ```jsx
413
+ <Form defaultValues={{ recipients: ['ana@acme.com'] }} onSubmit={save}>
414
+ <TagInput
415
+ name="recipients"
416
+ label="Recipients"
417
+ validateTag={validateEmail}
418
+ rules={[{ required: true, message: 'Add at least one recipient' }]}
419
+ />
420
+ <Form.Submit>Save</Form.Submit>
421
+ </Form>
422
+ ```
423
+
424
+ ## Related Components
425
+
426
+ - [FilterPicker](./FilterPicker.md) - Use for picking several values from a list behind a button, without typing new ones
427
+ - [ComboBox](./ComboBox.md) - Use for one value with suggestions
428
+ - CheckboxGroup - Use for a short, fixed list of choices
429
+ - [Tag](../content/Tag.md) - The chip each value renders as
@@ -13,6 +13,7 @@ A convenience wrapper that combines `TooltipTrigger` and `Tooltip` into a single
13
13
  - **`title`** `ReactNode` — Tooltip content
14
14
  - **`tooltipStyles`** `Styles` — Custom styles for the tooltip container
15
15
  - **`width`** `string` — Tooltip width
16
+ - **`qa`** `string` — `data-qa` for the rendered tooltip, so a test can find this trigger's tooltip rather than whichever one is open. Components that take a `tooltip` object accept it there too: `tooltip={{ title: 'Copy', qa: 'CopyTooltip' }}`
16
17
  - **`placement`** `Placement` (default: `'top'`) — Position of the tooltip relative to its trigger
17
18
  - **`offset`** `number` (default: `8`) — Distance between the tooltip and the trigger element
18
19
  - **`crossOffset`** `number` (default: `0`) — Cross-axis offset of the tooltip
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.0.0-canary-bada6bd",
3
+ "version": "0.0.0-canary-09a7efe",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {
package/tasty.config.ts CHANGED
@@ -351,7 +351,7 @@ export default {
351
351
  'h5',
352
352
  'h6',
353
353
 
354
- // Text styles (t1-t4, with medium weight variants)
354
+ // Text styles (t1-t4, with medium weight variants, and t4n at normal weight)
355
355
  't1',
356
356
  't2',
357
357
  't2m',
@@ -359,6 +359,7 @@ export default {
359
359
  't3m',
360
360
  't4',
361
361
  't4m',
362
+ 't4n',
362
363
 
363
364
  // Markdown/prose styles (m1-m3)
364
365
  'm1',