@cube-dev/ui-kit 0.193.1 → 0.194.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (671) hide show
  1. package/dist/CHANGELOG.md +28 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.d.ts +25 -12
  12. package/dist/components/CollectionItem.js +59 -4
  13. package/dist/components/CollectionItem.js.map +1 -1
  14. package/dist/components/GlobalStyles.js +1 -1
  15. package/dist/components/GridProvider.js +1 -1
  16. package/dist/components/HiddenInput.js +1 -1
  17. package/dist/components/Root.js +2 -2
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Banner/Banner.d.ts +1 -1
  20. package/dist/components/actions/Banner/Banner.js +6 -6
  21. package/dist/components/actions/Banner/Banner.js.map +1 -1
  22. package/dist/components/actions/Button/Button.js +1 -1
  23. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +28 -25
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  26. package/dist/components/actions/ButtonSplit/context.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +7 -7
  28. package/dist/components/actions/CommandMenu/CommandMenu.js +232 -239
  29. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  30. package/dist/components/actions/CommandMenu/styled.js +1 -1
  31. package/dist/components/actions/ItemAction/ItemAction.js +26 -22
  32. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  33. package/dist/components/actions/ItemActionContext.d.ts +3 -0
  34. package/dist/components/actions/ItemActionContext.js +15 -13
  35. package/dist/components/actions/ItemActionContext.js.map +1 -1
  36. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  37. package/dist/components/actions/ItemButton/ItemButton.d.ts +2 -2
  38. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  39. package/dist/components/actions/Link/Link.js +1 -1
  40. package/dist/components/actions/Menu/Menu.d.ts +9 -9
  41. package/dist/components/actions/Menu/Menu.js +88 -64
  42. package/dist/components/actions/Menu/Menu.js.map +1 -1
  43. package/dist/components/actions/Menu/MenuCollectionItem.d.ts +18 -0
  44. package/dist/components/actions/Menu/MenuCollectionItem.js +36 -0
  45. package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -0
  46. package/dist/components/actions/Menu/MenuItem.d.ts +5 -0
  47. package/dist/components/actions/Menu/MenuItem.js +402 -116
  48. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  49. package/dist/components/actions/Menu/MenuSection.d.ts +3 -1
  50. package/dist/components/actions/Menu/MenuSection.js +31 -33
  51. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  52. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  53. package/dist/components/actions/Menu/SubMenuTrigger.d.ts +1 -1
  54. package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
  55. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  56. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  57. package/dist/components/actions/Menu/context.js +1 -1
  58. package/dist/components/actions/Menu/index.d.ts +1 -0
  59. package/dist/components/actions/Menu/styled.js +1 -1
  60. package/dist/components/actions/actions-run.js +1 -1
  61. package/dist/components/actions/index.d.ts +3 -2
  62. package/dist/components/actions/index.js +1 -1
  63. package/dist/components/actions/use-action.js +60 -36
  64. package/dist/components/actions/use-action.js.map +1 -1
  65. package/dist/components/actions/use-anchored-menu.js +1 -1
  66. package/dist/components/actions/use-context-menu.js +1 -1
  67. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  68. package/dist/components/content/Alert/Alert.js +1 -1
  69. package/dist/components/content/Alert/use-alert.js +1 -1
  70. package/dist/components/content/Avatar/Avatar.js +1 -1
  71. package/dist/components/content/Badge/Badge.js +1 -1
  72. package/dist/components/content/Card/Card.js +1 -1
  73. package/dist/components/content/Content.js +1 -1
  74. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  75. package/dist/components/content/CopySnippet/CopySnippet.d.ts +19 -19
  76. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  77. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  78. package/dist/components/content/Divider.js +1 -1
  79. package/dist/components/content/Footer.js +1 -1
  80. package/dist/components/content/Header.js +1 -1
  81. package/dist/components/content/HotKeys/HotKeys.js +44 -33
  82. package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
  83. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  84. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  85. package/dist/components/content/Item/Item.d.ts +7 -7
  86. package/dist/components/content/Item/Item.js +205 -67
  87. package/dist/components/content/Item/Item.js.map +1 -1
  88. package/dist/components/content/Item/ItemWithNativeLinks.js +314 -0
  89. package/dist/components/content/Item/ItemWithNativeLinks.js.map +1 -0
  90. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  91. package/dist/components/content/ItemCard/ItemCard.d.ts +1 -1
  92. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  93. package/dist/components/content/Layout/GridLayout.js +1 -1
  94. package/dist/components/content/Layout/Layout.js +1 -1
  95. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  96. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  97. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  98. package/dist/components/content/Layout/LayoutContent.js +1 -1
  99. package/dist/components/content/Layout/LayoutContext.js +1 -1
  100. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  101. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  102. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  103. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  104. package/dist/components/content/Layout/LayoutPane.js +18 -15
  105. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  106. package/dist/components/content/Layout/LayoutPanel.js +41 -46
  107. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  108. package/dist/components/content/Layout/LayoutPanelHeader.js +2 -2
  109. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  110. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  111. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  112. package/dist/components/content/Layout/index.js +1 -1
  113. package/dist/components/content/Layout/utils.js +1 -1
  114. package/dist/components/content/Paragraph.js +1 -1
  115. package/dist/components/content/Placeholder/Placeholder.js +77 -70
  116. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  117. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  118. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  119. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  120. package/dist/components/content/Result/Result.js +5 -5
  121. package/dist/components/content/Result/Result.js.map +1 -1
  122. package/dist/components/content/Skeleton/Skeleton.js +18 -19
  123. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  124. package/dist/components/content/Tag/Tag.js +2 -2
  125. package/dist/components/content/Text.d.ts +14 -14
  126. package/dist/components/content/Text.js +1 -1
  127. package/dist/components/content/TextItem/TextItem.js +1 -1
  128. package/dist/components/content/Title.js +66 -48
  129. package/dist/components/content/Title.js.map +1 -1
  130. package/dist/components/content/Tree/Tree.js +6 -3
  131. package/dist/components/content/Tree/Tree.js.map +1 -1
  132. package/dist/components/content/Tree/TreeNode.js +1 -1
  133. package/dist/components/content/Tree/styled.js +1 -1
  134. package/dist/components/content/Tree/tree-index.js +1 -1
  135. package/dist/components/content/Tree/types.d.ts +2 -2
  136. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  137. package/dist/components/content/Tree/use-load-data.js +1 -1
  138. package/dist/components/content/highlightText.js +1 -1
  139. package/dist/components/content/use-auto-tooltip.js +1 -1
  140. package/dist/components/data/DataTable/DataTable.js +1 -1
  141. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  142. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  143. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  144. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  145. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  146. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  147. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  148. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  149. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  150. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  151. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  152. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  153. package/dist/components/data/TableBase/RowCollection.js +1 -1
  154. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  155. package/dist/components/data/TableBase/TableRow.js +1 -1
  156. package/dist/components/data/TableBase/TableView.js +39 -19
  157. package/dist/components/data/TableBase/TableView.js.map +1 -1
  158. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  159. package/dist/components/data/TableBase/column-header.js +1 -1
  160. package/dist/components/data/TableBase/column-menu.js +1 -1
  161. package/dist/components/data/TableBase/column-styles.js +1 -1
  162. package/dist/components/data/TableBase/column-tint.js +1 -1
  163. package/dist/components/data/TableBase/row-menu.js +1 -1
  164. package/dist/components/data/TableBase/styled.d.ts +1 -1
  165. package/dist/components/data/TableBase/styled.js +14 -1
  166. package/dist/components/data/TableBase/styled.js.map +1 -1
  167. package/dist/components/data/TableBase/table-tree.js +1 -1
  168. package/dist/components/data/TableBase/types.js +1 -1
  169. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  170. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  171. package/dist/components/data/TableBase/use-column-order.js +1 -1
  172. package/dist/components/data/TableBase/use-column-window.js +219 -0
  173. package/dist/components/data/TableBase/use-column-window.js.map +1 -0
  174. package/dist/components/data/TableBase/use-container-width.js +1 -1
  175. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  176. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  177. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  178. package/dist/components/data/TableBase/use-table-search.js +1 -1
  179. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  180. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  181. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  182. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  183. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +32 -19
  184. package/dist/components/data/TableBase/use-table-tooltip-refresh.js.map +1 -1
  185. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  186. package/dist/components/fields/Checkbox/Checkbox.js +3 -1
  187. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  188. package/dist/components/fields/Checkbox/CheckboxGroup.js +13 -13
  189. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  190. package/dist/components/fields/Checkbox/context.js +1 -1
  191. package/dist/components/fields/ColorInput/ColorInput.js +32 -29
  192. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  193. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +2 -0
  194. package/dist/components/fields/ColorPicker/ColorPicker.js +8 -5
  195. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  196. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  197. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +6 -3
  198. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  199. package/dist/components/fields/ComboBox/ComboBox.js +41 -30
  200. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  201. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  202. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  203. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  204. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  205. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  206. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  207. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  208. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  209. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  210. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  211. package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
  212. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +246 -238
  213. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  214. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  215. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  216. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  217. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  218. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  219. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  220. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  221. package/dist/components/fields/DatePicker/period.js +1 -1
  222. package/dist/components/fields/DatePicker/props.js +1 -1
  223. package/dist/components/fields/DatePicker/utils.js +1 -1
  224. package/dist/components/fields/FileInput/FileInput.js +22 -2
  225. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  226. package/dist/components/fields/FilterListBox/FilterListBox.js +5 -1
  227. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  228. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +4 -2
  229. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -2
  230. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  231. package/dist/components/fields/Input/Input.js +1 -1
  232. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  233. package/dist/components/fields/ListBox/ListBox.js +8 -7
  234. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  235. package/dist/components/fields/ListBox/optionId.js +1 -1
  236. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +36 -32
  237. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  238. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  239. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  240. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  241. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  242. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  243. package/dist/components/fields/Picker/Picker.d.ts +4 -2
  244. package/dist/components/fields/Picker/Picker.js +3 -2
  245. package/dist/components/fields/Picker/Picker.js.map +1 -1
  246. package/dist/components/fields/RadioGroup/Radio.d.ts +24 -24
  247. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  248. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  249. package/dist/components/fields/RadioGroup/context.js +1 -1
  250. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  251. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  252. package/dist/components/fields/Select/Select.d.ts +4 -4
  253. package/dist/components/fields/Select/Select.js +35 -32
  254. package/dist/components/fields/Select/Select.js.map +1 -1
  255. package/dist/components/fields/Slider/Gradation.js +1 -1
  256. package/dist/components/fields/Slider/HueSlider.js +1 -1
  257. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  258. package/dist/components/fields/Slider/Slider.js +1 -1
  259. package/dist/components/fields/Slider/SliderBase.js +1 -1
  260. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  261. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  262. package/dist/components/fields/Slider/elements.js +1 -1
  263. package/dist/components/fields/Slider/index.js +1 -1
  264. package/dist/components/fields/Switch/Switch.js +1 -1
  265. package/dist/components/fields/TagInput/TagInput.js +1 -1
  266. package/dist/components/fields/TagInput/TagList.js +1 -1
  267. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  268. package/dist/components/fields/TagInput/useTagError.js +1 -1
  269. package/dist/components/fields/TextArea/TextArea.js +1 -1
  270. package/dist/components/fields/TextInput/TextInput.js +1 -1
  271. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  272. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  273. package/dist/components/fields/TextInputMapper/TextInputMapper.js +13 -5
  274. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  275. package/dist/components/fields/TriggerActions.js +1 -1
  276. package/dist/components/fields/color/ColorPanel.js +62 -53
  277. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  278. package/dist/components/fields/color/channels.js +1 -1
  279. package/dist/components/fields/color/color.js +1 -1
  280. package/dist/components/fields/color/context.js +1 -1
  281. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +1 -0
  282. package/dist/components/form/FieldWrapper/FieldWrapper.js +133 -109
  283. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  284. package/dist/components/form/FieldWrapper/field-description.js +102 -0
  285. package/dist/components/form/FieldWrapper/field-description.js.map +1 -0
  286. package/dist/components/form/FieldWrapper/types.d.ts +6 -1
  287. package/dist/components/form/Form/Field.js +1 -1
  288. package/dist/components/form/Form/Form.js +1 -1
  289. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  290. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  291. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  292. package/dist/components/form/Form/SubmitError.js +1 -1
  293. package/dist/components/form/Form/backend.js +1 -1
  294. package/dist/components/form/Form/index.js +1 -1
  295. package/dist/components/form/Form/modern/actions.js +1 -1
  296. package/dist/components/form/Form/modern/context.js +1 -1
  297. package/dist/components/form/Form/modern/controller.js +1 -1
  298. package/dist/components/form/Form/modern/field-binding.js +1 -1
  299. package/dist/components/form/Form/modern/field.js +1 -1
  300. package/dist/components/form/Form/modern/react.js +1 -1
  301. package/dist/components/form/Form/modern/store.js +1 -1
  302. package/dist/components/form/Form/modern/validation.js +1 -1
  303. package/dist/components/form/Form/modern/values.js +1 -1
  304. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  305. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  306. package/dist/components/form/Form/use-field/use-field-props.js +17 -4
  307. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  308. package/dist/components/form/Form/use-field/use-field.js +1 -1
  309. package/dist/components/form/Form/use-form.js +1 -1
  310. package/dist/components/form/Form/validation.js +1 -1
  311. package/dist/components/form/Label.js +27 -24
  312. package/dist/components/form/Label.js.map +1 -1
  313. package/dist/components/form/legacy-tooltip.js +1 -1
  314. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  315. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  316. package/dist/components/form/validation/use-validation-props.js +1 -1
  317. package/dist/components/form/wrapper.js +2 -1
  318. package/dist/components/form/wrapper.js.map +1 -1
  319. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  320. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  321. package/dist/components/layout/Flex.js +1 -1
  322. package/dist/components/layout/Flow.js +1 -1
  323. package/dist/components/layout/Grid.js +1 -1
  324. package/dist/components/layout/Panel.js +1 -1
  325. package/dist/components/layout/Prefix.js +1 -1
  326. package/dist/components/layout/ResizablePanel.js +1 -1
  327. package/dist/components/layout/Space.js +1 -1
  328. package/dist/components/layout/Suffix.js +1 -1
  329. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  330. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  331. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  332. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  333. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  334. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  335. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  336. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  337. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  338. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  339. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  340. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  341. package/dist/components/navigation/Tabs/styled.js +1 -1
  342. package/dist/components/navigation/Tabs/types.d.ts +3 -3
  343. package/dist/components/navigation/Tabs/types.js +1 -1
  344. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  345. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  346. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  347. package/dist/components/other/Calendar/Calendar.js +1 -1
  348. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  349. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  350. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  351. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  352. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  353. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  354. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  355. package/dist/components/other/Calendar/styled.js +1 -1
  356. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  357. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  358. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  359. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  360. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  361. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  362. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  363. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  364. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  365. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  366. package/dist/components/overlays/Dialog/context.js +1 -1
  367. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  368. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  369. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  370. package/dist/components/overlays/Modal/Modal.js +44 -24
  371. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  372. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  373. package/dist/components/overlays/Modal/Overlay.js +1 -1
  374. package/dist/components/overlays/Modal/Popover.js +34 -24
  375. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  376. package/dist/components/overlays/Modal/Tray.js +45 -25
  377. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  378. package/dist/components/overlays/Modal/Underlay.js +1 -1
  379. package/dist/components/overlays/Modal/modal-containment.js +145 -0
  380. package/dist/components/overlays/Modal/modal-containment.js.map +1 -0
  381. package/dist/components/overlays/Notifications/Notification.js +1 -1
  382. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  383. package/dist/components/overlays/Notifications/NotificationCard.js +2 -2
  384. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  385. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  386. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  387. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  388. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  389. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  390. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  391. package/dist/components/overlays/Notifications/index.js +1 -1
  392. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  393. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  394. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  395. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  396. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  397. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  398. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  399. package/dist/components/overlays/Toast/index.js +1 -1
  400. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  401. package/dist/components/overlays/Toast/useToast.js +1 -1
  402. package/dist/components/overlays/Tooltip/Tooltip.js +50 -47
  403. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  404. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  405. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  406. package/dist/components/overlays/Tooltip/context.js +1 -1
  407. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  408. package/dist/components/portal/Portal.js +1 -1
  409. package/dist/components/portal/PortalProvider.js +1 -1
  410. package/dist/components/portal/usePortal.js +1 -1
  411. package/dist/components/shared/DraggableCollection.js +1 -1
  412. package/dist/components/shared/InvalidIcon.js +1 -1
  413. package/dist/components/shared/ValidIcon.js +1 -1
  414. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  415. package/dist/components/status/Spin/Cube.js +1 -1
  416. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  417. package/dist/components/status/Spin/Spin.js +1 -1
  418. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  419. package/dist/data/item-themes.js +1 -1
  420. package/dist/data/themes.js +1 -1
  421. package/dist/eslint-plugin/defaults.generated.js +2 -2
  422. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  423. package/dist/eslint-plugin/index.js +1 -1
  424. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  425. package/dist/i18n/I18nProvider.js +3 -2
  426. package/dist/i18n/I18nProvider.js.map +1 -1
  427. package/dist/i18n/createFormatter.js +1 -1
  428. package/dist/i18n/index.d.ts +2 -1
  429. package/dist/i18n/index.js +3 -2
  430. package/dist/i18n/index.js.map +1 -1
  431. package/dist/i18n/instance.d.ts +2 -3
  432. package/dist/i18n/instance.js +3 -4
  433. package/dist/i18n/instance.js.map +1 -1
  434. package/dist/i18n/locales/de-DE/uikit.js +36 -5
  435. package/dist/i18n/locales/en-US/uikit.js +36 -5
  436. package/dist/i18n/locales/en-US/uikit.json.d.ts +41 -4
  437. package/dist/i18n/locales/es-ES/uikit.js +36 -5
  438. package/dist/i18n/locales/es-MX/uikit.js +36 -5
  439. package/dist/i18n/locales/fr-FR/uikit.js +36 -5
  440. package/dist/i18n/locales/it-IT/uikit.js +36 -5
  441. package/dist/i18n/locales/ja-JP/uikit.js +36 -5
  442. package/dist/i18n/locales/nb-NO/uikit.js +36 -5
  443. package/dist/i18n/locales/pt-BR/uikit.js +36 -5
  444. package/dist/i18n/locales/pt-PT/uikit.js +36 -5
  445. package/dist/i18n/locales/sv-SE/uikit.js +36 -5
  446. package/dist/i18n/locales/vi-VN/uikit.js +36 -5
  447. package/dist/i18n/locales.js +1 -1
  448. package/dist/i18n/namespace.d.ts +11 -0
  449. package/dist/i18n/namespace.js +12 -0
  450. package/dist/i18n/namespace.js.map +1 -0
  451. package/dist/i18n/useFormatter.js +1 -1
  452. package/dist/i18n/useI18n.js +5 -3
  453. package/dist/i18n/useI18n.js.map +1 -1
  454. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  455. package/dist/icons/AdjustmentsIcon.js +1 -1
  456. package/dist/icons/AiIcon.js +1 -1
  457. package/dist/icons/AreaChartIcon.js +1 -1
  458. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  459. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  460. package/dist/icons/BackwardIcon.js +1 -1
  461. package/dist/icons/BarChartIcon.js +1 -1
  462. package/dist/icons/BellFilledIcon.js +1 -1
  463. package/dist/icons/BellIcon.js +1 -1
  464. package/dist/icons/BooleanIcon.js +1 -1
  465. package/dist/icons/CalendarEditIcon.js +1 -1
  466. package/dist/icons/CalendarIcon.js +1 -1
  467. package/dist/icons/CaretDownIcon.js +1 -1
  468. package/dist/icons/CaretUpIcon.js +1 -1
  469. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  470. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  471. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  472. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  473. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  474. package/dist/icons/ChartBarLineIcon.js +1 -1
  475. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  476. package/dist/icons/ChartBarStackedIcon.js +1 -1
  477. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  478. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  479. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  480. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  481. package/dist/icons/ChartBubbleIcon.js +1 -1
  482. package/dist/icons/ChartDonut2Icon.js +1 -1
  483. package/dist/icons/ChartFunnelIcon.js +1 -1
  484. package/dist/icons/ChartHeatmapIcon.js +1 -1
  485. package/dist/icons/ChartKPIIcon.js +1 -1
  486. package/dist/icons/ChartPie2Icon.js +1 -1
  487. package/dist/icons/ChartScatterIcon.js +1 -1
  488. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  489. package/dist/icons/CheckCircleIcon.js +1 -1
  490. package/dist/icons/CheckIcon.js +1 -1
  491. package/dist/icons/CircleFilledIcon.js +1 -1
  492. package/dist/icons/ClearIcon.js +1 -1
  493. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  494. package/dist/icons/CloseCircleIcon.js +1 -1
  495. package/dist/icons/CloseIcon.js +1 -1
  496. package/dist/icons/CodeIcon.js +1 -1
  497. package/dist/icons/ColumnTotalIcon.js +1 -1
  498. package/dist/icons/CopyIcon.js +1 -1
  499. package/dist/icons/CountIcon.js +1 -1
  500. package/dist/icons/CubeIcon.js +1 -1
  501. package/dist/icons/CubePauseIcon.js +1 -1
  502. package/dist/icons/CubePlayIcon.js +1 -1
  503. package/dist/icons/CurrencyDollarIcon.js +1 -1
  504. package/dist/icons/DangerIcon.js +1 -1
  505. package/dist/icons/DashboardIcon.js +1 -1
  506. package/dist/icons/DatabaseIcon.js +1 -1
  507. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  508. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  509. package/dist/icons/DirectionIcon.js +1 -1
  510. package/dist/icons/DonutIcon.js +1 -1
  511. package/dist/icons/DownIcon.js +1 -1
  512. package/dist/icons/EditIcon.js +1 -1
  513. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  514. package/dist/icons/ExclamationCircleIcon.js +1 -1
  515. package/dist/icons/ExclamationIcon.js +1 -1
  516. package/dist/icons/EyeIcon.js +1 -1
  517. package/dist/icons/EyeInvisibleIcon.js +1 -1
  518. package/dist/icons/FilterIcon.js +1 -1
  519. package/dist/icons/FolderFilledIcon.js +1 -1
  520. package/dist/icons/FolderIcon.js +1 -1
  521. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  522. package/dist/icons/FolderOpenIcon.js +1 -1
  523. package/dist/icons/ForwardIcon.js +1 -1
  524. package/dist/icons/GripVerticalIcon.js +1 -1
  525. package/dist/icons/HierarchyIcon.js +1 -1
  526. package/dist/icons/HierarchyOpenIcon.js +1 -1
  527. package/dist/icons/Icon.js +1 -1
  528. package/dist/icons/InfoCircleIcon.js +1 -1
  529. package/dist/icons/InfoIcon.js +1 -1
  530. package/dist/icons/KeyIcon.js +1 -1
  531. package/dist/icons/LeftIcon.js +1 -1
  532. package/dist/icons/LineChartIcon.js +1 -1
  533. package/dist/icons/LoadingIcon.js +1 -1
  534. package/dist/icons/LockFilledIcon.js +1 -1
  535. package/dist/icons/LockIcon.js +1 -1
  536. package/dist/icons/MoreIcon.js +1 -1
  537. package/dist/icons/NotAllowedIcon.js +1 -1
  538. package/dist/icons/Number123Icon.js +1 -1
  539. package/dist/icons/NumberIcon.js +1 -1
  540. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  541. package/dist/icons/PauseCircleIcon.js +1 -1
  542. package/dist/icons/PauseIcon.js +1 -1
  543. package/dist/icons/PercentageIcon.js +1 -1
  544. package/dist/icons/PieChartIcon.js +1 -1
  545. package/dist/icons/PipetteIcon.js +1 -1
  546. package/dist/icons/PlayCircleIcon.js +1 -1
  547. package/dist/icons/PlayIcon.js +1 -1
  548. package/dist/icons/PlusIcon.js +1 -1
  549. package/dist/icons/ProgressBarIcon.js +1 -1
  550. package/dist/icons/ReloadIcon.js +1 -1
  551. package/dist/icons/ReportIcon.js +1 -1
  552. package/dist/icons/ReturnIcon.js +1 -1
  553. package/dist/icons/RightIcon.js +1 -1
  554. package/dist/icons/RowTotalsIcon.js +1 -1
  555. package/dist/icons/SchemeIcon.js +1 -1
  556. package/dist/icons/SearchIcon.js +1 -1
  557. package/dist/icons/SemanticQueryIcon.js +1 -1
  558. package/dist/icons/SettingsIcon.js +1 -1
  559. package/dist/icons/ShieldFilledIcon.js +1 -1
  560. package/dist/icons/ShieldIcon.js +1 -1
  561. package/dist/icons/SlashIcon.js +1 -1
  562. package/dist/icons/SparklesIcon.js +1 -1
  563. package/dist/icons/SqlIcon.js +1 -1
  564. package/dist/icons/StatsIcon.js +1 -1
  565. package/dist/icons/StopIcon.js +1 -1
  566. package/dist/icons/StringIcon.js +1 -1
  567. package/dist/icons/SubtotalsIcon.js +1 -1
  568. package/dist/icons/SwitchIcon.js +1 -1
  569. package/dist/icons/TableIcon.js +1 -1
  570. package/dist/icons/ThumbsDownIcon.js +1 -1
  571. package/dist/icons/ThumbsUpIcon.js +1 -1
  572. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  573. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  574. package/dist/icons/ThunderboltIcon.js +1 -1
  575. package/dist/icons/TimeIcon.js +1 -1
  576. package/dist/icons/TrashIcon.js +1 -1
  577. package/dist/icons/UnlockIcon.js +1 -1
  578. package/dist/icons/UpIcon.js +1 -1
  579. package/dist/icons/UserGroupIcon.js +1 -1
  580. package/dist/icons/UserIcon.js +1 -1
  581. package/dist/icons/UserLockIcon.js +1 -1
  582. package/dist/icons/ViewIcon.js +1 -1
  583. package/dist/icons/WarningFilledIcon.js +1 -1
  584. package/dist/icons/WarningIcon.js +1 -1
  585. package/dist/icons/wrap-icon.js +1 -1
  586. package/dist/index.d.ts +9 -7
  587. package/dist/index.js +7 -6
  588. package/dist/index.js.map +1 -1
  589. package/dist/probe/canonicalize.js +1 -1
  590. package/dist/probe/css.js +1 -1
  591. package/dist/probe/index.js +1 -1
  592. package/dist/provider.js +2 -2
  593. package/dist/provider.js.map +1 -1
  594. package/dist/providers/TrackingProvider.js +1 -1
  595. package/dist/providers/navigation-url.js +11 -0
  596. package/dist/providers/navigation-url.js.map +1 -0
  597. package/dist/providers/navigationAdapter.default.js +1 -1
  598. package/dist/providers/use-navigation.js +19 -0
  599. package/dist/providers/use-navigation.js.map +1 -0
  600. package/dist/tokens/all-tokens.js +1 -1
  601. package/dist/tokens/base.js +1 -1
  602. package/dist/tokens/color-seed.js +1 -1
  603. package/dist/tokens/color-theme.js +1 -1
  604. package/dist/tokens/colors.js +1 -1
  605. package/dist/tokens/layout.js +1 -1
  606. package/dist/tokens/lazy-styles.js +1 -1
  607. package/dist/tokens/legacy-color.js +1 -1
  608. package/dist/tokens/palette-config.js +1 -1
  609. package/dist/tokens/palette.js +1 -1
  610. package/dist/tokens/resolve.js +1 -1
  611. package/dist/tokens/shadows.js +1 -1
  612. package/dist/tokens/sizes.js +1 -1
  613. package/dist/tokens/spacing.js +1 -1
  614. package/dist/tokens/typography.js +1 -1
  615. package/dist/utils/ResizeSensor.js +1 -1
  616. package/dist/utils/colors.js +1 -1
  617. package/dist/utils/dotize.js +1 -1
  618. package/dist/utils/is-dev-env.js +1 -1
  619. package/dist/utils/modules.js +1 -1
  620. package/dist/utils/promise.js +1 -1
  621. package/dist/utils/raf.js +1 -1
  622. package/dist/utils/random.js +1 -1
  623. package/dist/utils/range.js +1 -1
  624. package/dist/utils/react/RenderCache.js +1 -1
  625. package/dist/utils/react/Slots.js +1 -1
  626. package/dist/utils/react/chain.js +1 -1
  627. package/dist/utils/react/disabledProps.js +1 -1
  628. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  629. package/dist/utils/react/index.js +1 -1
  630. package/dist/utils/react/interactions.js +1 -1
  631. package/dist/utils/react/isTextOnly.js +1 -1
  632. package/dist/utils/react/mapProps.js +1 -1
  633. package/dist/utils/react/mergeProps.js +1 -1
  634. package/dist/utils/react/nullableValue.js +1 -1
  635. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  636. package/dist/utils/react/programmaticFocus.js +1 -1
  637. package/dist/utils/react/resolveIcon.js +1 -1
  638. package/dist/utils/react/sharedStore.js +1 -1
  639. package/dist/utils/react/useBufferedValue.js +1 -1
  640. package/dist/utils/react/useCombinedRefs.js +1 -1
  641. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  642. package/dist/utils/react/useEventBus.js +1 -1
  643. package/dist/utils/react/useId.js +1 -1
  644. package/dist/utils/react/useIsDarwin.js +1 -1
  645. package/dist/utils/react/useKeySymbols.js +1 -1
  646. package/dist/utils/react/useLayoutEffect.js +1 -1
  647. package/dist/utils/react/useLocalStorage.js +1 -1
  648. package/dist/utils/react/useMergeStyles.js +1 -1
  649. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  650. package/dist/utils/react/usePopoverSync.js +1 -1
  651. package/dist/utils/react/useQaProps.js +1 -1
  652. package/dist/utils/react/useScheme.js +1 -1
  653. package/dist/utils/react/useViewportSize.js +1 -1
  654. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  655. package/dist/utils/selection.js +1 -1
  656. package/dist/utils/styles.js +1 -1
  657. package/dist/utils/tree.js +1 -1
  658. package/dist/utils/warnings.js +1 -1
  659. package/dist/version.js +2 -2
  660. package/docs/Usage.md +4 -0
  661. package/docs/components/CollectionItem.md +5 -1
  662. package/docs/components/actions/CommandMenu.md +46 -18
  663. package/docs/components/actions/Menu.md +124 -19
  664. package/docs/components/content/Placeholder.md +2 -0
  665. package/docs/components/content/Skeleton.md +2 -0
  666. package/docs/components/data/DataTable.md +3 -0
  667. package/docs/components/data/ItemTable.md +11 -1
  668. package/docs/components/overlays/Dialog.md +1 -1
  669. package/docs/components/overlays/DialogContainer.md +1 -2
  670. package/docs/components/overlays/DialogTrigger.md +1 -0
  671. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.js","names":["useObjectRef","BaseProps","CONTAINER_STYLES","ContainerStyleProps","Styles","tasty","forwardRef","AriaCheckboxGroupProps","useCheckboxGroup","useCheckboxGroupState","FieldBaseProps","mergeProps","castNullableArrayValue","WithNullableValue","extractStyles","FormScopeMask","useFieldProps","wrapWithField","CheckboxGroupContext","CheckGroupElement","qa","styles","display","placeItems","placeContent","flow","horizontal","gap","CubeCheckboxGroupProps","Omit","orientation","inputStyles","CheckboxGroup","rawProps","ref","$","_c","t0","t1","Symbol","for","defaultValidationTrigger","valuePropsMapper","_temp","props","id","isDisabled","isRequired","necessityIndicator","label","extra","isInvalid","isValid","children","t2","message","description","labelStyles","labelProps","baseLabelProps","labelSuffix","form","otherProps","undefined","domRef","state","t3","groupProps","t4","t5","t6","t7","t8","t9","radioGroup","t10","fieldProps","value","onChange","_CheckboxGroup","cubeInputType","displayName"],"sources":["../../../../src/components/fields/Checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { AriaCheckboxGroupProps, useCheckboxGroup } from 'react-aria';\nimport { useCheckboxGroupState } from 'react-stately';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport {\n castNullableArrayValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport { FormScopeMask, useFieldProps, wrapWithField } from '../../form';\n\nimport { CheckboxGroupContext } from './context';\n\nconst CheckGroupElement = tasty({\n qa: 'CheckboxGroup',\n styles: {\n display: 'flex',\n placeItems: 'start',\n placeContent: 'start',\n flow: {\n '': 'column',\n horizontal: 'row wrap',\n },\n gap: {\n '': '1x',\n horizontal: '1x 2x',\n },\n },\n});\n\nexport interface CubeCheckboxGroupProps\n extends BaseProps,\n Omit<AriaCheckboxGroupProps, 'errorMessage' | 'form' | 'name'>,\n FieldBaseProps<readonly string[] | null | undefined>,\n ContainerStyleProps {\n orientation?: 'vertical' | 'horizontal';\n inputStyles?: Styles;\n}\n\nfunction CheckboxGroup(\n rawProps: WithNullableValue<CubeCheckboxGroupProps>,\n ref,\n) {\n rawProps = castNullableArrayValue(rawProps);\n let props = useFieldProps(rawProps, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value != null ? value : [],\n onChange: onChange,\n }),\n });\n\n let {\n id,\n isDisabled,\n isRequired,\n necessityIndicator,\n label,\n extra,\n isInvalid,\n isValid,\n children,\n orientation = 'vertical',\n message,\n description,\n labelStyles,\n labelProps: baseLabelProps,\n labelSuffix,\n inputStyles,\n form,\n ...otherProps\n } = props;\n let domRef = useObjectRef(ref);\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n let state = useCheckboxGroupState(props);\n // React Aria hands `form` to every item's input as the id of its `<form>`,\n // so the form instance would render as `form=\"[object Object]\"` on each.\n let { groupProps, labelProps } = useCheckboxGroup(\n { ...props, form: undefined },\n state,\n );\n\n let radioGroup = (\n <CheckGroupElement\n id={id}\n styles={inputStyles}\n mods={{\n horizontal: orientation === 'horizontal',\n }}\n >\n <FormScopeMask\n value={{\n isDisabled,\n isInvalid,\n isValid,\n }}\n >\n <CheckboxGroupContext.Provider value={state}>\n {children}\n </CheckboxGroupContext.Provider>\n </FormScopeMask>\n </CheckGroupElement>\n );\n\n return wrapWithField(radioGroup, domRef, {\n ...props,\n fieldProps: groupProps,\n labelProps: mergeProps(baseLabelProps, labelProps),\n });\n}\n\n/**\n * Checkbox groups allow users to select a single option from a list of mutually exclusive options.\n * All possible options are exposed up front for users to compare.\n */\nconst _CheckboxGroup = forwardRef(CheckboxGroup);\n\n(_CheckboxGroup as any).cubeInputType = 'CheckboxGroup';\n_CheckboxGroup.displayName = 'CheckboxGroup';\n\nexport { _CheckboxGroup as CheckboxGroup };\n"],"mappings":"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"}
1
+ {"version":3,"file":"CheckboxGroup.js","names":["useObjectRef","BaseProps","CONTAINER_STYLES","ContainerStyleProps","Styles","tasty","forwardRef","AriaCheckboxGroupProps","useCheckboxGroup","useCheckboxGroupState","FieldBaseProps","mergeProps","castNullableArrayValue","WithNullableValue","extractStyles","FormScopeMask","useFieldProps","wrapWithField","CheckboxGroupContext","CheckGroupElement","qa","styles","display","placeItems","placeContent","flow","horizontal","gap","CubeCheckboxGroupProps","Omit","orientation","inputStyles","CheckboxGroup","rawProps","ref","$","_c","t0","t1","Symbol","for","defaultValidationTrigger","valuePropsMapper","_temp","props","id","isDisabled","isRequired","necessityIndicator","label","extra","isInvalid","isValid","children","t2","message","description","labelStyles","labelProps","baseLabelProps","labelSuffix","form","otherProps","undefined","domRef","state","t3","groupProps","t4","t5","t6","t7","t8","t9","radioGroup","t10","value","onChange","_CheckboxGroup","cubeInputType","displayName"],"sources":["../../../../src/components/fields/Checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { AriaCheckboxGroupProps, useCheckboxGroup } from 'react-aria';\nimport { useCheckboxGroupState } from 'react-stately';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport {\n castNullableArrayValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport { FormScopeMask, useFieldProps, wrapWithField } from '../../form';\n\nimport { CheckboxGroupContext } from './context';\n\nconst CheckGroupElement = tasty({\n qa: 'CheckboxGroup',\n styles: {\n display: 'flex',\n placeItems: 'start',\n placeContent: 'start',\n flow: {\n '': 'column',\n horizontal: 'row wrap',\n },\n gap: {\n '': '1x',\n horizontal: '1x 2x',\n },\n },\n});\n\nexport interface CubeCheckboxGroupProps\n extends BaseProps,\n Omit<AriaCheckboxGroupProps, 'errorMessage' | 'form' | 'name'>,\n FieldBaseProps<readonly string[] | null | undefined>,\n ContainerStyleProps {\n orientation?: 'vertical' | 'horizontal';\n inputStyles?: Styles;\n}\n\nfunction CheckboxGroup(\n rawProps: WithNullableValue<CubeCheckboxGroupProps>,\n ref,\n) {\n rawProps = castNullableArrayValue(rawProps);\n let props = useFieldProps(rawProps, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value != null ? value : [],\n onChange: onChange,\n }),\n });\n\n let {\n id,\n isDisabled,\n isRequired,\n necessityIndicator,\n label,\n extra,\n isInvalid,\n isValid,\n children,\n orientation = 'vertical',\n message,\n description,\n labelStyles,\n labelProps: baseLabelProps,\n labelSuffix,\n inputStyles,\n form,\n ...otherProps\n } = props;\n let domRef = useObjectRef(ref);\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n let state = useCheckboxGroupState(props);\n // React Aria hands `form` to every item's input as the id of its `<form>`,\n // so the form instance would render as `form=\"[object Object]\"` on each.\n let { groupProps, labelProps } = useCheckboxGroup(\n { ...props, form: undefined },\n state,\n );\n\n // The group semantics go on the group itself, as in `RadioGroup`, not on the\n // field wrapper: that is only rendered with a label, and an `aria-label`-only\n // group would lose its role, name and description with it.\n let radioGroup = (\n <CheckGroupElement\n {...groupProps}\n id={id}\n styles={inputStyles}\n mods={{\n horizontal: orientation === 'horizontal',\n }}\n >\n <FormScopeMask\n value={{\n isDisabled,\n isInvalid,\n isValid,\n }}\n >\n <CheckboxGroupContext.Provider value={state}>\n {children}\n </CheckboxGroupContext.Provider>\n </FormScopeMask>\n </CheckGroupElement>\n );\n\n return wrapWithField(radioGroup, domRef, {\n ...props,\n labelProps: mergeProps(baseLabelProps, labelProps),\n });\n}\n\n/**\n * Checkbox groups allow users to select a single option from a list of mutually exclusive options.\n * All possible options are exposed up front for users to compare.\n */\nconst _CheckboxGroup = forwardRef(CheckboxGroup);\n\n(_CheckboxGroup as any).cubeInputType = 'CheckboxGroup';\n_CheckboxGroup.displayName = 'CheckboxGroup';\n\nexport { _CheckboxGroup as CheckboxGroup };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.193.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.194.0 | Cube Dev Team */
2
2
  import { createContext } from "react";
3
3
 
4
4
  //#region src/components/fields/Checkbox/context.ts
@@ -1,8 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.193.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.194.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { ItemActionProvider } from "../../actions/ItemActionContext.js";
5
5
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
6
+ import { useI18n } from "../../../i18n/useI18n.js";
6
7
  import { Dialog } from "../../overlays/Dialog/Dialog.js";
7
8
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
8
9
  import { DialogTrigger } from "../../overlays/Dialog/DialogTrigger.js";
@@ -39,7 +40,8 @@ const ColorInputTrigger = tasty(ItemAction, {
39
40
  * popover to dial it in across OKHST, OKLCH and RGB.
40
41
  */
41
42
  const ColorInput = forwardRef(function ColorInput(allProps, ref) {
42
- const $ = c(103);
43
+ const $ = c(104);
44
+ const { t } = useI18n();
43
45
  let t0;
44
46
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
45
47
  t0 = {
@@ -309,7 +311,7 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
309
311
  $[68] = t27;
310
312
  } else t27 = $[68];
311
313
  let t28;
312
- if ($[69] !== color || $[70] !== controlledOpen || $[71] !== handleColorChange || $[72] !== handleOpenChange || $[73] !== isDisabled || $[74] !== isInsidePopover || $[75] !== isOpen || $[76] !== isReadOnly || $[77] !== outputFormat || $[78] !== placement || $[79] !== shouldFlip || $[80] !== size || $[81] !== space || $[82] !== targetRefProp || $[83] !== text || $[84] !== triggerStyles) {
314
+ if ($[69] !== color || $[70] !== controlledOpen || $[71] !== handleColorChange || $[72] !== handleOpenChange || $[73] !== isDisabled || $[74] !== isInsidePopover || $[75] !== isOpen || $[76] !== isReadOnly || $[77] !== outputFormat || $[78] !== placement || $[79] !== shouldFlip || $[80] !== size || $[81] !== space || $[82] !== t || $[83] !== targetRefProp || $[84] !== text || $[85] !== triggerStyles) {
313
315
  t28 = isInsidePopover ? null : /* @__PURE__ */ jsxs(DialogTrigger, {
314
316
  hideArrow: true,
315
317
  type: "popover",
@@ -322,12 +324,12 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
322
324
  isDisabled,
323
325
  children: /* @__PURE__ */ jsx(ColorInputTrigger, {
324
326
  size,
325
- "aria-label": "Open the color picker",
327
+ "aria-label": t("colorInput.openColorPicker", "Open the color picker"),
326
328
  isDisabled: isReadOnly && !isDisabled ? true : void 0,
327
329
  styles: triggerStyles
328
330
  })
329
331
  }), /* @__PURE__ */ jsx(Dialog, {
330
- "aria-label": "Color picker",
332
+ "aria-label": t("colorPicker.colorPicker", "Color picker"),
331
333
  width: "max-content",
332
334
  styles: POPOVER_STYLES,
333
335
  children: /* @__PURE__ */ jsx(ColorPanel, {
@@ -353,13 +355,14 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
353
355
  $[79] = shouldFlip;
354
356
  $[80] = size;
355
357
  $[81] = space;
356
- $[82] = targetRefProp;
357
- $[83] = text;
358
- $[84] = triggerStyles;
359
- $[85] = t28;
360
- } else t28 = $[85];
358
+ $[82] = t;
359
+ $[83] = targetRefProp;
360
+ $[84] = text;
361
+ $[85] = triggerStyles;
362
+ $[86] = t28;
363
+ } else t28 = $[86];
361
364
  let t29;
362
- if ($[86] !== inputStyles || $[87] !== isDisabled || $[88] !== isInvalid || $[89] !== isLoading || $[90] !== isReadOnly || $[91] !== isValid || $[92] !== props || $[93] !== ref || $[94] !== size || $[95] !== t23 || $[96] !== t24 || $[97] !== t25 || $[98] !== t26 || $[99] !== t27 || $[100] !== t28 || $[101] !== text) {
365
+ if ($[87] !== inputStyles || $[88] !== isDisabled || $[89] !== isInvalid || $[90] !== isLoading || $[91] !== isReadOnly || $[92] !== isValid || $[93] !== props || $[94] !== ref || $[95] !== size || $[96] !== t23 || $[97] !== t24 || $[98] !== t25 || $[99] !== t26 || $[100] !== t27 || $[101] !== t28 || $[102] !== text) {
363
366
  t29 = /* @__PURE__ */ jsx(TextInputBase, {
364
367
  ...props,
365
368
  ref,
@@ -382,24 +385,24 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
382
385
  suffixPosition: "after",
383
386
  suffix: t28
384
387
  });
385
- $[86] = inputStyles;
386
- $[87] = isDisabled;
387
- $[88] = isInvalid;
388
- $[89] = isLoading;
389
- $[90] = isReadOnly;
390
- $[91] = isValid;
391
- $[92] = props;
392
- $[93] = ref;
393
- $[94] = size;
394
- $[95] = t23;
395
- $[96] = t24;
396
- $[97] = t25;
397
- $[98] = t26;
398
- $[99] = t27;
399
- $[100] = t28;
400
- $[101] = text;
401
- $[102] = t29;
402
- } else t29 = $[102];
388
+ $[87] = inputStyles;
389
+ $[88] = isDisabled;
390
+ $[89] = isInvalid;
391
+ $[90] = isLoading;
392
+ $[91] = isReadOnly;
393
+ $[92] = isValid;
394
+ $[93] = props;
395
+ $[94] = ref;
396
+ $[95] = size;
397
+ $[96] = t23;
398
+ $[97] = t24;
399
+ $[98] = t25;
400
+ $[99] = t26;
401
+ $[100] = t27;
402
+ $[101] = t28;
403
+ $[102] = text;
404
+ $[103] = t29;
405
+ } else t29 = $[103];
403
406
  return t29;
404
407
  });
405
408
  ColorInput.cubeInputType = "Text";
@@ -1 +1 @@
1
- {"version":3,"file":"ColorInput.js","names":["BaseProps","BaseStyleProps","BlockStyleProps","ColorStyleProps","OuterStyleProps","Styles","tasty","FocusEvent","ForwardedRef","forwardRef","KeyboardEvent","MouseEvent","RefObject","useEffect","useRef","useState","Placement","useTextField","useEvent","PipetteIcon","FieldBaseProps","mergeProps","ItemAction","ItemActionProvider","useFieldProps","Dialog","DialogTrigger","ColorSpace","ColorFormat","ColorValue","detectFormat","formatColor","parseColor","ColorPanel","useIsInsideColorPopover","ColorSwatch","TextInputBase","ColorInputFormatMode","POPOVER_STYLES","overflow","FALLBACK_COLOR","h","s","l","ColorInputTrigger","qa","icon","CubeColorInputProps","value","defaultValue","onChange","format","formatMode","defaultSpace","isOpen","defaultOpen","onOpenChange","shouldFlip","targetRef","HTMLElement","placement","placeholder","size","onFocus","event","HTMLInputElement","onBlur","styles","inputStyles","triggerStyles","swatchStyles","ColorInput","allProps","ref","$","_c","t0","Symbol","for","defaultValidationTrigger","valuePropsMapper","_temp","props","value_0","onChange_0","t1","t2","t3","controlledOpen","targetRefProp","t4","t5","isDisabled","isReadOnly","isInvalid","isValid","isLoading","autoFocus","labelProps","userLabelProps","userOnBlur","label","description","ariaLabel","ariaLabelledby","ariaDescribedby","id","undefined","isInsidePopover","t6","t7","toString","initialText","t8","parsed","text","setText","t9","color","setColor","space","setSpace","setOpen","inputRef","t10","validText","emitted","t11","next","current","emit","t12","source","outputFormat","t13","t14","raw","parsed_0","nextText","t15","nextText_0","trim","parsed_1","handleTextChange","t16","parsed_2","settle","t17","currentTarget","select","handleFocus","handleMouseDown","_temp2","t18","event_1","handleBlur","t19","event_2","key","handleKeyDown","t20","nextColor","nextText_1","handleColorChange","t21","next_0","handleOpenChange","t22","type","onKeyDown","inputProps","t23","t24","t25","t26","spellCheck","onMouseDown","t27","t28","t29","cubeInputType","event_0","document","activeElement","preventDefault","focus"],"sources":["../../../../src/components/fields/ColorInput/ColorInput.tsx"],"sourcesContent":["import {\n BaseProps,\n BaseStyleProps,\n BlockStyleProps,\n ColorStyleProps,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n FocusEvent,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Placement, useTextField } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { PipetteIcon } from '../../../icons/PipetteIcon';\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { ItemAction, ItemActionProvider } from '../../actions';\nimport { useFieldProps } from '../../form';\nimport { Dialog } from '../../overlays/Dialog/Dialog';\nimport { DialogTrigger } from '../../overlays/Dialog/DialogTrigger';\nimport { ColorSpace } from '../color/channels';\nimport {\n ColorFormat,\n ColorValue,\n detectFormat,\n formatColor,\n parseColor,\n} from '../color/color';\nimport { ColorPanel } from '../color/ColorPanel';\nimport { useIsInsideColorPopover } from '../color/context';\nimport { ColorSwatch } from '../ColorSwatch';\nimport { TextInputBase } from '../TextInput/TextInputBase';\n\n/**\n * How the text in the input relates to the committed value.\n *\n * - `forced` — the text is rewritten in `format` whenever it is not mid-edit,\n * and the value is always written in `format`.\n * - `derive` — the user's own notation is left alone, and the value is\n * normalized in whichever notation the text is written in.\n * - `free` — the text *is* the value, verbatim. It is still verified, so an\n * unparsable entry falls back to the last valid one.\n */\nexport type ColorInputFormatMode = 'forced' | 'derive' | 'free';\n\n/**\n * A popover caps its height at half the viewport. The panel can exceed that on\n * a short screen, and would otherwise spill outside the popover's own border.\n */\nconst POPOVER_STYLES: Styles = { overflow: 'auto' };\n\n/** What the popover starts from when there is no color to edit yet. */\nconst FALLBACK_COLOR: ColorValue = { h: 264, s: 0.8, l: 0.6 };\n\nconst ColorInputTrigger = tasty(ItemAction, {\n qa: 'ColorInputTrigger',\n icon: <PipetteIcon />,\n});\n\nexport interface CubeColorInputProps\n extends BaseProps,\n BaseStyleProps,\n OuterStyleProps,\n BlockStyleProps,\n ColorStyleProps,\n FieldBaseProps<string | null | undefined> {\n /** The selected color, as a color string. */\n value?: string | null;\n /** The initial color of an uncontrolled picker. */\n defaultValue?: string | null;\n /** Called with the normalized color string, or `null` when the field is cleared. */\n onChange?: (value: string | null) => void;\n /** Notation the value is written in, and the one `forced` mode displays. */\n format?: ColorFormat;\n /** How strictly the input text is tied to `format`. */\n formatMode?: ColorInputFormatMode;\n /** Color concept the popover opens with. */\n defaultSpace?: ColorSpace;\n /** Whether the popover is open. Makes the disclosure controlled. */\n isOpen?: boolean;\n /** Whether the popover is open initially. */\n defaultOpen?: boolean;\n /** Called when the popover opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Whether the popover may flip to the other side of the input. */\n shouldFlip?: boolean;\n /**\n * The ref of the element the popover should visually attach itself to.\n * Defaults to the field wrapper.\n *\n * Forwarded to `DialogTrigger`, so the anchor also becomes what outside-click\n * dismissal treats as the trigger.\n */\n targetRef?: RefObject<HTMLElement | null>;\n /**\n * Placement of the popover relative to the anchor.\n * Accepts React Aria's `Placement` strings (e.g. `'bottom start'`,\n * `'top start'`, `'right top'`, `'left top'`).\n * @default 'bottom right'\n */\n placement?: Placement;\n /** Text shown while the field is empty. */\n placeholder?: string;\n /** The size of the input. */\n size?: 'small' | 'medium' | 'large' | (string & {});\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n styles?: Styles;\n /** Styles of the text input element. */\n inputStyles?: Styles;\n /** Styles of the popover trigger button. */\n triggerStyles?: Styles;\n /** Styles of the color swatch shown inside the input. */\n swatchStyles?: Styles;\n}\n\n/**\n * A color field: the color as text, a swatch of the current value, and a\n * popover to dial it in across OKHST, OKLCH and RGB.\n */\nexport const ColorInput = forwardRef(function ColorInput(\n allProps: CubeColorInputProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const props = useFieldProps(allProps, {\n defaultValidationTrigger: 'onBlur',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value as string | null | undefined,\n onChange,\n }),\n });\n\n const {\n qa,\n value,\n defaultValue,\n onChange,\n format = 'hex',\n formatMode = 'forced',\n defaultSpace = 'hst',\n isOpen: controlledOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip,\n targetRef: targetRefProp,\n placement = 'bottom right',\n placeholder = 'Pick a color',\n size,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n isLoading,\n autoFocus,\n inputStyles,\n triggerStyles,\n swatchStyles,\n labelProps: userLabelProps,\n onBlur: userOnBlur,\n onFocus,\n label,\n description,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n id,\n } = props;\n\n // Already inside a color popover: this is the value field for that popover,\n // so it must not offer a popover of its own.\n const isInsidePopover = useIsInsideColorPopover();\n\n const initialText = (value ?? defaultValue ?? '').toString();\n const [text, setText] = useState(() => {\n const parsed = parseColor(initialText);\n\n return parsed && formatMode === 'forced'\n ? formatColor(parsed, format)\n : initialText;\n });\n const [color, setColor] = useState(() => parseColor(initialText));\n const [space, setSpace] = useState<ColorSpace>(defaultSpace);\n const [isOpen, setOpen] = useState(defaultOpen ?? false);\n\n const targetRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n /** The last text that parsed, so an invalid entry has something to fall back to. */\n const validText = useRef(parseColor(initialText) ? text : '');\n /** What was last handed to `onChange`, to tell our own updates from outside ones. */\n const emitted = useRef<string | null | undefined>(value);\n\n const emit = useEvent((next: string | null) => {\n emitted.current = next;\n onChange?.(next);\n });\n\n /** The notation a value should be written in, given the current text. */\n const outputFormat = (source: string): ColorFormat =>\n formatMode === 'forced' ? format : detectFormat(source) ?? format;\n\n // Adopt values that did not come from here — a form reset, or a parent that\n // overrides what the user picked.\n useEffect(() => {\n if (value === undefined || value === emitted.current) return;\n\n emitted.current = value;\n\n const raw = (value ?? '').toString();\n const parsed = parseColor(raw);\n const nextText =\n parsed && formatMode === 'forced' ? formatColor(parsed, format) : raw;\n\n setColor(parsed);\n setText(nextText);\n validText.current = parsed ? nextText : '';\n }, [value, format, formatMode]);\n\n const handleTextChange = useEvent((nextText: string) => {\n setText(nextText);\n\n if (!nextText.trim()) {\n setColor(null);\n validText.current = '';\n emit(null);\n\n return;\n }\n\n const parsed = parseColor(nextText);\n\n // Half-typed input keeps the last valid color, so the value stays a real\n // color at every keystroke.\n if (!parsed) return;\n\n setColor(parsed);\n validText.current = nextText;\n emit(\n formatMode === 'free'\n ? nextText.trim()\n : formatColor(parsed, outputFormat(nextText)),\n );\n });\n\n /** Resolve whatever is in the input into a real color, or undo it. */\n const settle = useEvent(() => {\n if (!text.trim()) return;\n\n const parsed = parseColor(text);\n\n if (!parsed) {\n setText(validText.current);\n\n return;\n }\n\n if (formatMode === 'forced') setText(formatColor(parsed, format));\n });\n\n /**\n * Focusing offers the whole value up for replacement, the way a hex field\n * does. The string is the unit of editing here: a single channel is tuned\n * with the sliders, not by hand-editing one number inside `oklch(…)`.\n *\n * Read off the event rather than `inputRef`, which `TextInputBase` re-points\n * through `useCombinedRefs`.\n */\n const handleFocus = useEvent((event: FocusEvent<HTMLInputElement>) => {\n event.currentTarget.select();\n onFocus?.(event);\n });\n\n /**\n * A click would otherwise drop a caret and undo that selection — the browser\n * applies it after the focus handler has run. Suppressing the default action\n * of the focusing press means no caret is ever placed; focus is then moved\n * here instead, which selects.\n *\n * Only the press that *takes* focus is suppressed, so clicking a field that\n * already has focus still positions the caret, and dragging still selects a\n * range.\n */\n const handleMouseDown = useEvent((event: MouseEvent<HTMLInputElement>) => {\n if (document.activeElement === event.currentTarget) return;\n\n event.preventDefault();\n event.currentTarget.focus();\n });\n\n const handleBlur = useEvent((event: FocusEvent<HTMLInputElement>) => {\n settle();\n userOnBlur?.(event);\n });\n\n const handleKeyDown = useEvent((event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') settle();\n });\n\n const handleColorChange = useEvent((nextColor: ColorValue) => {\n const nextText = formatColor(nextColor, outputFormat(text));\n\n setColor(nextColor);\n setText(nextText);\n validText.current = nextText;\n emit(nextText);\n });\n\n const handleOpenChange = useEvent((next: boolean) => {\n setOpen(next);\n onOpenChange?.(next);\n });\n\n const { labelProps, inputProps } = useTextField(\n {\n id,\n label,\n description,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n isDisabled,\n isReadOnly,\n isInvalid,\n autoFocus,\n placeholder,\n value: text,\n type: 'text',\n onChange: handleTextChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n },\n inputRef,\n );\n\n return (\n <TextInputBase\n {...props}\n ref={ref}\n value={text}\n defaultValue={props.defaultValue ?? undefined}\n qa={qa || 'ColorInput'}\n size={size}\n autoComplete=\"off\"\n // A flat 20px at every field size, which is what this has always rendered.\n // Neither of the other two options is right here: tracking `$size` puts a\n // large field's swatch against the border, because a text input hangs its\n // prefix off the edge with no padding of its own, and passing the field's\n // own size through grows the swatch with the field — visibly, and for no\n // reason a caller asked for. The swatch is a fixed badge, not a control.\n icon={<ColorSwatch size=\"small\" color={color} styles={swatchStyles} />}\n inputRef={inputRef}\n inputProps={{\n ...inputProps,\n spellCheck: false,\n onMouseDown: handleMouseDown,\n }}\n inputStyles={inputStyles}\n labelProps={mergeProps(labelProps, userLabelProps)}\n wrapperRef={targetRef}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n // The validation state reads left of the trigger, the way `DateInputBase`\n // orders it for the date pickers.\n suffixPosition=\"after\"\n suffix={\n isInsidePopover ? null : (\n <DialogTrigger\n hideArrow\n type=\"popover\"\n placement={placement}\n targetRef={targetRefProp ?? targetRef}\n isOpen={controlledOpen ?? isOpen}\n shouldFlip={shouldFlip}\n onOpenChange={handleOpenChange}\n >\n {/*\n The trigger is disabled by either flag, but the two arrive through\n different channels on purpose. A disabled FIELD travels through the\n provider so `current` treats the state as inherited: the field has\n already faded the colour the trigger paints from, and fading again\n multiplies the two (measured `.12` — all but invisible). Read-only\n alone leaves the field's text opaque, so there the trigger really is\n disabled on its own and should fade itself.\n */}\n <ItemActionProvider isDisabled={isDisabled}>\n <ColorInputTrigger\n size={size}\n aria-label=\"Open the color picker\"\n isDisabled={isReadOnly && !isDisabled ? true : undefined}\n styles={triggerStyles}\n />\n </ItemActionProvider>\n <Dialog\n aria-label=\"Color picker\"\n width=\"max-content\"\n styles={POPOVER_STYLES}\n >\n <ColorPanel\n color={color ?? FALLBACK_COLOR}\n space={space}\n isDisabled={isDisabled || isReadOnly}\n previewFormat={outputFormat(text)}\n onChange={handleColorChange}\n onSpaceChange={setSpace}\n />\n </Dialog>\n </DialogTrigger>\n )\n }\n />\n );\n});\n\n(ColorInput as any).cubeInputType = 'Text';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,MAAMsC,iBAAyB,EAAEC,UAAU,QAAQ;;AAGnD,MAAMC,iBAA6B;CAAEC,GAAG;CAAKC,GAAG;CAAKC,GAAG;CAAK;AAE7D,MAAMC,oBAAoBtC,MAAMgB,YAAY;CAC1CuB,IAAI;CACJC,MAAM,oBAAC,gBAAW;CACnB,CAAC;;;;;AAkEF,MAAayB,aAAa9D,WAAW,SAAA8D,WAAAC,UAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,IAAA;CAAA,IAAAC;AAAA,KAAAF,EAAA,OAAAG,OAAAC,IAAA,4BAAA,EAAA;AAIGF,OAAA;GAAAG,0BACV;GAAQC,kBAChBC;GAInB;AAAAP,IAAA,KAAAE;OAAAA,MAAAF,EAAA;CAND,MAAAQ,QAAc1D,cAAcgD,UAAUI,GAMpC;CAEF,MAAA,EAAA/B,IAAAG,OAAAmC,SAAAlC,cAAAC,UAAAkC,YAAAjC,QAAAkC,IAAAjC,YAAAkC,IAAAjC,cAAAkC,IAAAjC,QAAAkC,gBAAAjC,aAAAC,cAAAC,YAAAC,WAAA+B,eAAA7B,WAAA8B,IAAA7B,aAAA8B,IAAA7B,MAAA8B,YAAAC,YAAAC,WAAAC,SAAAC,WAAAC,WAAA7B,aAAAC,eAAAC,cAAA4B,YAAAC,gBAAAjC,QAAAkC,YAAArC,SAAAsC,OAAAC,aAAA,cAAAC,WAAA,mBAAAC,gBAAA,oBAAAC,iBAAAC,OAkCIxB;CA7BF,MAAA/B,SAAAkC,OAAAsB,SAAA,QAAAtB;CACA,MAAAjC,aAAAkC,OAAAqB,SAAA,WAAArB;CACA,MAAAjC,eAAAkC,OAAAoB,SAAA,QAAApB;CAMA,MAAA3B,YAAA8B,OAAAiB,SAAA,iBAAAjB;CACA,MAAA7B,cAAA8B,OAAAgB,SAAA,iBAAAhB;CAwBF,MAAAiB,kBAAwB1E,yBAAyB;CAE5B,MAAA2E,KAAA1B,WAAAlC,gBAAA;CAA2B,IAAA6D;AAAA,KAAApC,EAAA,OAAAmC,IAAA;AAA5BC,OAACD,GAA2BE,UAAY;AAAArC,IAAA,KAAAmC;AAAAnC,IAAA,KAAAoC;OAAAA,MAAApC,EAAA;CAA5D,MAAAsC,cAAoBF;CAAyC,IAAAG;AAAA,KAAAvC,EAAA,OAAAvB,UAAAuB,EAAA,OAAAtB,cAAAsB,EAAA,OAAAsC,aAAA;AAC5BC,aAAA;GAC/B,MAAAC,SAAelF,WAAWgF,YAAY;AAAC,UAEhCE,UAAU9D,eAAe,WAC5BrB,YAAYmF,QAAQ/D,OACT,GAFR6D;;AAGRtC,IAAA,KAAAvB;AAAAuB,IAAA,KAAAtB;AAAAsB,IAAA,KAAAsC;AAAAtC,IAAA,KAAAuC;OAAAA,MAAAvC,EAAA;CAND,MAAA,CAAAyC,MAAAC,WAAwBrG,SAASkG,GAM/B;CAAC,IAAAI;AAAA,KAAA3C,EAAA,OAAAsC,aAAA;AACgCK,aAAMrF,WAAWgF,YAAY;AAAAtC,IAAA,KAAAsC;AAAAtC,IAAA,KAAA2C;OAAAA,MAAA3C,EAAA;CAAhE,MAAA,CAAA4C,OAAAC,YAA0BxG,SAASsG,GAA8B;CACjE,MAAA,CAAAG,OAAAC,YAA0B1G,SAAqBsC,aAAa;CAC5D,MAAA,CAAAC,QAAAoE,WAA0B3G,SAASwC,eAAA,MAAqB;CAExD,MAAAG,YAAkB5C,OAAuB,KAAK;CAC9C,MAAA6G,WAAiB7G,OAAyB,KAAK;CAAC,IAAA8G;AAAA,KAAAlD,EAAA,OAAAsC,eAAAtC,EAAA,QAAAyC,MAAA;AAEvBS,QAAA5F,WAAWgF,YAAwB,GAAnCG,OAAA;AAAmCzC,IAAA,KAAAsC;AAAAtC,IAAA,MAAAyC;AAAAzC,IAAA,MAAAkD;OAAAA,OAAAlD,EAAA;CAA5D,MAAAmD,YAAkB/G,OAAO8G,IAAoC;CAE7D,MAAAE,UAAgBhH,OAAkCkC,QAAM;CAAC,IAAA+E;AAAA,KAAArD,EAAA,QAAAU,YAAA;AAEnC2C,SAAAC,SAAA;AACpBF,WAAOG,UAAWD;AAClB9E,gBAAW8E,KAAK;;AACjBtD,IAAA,MAAAU;AAAAV,IAAA,MAAAqD;OAAAA,OAAArD,EAAA;CAHD,MAAAwD,OAAahH,SAAS6G,IAGpB;CAAC,IAAAI;AAAA,KAAAzD,EAAA,QAAAvB,UAAAuB,EAAA,QAAAtB,YAAA;AAGkB+E,SAAAC,WACnBhF,eAAe,WAAfD,SAAmCrB,aAAasG,OAAiB,IAA9BjF;AAA8BuB,IAAA,MAAAvB;AAAAuB,IAAA,MAAAtB;AAAAsB,IAAA,MAAAyD;OAAAA,OAAAzD,EAAA;CADnE,MAAA2D,eAAqBF;CAC+C,IAAAG;CAAA,IAAAC;AAAA,KAAA7D,EAAA,QAAAvB,UAAAuB,EAAA,QAAAtB,cAAAsB,EAAA,QAAAS,SAAA;AAI1DmD,cAAA;AACR,OAAItF,YAAU2D,UAAa3D,YAAU8E,QAAOG,QAAQ;AAEpDH,WAAOG,UAAWjF;GAElB,MAAAwF,OAAarD,WAAA,IAAW4B,UAAY;GACpC,MAAA0B,WAAezG,WAAWwG,IAAI;GAC9B,MAAAE,WACED,YAAUrF,eAAe,WAAWrB,YAAYmF,UAAQ/D,OAAa,GAArEqF;AAEFjB,YAASL,SAAO;AAChBE,WAAQsB,SAAS;AACjBb,aAASI,UAAWf,WAAAwB,WAAA;;AACnBH,QAAA;GAACvF;GAAOG;GAAQC;GAAW;AAAAsB,IAAA,MAAAvB;AAAAuB,IAAA,MAAAtB;AAAAsB,IAAA,MAAAS;AAAAT,IAAA,MAAA4D;AAAA5D,IAAA,MAAA6D;QAAA;AAAAD,QAAA5D,EAAA;AAAA6D,QAAA7D,EAAA;;AAb9B7D,WAAUyH,KAaPC,IAA4B;CAAA,IAAAI;AAAA,KAAAjE,EAAA,QAAAwD,QAAAxD,EAAA,QAAAtB,cAAAsB,EAAA,QAAA2D,cAAA;AAEGM,SAAAC,eAAA;AAChCxB,WAAQsB,WAAS;AAEjB,OAAI,CAACA,WAAQG,MAAO,EAAA;AAClBtB,aAAS,KAAK;AACdM,cAASI,UAAW;AACpBC,SAAK,KAAK;AAAA;;GAKZ,MAAAY,WAAe9G,WAAW0G,WAAS;AAInC,OAAI,CAACxB,SAAM;AAEXK,YAASL,SAAO;AAChBW,aAASI,UAAWS;AACpBR,QACE9E,eAAe,SACXsF,WAAQG,MACmC,GAA3C9G,YAAYmF,UAAQmB,aAAaK,WAAS,CAChD,CAAC;;AACFhE,IAAA,MAAAwD;AAAAxD,IAAA,MAAAtB;AAAAsB,IAAA,MAAA2D;AAAA3D,IAAA,MAAAiE;OAAAA,OAAAjE,EAAA;CAxBD,MAAAqE,mBAAyB7H,SAASyH,IAwBhC;CAAC,IAAAK;AAAA,KAAAtE,EAAA,QAAAvB,UAAAuB,EAAA,QAAAtB,cAAAsB,EAAA,QAAAyC,MAAA;AAGqB6B,cAAA;AACtB,OAAI,CAAC7B,KAAI0B,MAAO,CAAA;GAEhB,MAAAI,WAAejH,WAAWmF,KAAK;AAE/B,OAAI,CAACD,UAAM;AACTE,YAAQS,UAASI,QAAS;AAAA;;AAK5B,OAAI7E,eAAe,SAAUgE,SAAQrF,YAAYmF,UAAQ/D,OAAO,CAAC;;AAClEuB,IAAA,MAAAvB;AAAAuB,IAAA,MAAAtB;AAAAsB,IAAA,MAAAyC;AAAAzC,IAAA,MAAAsE;OAAAA,OAAAtE,EAAA;CAZD,MAAAwE,SAAehI,SAAS8H,IAYtB;CAAC,IAAAG;AAAA,KAAAzE,EAAA,QAAAX,SAAA;AAU0BoF,SAAAnF,UAAA;AAC3BA,SAAKoF,cAAcC,QAAS;AAC5BtF,aAAUC,MAAM;;AACjBU,IAAA,MAAAX;AAAAW,IAAA,MAAAyE;OAAAA,OAAAzE,EAAA;CAHD,MAAA4E,cAAoBpI,SAASiI,IAG3B;CAYF,MAAAI,kBAAwBrI,SAASsI,OAK/B;CAAC,IAAAC;AAAA,KAAA/E,EAAA,QAAAwE,UAAAxE,EAAA,QAAA0B,YAAA;AAEyBqD,SAAAC,YAAA;AAC1BR,WAAQ;AACR9C,gBAAapC,QAAM;;AACpBU,IAAA,MAAAwE;AAAAxE,IAAA,MAAA0B;AAAA1B,IAAA,MAAA+E;OAAAA,OAAA/E,EAAA;CAHD,MAAAiF,aAAmBzI,SAASuI,IAG1B;CAAC,IAAAG;AAAA,KAAAlF,EAAA,QAAAwE,QAAA;AAE4BU,SAAAC,YAAA;AAC7B,OAAI7F,QAAK8F,QAAS,QAASZ,SAAQ;;AACpCxE,IAAA,MAAAwE;AAAAxE,IAAA,MAAAkF;OAAAA,OAAAlF,EAAA;CAFD,MAAAqF,gBAAsB7I,SAAS0I,IAE7B;CAAC,IAAAI;AAAA,KAAAtF,EAAA,QAAAwD,QAAAxD,EAAA,QAAA2D,gBAAA3D,EAAA,QAAAyC,MAAA;AAEgC6C,SAAAC,cAAA;GACjC,MAAAC,aAAiBnI,YAAYkI,WAAW5B,aAAalB,KAAK,CAAC;AAE3DI,YAAS0C,UAAU;AACnB7C,WAAQsB,WAAS;AACjBb,aAASI,UAAWS;AACpBR,QAAKQ,WAAS;;AACfhE,IAAA,MAAAwD;AAAAxD,IAAA,MAAA2D;AAAA3D,IAAA,MAAAyC;AAAAzC,IAAA,MAAAsF;OAAAA,OAAAtF,EAAA;CAPD,MAAAyF,oBAA0BjJ,SAAS8I,IAOjC;CAAC,IAAAI;AAAA,KAAA1F,EAAA,QAAAlB,cAAA;AAE+B4G,SAAAC,WAAA;AAChC3C,WAAQM,OAAK;AACbxE,kBAAewE,OAAK;;AACrBtD,IAAA,MAAAlB;AAAAkB,IAAA,MAAA0F;OAAAA,OAAA1F,EAAA;CAHD,MAAA4F,mBAAyBpJ,SAASkJ,IAGhC;CAAC,IAAAG;AAAA,KAAA7F,EAAA,QAAA+B,mBAAA/B,EAAA,QAAA6B,aAAA7B,EAAA,QAAA8B,kBAAA9B,EAAA,QAAAuB,aAAAvB,EAAA,QAAA4B,eAAA5B,EAAA,QAAAiF,cAAAjF,EAAA,QAAA4E,eAAA5E,EAAA,QAAAqF,iBAAArF,EAAA,QAAAqE,oBAAArE,EAAA,QAAAgC,MAAAhC,EAAA,QAAAkB,cAAAlB,EAAA,QAAAoB,aAAApB,EAAA,QAAAmB,cAAAnB,EAAA,QAAA2B,SAAA3B,EAAA,QAAAb,eAAAa,EAAA,QAAAyC,MAAA;AAGDoD,QAAA;GAAA7D;GAAAL;GAAAC;GAAA,cAIgBC;GAAS,mBACJC;GAAc,oBACbC;GAAeb;GAAAC;GAAAC;GAAAG;GAAApC;GAAAb,OAM5BmE;GAAIqD,MACL;GAAMtH,UACF6F;GAAgBhF,SACjBuF;GAAWpF,QACZyF;GAAUc,WACPV;GACZ;AAAArF,IAAA,MAAA+B;AAAA/B,IAAA,MAAA6B;AAAA7B,IAAA,MAAA8B;AAAA9B,IAAA,MAAAuB;AAAAvB,IAAA,MAAA4B;AAAA5B,IAAA,MAAAiF;AAAAjF,IAAA,MAAA4E;AAAA5E,IAAA,MAAAqF;AAAArF,IAAA,MAAAqE;AAAArE,IAAA,MAAAgC;AAAAhC,IAAA,MAAAkB;AAAAlB,IAAA,MAAAoB;AAAApB,IAAA,MAAAmB;AAAAnB,IAAA,MAAA2B;AAAA3B,IAAA,MAAAb;AAAAa,IAAA,MAAAyC;AAAAzC,IAAA,MAAA6F;OAAAA,OAAA7F,EAAA;CAnBH,MAAA,EAAAwB,YAAAwE,eAAmCzJ,aACjCsJ,KAmBA5C,SACD;CAOiB,MAAAgD,MAAAzF,MAAKjC,gBAAL0D;CACV,MAAAiE,MAAA/H,MAAA;CAAkB,IAAAgI;AAAA,KAAAnG,EAAA,QAAA4C,SAAA5C,EAAA,QAAAJ,cAAA;AAShBuG,QAAA,oBAAC;GAAiB,MAAA;GAAevD;GAAehD,QAAAA;IAAgB;AAAAI,IAAA,MAAA4C;AAAA5C,IAAA,MAAAJ;AAAAI,IAAA,MAAAmG;OAAAA,OAAAnG,EAAA;CAAA,IAAAoG;AAAA,KAAApG,EAAA,QAAA6E,mBAAA7E,EAAA,QAAAgG,YAAA;AAE1DI,QAAA;GAAA,GACPJ;GAAUK,YACD;GAAKC,aACJzB;GACd;AAAA7E,IAAA,MAAA6E;AAAA7E,IAAA,MAAAgG;AAAAhG,IAAA,MAAAoG;OAAAA,OAAApG,EAAA;CAAA,IAAAuG;AAAA,KAAAvG,EAAA,QAAAwB,cAAAxB,EAAA,QAAAyB,gBAAA;AAEW8E,QAAA5J,aAAW6E,YAAYC,eAAe;AAAAzB,IAAA,MAAAwB;AAAAxB,IAAA,MAAAyB;AAAAzB,IAAA,MAAAuG;OAAAA,OAAAvG,EAAA;CAAA,IAAAwG;AAAA,KAAAxG,EAAA,QAAA4C,SAAA5C,EAAA,QAAAc,kBAAAd,EAAA,QAAAyF,qBAAAzF,EAAA,QAAA4F,oBAAA5F,EAAA,QAAAkB,cAAAlB,EAAA,QAAAkC,mBAAAlC,EAAA,QAAApB,UAAAoB,EAAA,QAAAmB,cAAAnB,EAAA,QAAA2D,gBAAA3D,EAAA,QAAAd,aAAAc,EAAA,QAAAjB,cAAAiB,EAAA,QAAAZ,QAAAY,EAAA,QAAA8C,SAAA9C,EAAA,QAAAe,iBAAAf,EAAA,QAAAyC,QAAAzC,EAAA,QAAAL,eAAA;AAWhD6G,QAAAtE,kBAAA,OACE,qBAAC;GACC,WAAA;GACK,MAAA;GACMhD;GACA,WAAA6B,iBAAA/B;GACH,QAAA8B,kBAAAlC;GACIG;GACE6G,cAAAA;cAWd,oBAAC;IAA+B1E;cAC9B,oBAAC;KACO9B;KACK,cAAA;KACC,YAAA+B,cAAA,CAAeD,aAAf,OAAAe;KACJtC,QAAAA;MAEZ;KACA,sBAAC;IACY,cAAA;IACL,OAAA;IACE/B,QAAAA;cAER,oBAAC;KACQ,OAAAgF,SAAA9E;KACAgF;KACK,YAAA5B,cAAAC;KACG,eAAAwC,aAAalB,KAAI;KACtBgD,UAAAA;KACK1C,eAAAA;MAEnB;KACF;IACD;AAAA/C,IAAA,MAAA4C;AAAA5C,IAAA,MAAAc;AAAAd,IAAA,MAAAyF;AAAAzF,IAAA,MAAA4F;AAAA5F,IAAA,MAAAkB;AAAAlB,IAAA,MAAAkC;AAAAlC,IAAA,MAAApB;AAAAoB,IAAA,MAAAmB;AAAAnB,IAAA,MAAA2D;AAAA3D,IAAA,MAAAd;AAAAc,IAAA,MAAAjB;AAAAiB,IAAA,MAAAZ;AAAAY,IAAA,MAAA8C;AAAA9C,IAAA,MAAAe;AAAAf,IAAA,MAAAyC;AAAAzC,IAAA,MAAAL;AAAAK,IAAA,MAAAwG;OAAAA,OAAAxG,EAAA;CAAA,IAAAyG;AAAA,KAAAzG,EAAA,QAAAN,eAAAM,EAAA,QAAAkB,cAAAlB,EAAA,QAAAoB,aAAApB,EAAA,QAAAsB,aAAAtB,EAAA,QAAAmB,cAAAnB,EAAA,QAAAqB,WAAArB,EAAA,QAAAQ,SAAAR,EAAA,QAAAD,OAAAC,EAAA,QAAAZ,QAAAY,EAAA,QAAAiG,OAAAjG,EAAA,QAAAkG,OAAAlG,EAAA,QAAAmG,OAAAnG,EAAA,QAAAoG,OAAApG,EAAA,QAAAuG,OAAAvG,EAAA,SAAAwG,OAAAxG,EAAA,SAAAyC,MAAA;AA3ELgE,QAAA,oBAAC;GAAa,GACRjG;GACCT;GACE0C,OAAAA;GACO,cAAAwD;GACV,IAAAC;GACE9G;GACO,cAAA;GAOP,MAAA+G;GACIlD;GACE,YAAAmD;GAKC1G;GACD,YAAA6G;GACAvH,YAAAA;GACAkC;GACAC;GACDC;GACFC;GACEC;GAGI,gBAAA;GAEb,QAAAkF;IA4CF;AAAAxG,IAAA,MAAAN;AAAAM,IAAA,MAAAkB;AAAAlB,IAAA,MAAAoB;AAAApB,IAAA,MAAAsB;AAAAtB,IAAA,MAAAmB;AAAAnB,IAAA,MAAAqB;AAAArB,IAAA,MAAAQ;AAAAR,IAAA,MAAAD;AAAAC,IAAA,MAAAZ;AAAAY,IAAA,MAAAiG;AAAAjG,IAAA,MAAAkG;AAAAlG,IAAA,MAAAmG;AAAAnG,IAAA,MAAAoG;AAAApG,IAAA,MAAAuG;AAAAvG,IAAA,OAAAwG;AAAAxG,IAAA,OAAAyC;AAAAzC,IAAA,OAAAyG;OAAAA,OAAAzG,EAAA;AAAA,QA7EFyG;EA+EF;AAEF,AAAC5G,WAAmB6G,gBAAgB;AAxSC,SAAAnG,MAAAL,IAAA;CAMd,MAAA,EAAA5B,OAAAE,aAAA0B;AAAmB,QAAM;EACnC5B;EAAkCE;EAE1C;;AATgC,SAAAsG,OAAA6B,SAAA;AAkKjC,KAAIC,SAAQC,kBAAmBvH,QAAKoF,cAAc;AAElDpF,SAAKwH,gBAAiB;AACtBxH,SAAKoF,cAAcqC,OAAQ"}
1
+ {"version":3,"file":"ColorInput.js","names":["BaseProps","BaseStyleProps","BlockStyleProps","ColorStyleProps","OuterStyleProps","Styles","tasty","FocusEvent","ForwardedRef","forwardRef","KeyboardEvent","MouseEvent","RefObject","useEffect","useRef","useState","Placement","useTextField","useEvent","useI18n","PipetteIcon","FieldBaseProps","mergeProps","ItemAction","ItemActionProvider","useFieldProps","Dialog","DialogTrigger","ColorSpace","ColorFormat","ColorValue","detectFormat","formatColor","parseColor","ColorPanel","useIsInsideColorPopover","ColorSwatch","TextInputBase","ColorInputFormatMode","POPOVER_STYLES","overflow","FALLBACK_COLOR","h","s","l","ColorInputTrigger","qa","icon","CubeColorInputProps","value","defaultValue","onChange","format","formatMode","defaultSpace","isOpen","defaultOpen","onOpenChange","shouldFlip","targetRef","HTMLElement","placement","placeholder","size","onFocus","event","HTMLInputElement","onBlur","styles","inputStyles","triggerStyles","swatchStyles","ColorInput","allProps","ref","$","_c","t","t0","Symbol","for","defaultValidationTrigger","valuePropsMapper","_temp","props","value_0","onChange_0","t1","t2","t3","controlledOpen","targetRefProp","t4","t5","isDisabled","isReadOnly","isInvalid","isValid","isLoading","autoFocus","labelProps","userLabelProps","userOnBlur","label","description","ariaLabel","ariaLabelledby","ariaDescribedby","id","undefined","isInsidePopover","t6","t7","toString","initialText","t8","parsed","text","setText","t9","color","setColor","space","setSpace","setOpen","inputRef","t10","validText","emitted","t11","next","current","emit","t12","source","outputFormat","t13","t14","raw","parsed_0","nextText","t15","nextText_0","trim","parsed_1","handleTextChange","t16","parsed_2","settle","t17","currentTarget","select","handleFocus","handleMouseDown","_temp2","t18","event_1","handleBlur","t19","event_2","key","handleKeyDown","t20","nextColor","nextText_1","handleColorChange","t21","next_0","handleOpenChange","t22","type","onKeyDown","inputProps","t23","t24","t25","t26","spellCheck","onMouseDown","t27","t28","t29","cubeInputType","event_0","document","activeElement","preventDefault","focus"],"sources":["../../../../src/components/fields/ColorInput/ColorInput.tsx"],"sourcesContent":["import {\n BaseProps,\n BaseStyleProps,\n BlockStyleProps,\n ColorStyleProps,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n FocusEvent,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Placement, useTextField } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { useI18n } from '../../../i18n';\nimport { PipetteIcon } from '../../../icons/PipetteIcon';\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { ItemAction, ItemActionProvider } from '../../actions';\nimport { useFieldProps } from '../../form';\nimport { Dialog } from '../../overlays/Dialog/Dialog';\nimport { DialogTrigger } from '../../overlays/Dialog/DialogTrigger';\nimport { ColorSpace } from '../color/channels';\nimport {\n ColorFormat,\n ColorValue,\n detectFormat,\n formatColor,\n parseColor,\n} from '../color/color';\nimport { ColorPanel } from '../color/ColorPanel';\nimport { useIsInsideColorPopover } from '../color/context';\nimport { ColorSwatch } from '../ColorSwatch';\nimport { TextInputBase } from '../TextInput/TextInputBase';\n\n/**\n * How the text in the input relates to the committed value.\n *\n * - `forced` — the text is rewritten in `format` whenever it is not mid-edit,\n * and the value is always written in `format`.\n * - `derive` — the user's own notation is left alone, and the value is\n * normalized in whichever notation the text is written in.\n * - `free` — the text *is* the value, verbatim. It is still verified, so an\n * unparsable entry falls back to the last valid one.\n */\nexport type ColorInputFormatMode = 'forced' | 'derive' | 'free';\n\n/**\n * A popover caps its height at half the viewport. The panel can exceed that on\n * a short screen, and would otherwise spill outside the popover's own border.\n */\nconst POPOVER_STYLES: Styles = { overflow: 'auto' };\n\n/** What the popover starts from when there is no color to edit yet. */\nconst FALLBACK_COLOR: ColorValue = { h: 264, s: 0.8, l: 0.6 };\n\nconst ColorInputTrigger = tasty(ItemAction, {\n qa: 'ColorInputTrigger',\n icon: <PipetteIcon />,\n});\n\nexport interface CubeColorInputProps\n extends BaseProps,\n BaseStyleProps,\n OuterStyleProps,\n BlockStyleProps,\n ColorStyleProps,\n FieldBaseProps<string | null | undefined> {\n /** The selected color, as a color string. */\n value?: string | null;\n /** The initial color of an uncontrolled picker. */\n defaultValue?: string | null;\n /** Called with the normalized color string, or `null` when the field is cleared. */\n onChange?: (value: string | null) => void;\n /** Notation the value is written in, and the one `forced` mode displays. */\n format?: ColorFormat;\n /** How strictly the input text is tied to `format`. */\n formatMode?: ColorInputFormatMode;\n /** Color concept the popover opens with. */\n defaultSpace?: ColorSpace;\n /** Whether the popover is open. Makes the disclosure controlled. */\n isOpen?: boolean;\n /** Whether the popover is open initially. */\n defaultOpen?: boolean;\n /** Called when the popover opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Whether the popover may flip to the other side of the input. */\n shouldFlip?: boolean;\n /**\n * The ref of the element the popover should visually attach itself to.\n * Defaults to the field wrapper.\n *\n * Forwarded to `DialogTrigger`, so the anchor also becomes what outside-click\n * dismissal treats as the trigger.\n */\n targetRef?: RefObject<HTMLElement | null>;\n /**\n * Placement of the popover relative to the anchor.\n * Accepts React Aria's `Placement` strings (e.g. `'bottom start'`,\n * `'top start'`, `'right top'`, `'left top'`).\n * @default 'bottom right'\n */\n placement?: Placement;\n /** Text shown while the field is empty. */\n placeholder?: string;\n /** The size of the input. */\n size?: 'small' | 'medium' | 'large' | (string & {});\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n styles?: Styles;\n /** Styles of the text input element. */\n inputStyles?: Styles;\n /** Styles of the popover trigger button. */\n triggerStyles?: Styles;\n /** Styles of the color swatch shown inside the input. */\n swatchStyles?: Styles;\n}\n\n/**\n * A color field: the color as text, a swatch of the current value, and a\n * popover to dial it in across OKHST, OKLCH and RGB.\n */\nexport const ColorInput = forwardRef(function ColorInput(\n allProps: CubeColorInputProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const { t } = useI18n();\n const props = useFieldProps(allProps, {\n defaultValidationTrigger: 'onBlur',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value as string | null | undefined,\n onChange,\n }),\n });\n\n const {\n qa,\n value,\n defaultValue,\n onChange,\n format = 'hex',\n formatMode = 'forced',\n defaultSpace = 'hst',\n isOpen: controlledOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip,\n targetRef: targetRefProp,\n placement = 'bottom right',\n placeholder = 'Pick a color',\n size,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n isLoading,\n autoFocus,\n inputStyles,\n triggerStyles,\n swatchStyles,\n labelProps: userLabelProps,\n onBlur: userOnBlur,\n onFocus,\n label,\n description,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n id,\n } = props;\n\n // Already inside a color popover: this is the value field for that popover,\n // so it must not offer a popover of its own.\n const isInsidePopover = useIsInsideColorPopover();\n\n const initialText = (value ?? defaultValue ?? '').toString();\n const [text, setText] = useState(() => {\n const parsed = parseColor(initialText);\n\n return parsed && formatMode === 'forced'\n ? formatColor(parsed, format)\n : initialText;\n });\n const [color, setColor] = useState(() => parseColor(initialText));\n const [space, setSpace] = useState<ColorSpace>(defaultSpace);\n const [isOpen, setOpen] = useState(defaultOpen ?? false);\n\n const targetRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n /** The last text that parsed, so an invalid entry has something to fall back to. */\n const validText = useRef(parseColor(initialText) ? text : '');\n /** What was last handed to `onChange`, to tell our own updates from outside ones. */\n const emitted = useRef<string | null | undefined>(value);\n\n const emit = useEvent((next: string | null) => {\n emitted.current = next;\n onChange?.(next);\n });\n\n /** The notation a value should be written in, given the current text. */\n const outputFormat = (source: string): ColorFormat =>\n formatMode === 'forced' ? format : detectFormat(source) ?? format;\n\n // Adopt values that did not come from here — a form reset, or a parent that\n // overrides what the user picked.\n useEffect(() => {\n if (value === undefined || value === emitted.current) return;\n\n emitted.current = value;\n\n const raw = (value ?? '').toString();\n const parsed = parseColor(raw);\n const nextText =\n parsed && formatMode === 'forced' ? formatColor(parsed, format) : raw;\n\n setColor(parsed);\n setText(nextText);\n validText.current = parsed ? nextText : '';\n }, [value, format, formatMode]);\n\n const handleTextChange = useEvent((nextText: string) => {\n setText(nextText);\n\n if (!nextText.trim()) {\n setColor(null);\n validText.current = '';\n emit(null);\n\n return;\n }\n\n const parsed = parseColor(nextText);\n\n // Half-typed input keeps the last valid color, so the value stays a real\n // color at every keystroke.\n if (!parsed) return;\n\n setColor(parsed);\n validText.current = nextText;\n emit(\n formatMode === 'free'\n ? nextText.trim()\n : formatColor(parsed, outputFormat(nextText)),\n );\n });\n\n /** Resolve whatever is in the input into a real color, or undo it. */\n const settle = useEvent(() => {\n if (!text.trim()) return;\n\n const parsed = parseColor(text);\n\n if (!parsed) {\n setText(validText.current);\n\n return;\n }\n\n if (formatMode === 'forced') setText(formatColor(parsed, format));\n });\n\n /**\n * Focusing offers the whole value up for replacement, the way a hex field\n * does. The string is the unit of editing here: a single channel is tuned\n * with the sliders, not by hand-editing one number inside `oklch(…)`.\n *\n * Read off the event rather than `inputRef`, which `TextInputBase` re-points\n * through `useCombinedRefs`.\n */\n const handleFocus = useEvent((event: FocusEvent<HTMLInputElement>) => {\n event.currentTarget.select();\n onFocus?.(event);\n });\n\n /**\n * A click would otherwise drop a caret and undo that selection — the browser\n * applies it after the focus handler has run. Suppressing the default action\n * of the focusing press means no caret is ever placed; focus is then moved\n * here instead, which selects.\n *\n * Only the press that *takes* focus is suppressed, so clicking a field that\n * already has focus still positions the caret, and dragging still selects a\n * range.\n */\n const handleMouseDown = useEvent((event: MouseEvent<HTMLInputElement>) => {\n if (document.activeElement === event.currentTarget) return;\n\n event.preventDefault();\n event.currentTarget.focus();\n });\n\n const handleBlur = useEvent((event: FocusEvent<HTMLInputElement>) => {\n settle();\n userOnBlur?.(event);\n });\n\n const handleKeyDown = useEvent((event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') settle();\n });\n\n const handleColorChange = useEvent((nextColor: ColorValue) => {\n const nextText = formatColor(nextColor, outputFormat(text));\n\n setColor(nextColor);\n setText(nextText);\n validText.current = nextText;\n emit(nextText);\n });\n\n const handleOpenChange = useEvent((next: boolean) => {\n setOpen(next);\n onOpenChange?.(next);\n });\n\n const { labelProps, inputProps } = useTextField(\n {\n id,\n label,\n description,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n isDisabled,\n isReadOnly,\n isInvalid,\n autoFocus,\n placeholder,\n value: text,\n type: 'text',\n onChange: handleTextChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n },\n inputRef,\n );\n\n return (\n <TextInputBase\n {...props}\n ref={ref}\n value={text}\n defaultValue={props.defaultValue ?? undefined}\n qa={qa || 'ColorInput'}\n size={size}\n autoComplete=\"off\"\n // A flat 20px at every field size, which is what this has always rendered.\n // Neither of the other two options is right here: tracking `$size` puts a\n // large field's swatch against the border, because a text input hangs its\n // prefix off the edge with no padding of its own, and passing the field's\n // own size through grows the swatch with the field — visibly, and for no\n // reason a caller asked for. The swatch is a fixed badge, not a control.\n icon={<ColorSwatch size=\"small\" color={color} styles={swatchStyles} />}\n inputRef={inputRef}\n inputProps={{\n ...inputProps,\n spellCheck: false,\n onMouseDown: handleMouseDown,\n }}\n inputStyles={inputStyles}\n labelProps={mergeProps(labelProps, userLabelProps)}\n wrapperRef={targetRef}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n // The validation state reads left of the trigger, the way `DateInputBase`\n // orders it for the date pickers.\n suffixPosition=\"after\"\n suffix={\n isInsidePopover ? null : (\n <DialogTrigger\n hideArrow\n type=\"popover\"\n placement={placement}\n targetRef={targetRefProp ?? targetRef}\n isOpen={controlledOpen ?? isOpen}\n shouldFlip={shouldFlip}\n onOpenChange={handleOpenChange}\n >\n {/*\n The trigger is disabled by either flag, but the two arrive through\n different channels on purpose. A disabled FIELD travels through the\n provider so `current` treats the state as inherited: the field has\n already faded the colour the trigger paints from, and fading again\n multiplies the two (measured `.12` — all but invisible). Read-only\n alone leaves the field's text opaque, so there the trigger really is\n disabled on its own and should fade itself.\n */}\n <ItemActionProvider isDisabled={isDisabled}>\n <ColorInputTrigger\n size={size}\n aria-label={t(\n 'colorInput.openColorPicker',\n 'Open the color picker',\n )}\n isDisabled={isReadOnly && !isDisabled ? true : undefined}\n styles={triggerStyles}\n />\n </ItemActionProvider>\n <Dialog\n aria-label={t('colorPicker.colorPicker', 'Color picker')}\n width=\"max-content\"\n styles={POPOVER_STYLES}\n >\n <ColorPanel\n color={color ?? FALLBACK_COLOR}\n space={space}\n isDisabled={isDisabled || isReadOnly}\n previewFormat={outputFormat(text)}\n onChange={handleColorChange}\n onSpaceChange={setSpace}\n />\n </Dialog>\n </DialogTrigger>\n )\n }\n />\n );\n});\n\n(ColorInput as any).cubeInputType = 'Text';\n"],"mappings":"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"}
@@ -68,6 +68,8 @@ interface CubeColorPickerProps extends BaseProps, OuterStyleProps, BlockStylePro
68
68
  /** Styles of the color swatch. */
69
69
  swatchStyles?: Styles;
70
70
  'aria-label'?: string;
71
+ /** Ids of elements that also describe the trigger, beside the field's own description and message. */
72
+ 'aria-describedby'?: string;
71
73
  }
72
74
  /**
73
75
  * A color swatch that opens the color popover — the same one `ColorInput`
@@ -1,7 +1,8 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.193.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.194.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { _Text } from "../../content/Text.js";
5
+ import { useI18n } from "../../../i18n/useI18n.js";
5
6
  import { _ItemButton } from "../../actions/ItemButton/ItemButton.js";
6
7
  import { Dialog } from "../../overlays/Dialog/Dialog.js";
7
8
  import { getValidationTheme } from "../../form/validation/resolve-validation-props.js";
@@ -57,6 +58,7 @@ const ColorPickerWrapper = tasty({
57
58
  * typed: a toolbar, a chart legend, a cell in a dense table.
58
59
  */
59
60
  const ColorPicker = forwardRef(function ColorPicker(allProps, ref) {
61
+ const { t } = useI18n();
60
62
  const props = useFieldProps(allProps, {
61
63
  defaultValidationTrigger: "onChange",
62
64
  valuePropsMapper: ({ value, onChange }) => ({
@@ -64,7 +66,7 @@ const ColorPicker = forwardRef(function ColorPicker(allProps, ref) {
64
66
  onChange
65
67
  })
66
68
  });
67
- const { qa, id, value: value_0, defaultValue, onChange: onChange_0, format = "hex", defaultSpace = "hst", isOpen: controlledOpen, defaultOpen, onOpenChange, shouldFlip, targetRef, placement = "bottom start", children, placeholder = "Pick a color", size, type = "outline", theme = "default", triggerTooltip, swatches, swatchColumns, triggerStyles, swatchStyles, isDisabled, isReadOnly, isLoading, isInvalid, isValid, autoFocus, "aria-label": ariaLabel } = props;
69
+ const { qa, id, value: value_0, defaultValue, onChange: onChange_0, format = "hex", defaultSpace = "hst", isOpen: controlledOpen, defaultOpen, onOpenChange, shouldFlip, targetRef, placement = "bottom start", children, placeholder = "Pick a color", size, type = "outline", theme = "default", triggerTooltip, swatches, swatchColumns, triggerStyles, swatchStyles, isDisabled, isReadOnly, isLoading, isInvalid, isValid, autoFocus, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy } = props;
68
70
  const styles = extractStyles(props, [...OUTER_STYLES, ...BLOCK_STYLES]);
69
71
  /**
70
72
  * Loading locks the trigger, but the popover can outlive that — it may be
@@ -138,11 +140,12 @@ const ColorPicker = forwardRef(function ColorPicker(allProps, ref) {
138
140
  isDisabled: isEditingDisabled || isReadOnly,
139
141
  autoFocus,
140
142
  "aria-label": ariaLabel,
143
+ "aria-describedby": ariaDescribedBy,
141
144
  mods: { placeholder: !color },
142
145
  styles: triggerStyles,
143
146
  children: label
144
147
  }), /* @__PURE__ */ jsx(Dialog, {
145
- "aria-label": "Color picker",
148
+ "aria-label": t("colorPicker.colorPicker", "Color picker"),
146
149
  width: "max-content",
147
150
  styles: POPOVER_STYLES,
148
151
  children: /* @__PURE__ */ jsx(ColorPopoverContext.Provider, {
@@ -153,7 +156,7 @@ const ColorPicker = forwardRef(function ColorPicker(allProps, ref) {
153
156
  isDisabled: isEditingDisabled || isReadOnly,
154
157
  previewFormat: format,
155
158
  input: /* @__PURE__ */ jsx(ColorInput, {
156
- "aria-label": "Color value",
159
+ "aria-label": t("colorPicker.colorValue", "Color value"),
157
160
  format,
158
161
  value: colorText,
159
162
  isDisabled: isEditingDisabled,
@@ -161,7 +164,7 @@ const ColorPicker = forwardRef(function ColorPicker(allProps, ref) {
161
164
  onChange: handleValueChange
162
165
  }),
163
166
  swatches: swatches?.length ? /* @__PURE__ */ jsx(ColorSwatchGroup, {
164
- "aria-label": "Palette",
167
+ "aria-label": t("colorPicker.palette", "Palette"),
165
168
  styles: PALETTE_STYLES,
166
169
  colors: swatches,
167
170
  columns: swatchColumns,
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.js","names":["BaseProps","BLOCK_STYLES","BlockStyleProps","OUTER_STYLES","OuterStyleProps","Styles","tasty","ForwardedRef","forwardRef","ReactNode","RefObject","useEffect","useRef","useState","Placement","useEvent","FieldBaseProps","extractStyles","ItemButton","CubeItemProps","Text","getValidationIcon","getValidationTheme","useFieldProps","wrapWithField","Dialog","DialogTrigger","ColorSpace","ColorFormat","ColorValue","formatColor","parseColor","ColorPanel","ColorPopoverContext","ColorInput","ColorSwatch","ColorSwatchGroup","CubeColorSwatchItem","POPOVER_STYLES","overflow","PALETTE_STYLES","border","padding","width","FALLBACK_COLOR","h","s","l","ColorPickerWrapper","qa","styles","display","flow","gridRows","placeContent","placeItems","CubeColorPickerProps","value","defaultValue","onChange","format","defaultSpace","isOpen","defaultOpen","onOpenChange","shouldFlip","targetRef","HTMLElement","placement","children","placeholder","size","type","theme","triggerTooltip","swatches","swatchColumns","triggerStyles","swatchStyles","ColorPicker","allProps","ref","props","defaultValidationTrigger","valuePropsMapper","id","controlledOpen","isDisabled","isReadOnly","isLoading","isInvalid","isValid","autoFocus","ariaLabel","isEditingDisabled","color","setColor","toString","space","setSpace","setOpen","emitted","undefined","current","handleColorChange","next","text","colorText","handleValueChange","handleOpenChange","label","pickerField","length","cubeInputType"],"sources":["../../../../src/components/fields/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import {\n BaseProps,\n BLOCK_STYLES,\n BlockStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Placement } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { FieldBaseProps } from '../../../shared';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions';\nimport { CubeItemProps } from '../../content/Item';\nimport { Text } from '../../content/Text';\nimport {\n getValidationIcon,\n getValidationTheme,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { Dialog } from '../../overlays/Dialog/Dialog';\nimport { DialogTrigger } from '../../overlays/Dialog/DialogTrigger';\nimport { ColorSpace } from '../color/channels';\nimport {\n ColorFormat,\n ColorValue,\n formatColor,\n parseColor,\n} from '../color/color';\nimport { ColorPanel } from '../color/ColorPanel';\nimport { ColorPopoverContext } from '../color/context';\nimport { ColorInput } from '../ColorInput';\nimport { ColorSwatch } from '../ColorSwatch';\nimport { ColorSwatchGroup, CubeColorSwatchItem } from '../ColorSwatchGroup';\n\n/**\n * A popover caps its height at half the viewport. The panel can exceed that on\n * a short screen, and would otherwise spill outside the popover's own border.\n */\nconst POPOVER_STYLES: Styles = { overflow: 'auto' };\n\n/**\n * The rule separating the palette from the editor. `Divider` is not used: it\n * places itself on named grid lines meant for menu layouts, which this panel\n * does not define, so it lands in the wrong row and spawns a stray column.\n */\nconst PALETTE_STYLES: Styles = {\n border: 'top',\n padding: '1x top',\n width: '100%',\n};\n\n/** What the popover starts from when there is no color to edit yet. */\nconst FALLBACK_COLOR: ColorValue = { h: 264, s: 0.8, l: 0.6 };\n\nconst ColorPickerWrapper = tasty({\n qa: 'ColorPickerWrapper',\n styles: {\n display: 'inline-grid',\n flow: 'column',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n },\n});\n\nexport interface CubeColorPickerProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n FieldBaseProps<string | null | undefined> {\n /** The selected color, as a color string. */\n value?: string | null;\n /** The initial color of an uncontrolled picker. */\n defaultValue?: string | null;\n /** Called with the color string, or `null` when there is no color. */\n onChange?: (value: string | null) => void;\n /** Notation the value is written in. */\n format?: ColorFormat;\n /** Color concept the popover opens with. */\n defaultSpace?: ColorSpace;\n /** Whether the popover is open. Makes the disclosure controlled. */\n isOpen?: boolean;\n /** Whether the popover is open initially. */\n defaultOpen?: boolean;\n /** Called when the popover opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Whether the popover may flip to the other side of the trigger. */\n shouldFlip?: boolean;\n /**\n * The ref of the element the popover should visually attach itself to.\n * Defaults to the trigger button.\n *\n * Forwarded to `DialogTrigger`, so the anchor also becomes what outside-click\n * dismissal treats as the trigger.\n */\n targetRef?: RefObject<HTMLElement | null>;\n /**\n * Placement of the popover relative to the anchor.\n * Accepts React Aria's `Placement` strings (e.g. `'bottom start'`,\n * `'top start'`, `'right top'`, `'left top'`).\n * @default 'bottom start'\n */\n placement?: Placement;\n /** Replaces the color shown on the trigger. Pass `null` for a swatch on its own. */\n children?: ReactNode;\n /** Shown on the trigger while there is no color. */\n placeholder?: ReactNode;\n /** The size of the trigger. */\n size?: CubeItemProps['size'];\n /** The visual type of the trigger. */\n type?: CubeItemProps['type'];\n theme?: CubeItemProps['theme'];\n /** Tooltip for the trigger, separate from `labelTooltip`. */\n triggerTooltip?: CubeItemProps['tooltip'];\n /** Colors to offer under the editor, for picking without dialing one in. */\n swatches?: CubeColorSwatchItem[];\n /** How many swatches per row. Defaults to a single row. */\n swatchColumns?: number;\n styles?: Styles;\n /** Styles of the trigger button. */\n triggerStyles?: Styles;\n /** Styles of the color swatch. */\n swatchStyles?: Styles;\n 'aria-label'?: string;\n}\n\n/**\n * A color swatch that opens the color popover — the same one `ColorInput`\n * uses, without the text field. Reach for it when a color is chosen but never\n * typed: a toolbar, a chart legend, a cell in a dense table.\n */\nexport const ColorPicker = forwardRef(function ColorPicker(\n allProps: CubeColorPickerProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const props = useFieldProps(allProps, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value as string | null | undefined,\n onChange,\n }),\n });\n\n const {\n qa,\n id,\n value,\n defaultValue,\n onChange,\n format = 'hex',\n defaultSpace = 'hst',\n isOpen: controlledOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip,\n targetRef,\n placement = 'bottom start',\n children,\n placeholder = 'Pick a color',\n size,\n type = 'outline',\n theme = 'default',\n triggerTooltip,\n swatches,\n swatchColumns,\n triggerStyles,\n swatchStyles,\n isDisabled,\n isReadOnly,\n isLoading,\n isInvalid,\n isValid,\n autoFocus,\n 'aria-label': ariaLabel,\n } = props;\n\n const styles = extractStyles(props, [...OUTER_STYLES, ...BLOCK_STYLES]);\n\n /**\n * Loading locks the trigger, but the popover can outlive that — it may be\n * controlled, or opened before the load began — so the editor inside has to\n * refuse edits on the same terms.\n */\n const isEditingDisabled = isDisabled || isLoading;\n\n const [color, setColor] = useState(() =>\n parseColor((value ?? defaultValue ?? '').toString()),\n );\n const [space, setSpace] = useState<ColorSpace>(defaultSpace);\n const [isOpen, setOpen] = useState(defaultOpen ?? false);\n\n /** What was last published, to tell our own updates from outside ones. */\n const emitted = useRef<string | null | undefined>(value);\n\n // Adopt values that did not come from here — a form reset, or a parent that\n // overrides what the user picked.\n useEffect(() => {\n if (value === undefined || value === emitted.current) return;\n\n emitted.current = value;\n setColor(parseColor((value ?? '').toString()));\n }, [value]);\n\n const handleColorChange = useEvent((next: ColorValue) => {\n const text = formatColor(next, format);\n\n emitted.current = text;\n setColor(next);\n onChange?.(text);\n });\n\n const colorText = color ? formatColor(color, format) : null;\n\n /**\n * The palette and the value field both speak in strings, and the field can\n * hand back `null` when it is cleared — which has to reach the picker, or the\n * text empties while the preview and trigger keep the old color.\n */\n const handleValueChange = useEvent((next: string | null) => {\n emitted.current = next;\n setColor(next ? parseColor(next) : null);\n onChange?.(next);\n });\n\n const handleOpenChange = useEvent((next: boolean) => {\n setOpen(next);\n onOpenChange?.(next);\n });\n\n // The swatch carries the color and the label spells it out. `children`\n // replaces that label, and `null` leaves the swatch on its own.\n const label =\n children !== undefined ? (\n children\n ) : color ? (\n formatColor(color, format)\n ) : (\n // Muted, so an unset picker never reads like one holding a value —\n // the same treatment `Picker` and `Select` give their placeholders.\n <Text.Placeholder>{placeholder}</Text.Placeholder>\n );\n\n const pickerField = (\n <ColorPickerWrapper styles={styles}>\n <DialogTrigger\n hideArrow\n type=\"popover\"\n placement={placement}\n targetRef={targetRef}\n isOpen={controlledOpen ?? isOpen}\n shouldFlip={shouldFlip}\n onOpenChange={handleOpenChange}\n >\n <ItemButton\n data-popover-trigger\n id={id}\n qa={qa || 'ColorPickerTrigger'}\n data-input-type=\"colorpicker\"\n type={type}\n theme={getValidationTheme(theme, { isInvalid, isValid })}\n size={size}\n // Fixed 20px rather than tracking the trigger, same as `ColorInput`\n // and same as this has always rendered.\n icon={\n <ColorSwatch size=\"small\" color={color} styles={swatchStyles} />\n }\n rightIcon={getValidationIcon({ isInvalid, isValid })}\n tooltip={triggerTooltip}\n isDisabled={isEditingDisabled || isReadOnly}\n autoFocus={autoFocus}\n aria-label={ariaLabel}\n mods={{ placeholder: !color }}\n styles={triggerStyles}\n >\n {label}\n </ItemButton>\n <Dialog\n aria-label=\"Color picker\"\n width=\"max-content\"\n styles={POPOVER_STYLES}\n >\n {/* Marks the subtree so a nested swatch group drops its custom-color\n escape hatch, which is a picker and would recurse forever. */}\n <ColorPopoverContext.Provider value={true}>\n <ColorPanel\n color={color ?? FALLBACK_COLOR}\n space={space}\n isDisabled={isEditingDisabled || isReadOnly}\n previewFormat={format}\n input={\n <ColorInput\n aria-label=\"Color value\"\n format={format}\n value={colorText}\n isDisabled={isEditingDisabled}\n isReadOnly={isReadOnly}\n onChange={handleValueChange}\n />\n }\n swatches={\n swatches?.length ? (\n <ColorSwatchGroup\n aria-label=\"Palette\"\n styles={PALETTE_STYLES}\n colors={swatches}\n columns={swatchColumns}\n format={format}\n value={colorText}\n isDisabled={isEditingDisabled || isReadOnly}\n onChange={handleValueChange}\n />\n ) : null\n }\n onChange={handleColorChange}\n onSpaceChange={setSpace}\n />\n </ColorPopoverContext.Provider>\n </Dialog>\n </DialogTrigger>\n </ColorPickerWrapper>\n );\n\n return wrapWithField(pickerField, ref as any, props);\n});\n\n/**\n * Drives the legacy `<Field>` wiring: `Picker` validates on change and passes\n * the value through untouched, where `Text` would default to `onBlur` and\n * coerce `null` into an empty string.\n */\n(ColorPicker as any).cubeInputType = 'Picker';\n"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPicker.js","names":["BaseProps","BLOCK_STYLES","BlockStyleProps","OUTER_STYLES","OuterStyleProps","Styles","tasty","ForwardedRef","forwardRef","ReactNode","RefObject","useEffect","useRef","useState","Placement","useEvent","useI18n","FieldBaseProps","extractStyles","ItemButton","CubeItemProps","Text","getValidationIcon","getValidationTheme","useFieldProps","wrapWithField","Dialog","DialogTrigger","ColorSpace","ColorFormat","ColorValue","formatColor","parseColor","ColorPanel","ColorPopoverContext","ColorInput","ColorSwatch","ColorSwatchGroup","CubeColorSwatchItem","POPOVER_STYLES","overflow","PALETTE_STYLES","border","padding","width","FALLBACK_COLOR","h","s","l","ColorPickerWrapper","qa","styles","display","flow","gridRows","placeContent","placeItems","CubeColorPickerProps","value","defaultValue","onChange","format","defaultSpace","isOpen","defaultOpen","onOpenChange","shouldFlip","targetRef","HTMLElement","placement","children","placeholder","size","type","theme","triggerTooltip","swatches","swatchColumns","triggerStyles","swatchStyles","ColorPicker","allProps","ref","t","props","defaultValidationTrigger","valuePropsMapper","id","controlledOpen","isDisabled","isReadOnly","isLoading","isInvalid","isValid","autoFocus","ariaLabel","ariaDescribedBy","isEditingDisabled","color","setColor","toString","space","setSpace","setOpen","emitted","undefined","current","handleColorChange","next","text","colorText","handleValueChange","handleOpenChange","label","pickerField","length","cubeInputType"],"sources":["../../../../src/components/fields/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import {\n BaseProps,\n BLOCK_STYLES,\n BlockStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Placement } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { useI18n } from '../../../i18n';\nimport { FieldBaseProps } from '../../../shared';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions';\nimport { CubeItemProps } from '../../content/Item';\nimport { Text } from '../../content/Text';\nimport {\n getValidationIcon,\n getValidationTheme,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { Dialog } from '../../overlays/Dialog/Dialog';\nimport { DialogTrigger } from '../../overlays/Dialog/DialogTrigger';\nimport { ColorSpace } from '../color/channels';\nimport {\n ColorFormat,\n ColorValue,\n formatColor,\n parseColor,\n} from '../color/color';\nimport { ColorPanel } from '../color/ColorPanel';\nimport { ColorPopoverContext } from '../color/context';\nimport { ColorInput } from '../ColorInput';\nimport { ColorSwatch } from '../ColorSwatch';\nimport { ColorSwatchGroup, CubeColorSwatchItem } from '../ColorSwatchGroup';\n\n/**\n * A popover caps its height at half the viewport. The panel can exceed that on\n * a short screen, and would otherwise spill outside the popover's own border.\n */\nconst POPOVER_STYLES: Styles = { overflow: 'auto' };\n\n/**\n * The rule separating the palette from the editor. `Divider` is not used: it\n * places itself on named grid lines meant for menu layouts, which this panel\n * does not define, so it lands in the wrong row and spawns a stray column.\n */\nconst PALETTE_STYLES: Styles = {\n border: 'top',\n padding: '1x top',\n width: '100%',\n};\n\n/** What the popover starts from when there is no color to edit yet. */\nconst FALLBACK_COLOR: ColorValue = { h: 264, s: 0.8, l: 0.6 };\n\nconst ColorPickerWrapper = tasty({\n qa: 'ColorPickerWrapper',\n styles: {\n display: 'inline-grid',\n flow: 'column',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n },\n});\n\nexport interface CubeColorPickerProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n FieldBaseProps<string | null | undefined> {\n /** The selected color, as a color string. */\n value?: string | null;\n /** The initial color of an uncontrolled picker. */\n defaultValue?: string | null;\n /** Called with the color string, or `null` when there is no color. */\n onChange?: (value: string | null) => void;\n /** Notation the value is written in. */\n format?: ColorFormat;\n /** Color concept the popover opens with. */\n defaultSpace?: ColorSpace;\n /** Whether the popover is open. Makes the disclosure controlled. */\n isOpen?: boolean;\n /** Whether the popover is open initially. */\n defaultOpen?: boolean;\n /** Called when the popover opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Whether the popover may flip to the other side of the trigger. */\n shouldFlip?: boolean;\n /**\n * The ref of the element the popover should visually attach itself to.\n * Defaults to the trigger button.\n *\n * Forwarded to `DialogTrigger`, so the anchor also becomes what outside-click\n * dismissal treats as the trigger.\n */\n targetRef?: RefObject<HTMLElement | null>;\n /**\n * Placement of the popover relative to the anchor.\n * Accepts React Aria's `Placement` strings (e.g. `'bottom start'`,\n * `'top start'`, `'right top'`, `'left top'`).\n * @default 'bottom start'\n */\n placement?: Placement;\n /** Replaces the color shown on the trigger. Pass `null` for a swatch on its own. */\n children?: ReactNode;\n /** Shown on the trigger while there is no color. */\n placeholder?: ReactNode;\n /** The size of the trigger. */\n size?: CubeItemProps['size'];\n /** The visual type of the trigger. */\n type?: CubeItemProps['type'];\n theme?: CubeItemProps['theme'];\n /** Tooltip for the trigger, separate from `labelTooltip`. */\n triggerTooltip?: CubeItemProps['tooltip'];\n /** Colors to offer under the editor, for picking without dialing one in. */\n swatches?: CubeColorSwatchItem[];\n /** How many swatches per row. Defaults to a single row. */\n swatchColumns?: number;\n styles?: Styles;\n /** Styles of the trigger button. */\n triggerStyles?: Styles;\n /** Styles of the color swatch. */\n swatchStyles?: Styles;\n 'aria-label'?: string;\n /** Ids of elements that also describe the trigger, beside the field's own description and message. */\n 'aria-describedby'?: string;\n}\n\n/**\n * A color swatch that opens the color popover — the same one `ColorInput`\n * uses, without the text field. Reach for it when a color is chosen but never\n * typed: a toolbar, a chart legend, a cell in a dense table.\n */\nexport const ColorPicker = forwardRef(function ColorPicker(\n allProps: CubeColorPickerProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const { t } = useI18n();\n const props = useFieldProps(allProps, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value as string | null | undefined,\n onChange,\n }),\n });\n\n const {\n qa,\n id,\n value,\n defaultValue,\n onChange,\n format = 'hex',\n defaultSpace = 'hst',\n isOpen: controlledOpen,\n defaultOpen,\n onOpenChange,\n shouldFlip,\n targetRef,\n placement = 'bottom start',\n children,\n placeholder = 'Pick a color',\n size,\n type = 'outline',\n theme = 'default',\n triggerTooltip,\n swatches,\n swatchColumns,\n triggerStyles,\n swatchStyles,\n isDisabled,\n isReadOnly,\n isLoading,\n isInvalid,\n isValid,\n autoFocus,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n } = props;\n\n const styles = extractStyles(props, [...OUTER_STYLES, ...BLOCK_STYLES]);\n\n /**\n * Loading locks the trigger, but the popover can outlive that — it may be\n * controlled, or opened before the load began — so the editor inside has to\n * refuse edits on the same terms.\n */\n const isEditingDisabled = isDisabled || isLoading;\n\n const [color, setColor] = useState(() =>\n parseColor((value ?? defaultValue ?? '').toString()),\n );\n const [space, setSpace] = useState<ColorSpace>(defaultSpace);\n const [isOpen, setOpen] = useState(defaultOpen ?? false);\n\n /** What was last published, to tell our own updates from outside ones. */\n const emitted = useRef<string | null | undefined>(value);\n\n // Adopt values that did not come from here — a form reset, or a parent that\n // overrides what the user picked.\n useEffect(() => {\n if (value === undefined || value === emitted.current) return;\n\n emitted.current = value;\n setColor(parseColor((value ?? '').toString()));\n }, [value]);\n\n const handleColorChange = useEvent((next: ColorValue) => {\n const text = formatColor(next, format);\n\n emitted.current = text;\n setColor(next);\n onChange?.(text);\n });\n\n const colorText = color ? formatColor(color, format) : null;\n\n /**\n * The palette and the value field both speak in strings, and the field can\n * hand back `null` when it is cleared — which has to reach the picker, or the\n * text empties while the preview and trigger keep the old color.\n */\n const handleValueChange = useEvent((next: string | null) => {\n emitted.current = next;\n setColor(next ? parseColor(next) : null);\n onChange?.(next);\n });\n\n const handleOpenChange = useEvent((next: boolean) => {\n setOpen(next);\n onOpenChange?.(next);\n });\n\n // The swatch carries the color and the label spells it out. `children`\n // replaces that label, and `null` leaves the swatch on its own.\n const label =\n children !== undefined ? (\n children\n ) : color ? (\n formatColor(color, format)\n ) : (\n // Muted, so an unset picker never reads like one holding a value —\n // the same treatment `Picker` and `Select` give their placeholders.\n <Text.Placeholder>{placeholder}</Text.Placeholder>\n );\n\n const pickerField = (\n <ColorPickerWrapper styles={styles}>\n <DialogTrigger\n hideArrow\n type=\"popover\"\n placement={placement}\n targetRef={targetRef}\n isOpen={controlledOpen ?? isOpen}\n shouldFlip={shouldFlip}\n onOpenChange={handleOpenChange}\n >\n <ItemButton\n data-popover-trigger\n id={id}\n qa={qa || 'ColorPickerTrigger'}\n data-input-type=\"colorpicker\"\n type={type}\n theme={getValidationTheme(theme, { isInvalid, isValid })}\n size={size}\n // Fixed 20px rather than tracking the trigger, same as `ColorInput`\n // and same as this has always rendered.\n icon={\n <ColorSwatch size=\"small\" color={color} styles={swatchStyles} />\n }\n rightIcon={getValidationIcon({ isInvalid, isValid })}\n tooltip={triggerTooltip}\n isDisabled={isEditingDisabled || isReadOnly}\n autoFocus={autoFocus}\n aria-label={ariaLabel}\n // The trigger is the control, so the field's description and\n // message describe it.\n aria-describedby={ariaDescribedBy}\n mods={{ placeholder: !color }}\n styles={triggerStyles}\n >\n {label}\n </ItemButton>\n <Dialog\n aria-label={t('colorPicker.colorPicker', 'Color picker')}\n width=\"max-content\"\n styles={POPOVER_STYLES}\n >\n {/* Marks the subtree so a nested swatch group drops its custom-color\n escape hatch, which is a picker and would recurse forever. */}\n <ColorPopoverContext.Provider value={true}>\n <ColorPanel\n color={color ?? FALLBACK_COLOR}\n space={space}\n isDisabled={isEditingDisabled || isReadOnly}\n previewFormat={format}\n input={\n <ColorInput\n aria-label={t('colorPicker.colorValue', 'Color value')}\n format={format}\n value={colorText}\n isDisabled={isEditingDisabled}\n isReadOnly={isReadOnly}\n onChange={handleValueChange}\n />\n }\n swatches={\n swatches?.length ? (\n <ColorSwatchGroup\n aria-label={t('colorPicker.palette', 'Palette')}\n styles={PALETTE_STYLES}\n colors={swatches}\n columns={swatchColumns}\n format={format}\n value={colorText}\n isDisabled={isEditingDisabled || isReadOnly}\n onChange={handleValueChange}\n />\n ) : null\n }\n onChange={handleColorChange}\n onSpaceChange={setSpace}\n />\n </ColorPopoverContext.Provider>\n </Dialog>\n </DialogTrigger>\n </ColorPickerWrapper>\n );\n\n return wrapWithField(pickerField, ref as any, props);\n});\n\n/**\n * Drives the legacy `<Field>` wiring: `Picker` validates on change and passes\n * the value through untouched, where `Text` would default to `onBlur` and\n * coerce `null` into an empty string.\n */\n(ColorPicker as any).cubeInputType = 'Picker';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.193.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.194.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { parseColor, toHex } from "../color/color.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,8 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.193.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.194.0 | 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 { useEvent } from "../../../_internal/hooks/use-event.js";
5
5
  import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
6
+ import { useI18n } from "../../../i18n/useI18n.js";
6
7
  import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
7
8
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
8
9
  import { wrapWithField } from "../../form/wrapper.js";
@@ -224,6 +225,7 @@ function Swatch(t0) {
224
225
  * ambiguous.
225
226
  */
226
227
  const ColorSwatchGroup = forwardRef(function ColorSwatchGroup(allProps, ref) {
228
+ const { t } = useI18n();
227
229
  const props = useFieldProps(allProps, {
228
230
  defaultValidationTrigger: "onChange",
229
231
  valuePropsMapper: ({ value, onChange }) => ({
@@ -267,13 +269,14 @@ const ColorSwatchGroup = forwardRef(function ColorSwatchGroup(allProps, ref) {
267
269
  value: selectedKey ?? null,
268
270
  isDisabled,
269
271
  isReadOnly: props.isReadOnly,
272
+ isInvalid,
270
273
  onChange: handleChange
271
274
  });
272
275
  const domRef = useObjectRef(ref);
273
276
  const { radioGroupProps, labelProps } = useRadioGroup({
274
277
  ...props,
275
278
  form: void 0,
276
- "aria-label": props.label ? void 0 : ariaLabel ?? "Colors",
279
+ "aria-label": props.label ? void 0 : ariaLabel ?? t("colorSwatchGroup.colors", "Colors"),
277
280
  orientation: "horizontal"
278
281
  }, state);
279
282
  return wrapWithField(/* @__PURE__ */ jsxs(GroupElement, {
@@ -301,7 +304,7 @@ const ColorSwatchGroup = forwardRef(function ColorSwatchGroup(allProps, ref) {
301
304
  styles: swatchStyles
302
305
  }, swatch.key))
303
306
  }), showCustom ? /* @__PURE__ */ jsx(ColorPicker, {
304
- "aria-label": "Custom color",
307
+ "aria-label": t("colorSwatchGroup.customColor", "Custom color"),
305
308
  qa: "ColorSwatchGroupCustom",
306
309
  format,
307
310
  type: "clear",