@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 @@
1
+ {"version":3,"file":"TagList.js","names":["Key","Node","mergeStyles","Styles","tasty","KeyboardEvent","RefObject","useRef","useFocusRing","useId","useTag","useTagGroup","Item","ListState","useListState","useI18n","CloseIcon","mergeProps","ItemAction","CubeTagProps","Tag","TagListEntry","key","label","invalidMessage","tagProps","Partial","isDisabled","TagListProps","qa","id","tags","size","isReadOnly","onRemove","keys","styles","tagStyles","listRef","HTMLDivElement","inputRef","HTMLInputElement","TagListElement","display","flow","gap","placeItems","outline","TagRowElement","minWidth","maxWidth","radius","focused","outlineOffset","transition","cursor","TagRowProps","item","state","TagRow","t0","$","_c","t","ref","t1","rowProps","gridCellProps","removeButtonProps","allowsRemoving","isFocusVisible","focusProps","invalidId","entry","value","t2","disabledKeys","has","isTagDisabled","canRemove","t3","otherTagProps","ownTagStyles","tagChildren","tagTheme","theme","t4","t5","children","t6","_isDisabled","t7","filter","Boolean","join","undefined","describedBy","e","repeat","preventDefault","onKeyDown","handleKeyDown","t8","t9","t10","t11","color","onPress","t12","t13","t14","TagList","props","localRef","tag","map","_temp","items","_temp2","String","gridProps","onGridKeyDownCapture","otherGridProps","onKeyDownCapture","input","current","isPrintable","length","ctrlKey","metaKey","altKey","disabled","nativeEvent","isComposing","stopPropagation","focus","handleKeyDownCapture","tabIndex","collection","tag_0"],"sources":["../../../../src/components/fields/TagInput/TagList.tsx"],"sourcesContent":["import { Key, Node } from '@react-types/shared';\nimport { mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport { KeyboardEvent, RefObject, useRef } from 'react';\nimport { useFocusRing, useId, useTag, useTagGroup } from 'react-aria';\nimport { Item, ListState, useListState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\nimport { CubeTagProps, Tag } from '../../content/Tag/Tag';\n\n/** One chip as the list renders it. */\nexport interface TagListEntry {\n /** The value the chip stands for. Also its collection key. */\n key: string;\n /** The text shown on the chip. */\n label: string;\n /**\n * Why the value failed `validateTag`, when it did. Paints the chip in the\n * danger theme and becomes part of its description.\n */\n invalidMessage?: string;\n /** Extra props for this chip's `Tag`, from the `tagProps` callback. */\n tagProps?: Partial<CubeTagProps>;\n /** Whether the chip is locked: it cannot be focused or removed. */\n isDisabled?: boolean;\n}\n\nexport interface TagListProps {\n qa?: string;\n id?: string;\n 'aria-label': string;\n /** The field's label, read after `aria-label`. */\n 'aria-labelledby'?: string;\n tags: TagListEntry[];\n size: CubeTagProps['size'];\n isDisabled?: boolean;\n /** Read-only chips render without a remove button and ignore Delete/Backspace. */\n isReadOnly?: boolean;\n onRemove: (keys: string[]) => void;\n styles?: Styles;\n tagStyles?: Styles;\n listRef?: RefObject<HTMLDivElement | null>;\n /** The field's input, which Escape and typing on a chip return to. */\n inputRef?: RefObject<HTMLInputElement | null>;\n}\n\nconst TagListElement = tasty({\n qa: 'TagInputTags',\n styles: {\n display: 'flex',\n flow: 'row wrap',\n gap: '.5x',\n placeItems: 'center start',\n outline: 0,\n },\n});\n\n// The focusable grid row. The chip inside it keeps its own look; the row only\n// contributes the focus ring, drawn on the chip's own radius.\nconst TagRowElement = tasty({\n qa: 'TagInputTag',\n styles: {\n display: 'inline-flex',\n minWidth: 0,\n maxWidth: '100%',\n radius: true,\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '1bw #primary-accent-text',\n },\n outlineOffset: 1,\n transition: 'theme',\n cursor: 'default',\n },\n});\n\ninterface TagRowProps {\n item: Node<TagListEntry>;\n state: ListState<TagListEntry>;\n size: CubeTagProps['size'];\n isDisabled?: boolean;\n isReadOnly?: boolean;\n tagStyles?: Styles;\n}\n\nfunction TagRow({\n item,\n state,\n size,\n isDisabled,\n isReadOnly,\n tagStyles,\n}: TagRowProps) {\n const { t } = useI18n();\n const ref = useRef<HTMLDivElement>(null);\n const { rowProps, gridCellProps, removeButtonProps, allowsRemoving } = useTag(\n { item },\n state,\n ref,\n );\n const { isFocusVisible, focusProps } = useFocusRing();\n const invalidId = useId();\n const entry = item.value as TagListEntry;\n const isTagDisabled = isDisabled || state.disabledKeys.has(item.key);\n const canRemove = allowsRemoving && !isTagDisabled && !isReadOnly;\n const {\n theme: tagTheme,\n styles: ownTagStyles,\n children: tagChildren,\n // Locking goes through the list's disabled keys, so the tag group skips\n // the chip too.\n isDisabled: _isDisabled,\n ...otherTagProps\n } = entry.tagProps ?? {};\n const describedBy =\n [rowProps['aria-describedby'], entry.invalidMessage ? invalidId : null]\n .filter(Boolean)\n .join(' ') || undefined;\n\n // The tag group removes on every Delete/Backspace, auto-repeat included: a\n // key held down would clear the whole list.\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.repeat && (e.key === 'Delete' || e.key === 'Backspace')) {\n e.preventDefault();\n\n return;\n }\n\n rowProps.onKeyDown?.(e);\n };\n\n return (\n <TagRowElement\n ref={ref}\n {...mergeProps(rowProps, focusProps)}\n onKeyDown={handleKeyDown}\n aria-describedby={describedBy}\n mods={{ focused: isFocusVisible }}\n >\n {entry.invalidMessage ? (\n <span hidden id={invalidId}>\n {entry.invalidMessage}\n </span>\n ) : null}\n <Tag\n // The cell of the grid row, not the `status` live region a standalone\n // tag is: every chip announcing itself would drown the list.\n {...gridCellProps}\n size={size}\n {...otherTagProps}\n // An invalid value shows as one whatever theme the chip asks for.\n theme={entry.invalidMessage ? 'danger' : tagTheme ?? 'default'}\n styles={ownTagStyles ? mergeStyles(tagStyles, ownTagStyles) : tagStyles}\n isDisabled={isTagDisabled}\n // The row takes the one Tab stop and removes on Delete/Backspace, so the\n // remove button stays out of the Tab order.\n disableActionsFocus\n actions={\n canRemove ? (\n <ItemAction\n id={removeButtonProps.id}\n icon={<CloseIcon />}\n aria-label={t('tagInput.remove', 'Remove')}\n // Reads \"Remove, <label>\": the button's own name, then the row's.\n aria-labelledby={removeButtonProps['aria-labelledby']}\n styles={{ color: '#current' }}\n onPress={removeButtonProps.onPress}\n />\n ) : undefined\n }\n role=\"gridcell\"\n >\n {tagChildren ?? entry.label}\n </Tag>\n </TagRowElement>\n );\n}\n\n/**\n * The removable chips under a `TagInput`: a React Aria tag group, so the list\n * is one Tab stop, arrow keys move between chips, and Delete or Backspace\n * removes the focused one.\n */\nexport function TagList(props: TagListProps) {\n const {\n qa,\n id,\n tags,\n size,\n isDisabled,\n isReadOnly,\n onRemove,\n styles,\n tagStyles,\n listRef,\n inputRef,\n } = props;\n const localRef = useRef<HTMLDivElement>(null);\n const ref = listRef ?? localRef;\n\n const canRemove = !isDisabled && !isReadOnly;\n\n const state = useListState<TagListEntry>({\n items: tags,\n // A disabled field's chips drop out of the Tab order along with its input,\n // and so do locked ones.\n disabledKeys: tags\n .filter((tag) => isDisabled || tag.isDisabled)\n .map((tag) => tag.key),\n children: (entry) => (\n <Item key={entry.key} textValue={entry.label}>\n {entry.label}\n </Item>\n ),\n });\n\n const { gridProps } = useTagGroup(\n {\n id,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n onRemove: canRemove\n ? (keys: Set<Key>) => onRemove([...keys].map(String))\n : undefined,\n },\n state,\n ref,\n );\n\n // The grid's type-to-select listens here, before any chip does.\n const { onKeyDownCapture: onGridKeyDownCapture, ...otherGridProps } =\n gridProps;\n\n // Leaving the chips for the input they belong to: Escape, or typing, which\n // carries on in the input. Taken before type-to-select, so a letter does not\n // also jump to the chip it starts.\n const handleKeyDownCapture = (e: KeyboardEvent<HTMLDivElement>) => {\n const input = inputRef?.current;\n const isPrintable =\n e.key.length === 1 &&\n e.key !== ' ' &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.altKey;\n\n if (\n !input ||\n input.disabled ||\n e.nativeEvent.isComposing ||\n (e.key !== 'Escape' && !isPrintable)\n ) {\n onGridKeyDownCapture?.(e);\n\n return;\n }\n\n e.stopPropagation();\n // The character itself is left to reach the input, which has focus by the\n // time the browser inserts it.\n if (e.key === 'Escape') e.preventDefault();\n\n input.focus();\n };\n\n return (\n <TagListElement\n ref={ref}\n qa={qa}\n {...otherGridProps}\n onKeyDownCapture={handleKeyDownCapture}\n // With every chip disabled or locked, the grid itself would otherwise\n // stay a Tab stop that focuses nothing.\n tabIndex={\n state.disabledKeys.size === tags.length ? -1 : gridProps.tabIndex\n }\n styles={styles}\n >\n {[...state.collection].map((item) => (\n <TagRow\n key={item.key}\n item={item}\n state={state}\n size={size}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n tagStyles={tagStyles}\n />\n ))}\n </TagListElement>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAgDA,MAAM0C,iBAAiBtC,MAAM;CAC3ByB,IAAI;CACJO,QAAQ;EACNO,SAAS;EACTC,MAAM;EACNC,KAAK;EACLC,YAAY;EACZC,SAAS;EACX;CACD,CAAC;AAIF,MAAMC,gBAAgB5C,MAAM;CAC1ByB,IAAI;CACJO,QAAQ;EACNO,SAAS;EACTM,UAAU;EACVC,UAAU;EACVC,QAAQ;EACRJ,SAAS;GACP,IAAI;GACJK,SAAS;GACV;EACDC,eAAe;EACfC,YAAY;EACZC,QAAQ;EACV;CACD,CAAC;AAWF,SAAAI,OAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAgB,MAAA,EAAAL,MAAAC,OAAA1B,MAAAL,YAAAM,YAAAI,cAAAuB;CAQd,MAAA,EAAAG,MAAchD,SAAS;CACvB,MAAAiD,MAAYzD,OAAuB,KAAK;CAAC,IAAA0D;AAAA,KAAAJ,EAAA,OAAAJ,MAAA;AAEvCQ,OAAA,EAAAR,MAAQ;AAAAI,IAAA,KAAAJ;AAAAI,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;CADV,MAAA,EAAAK,UAAAC,eAAAC,mBAAAC,mBAAuE3D,OACrEuD,IACAP,OACAM,IACD;CACD,MAAA,EAAAM,gBAAAC,eAAuC/D,cAAc;CACrD,MAAAgE,YAAkB/D,SAAO;CACzB,MAAAgE,QAAchB,KAAIiB;CAAuB,IAAAC;AAAA,KAAAd,EAAA,OAAAlC,cAAAkC,EAAA,OAAAJ,KAAAnC,OAAAuC,EAAA,OAAAH,OAAA;AACnBiB,OAAAhD,cAAc+B,MAAKkB,aAAaC,IAAKpB,KAAInC,IAAK;AAAAuC,IAAA,KAAAlC;AAAAkC,IAAA,KAAAJ,KAAAnC;AAAAuC,IAAA,KAAAH;AAAAG,IAAA,KAAAc;OAAAA,MAAAd,EAAA;CAApE,MAAAiB,gBAAsBH;CACtB,MAAAI,YAAkBV,kBAAA,CAAmBS,iBAAnB,CAAqC7C;CAAW,IAAA+C;AAAA,KAAAnB,EAAA,OAAAY,MAAAhD,UAAA;AAS9DuD,OAAAP,MAAKhD,YAAL,EAAoB;AAAAoC,IAAA,KAAAY,MAAAhD;AAAAoC,IAAA,KAAAmB;OAAAA,MAAAnB,EAAA;CAAA,IAAAoB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;AAAA,KAAAvB,EAAA,OAAAmB,IAAA;EARxB,MAAA,EAAAK,OAAAC,IAAAlD,QAAAmD,IAAAC,UAAAC,IAAA9D,YAAA+D,aAAA,GAAAC,OAQIX;AARJI,aAAAE;AAAAJ,iBAAAK;AAAAJ,gBAAAM;AAAAR,kBAAAU;AAQyB9B,IAAA,KAAAmB;AAAAnB,IAAA,KAAAoB;AAAApB,IAAA,MAAAqB;AAAArB,IAAA,MAAAsB;AAAAtB,IAAA,MAAAuB;QAAA;AAAAH,kBAAApB,EAAA;AAAAqB,iBAAArB,EAAA;AAAAsB,gBAAAtB,EAAA;AAAAuB,aAAAvB,EAAA;;CAAA,IAAAyB;AAAA,KAAAzB,EAAA,QAAAY,MAAAjD,kBAAAqC,EAAA,QAAAW,aAAAX,EAAA,QAAAK,UAAA;AAEvBoB,OAAA,CAACpB,SAAS,qBAAqBO,MAAKjD,iBAALgD,YAAA,KAAwC,CAAAoB,OAC7DC,QAAQ,CAAAC,KACV,IAAiB,IAFzBC;AAEyBlC,IAAA,MAAAY,MAAAjD;AAAAqC,IAAA,MAAAW;AAAAX,IAAA,MAAAK;AAAAL,IAAA,MAAAyB;OAAAA,MAAAzB,EAAA;CAH3B,MAAAmC,cACEV;CAE0B,IAAAC;AAAA,KAAA1B,EAAA,QAAAK,UAAA;AAINqB,QAAAU,MAAA;AACpB,OAAIA,EAACC,WAAYD,EAAC3E,QAAS,YAAY2E,EAAC3E,QAAS,cAAY;AAC3D2E,MAACE,gBAAiB;AAAA;;AAKpBjC,YAAQkC,YAAaH,EAAE;;AACxBpC,IAAA,MAAAK;AAAAL,IAAA,MAAA0B;OAAAA,MAAA1B,EAAA;CARD,MAAAwC,gBAAsBd;CAQpB,IAAAE;AAAA,KAAA5B,EAAA,QAAAU,cAAAV,EAAA,QAAAK,UAAA;AAKMuB,OAAAxE,aAAWiD,UAAUK,WAAW;AAAAV,IAAA,MAAAU;AAAAV,IAAA,MAAAK;AAAAL,IAAA,MAAA4B;OAAAA,MAAA5B,EAAA;CAAA,IAAA8B;AAAA,KAAA9B,EAAA,QAAAS,gBAAA;AAG9BqB,OAAA,EAAAvC,SAAWkB,gBAAgB;AAAAT,IAAA,MAAAS;AAAAT,IAAA,MAAA8B;OAAAA,MAAA9B,EAAA;CAAA,IAAAyC;AAAA,KAAAzC,EAAA,QAAAY,MAAAjD,kBAAAqC,EAAA,QAAAW,WAAA;AAEhC8B,OAAA7B,MAAKjD,iBACJ,oBAAA;GAAM,QAAA;GAAWgD,IAAAA;aACdC,MAAKjD;IAEF,GAJP;AAIOqC,IAAA,MAAAY,MAAAjD;AAAAqC,IAAA,MAAAW;AAAAX,IAAA,MAAAyC;OAAAA,MAAAzC,EAAA;CAQC,MAAA0C,KAAA9B,MAAKjD,iBAAL,WAAkC4D,YAAA;CAAqB,IAAAoB;AAAA,KAAA3C,EAAA,QAAAqB,gBAAArB,EAAA,QAAAxB,WAAA;AACtDmE,QAAAtB,eAAehF,YAAYmC,WAAW6C,aAAyB,GAA/D7C;AAA+DwB,IAAA,MAAAqB;AAAArB,IAAA,MAAAxB;AAAAwB,IAAA,MAAA2C;OAAAA,OAAA3C,EAAA;CAAA,IAAA4C;AAAA,KAAA5C,EAAA,QAAAkB,aAAAlB,EAAA,QAAAO,qBAAAP,EAAA,QAAAE,GAAA;AAMrE0C,QAAA1B,YACE,oBAAC;GACK,IAAAX,kBAAiBtC;GACf,MAAA,oBAAC,cAAW;GACN,cAAAiC,EAAE,mBAAmB,SAAQ;GAExB,mBAAAK,kBAAkB;GAC3B,QAAA,EAAAsC,OAAS,YAAW;GACnB,SAAAtC,kBAAiBuC;IAEjB,GAVbZ;AAUalC,IAAA,MAAAkB;AAAAlB,IAAA,MAAAO;AAAAP,IAAA,MAAAE;AAAAF,IAAA,MAAA4C;OAAAA,OAAA5C,EAAA;CAId,MAAA+C,MAAAzB,eAAeV,MAAKlD;CAAM,IAAAsF;AAAA,KAAAhD,EAAA,QAAAM,iBAAAN,EAAA,QAAAiB,iBAAAjB,EAAA,QAAAoB,iBAAApB,EAAA,QAAA7B,QAAA6B,EAAA,QAAA2C,OAAA3C,EAAA,QAAA4C,OAAA5C,EAAA,QAAA+C,OAAA/C,EAAA,QAAA0C,IAAA;AA5B7BM,QAAA,oBAAC;GAAG,GAGE1C;GACEnC;GAAI,GACNiD;GAEG,OAAAsB;GACC,QAAAC;GACI1B,YAAAA;GAGZ,qBAAA;GAEE,SAAA2B;GAYG,MAAA;aAEJG;IACG;AAAA/C,IAAA,MAAAM;AAAAN,IAAA,MAAAiB;AAAAjB,IAAA,MAAAoB;AAAApB,IAAA,MAAA7B;AAAA6B,IAAA,MAAA2C;AAAA3C,IAAA,MAAA4C;AAAA5C,IAAA,MAAA+C;AAAA/C,IAAA,MAAA0C;AAAA1C,IAAA,MAAAgD;OAAAA,OAAAhD,EAAA;CAAA,IAAAiD;AAAA,KAAAjD,EAAA,QAAAmC,eAAAnC,EAAA,QAAAwC,iBAAAxC,EAAA,QAAAgD,OAAAhD,EAAA,QAAA4B,MAAA5B,EAAA,QAAA8B,MAAA9B,EAAA,QAAAyC,IAAA;AAzCRQ,QAAA,qBAAC;GACM9C;GAAG,GACJyB;GACOY,WAAAA;GACOL,oBAAAA;GACZ,MAAAL;cAELW,IAKDO;IA8Bc;AAAAhD,IAAA,MAAAmC;AAAAnC,IAAA,MAAAwC;AAAAxC,IAAA,MAAAgD;AAAAhD,IAAA,MAAA4B;AAAA5B,IAAA,MAAA8B;AAAA9B,IAAA,MAAAyC;AAAAzC,IAAA,MAAAiD;OAAAA,OAAAjD,EAAA;AAAA,QA1ChBiD;;;;;;;AAmDJ,SAAOC,QAAAC,OAAA;CAAA,MAAAnD,IAAAC,EAAA,GAAA;CACL,MAAA,EAAAjC,IAAAC,IAAAC,MAAAC,MAAAL,YAAAM,YAAAC,UAAAE,QAAAC,WAAAC,SAAAE,aAYIwE;CACJ,MAAAC,WAAiB1G,OAAuB,KAAK;CAC7C,MAAAyD,MAAY1B,WAAA2E;CAEZ,MAAAlC,YAAkB,CAACpD,cAAD,CAAgBM;CAAW,IAAA2B;AAAA,KAAAC,EAAA,OAAAlC,cAAAkC,EAAA,OAAA9B,MAAA;EAAA,IAAAkC;AAAA,MAAAJ,EAAA,OAAAlC,YAAA;AAOjCsC,SAAAiD,QAASvF,cAAcuF,IAAGvF;AAAWkC,KAAA,KAAAlC;AAAAkC,KAAA,KAAAI;QAAAA,MAAAJ,EAAA;AADjCD,OAAA7B,KAAI6D,OACR3B,GAAsC,CAAAkD,IACzCC,MAAiB;AAAAvD,IAAA,KAAAlC;AAAAkC,IAAA,KAAA9B;AAAA8B,IAAA,KAAAD;OAAAA,MAAAC,EAAA;CAAA,IAAAI;AAAA,KAAAJ,EAAA,OAAAD,MAAAC,EAAA,OAAA9B,MAAA;AANekC,OAAA;GAAAoD,OAChCtF;GAAI6C,cAGGhB;GAEU4B,UACd8B;GAKX;AAAAzD,IAAA,KAAAD;AAAAC,IAAA,KAAA9B;AAAA8B,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;CAZD,MAAAH,QAAc5C,aAA2BmD,GAYvC;CAKgB,MAAAU,KAAAqC,MAAM;CACD,MAAAhC,KAAAgC,MAAM;CAAkB,IAAA1B;AAAA,KAAAzB,EAAA,OAAAkB,aAAAlB,EAAA,OAAA3B,UAAA;AACjCoD,OAAAP,aAAA5C,SACcD,SAAS,CAAA,GAAIC,KAAK,CAAAgF,IAAKI,OAAO,CACzC,GAFHxB;AAEGlC,IAAA,KAAAkB;AAAAlB,IAAA,KAAA3B;AAAA2B,IAAA,MAAAyB;OAAAA,MAAAzB,EAAA;CAAA,IAAA0B;AAAA,KAAA1B,EAAA,QAAA/B,MAAA+B,EAAA,QAAAc,MAAAd,EAAA,QAAAmB,MAAAnB,EAAA,QAAAyB,IAAA;AANfC,OAAA;GAAAzD;GAAA,cAEgB6C;GAAmB,mBACdK;GAAwB9C,UACjCoD;GAGX;AAAAzB,IAAA,MAAA/B;AAAA+B,IAAA,MAAAc;AAAAd,IAAA,MAAAmB;AAAAnB,IAAA,MAAAyB;AAAAzB,IAAA,MAAA0B;OAAAA,MAAA1B,EAAA;CARH,MAAA,EAAA2D,cAAsB7G,YACpB4E,IAQA7B,OACAM,IACD;CAAC,IAAAyD;CAAA,IAAAC;AAAA,KAAA7D,EAAA,QAAA2D,WAAA;AAGF,GAAA,CAAAG,kBAAAF,yBAAAC,kBACEF;AAAU3D,IAAA,MAAA2D;AAAA3D,IAAA,MAAA4D;AAAA5D,IAAA,MAAA6D;QAAA;AAAAD,yBAAA5D,EAAA;AAAA6D,mBAAA7D,EAAA;;CAAA,IAAA4B;AAAA,KAAA5B,EAAA,QAAArB,YAAAqB,EAAA,QAAA4D,sBAAA;AAKiBhC,QAAAQ,MAAA;GAC3B,MAAA2B,QAAcpF,UAAQqF;GACtB,MAAAC,cACE7B,EAAC3E,IAAIyG,WAAY,KACjB9B,EAAC3E,QAAS,OADV,CAEC2E,EAAC+B,WAFF,CAGC/B,EAACgC,WAHF,CAIChC,EAACiC;AAEJ,OACE,CAACN,SACDA,MAAKO,YACLlC,EAACmC,YAAYC,eACZpC,EAAC3E,QAAS,YAAV,CAAuBwG,aAAY;AAEpCL,2BAAuBxB,EAAE;AAAA;;AAK3BA,KAACqC,iBAAkB;AAGnB,OAAIrC,EAAC3E,QAAS,SAAU2E,GAACE,gBAAiB;AAE1CyB,SAAKW,OAAQ;;AACd1E,IAAA,MAAArB;AAAAqB,IAAA,MAAA4D;AAAA5D,IAAA,MAAA4B;OAAAA,MAAA5B,EAAA;CA1BD,MAAA2E,uBAA6B/C;CAqCvB,MAAAE,KAAAjC,MAAKkB,aAAa5C,SAAUD,KAAIgG,SAAhC,KAA+CP,UAASiB;CAAS,IAAAnC;AAAA,KAAAzC,EAAA,QAAAH,MAAAgF,YAAA;AAIlEpC,OAAA,CAAA,GAAI5C,MAAKgF,WAAY;AAAA7E,IAAA,MAAAH,MAAAgF;AAAA7E,IAAA,MAAAyC;OAAAA,MAAAzC,EAAA;CAAA,IAAA0C;AAAA,KAAA1C,EAAA,QAAAlC,cAAAkC,EAAA,QAAA5B,cAAA4B,EAAA,QAAA7B,QAAA6B,EAAA,QAAAH,SAAAG,EAAA,QAAAyC,MAAAzC,EAAA,QAAAxB,WAAA;AAArBkE,OAAAD,GAAqBa,KAAK1D,SACzB,oBAAC;GAEOA;GACCC;GACD1B;GACML;GACAM;GACDI;KANNoB,KAAInC,IAQZ,CAAC;AAAAuC,IAAA,MAAAlC;AAAAkC,IAAA,MAAA5B;AAAA4B,IAAA,MAAA7B;AAAA6B,IAAA,MAAAH;AAAAG,IAAA,MAAAyC;AAAAzC,IAAA,MAAAxB;AAAAwB,IAAA,MAAA0C;OAAAA,MAAA1C,EAAA;CAAA,IAAA2C;AAAA,KAAA3C,EAAA,QAAA2E,wBAAA3E,EAAA,QAAA6D,kBAAA7D,EAAA,QAAAhC,MAAAgC,EAAA,QAAAG,OAAAH,EAAA,QAAAzB,UAAAyB,EAAA,QAAA8B,MAAA9B,EAAA,QAAA0C,IAAA;AAtBJC,QAAA,oBAAC;GACMxC;GACDnC;GAAE,GACF6F;GACcc,kBAAAA;GAIhB,UAAA7C;GAEMvD;aAEPmE;IAWc;AAAA1C,IAAA,MAAA2E;AAAA3E,IAAA,MAAA6D;AAAA7D,IAAA,MAAAhC;AAAAgC,IAAA,MAAAG;AAAAH,IAAA,MAAAzB;AAAAyB,IAAA,MAAA8B;AAAA9B,IAAA,MAAA0C;AAAA1C,IAAA,MAAA2C;OAAAA,OAAA3C,EAAA;AAAA,QAvBjB2C;;AAlFG,SAAAc,OAAA7C,OAAA;AAAA,QA2BD,oBAAC;EAAgC,WAAAA,MAAKlD;YACnCkD,MAAKlD;IADGkD,MAAKnD,IAET;;AA7BN,SAAA8F,MAAAuB,OAAA;AAAA,QAyBazB,MAAG5F"}
@@ -0,0 +1,2 @@
1
+
2
+ import { CubeTagInputProps, TagInputPopoverTrigger, TagValidationResult, _TagInput } from "./TagInput.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -20,6 +20,12 @@ interface CubeTextInputBaseProps extends BaseProps, OuterStyleProps, BlockStyleP
20
20
  suffix?: ReactNode;
21
21
  /** Suffix position goes before or after the validation and loading statuses */
22
22
  suffixPosition?: 'before' | 'after';
23
+ /**
24
+ * Controls placed last in the suffix, after the validation and loading
25
+ * statuses and after `suffix` whatever its position, such as a popover
26
+ * trigger.
27
+ */
28
+ actions?: ReactNode;
23
29
  /** Whether the input is multiline */
24
30
  multiLine?: boolean;
25
31
  /** Whether the input should have autofocus */
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -161,7 +161,7 @@ const InputElement = tasty({
161
161
  * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).
162
162
  */
163
163
  function _TextInputBase(props, ref) {
164
- let { qa, mods, isInvalid, isValid, prefix, isDisabled, multiLine, autoFocus, inputProps, wrapperProps, inputRef, isLoading, loadingIndicator, value, inputStyles = {}, suffix, suffixPosition = "before", wrapperRef, rows = 1, size = "medium", autoComplete, autocomplete, icon, maxLength, minLength, form, resize, ...otherProps } = props;
164
+ let { qa, mods, isInvalid, isValid, prefix, isDisabled, multiLine, autoFocus, inputProps, wrapperProps, inputRef, isLoading, loadingIndicator, value, inputStyles = {}, suffix, suffixPosition = "before", actions, wrapperRef, rows = 1, size = "medium", autoComplete, autocomplete, icon, maxLength, minLength, form, resize, ...otherProps } = props;
165
165
  let styles = extractStyles(otherProps, PROP_STYLES);
166
166
  let type = otherProps.type;
167
167
  if (resize) inputStyles = {
@@ -210,7 +210,7 @@ function _TextInputBase(props, ref) {
210
210
  disabled: isDisabled,
211
211
  multiline: multiLine,
212
212
  prefix: !!prefix,
213
- suffix: showValidationIndicator || !!suffix,
213
+ suffix: showValidationIndicator || !!suffix || !!actions,
214
214
  ...mods
215
215
  }), [
216
216
  mods,
@@ -223,7 +223,8 @@ function _TextInputBase(props, ref) {
223
223
  isHovered,
224
224
  multiLine,
225
225
  prefix,
226
- suffix
226
+ suffix,
227
+ actions
227
228
  ]);
228
229
  const resolvedAutoComplete = autoComplete ?? autocomplete ?? inputProps.autoComplete;
229
230
  const textSecurityStyles = multiLine && type === "password" && inputProps.value?.length ? { fontFamily: "text-security-disc" } : {};
@@ -256,7 +257,7 @@ function _TextInputBase(props, ref) {
256
257
  maxLength,
257
258
  minLength
258
259
  }),
259
- showValidationIndicator || suffix ? /* @__PURE__ */ jsxs("div", {
260
+ showValidationIndicator || suffix || actions ? /* @__PURE__ */ jsxs("div", {
260
261
  "data-element": "Suffix",
261
262
  children: [
262
263
  suffixPosition === "before" ? suffix : null,
@@ -265,7 +266,8 @@ function _TextInputBase(props, ref) {
265
266
  isValid,
266
267
  isLoading
267
268
  }),
268
- suffixPosition === "after" ? suffix : null
269
+ suffixPosition === "after" ? suffix : null,
270
+ actions
269
271
  ]
270
272
  }) : null
271
273
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"TextInputBase.js","names":["createFocusableRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","COLOR_STYLES","ColorStyleProps","OUTER_STYLES","OuterStyleProps","Styles","tasty","forwardRef","ReactElement","ReactNode","RefObject","useImperativeHandle","useMemo","useRef","AriaNumberFieldProps","AriaTextFieldProps","useHover","FieldBaseProps","mergeProps","useCombinedRefs","useFocus","extractStyles","getValidationMods","hasValidationIndicator","ValidationIndicator","wrapWithField","Props","ADD_STYLES","$","display","placeContent","placeItems","gridRows","flow","gap","cursor","opacity","disabled","INPUT_WRAPPER_STYLES","position","gridColumns","prefix","suffix","fill","border","valid","invalid","focused","preset","radius","color","zIndex","boxSizing","transition","backgroundClip","height","multiline","$size","Prefix","Suffix","State","InputIcon","width","fontSize","ValidationIcon","InputWrapperElement","qa","styles","PROP_STYLES","DEFAULT_INPUT_STYLES","recipe","placeSelf","padding","textAlign","flexGrow","margin","resize","userSelect","Placeholder","InputElement","CubeTextInputBaseProps","Omit","validate","icon","suffixPosition","multiLine","autoFocus","inputProps","wrapperProps","inputRef","HTMLInputElement","HTMLTextAreaElement","wrapperRef","HTMLDivElement","isLoading","loadingIndicator","inputStyles","rows","size","autoComplete","autocomplete","CubeBufferedValueProps","isBuffered","_TextInputBase","props","ref","mods","isInvalid","isValid","isDisabled","value","maxLength","minLength","form","otherProps","type","ElementType","isFocused","focusProps","hoverProps","isHovered","domRef","select","current","getInputElement","showValidationIndicator","placeholder","modifiers","loadable","hovered","resolvedAutoComplete","hasTextSecurity","textSecurityStyles","length","fontFamily","textField","undefined","TextInputBase"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { createFocusableRef } from '@react-spectrum/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { extractStyles } from '../../../utils/styles';\nimport {\n getValidationMods,\n hasValidationIndicator,\n ValidationIndicator,\n wrapWithField,\n} from '../../form';\n\nimport type { Props } from '../../../props';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n },\n preset: 't3',\n radius: true,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nconst PROP_STYLES = [\n ...BASE_STYLES,\n ...OUTER_STYLES,\n ...BLOCK_STYLES,\n ...COLOR_STYLES,\n];\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: true,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nexport interface CubeTextInputBaseProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n BaseStyleProps,\n ColorStyleProps,\n Omit<AriaTextFieldProps, 'validate' | 'form' | 'name'>,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /** Direct input props */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** The loading status indicator */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction _TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n wrapperRef,\n rows = 1,\n size = 'medium',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n ...otherProps\n } = props;\n\n let styles = extractStyles(otherProps, PROP_STYLES);\n let type = otherProps.type;\n\n if (resize) {\n inputStyles = { ...inputStyles, resize };\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus({ isDisabled });\n let { hoverProps, isHovered } = useHover({ isDisabled });\n let domRef = useRef(null);\n\n inputRef = useCombinedRefs(inputRef);\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix,\n ...mods,\n }),\n [\n mods,\n isInvalid,\n isValid,\n showValidationIndicator,\n loadingIndicator,\n isFocused,\n isDisabled,\n isHovered,\n multiLine,\n prefix,\n suffix,\n ],\n );\n\n // `autoComplete` is the prop; `autocomplete` is the deprecated alias. Falling back to\n // `inputProps` matters as much as the aliasing: this attribute is applied after the merge, so a\n // bare `autoComplete={resolved}` would overwrite whatever the React Aria hook put there —\n // `useNumberField`'s own `off`, or an `inputProps={{ autoComplete }}` passed by the caller — with\n // `undefined` whenever neither prop is set.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const textField = (\n <InputWrapperElement\n ref={wrapperRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...wrapperProps}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeProps(inputProps, focusProps, hoverProps)}\n ref={inputRef}\n rows={multiLine ? rows : undefined}\n mods={modifiers}\n style={textSecurityStyles}\n data-autofocus={autoFocus ? '' : undefined}\n autoFocus={autoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={!!isDisabled}\n maxLength={maxLength}\n minLength={minLength}\n />\n {showValidationIndicator || suffix ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n {suffixPosition === 'after' ? suffix : null}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n\n return wrapWithField(textField, domRef, props);\n}\n\nconst TextInputBase = forwardRef(_TextInputBase);\n\nexport { TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"TextInputBase.js","names":["createFocusableRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","COLOR_STYLES","ColorStyleProps","OUTER_STYLES","OuterStyleProps","Styles","tasty","forwardRef","ReactElement","ReactNode","RefObject","useImperativeHandle","useMemo","useRef","AriaNumberFieldProps","AriaTextFieldProps","useHover","FieldBaseProps","mergeProps","useCombinedRefs","useFocus","extractStyles","getValidationMods","hasValidationIndicator","ValidationIndicator","wrapWithField","Props","ADD_STYLES","$","display","placeContent","placeItems","gridRows","flow","gap","cursor","opacity","disabled","INPUT_WRAPPER_STYLES","position","gridColumns","prefix","suffix","fill","border","valid","invalid","focused","preset","radius","color","zIndex","boxSizing","transition","backgroundClip","height","multiline","$size","Prefix","Suffix","State","InputIcon","width","fontSize","ValidationIcon","InputWrapperElement","qa","styles","PROP_STYLES","DEFAULT_INPUT_STYLES","recipe","placeSelf","padding","textAlign","flexGrow","margin","resize","userSelect","Placeholder","InputElement","CubeTextInputBaseProps","Omit","validate","icon","suffixPosition","actions","multiLine","autoFocus","inputProps","wrapperProps","inputRef","HTMLInputElement","HTMLTextAreaElement","wrapperRef","HTMLDivElement","isLoading","loadingIndicator","inputStyles","rows","size","autoComplete","autocomplete","CubeBufferedValueProps","isBuffered","_TextInputBase","props","ref","mods","isInvalid","isValid","isDisabled","value","maxLength","minLength","form","otherProps","type","ElementType","isFocused","focusProps","hoverProps","isHovered","domRef","select","current","getInputElement","showValidationIndicator","placeholder","modifiers","loadable","hovered","resolvedAutoComplete","hasTextSecurity","textSecurityStyles","length","fontFamily","textField","undefined","TextInputBase"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { createFocusableRef } from '@react-spectrum/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { extractStyles } from '../../../utils/styles';\nimport {\n getValidationMods,\n hasValidationIndicator,\n ValidationIndicator,\n wrapWithField,\n} from '../../form';\n\nimport type { Props } from '../../../props';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n },\n preset: 't3',\n radius: true,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nconst PROP_STYLES = [\n ...BASE_STYLES,\n ...OUTER_STYLES,\n ...BLOCK_STYLES,\n ...COLOR_STYLES,\n];\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: true,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nexport interface CubeTextInputBaseProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n BaseStyleProps,\n ColorStyleProps,\n Omit<AriaTextFieldProps, 'validate' | 'form' | 'name'>,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /**\n * Controls placed last in the suffix, after the validation and loading\n * statuses and after `suffix` whatever its position, such as a popover\n * trigger.\n */\n actions?: ReactNode;\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /** Direct input props */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** The loading status indicator */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction _TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n actions,\n wrapperRef,\n rows = 1,\n size = 'medium',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n ...otherProps\n } = props;\n\n let styles = extractStyles(otherProps, PROP_STYLES);\n let type = otherProps.type;\n\n if (resize) {\n inputStyles = { ...inputStyles, resize };\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus({ isDisabled });\n let { hoverProps, isHovered } = useHover({ isDisabled });\n let domRef = useRef(null);\n\n inputRef = useCombinedRefs(inputRef);\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix || !!actions,\n ...mods,\n }),\n [\n mods,\n isInvalid,\n isValid,\n showValidationIndicator,\n loadingIndicator,\n isFocused,\n isDisabled,\n isHovered,\n multiLine,\n prefix,\n suffix,\n actions,\n ],\n );\n\n // `autoComplete` is the prop; `autocomplete` is the deprecated alias. Falling back to\n // `inputProps` matters as much as the aliasing: this attribute is applied after the merge, so a\n // bare `autoComplete={resolved}` would overwrite whatever the React Aria hook put there —\n // `useNumberField`'s own `off`, or an `inputProps={{ autoComplete }}` passed by the caller — with\n // `undefined` whenever neither prop is set.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const textField = (\n <InputWrapperElement\n ref={wrapperRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...wrapperProps}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeProps(inputProps, focusProps, hoverProps)}\n ref={inputRef}\n rows={multiLine ? rows : undefined}\n mods={modifiers}\n style={textSecurityStyles}\n data-autofocus={autoFocus ? '' : undefined}\n autoFocus={autoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={!!isDisabled}\n maxLength={maxLength}\n minLength={minLength}\n />\n {showValidationIndicator || suffix || actions ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n {suffixPosition === 'after' ? suffix : null}\n {actions}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n\n return wrapWithField(textField, domRef, props);\n}\n\nconst TextInputBase = forwardRef(_TextInputBase);\n\nexport { TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useEffect, useLayoutEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { ItemActionIcon } from "../actions/ItemActionsWrapper.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { Fragment, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { formatColor, getContrastingColor, toHex } from "./color.js";
4
4
  import { CHANNELS, COLOR_SPACES, COLOR_SPACE_HINTS, COLOR_SPACE_LABELS } from "./channels.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { maxChroma, normalizeHue, oklchToOkhsl } from "../../../utils/colors.js";
3
3
  import { fromOkhst, fromRgb, isAchromatic, toHex, toOkhst, toOklch, toRgb } from "./color.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { anyNaN, clamp, maxChroma, normalizeHue, oklchToOkhsl, parseColorFunction, readComponent, readHue, rgbFromSrgb } from "../../../utils/colors.js";
3
3
  import { contrastRatioFromLuminance, formatHsl, formatOkhsl, formatOkhst, formatOklch, formatRgb, hslToSrgb, okhslToLinearSrgb, okhslToOkhst, okhslToOklch, okhslToSrgb, okhstToOkhsl, parseHexAlpha, relativeLuminanceFromLinearRgb, srgbToHex, srgbToOkhsl } from "@tenphi/glaze";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/fields/color/context.ts
@@ -56,6 +56,8 @@ import { AriaSwitchProps, CubeSwitchProps, _Switch, useSwitch } from "./Switch/S
56
56
  import "./Select/index.js";
57
57
  import { ComboBox, CubeComboBoxProps } from "./ComboBox/ComboBox.js";
58
58
  import "./ComboBox/index.js";
59
+ import { CubeTagInputProps, TagInputPopoverTrigger, TagValidationResult, _TagInput } from "./TagInput/TagInput.js";
60
+ import "./TagInput/index.js";
59
61
  import { CubeSearchComboBoxProps, SearchComboBox } from "./SearchComboBox/SearchComboBox.js";
60
62
  import "./SearchComboBox/index.js";
61
63
  import { CubeFilterListBoxProps, FilterListBox } from "./FilterListBox/FilterListBox.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
4
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
@@ -86,6 +86,17 @@ const DescriptionElement = tasty({
86
86
  }
87
87
  });
88
88
  /**
89
+ * A flex box, not a block: in a block an inline-level suffix such as a `Badge`
90
+ * or a `Tag` sits in a line box whose strut adds a pixel under it, so the label
91
+ * row grew from 20px to 21px and its field stepped down out of line. Only a
92
+ * single element is a direct flex item; mixed content is wrapped in a `<span>`,
93
+ * because a flex box drops the whitespace between its items.
94
+ */
95
+ const LabelSuffixElement = tasty({ styles: {
96
+ display: "flex",
97
+ placeItems: "center"
98
+ } });
99
+ /**
89
100
  * A wrapper for form fields to provide additional decoration for inputs.
90
101
  * @internal Do not use this component directly.
91
102
  */
@@ -133,7 +144,7 @@ const FieldWrapper = forwardRef(function FieldWrapper(props, ref) {
133
144
  necessityIndicator
134
145
  })] }),
135
146
  labelTooltip ? /* @__PURE__ */ jsx(InfoBadge, { tooltip: labelTooltip }) : null,
136
- labelSuffix ? /* @__PURE__ */ jsx("div", { children: labelSuffix }) : null
147
+ labelSuffix ? /* @__PURE__ */ jsx(LabelSuffixElement, { children: wrapNodeIfPlain(labelSuffix, () => /* @__PURE__ */ jsx("span", { children: labelSuffix })) }) : null
137
148
  ]
138
149
  }), extra && /* @__PURE__ */ jsx(_Text, {
139
150
  preset: "t3",
@@ -1 +1 @@
1
- {"version":3,"file":"FieldWrapper.js","names":["tasty","forwardRef","useI18n","isDevEnv","mergeProps","wrapNodeIfPlain","InfoBadge","Text","Flex","Space","Label","NecessityIndicatorMark","warnAboutLegacyTooltip","getValidationMods","CubeFieldWrapperProps","FieldElement","qa","styles","display","width","gridColumns","gap","placeItems","placeContent","LabelArea","margin","InputArea","flow","gridColumn","displayName","MessageElement","preset","color","invalid","valid","disabled","textAlign","userSelect","DescriptionElement","FieldWrapper","props","ref","$","_c","as","labelPosition","t0","label","extra","isRequired","isOptional","isDisabled","labelStyles","necessityIndicator","labelProps","fieldProps","message","messageStyles","description","errorMessage","Component","isInvalid","isValid","requiredMark","t1","labelTooltip","isHidden","labelSuffix","children","undefined","t","showRequiredMark","showOptionalNote","t2","optionalNote","t3","labelComponent","t4","createDescriptionComponent","t5","descriptionForLabel","t6","descriptionForInput","t7","t8","t9","t10","t11","mods","displayMessage","isErrorMessage","t12","mergedFieldProps","t13","t14","t15","t16","t17","t18"],"sources":["../../../../src/components/form/FieldWrapper/FieldWrapper.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { mergeProps, wrapNodeIfPlain } from '../../../utils/react/index';\nimport { InfoBadge } from '../../content/InfoBadge';\nimport { Text } from '../../content/Text';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { Label, NecessityIndicatorMark } from '../Label';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { getValidationMods } from '../validation/index';\n\nimport { CubeFieldWrapperProps } from './types';\n\nconst FieldElement = tasty({\n qa: 'Field',\n styles: {\n display: 'grid',\n width: 'auto',\n gridColumns: {\n '': 'minmax(0, 1fr)',\n 'has-sider': '($full-label-width, auto) minmax(0, 1fr)',\n 'has-split': 'auto auto',\n },\n gap: 0,\n placeItems: {\n '': 'baseline stretch',\n 'has-split': 'center',\n },\n placeContent: {\n '': 'initial',\n 'has-split': 'space-between',\n },\n '$full-label-width': '($label-width + 1x)',\n\n LabelArea: {\n display: 'block',\n width: {\n '': 'initial',\n 'has-sider': '$label-width',\n },\n margin: {\n '': '1x bottom',\n 'has-sider': '1x right',\n 'has-split': '1x right',\n ':empty': '0',\n },\n },\n\n InputArea: {\n display: 'block',\n flow: 'column',\n gap: '.5x',\n gridColumn: {\n '': 'initial',\n 'has-sider': 2,\n 'has-split': 2,\n },\n },\n },\n});\n\nif (isDevEnv()) {\n FieldElement.displayName = 'FieldWrapperElement';\n}\n\nconst MessageElement = tasty({\n qa: 'FieldMessage',\n styles: {\n preset: 't4',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n valid: '#success-text',\n disabled: '#dark.40',\n },\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\nconst DescriptionElement = tasty({\n qa: 'FieldDescription',\n styles: {\n preset: 't4',\n color: '#dark-03',\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\n/**\n * A wrapper for form fields to provide additional decoration for inputs.\n * @internal Do not use this component directly.\n */\nexport const FieldWrapper = forwardRef(function FieldWrapper(\n props: CubeFieldWrapperProps,\n ref,\n) {\n const {\n as,\n labelPosition = 'top',\n label,\n extra,\n styles,\n isRequired,\n isOptional,\n isDisabled,\n labelStyles,\n necessityIndicator,\n labelProps,\n fieldProps,\n message,\n messageStyles,\n description,\n errorMessage,\n Component,\n isInvalid,\n isValid,\n requiredMark = true,\n labelTooltip,\n isHidden,\n labelSuffix,\n children,\n } = props;\n\n const { t } = useI18n();\n\n warnAboutLegacyTooltip(props);\n\n // `requiredMark={false}` drops the required marker, but the field is still\n // required — so the optional note has to keep losing to it rather than\n // stepping into the gap and labelling a required field optional.\n const showRequiredMark = !!requiredMark && !!isRequired;\n const showOptionalNote = !isRequired && !!isOptional;\n\n // The `aria-label` below is what the input is named by, so it shadows the\n // label's own content — including the `(optional)` note, which is the only\n // thing saying the field is optional. A required field needs no such help:\n // `aria-required` on the input already announces it.\n const optionalNote = showOptionalNote\n ? t('form.optional', '(optional)')\n : null;\n\n const labelComponent = label ? (\n <Label\n as={as === 'label' ? 'div' : 'label'}\n styles={labelStyles}\n labelPosition={labelPosition}\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isInvalid={isInvalid}\n isValid={isValid}\n aria-label={\n typeof label === 'string'\n ? optionalNote\n ? `${label} ${optionalNote}`\n : label\n : undefined\n }\n {...labelProps}\n >\n <Flex placeContent=\"baseline space-between\" width=\"100%\">\n <Space placeItems=\"center\" gap=\"0.75x\">\n <div>\n {label}\n {/*\n `Label` can only append the marker itself when its child is plain\n text, and the tree below is not — so it is placed here, against\n the label text, rather than after the full-width `Flex`.\n */}\n <NecessityIndicatorMark\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n necessityIndicator={necessityIndicator}\n />\n </div>\n\n {labelTooltip ? <InfoBadge tooltip={labelTooltip} /> : null}\n\n {labelSuffix ? <div>{labelSuffix}</div> : null}\n </Space>\n\n {extra && <Text preset=\"t3\">{extra}</Text>}\n </Flex>\n </Label>\n ) : null;\n\n // Create description component with proper styling\n const createDescriptionComponent = () => {\n if (!description) return null;\n\n return (\n <DescriptionElement data-element=\"Description\">\n {wrapNodeIfPlain(description, () => (\n <span>{description}</span>\n ))}\n </DescriptionElement>\n );\n };\n\n // Description positioning based on label position\n const descriptionForLabel =\n labelPosition === 'side' || labelPosition === 'split'\n ? createDescriptionComponent()\n : null;\n const descriptionForInput =\n labelPosition === 'top' ? createDescriptionComponent() : null;\n\n const mods = {\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n 'has-description': !!description,\n ...getValidationMods({ isInvalid, isValid }),\n };\n\n // Determine which message to display (errorMessage takes precedence, then message for backward compatibility)\n const displayMessage = errorMessage || message;\n const isErrorMessage = !!errorMessage;\n\n // Merge fieldProps with styles to ensure both are applied\n const mergedFieldProps = styles\n ? mergeProps(fieldProps, { styles })\n : fieldProps;\n\n return (\n <>\n <FieldElement\n ref={ref}\n as={as ?? 'div'}\n mods={mods}\n isHidden={isHidden}\n {...mergedFieldProps}\n >\n {labelComponent || descriptionForLabel ? (\n <div data-element=\"LabelArea\">\n {labelComponent}\n {descriptionForLabel}\n </div>\n ) : null}\n <div data-element=\"InputArea\">\n {Component}\n {descriptionForInput}\n {displayMessage && !isDisabled && (\n <MessageElement\n mods={{\n ...mods,\n // Force invalid state for errorMessage regardless of the validation state\n invalid: isErrorMessage || !!isInvalid,\n }}\n styles={messageStyles}\n role={isErrorMessage || isInvalid ? 'alert' : undefined}\n >\n {displayMessage}\n </MessageElement>\n )}\n </div>\n </FieldElement>\n {children}\n </>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"FieldWrapper.js","names":["tasty","forwardRef","useI18n","isDevEnv","mergeProps","wrapNodeIfPlain","InfoBadge","Text","Flex","Space","Label","NecessityIndicatorMark","warnAboutLegacyTooltip","getValidationMods","CubeFieldWrapperProps","FieldElement","qa","styles","display","width","gridColumns","gap","placeItems","placeContent","LabelArea","margin","InputArea","flow","gridColumn","displayName","MessageElement","preset","color","invalid","valid","disabled","textAlign","userSelect","DescriptionElement","LabelSuffixElement","FieldWrapper","props","ref","$","_c","as","labelPosition","t0","label","extra","isRequired","isOptional","isDisabled","labelStyles","necessityIndicator","labelProps","fieldProps","message","messageStyles","description","errorMessage","Component","isInvalid","isValid","requiredMark","t1","labelTooltip","isHidden","labelSuffix","children","undefined","t","showRequiredMark","showOptionalNote","t2","optionalNote","t3","labelComponent","t4","createDescriptionComponent","t5","descriptionForLabel","t6","descriptionForInput","t7","t8","t9","t10","t11","mods","displayMessage","isErrorMessage","t12","mergedFieldProps","t13","t14","t15","t16","t17","t18"],"sources":["../../../../src/components/form/FieldWrapper/FieldWrapper.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { mergeProps, wrapNodeIfPlain } from '../../../utils/react/index';\nimport { InfoBadge } from '../../content/InfoBadge';\nimport { Text } from '../../content/Text';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { Label, NecessityIndicatorMark } from '../Label';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { getValidationMods } from '../validation/index';\n\nimport { CubeFieldWrapperProps } from './types';\n\nconst FieldElement = tasty({\n qa: 'Field',\n styles: {\n display: 'grid',\n width: 'auto',\n gridColumns: {\n '': 'minmax(0, 1fr)',\n 'has-sider': '($full-label-width, auto) minmax(0, 1fr)',\n 'has-split': 'auto auto',\n },\n gap: 0,\n placeItems: {\n '': 'baseline stretch',\n 'has-split': 'center',\n },\n placeContent: {\n '': 'initial',\n 'has-split': 'space-between',\n },\n '$full-label-width': '($label-width + 1x)',\n\n LabelArea: {\n display: 'block',\n width: {\n '': 'initial',\n 'has-sider': '$label-width',\n },\n margin: {\n '': '1x bottom',\n 'has-sider': '1x right',\n 'has-split': '1x right',\n ':empty': '0',\n },\n },\n\n InputArea: {\n display: 'block',\n flow: 'column',\n gap: '.5x',\n gridColumn: {\n '': 'initial',\n 'has-sider': 2,\n 'has-split': 2,\n },\n },\n },\n});\n\nif (isDevEnv()) {\n FieldElement.displayName = 'FieldWrapperElement';\n}\n\nconst MessageElement = tasty({\n qa: 'FieldMessage',\n styles: {\n preset: 't4',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n valid: '#success-text',\n disabled: '#dark.40',\n },\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\nconst DescriptionElement = tasty({\n qa: 'FieldDescription',\n styles: {\n preset: 't4',\n color: '#dark-03',\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\n/**\n * A flex box, not a block: in a block an inline-level suffix such as a `Badge`\n * or a `Tag` sits in a line box whose strut adds a pixel under it, so the label\n * row grew from 20px to 21px and its field stepped down out of line. Only a\n * single element is a direct flex item; mixed content is wrapped in a `<span>`,\n * because a flex box drops the whitespace between its items.\n */\nconst LabelSuffixElement = tasty({\n styles: {\n display: 'flex',\n placeItems: 'center',\n },\n});\n\n/**\n * A wrapper for form fields to provide additional decoration for inputs.\n * @internal Do not use this component directly.\n */\nexport const FieldWrapper = forwardRef(function FieldWrapper(\n props: CubeFieldWrapperProps,\n ref,\n) {\n const {\n as,\n labelPosition = 'top',\n label,\n extra,\n styles,\n isRequired,\n isOptional,\n isDisabled,\n labelStyles,\n necessityIndicator,\n labelProps,\n fieldProps,\n message,\n messageStyles,\n description,\n errorMessage,\n Component,\n isInvalid,\n isValid,\n requiredMark = true,\n labelTooltip,\n isHidden,\n labelSuffix,\n children,\n } = props;\n\n const { t } = useI18n();\n\n warnAboutLegacyTooltip(props);\n\n // `requiredMark={false}` drops the required marker, but the field is still\n // required — so the optional note has to keep losing to it rather than\n // stepping into the gap and labelling a required field optional.\n const showRequiredMark = !!requiredMark && !!isRequired;\n const showOptionalNote = !isRequired && !!isOptional;\n\n // The `aria-label` below is what the input is named by, so it shadows the\n // label's own content — including the `(optional)` note, which is the only\n // thing saying the field is optional. A required field needs no such help:\n // `aria-required` on the input already announces it.\n const optionalNote = showOptionalNote\n ? t('form.optional', '(optional)')\n : null;\n\n const labelComponent = label ? (\n <Label\n as={as === 'label' ? 'div' : 'label'}\n styles={labelStyles}\n labelPosition={labelPosition}\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isInvalid={isInvalid}\n isValid={isValid}\n aria-label={\n typeof label === 'string'\n ? optionalNote\n ? `${label} ${optionalNote}`\n : label\n : undefined\n }\n {...labelProps}\n >\n <Flex placeContent=\"baseline space-between\" width=\"100%\">\n <Space placeItems=\"center\" gap=\"0.75x\">\n <div>\n {label}\n {/*\n `Label` can only append the marker itself when its child is plain\n text, and the tree below is not — so it is placed here, against\n the label text, rather than after the full-width `Flex`.\n */}\n <NecessityIndicatorMark\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n necessityIndicator={necessityIndicator}\n />\n </div>\n\n {labelTooltip ? <InfoBadge tooltip={labelTooltip} /> : null}\n\n {labelSuffix ? (\n <LabelSuffixElement>\n {wrapNodeIfPlain(labelSuffix, () => (\n <span>{labelSuffix}</span>\n ))}\n </LabelSuffixElement>\n ) : null}\n </Space>\n\n {extra && <Text preset=\"t3\">{extra}</Text>}\n </Flex>\n </Label>\n ) : null;\n\n // Create description component with proper styling\n const createDescriptionComponent = () => {\n if (!description) return null;\n\n return (\n <DescriptionElement data-element=\"Description\">\n {wrapNodeIfPlain(description, () => (\n <span>{description}</span>\n ))}\n </DescriptionElement>\n );\n };\n\n // Description positioning based on label position\n const descriptionForLabel =\n labelPosition === 'side' || labelPosition === 'split'\n ? createDescriptionComponent()\n : null;\n const descriptionForInput =\n labelPosition === 'top' ? createDescriptionComponent() : null;\n\n const mods = {\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n 'has-description': !!description,\n ...getValidationMods({ isInvalid, isValid }),\n };\n\n // Determine which message to display (errorMessage takes precedence, then message for backward compatibility)\n const displayMessage = errorMessage || message;\n const isErrorMessage = !!errorMessage;\n\n // Merge fieldProps with styles to ensure both are applied\n const mergedFieldProps = styles\n ? mergeProps(fieldProps, { styles })\n : fieldProps;\n\n return (\n <>\n <FieldElement\n ref={ref}\n as={as ?? 'div'}\n mods={mods}\n isHidden={isHidden}\n {...mergedFieldProps}\n >\n {labelComponent || descriptionForLabel ? (\n <div data-element=\"LabelArea\">\n {labelComponent}\n {descriptionForLabel}\n </div>\n ) : null}\n <div data-element=\"InputArea\">\n {Component}\n {descriptionForInput}\n {displayMessage && !isDisabled && (\n <MessageElement\n mods={{\n ...mods,\n // Force invalid state for errorMessage regardless of the validation state\n invalid: isErrorMessage || !!isInvalid,\n }}\n styles={messageStyles}\n role={isErrorMessage || isInvalid ? 'alert' : undefined}\n >\n {displayMessage}\n </MessageElement>\n )}\n </div>\n </FieldElement>\n {children}\n </>\n );\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { warn } from "../../../utils/warnings.js";
4
4
  import { useValidationProps } from "../validation/use-validation-props.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Provider, useProviderProps } from "../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
4
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { useProviderProps } from "../../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../../provider.js";
3
3
  import { Button } from "../../../actions/Button/Button.js";
4
4
  import { isModernFormController } from "../backend.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { ModernControllerContext } from "./modern/context.js";
4
4
  import { FormContext } from "./Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  //#region src/components/form/Form/backend.ts
3
3
  /**
4
4
  * Nominal branding for the two Form backends (modernization plan §5.1).
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useFormControllerContext } from "./modern/context.js";
3
3
  import { useForm } from "./use-form.js";
4
4
  import { FormContext, FormScopeMask, _Form, useFormProps } from "./Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
3
3
  import { useProviderProps } from "../../../../provider.js";
4
4
  import { Button } from "../../../actions/Button/Button.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/form/Form/modern/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { FORM_BACKEND, isModernFormController } from "../backend.js";
3
3
  import { createFormField } from "./field.js";
4
4
  import { createFormStore } from "./store.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { getFieldKey, hasPath, normalizePath, readPath } from "./values.js";
3
3
  import { getControllerInternals } from "./controller.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { normalizePath } from "./values.js";
3
3
 
4
4
  //#region src/components/form/Form/modern/field.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
3
3
  import { ModernControllerContext } from "./context.js";
4
4
  import { getFieldKey, normalizePath, readPath } from "./values.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { FORM_BACKEND } from "../backend.js";
3
3
  import { createValueSnapshotter, defineValue, formValueEqual, freezeContainer, getFieldKey, hasPath, isPlainObject, normalizePath, pathValueChanged, readPath, readonlySet, sameMembers, writePath } from "./values.js";
4
4
  import { rulesSignature, runRules } from "./validation.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { applyRule } from "../validation.js";
3
3
 
4
4
  //#region src/components/form/Form/modern/validation.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  //#region src/components/form/Form/modern/values.ts
3
3
  const ownedContainers = /* @__PURE__ */ new WeakSet();
4
4
  function freezeContainer(value) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { isModernFormController } from "../backend.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { warn } from "../../../../utils/warnings.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { useIsFirstRender } from "../../../../_internal/hooks/use-is-first-render.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { FORM_BACKEND, isModernFormController, modernBackendUnavailableError } from "./backend.js";
3
3
  import { applyRules } from "./validation.js";
4
4
  import { dotizeConvert } from "../../../utils/dotize.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { validate } from "email-validator";
3
3
  import validUrl from "valid-url";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useProviderProps } from "../../provider.js";
4
4
  import { useI18n } from "../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bada6bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-09a7efe | Cube Dev Team */
2
2
  import { warn } from "../../utils/warnings.js";
3
3
 
4
4
  //#region src/components/form/legacy-tooltip.ts