@cube-dev/ui-kit 0.183.0 → 0.185.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 (681) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +64 -0
  3. package/dist/README.md +1 -1
  4. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  5. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/dist/_internal/hooks/use-event.js +1 -1
  7. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  8. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  9. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  10. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  11. package/dist/_internal/hooks/use-warn.js +1 -1
  12. package/dist/components/Block.js +1 -1
  13. package/dist/components/CollectionItem.js +1 -1
  14. package/dist/components/GlobalStyles.js +19 -18
  15. package/dist/components/GlobalStyles.js.map +1 -1
  16. package/dist/components/GridProvider.js +1 -1
  17. package/dist/components/HiddenInput.js +1 -1
  18. package/dist/components/Root.js +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +2 -1
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  25. package/dist/components/actions/ButtonSplit/context.js +1 -1
  26. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -8
  27. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  28. package/dist/components/actions/CommandMenu/styled.js +1 -1
  29. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  30. package/dist/components/actions/ItemActionContext.js +1 -1
  31. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  32. package/dist/components/actions/ItemButton/ItemButton.js +3 -1
  33. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +1 -1
  36. package/dist/components/actions/Menu/Menu.js.map +1 -1
  37. package/dist/components/actions/Menu/MenuItem.js +19 -15
  38. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  39. package/dist/components/actions/Menu/MenuSection.js +1 -8
  40. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  41. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  42. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -7
  43. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  44. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  45. package/dist/components/actions/Menu/context.js +1 -1
  46. package/dist/components/actions/Menu/styled.js +1 -1
  47. package/dist/components/actions/actions-run.js +1 -1
  48. package/dist/components/actions/index.js +1 -1
  49. package/dist/components/actions/use-action.js +3 -5
  50. package/dist/components/actions/use-action.js.map +1 -1
  51. package/dist/components/actions/use-anchored-menu.js +1 -1
  52. package/dist/components/actions/use-context-menu.js +1 -1
  53. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  54. package/dist/components/content/Alert/Alert.js +1 -1
  55. package/dist/components/content/Alert/use-alert.js +1 -1
  56. package/dist/components/content/Avatar/Avatar.js +1 -1
  57. package/dist/components/content/Badge/Badge.js +1 -1
  58. package/dist/components/content/Card/Card.js +1 -1
  59. package/dist/components/content/Content.js +2 -1
  60. package/dist/components/content/Content.js.map +1 -1
  61. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  62. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  63. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  64. package/dist/components/content/Divider.js +1 -1
  65. package/dist/components/content/Footer.js +1 -1
  66. package/dist/components/content/Header.js +1 -1
  67. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  68. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  69. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  70. package/dist/components/content/Item/Item.d.ts +27 -2
  71. package/dist/components/content/Item/Item.js +242 -233
  72. package/dist/components/content/Item/Item.js.map +1 -1
  73. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  74. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  75. package/dist/components/content/Layout/GridLayout.js +1 -1
  76. package/dist/components/content/Layout/Layout.js +1 -1
  77. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  78. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  79. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  80. package/dist/components/content/Layout/LayoutContent.js +1 -1
  81. package/dist/components/content/Layout/LayoutContext.js +1 -1
  82. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  83. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  84. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  85. package/dist/components/content/Layout/LayoutHeader.js +123 -118
  86. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  87. package/dist/components/content/Layout/LayoutPane.js +1 -1
  88. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  89. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  90. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  91. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  92. package/dist/components/content/Layout/index.js +1 -1
  93. package/dist/components/content/Layout/utils.js +1 -1
  94. package/dist/components/content/Paragraph.js +1 -1
  95. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  96. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  97. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  98. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  99. package/dist/components/content/Result/Result.js +1 -1
  100. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  101. package/dist/components/content/Tag/Tag.d.ts +6 -1
  102. package/dist/components/content/Tag/Tag.js +1 -1
  103. package/dist/components/content/Tag/Tag.js.map +1 -1
  104. package/dist/components/content/Text.d.ts +14 -14
  105. package/dist/components/content/Text.js +1 -1
  106. package/dist/components/content/TextItem/TextItem.js +1 -1
  107. package/dist/components/content/Title.js +1 -1
  108. package/dist/components/content/Tree/Tree.js +1 -1
  109. package/dist/components/content/Tree/TreeNode.js +1 -1
  110. package/dist/components/content/Tree/styled.js +1 -1
  111. package/dist/components/content/Tree/tree-index.js +1 -1
  112. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  113. package/dist/components/content/Tree/use-load-data.js +1 -1
  114. package/dist/components/content/highlightText.js +1 -1
  115. package/dist/components/content/use-auto-tooltip.d.ts +1 -1
  116. package/dist/components/content/use-auto-tooltip.js +248 -128
  117. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  118. package/dist/components/data/DataTable/DataTable.js +1 -1
  119. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  120. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  121. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  122. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  123. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  124. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  125. package/dist/components/data/TableBase/RowCollection.js +1 -1
  126. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  127. package/dist/components/data/TableBase/TableRow.js +1 -1
  128. package/dist/components/data/TableBase/TableView.js +1 -1
  129. package/dist/components/data/TableBase/column-menu.js +1 -1
  130. package/dist/components/data/TableBase/column-tint.js +1 -1
  131. package/dist/components/data/TableBase/row-menu.js +1 -1
  132. package/dist/components/data/TableBase/styled.d.ts +1 -0
  133. package/dist/components/data/TableBase/styled.js +1 -1
  134. package/dist/components/data/TableBase/table-tree.js +1 -1
  135. package/dist/components/data/TableBase/types.js +1 -1
  136. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  137. package/dist/components/data/TableBase/use-column-order.js +1 -1
  138. package/dist/components/data/TableBase/use-container-width.js +1 -1
  139. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  140. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  141. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  142. package/dist/components/data/TableBase/use-table-search.js +1 -1
  143. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  144. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  145. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  146. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  147. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  148. package/dist/components/fields/Checkbox/Checkbox.d.ts +8 -0
  149. package/dist/components/fields/Checkbox/Checkbox.js +58 -39
  150. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  151. package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -2
  152. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  153. package/dist/components/fields/Checkbox/context.js +1 -1
  154. package/dist/components/fields/ColorInput/ColorInput.d.ts +17 -1
  155. package/dist/components/fields/ColorInput/ColorInput.js +137 -134
  156. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  157. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +18 -2
  158. package/dist/components/fields/ColorPicker/ColorPicker.js +4 -3
  159. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  160. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  161. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  162. package/dist/components/fields/ComboBox/ComboBox.js +90 -43
  163. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  164. package/dist/components/fields/CommandTextArea/CommandTextArea.js +3 -2
  165. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  166. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  167. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  168. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  169. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  170. package/dist/components/fields/DatePicker/DatePicker.d.ts +17 -1
  171. package/dist/components/fields/DatePicker/DatePicker.js +81 -77
  172. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  173. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  174. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  175. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  176. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  177. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +17 -2
  178. package/dist/components/fields/DatePicker/DateRangePicker.js +109 -105
  179. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  180. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +17 -2
  181. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +228 -220
  182. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  183. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  184. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +17 -1
  185. package/dist/components/fields/DatePicker/PeriodPicker.js +89 -85
  186. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  187. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  188. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  189. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  190. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  191. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  192. package/dist/components/fields/DatePicker/period.js +1 -1
  193. package/dist/components/fields/DatePicker/props.js +1 -1
  194. package/dist/components/fields/DatePicker/utils.js +1 -1
  195. package/dist/components/fields/FileInput/FileInput.js +1 -1
  196. package/dist/components/fields/FilterListBox/FilterListBox.js +28 -18
  197. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  198. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +11 -2
  199. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -2
  200. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  201. package/dist/components/fields/Input/Input.js +1 -1
  202. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  203. package/dist/components/fields/ListBox/ListBox.d.ts +2 -2
  204. package/dist/components/fields/ListBox/ListBox.js +1 -2
  205. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  206. package/dist/components/fields/ListBox/optionId.js +16 -0
  207. package/dist/components/fields/ListBox/optionId.js.map +1 -0
  208. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +120 -110
  209. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  210. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  211. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +44 -22
  212. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  213. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  214. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  215. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  216. package/dist/components/fields/Picker/Picker.d.ts +20 -3
  217. package/dist/components/fields/Picker/Picker.js +4 -3
  218. package/dist/components/fields/Picker/Picker.js.map +1 -1
  219. package/dist/components/fields/RadioGroup/Radio.d.ts +10 -2
  220. package/dist/components/fields/RadioGroup/Radio.js +215 -213
  221. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  222. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  223. package/dist/components/fields/RadioGroup/context.js +1 -1
  224. package/dist/components/fields/SearchComboBox/SearchComboBox.js +3 -2
  225. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  226. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  227. package/dist/components/fields/Select/Select.d.ts +24 -3
  228. package/dist/components/fields/Select/Select.js +8 -5
  229. package/dist/components/fields/Select/Select.js.map +1 -1
  230. package/dist/components/fields/Slider/Gradation.js +1 -1
  231. package/dist/components/fields/Slider/HueSlider.js +1 -1
  232. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  233. package/dist/components/fields/Slider/Slider.js +1 -1
  234. package/dist/components/fields/Slider/SliderBase.js +1 -1
  235. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  236. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  237. package/dist/components/fields/Slider/elements.js +1 -1
  238. package/dist/components/fields/Slider/index.js +1 -1
  239. package/dist/components/fields/Switch/Switch.js +1 -1
  240. package/dist/components/fields/TagInput/TagInput.d.ts +182 -0
  241. package/dist/components/fields/TagInput/TagInput.js +1856 -0
  242. package/dist/components/fields/TagInput/TagInput.js.map +1 -0
  243. package/dist/components/fields/TagInput/TagList.js +355 -0
  244. package/dist/components/fields/TagInput/TagList.js.map +1 -0
  245. package/dist/components/fields/TagInput/index.d.ts +2 -0
  246. package/dist/components/fields/TextArea/TextArea.js +1 -1
  247. package/dist/components/fields/TextInput/TextInput.js +1 -1
  248. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -0
  249. package/dist/components/fields/TextInput/TextInputBase.js +8 -6
  250. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  251. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  252. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  253. package/dist/components/fields/TriggerActions.js +1 -1
  254. package/dist/components/fields/color/ColorPanel.js +1 -1
  255. package/dist/components/fields/color/channels.js +1 -1
  256. package/dist/components/fields/color/color.js +1 -1
  257. package/dist/components/fields/color/context.js +1 -1
  258. package/dist/components/fields/index.d.ts +2 -0
  259. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +1 -1
  260. package/dist/components/form/FieldWrapper/FieldWrapper.js +23 -10
  261. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  262. package/dist/components/form/FieldWrapper/types.d.ts +1 -1
  263. package/dist/components/form/Form/Field.js +6 -4
  264. package/dist/components/form/Form/Field.js.map +1 -1
  265. package/dist/components/form/Form/Form.js +20 -5
  266. package/dist/components/form/Form/Form.js.map +1 -1
  267. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  268. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  269. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  270. package/dist/components/form/Form/SubmitError.js +1 -1
  271. package/dist/components/form/Form/backend.js +1 -1
  272. package/dist/components/form/Form/index.js +1 -1
  273. package/dist/components/form/Form/modern/actions.js +1 -1
  274. package/dist/components/form/Form/modern/context.js +1 -1
  275. package/dist/components/form/Form/modern/controller.js +1 -1
  276. package/dist/components/form/Form/modern/field-binding.js +1 -1
  277. package/dist/components/form/Form/modern/field.js +1 -1
  278. package/dist/components/form/Form/modern/react.js +1 -1
  279. package/dist/components/form/Form/modern/store.js +1 -1
  280. package/dist/components/form/Form/modern/validation.js +1 -1
  281. package/dist/components/form/Form/modern/values.js +1 -1
  282. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  283. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  284. package/dist/components/form/Form/use-field/use-field.js +1 -1
  285. package/dist/components/form/Form/use-form.js +1 -1
  286. package/dist/components/form/Form/validation.js +1 -1
  287. package/dist/components/form/Label.js +1 -1
  288. package/dist/components/form/legacy-tooltip.js +28 -0
  289. package/dist/components/form/legacy-tooltip.js.map +1 -0
  290. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  291. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  292. package/dist/components/form/validation/use-validation-props.js +1 -1
  293. package/dist/components/form/wrapper.js +5 -3
  294. package/dist/components/form/wrapper.js.map +1 -1
  295. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  296. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  297. package/dist/components/layout/Board/Board.js +1 -1
  298. package/dist/components/layout/Board/BoardProvider.js +1 -1
  299. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  300. package/dist/components/layout/Board/Widget.js +1 -1
  301. package/dist/components/layout/Board/WidgetHost.js +1 -1
  302. package/dist/components/layout/Board/board-context.js +1 -1
  303. package/dist/components/layout/Board/board-store.js +1 -1
  304. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  305. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  306. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  307. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  308. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  309. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  310. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  311. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  312. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  313. package/dist/components/layout/Board/index.js +1 -1
  314. package/dist/components/layout/Board/responsive-utils.js +1 -1
  315. package/dist/components/layout/Board/use-board-layout.js +1 -1
  316. package/dist/components/layout/Board/use-board-registry.js +1 -1
  317. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  318. package/dist/components/layout/Board/use-board-selection.js +1 -1
  319. package/dist/components/layout/Flex.js +1 -1
  320. package/dist/components/layout/Flow.js +1 -1
  321. package/dist/components/layout/Grid.js +1 -1
  322. package/dist/components/layout/Panel.js +1 -1
  323. package/dist/components/layout/Prefix.js +1 -1
  324. package/dist/components/layout/ResizablePanel.js +1 -1
  325. package/dist/components/layout/Space.js +1 -1
  326. package/dist/components/layout/Suffix.js +1 -1
  327. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  328. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  329. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  330. package/dist/components/navigation/Tabs/TabButton.js +131 -110
  331. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  332. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  333. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  334. package/dist/components/navigation/Tabs/TabPicker.js +2 -1
  335. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  336. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  337. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  338. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  339. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  340. package/dist/components/navigation/Tabs/styled.js +2 -2
  341. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  342. package/dist/components/navigation/Tabs/types.js +1 -1
  343. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  344. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  345. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  346. package/dist/components/other/Calendar/Calendar.js +1 -1
  347. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  348. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  349. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  350. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  351. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  352. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  353. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  354. package/dist/components/other/Calendar/styled.js +1 -1
  355. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  356. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  357. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  358. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  359. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  360. package/dist/components/overlays/Dialog/Dialog.js +18 -9
  361. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  362. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  363. package/dist/components/overlays/Dialog/DialogForm.js +6 -5
  364. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  365. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  366. package/dist/components/overlays/Dialog/ModernDialogForm.js +71 -64
  367. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
  368. package/dist/components/overlays/Dialog/context.js +1 -1
  369. package/dist/components/overlays/Dialog/use-content-overflow.js +68 -0
  370. package/dist/components/overlays/Dialog/use-content-overflow.js.map +1 -0
  371. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  372. package/dist/components/overlays/Modal/Modal.js +1 -1
  373. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  374. package/dist/components/overlays/Modal/Overlay.js +1 -1
  375. package/dist/components/overlays/Modal/Popover.js +1 -1
  376. package/dist/components/overlays/Modal/Tray.js +1 -1
  377. package/dist/components/overlays/Modal/Underlay.js +1 -1
  378. package/dist/components/overlays/Notifications/Notification.js +1 -1
  379. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  380. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  381. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  382. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  383. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  384. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  385. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  386. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  387. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  388. package/dist/components/overlays/Notifications/index.js +1 -1
  389. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  390. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  391. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  392. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  393. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  394. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  395. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  396. package/dist/components/overlays/Toast/index.js +1 -1
  397. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  398. package/dist/components/overlays/Toast/useToast.js +1 -1
  399. package/dist/components/overlays/Tooltip/Tooltip.js +14 -12
  400. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  401. package/dist/components/overlays/Tooltip/TooltipProvider.d.ts +6 -0
  402. package/dist/components/overlays/Tooltip/TooltipProvider.js +43 -38
  403. package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
  404. package/dist/components/overlays/Tooltip/TooltipTrigger.js +72 -69
  405. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  406. package/dist/components/overlays/Tooltip/context.js +1 -1
  407. package/dist/components/overlays/Tooltip/split-trigger-props.d.ts +16 -0
  408. package/dist/components/overlays/Tooltip/split-trigger-props.js +54 -0
  409. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -0
  410. package/dist/components/portal/Portal.js +1 -1
  411. package/dist/components/portal/PortalProvider.js +1 -1
  412. package/dist/components/portal/usePortal.js +1 -1
  413. package/dist/components/shared/DraggableCollection.js +1 -1
  414. package/dist/components/shared/InvalidIcon.js +1 -1
  415. package/dist/components/shared/ValidIcon.js +1 -1
  416. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  417. package/dist/components/status/Spin/Cube.js +1 -1
  418. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  419. package/dist/components/status/Spin/Spin.js +1 -1
  420. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  421. package/dist/data/item-themes.d.ts +1 -1
  422. package/dist/data/item-themes.js +7 -1
  423. package/dist/data/item-themes.js.map +1 -1
  424. package/dist/data/themes.js +1 -1
  425. package/dist/eslint-plugin/defaults.generated.js +47 -1
  426. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  427. package/dist/eslint-plugin/index.js +1 -1
  428. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  429. package/dist/i18n/I18nProvider.js +1 -1
  430. package/dist/i18n/createFormatter.js +1 -1
  431. package/dist/i18n/index.js +1 -1
  432. package/dist/i18n/instance.js +1 -1
  433. package/dist/i18n/locales/de-DE/uikit.js +18 -1
  434. package/dist/i18n/locales/en-US/uikit.js +18 -1
  435. package/dist/i18n/locales/en-US/uikit.json.d.ts +22 -2
  436. package/dist/i18n/locales/es-ES/uikit.js +18 -1
  437. package/dist/i18n/locales/es-MX/uikit.js +18 -1
  438. package/dist/i18n/locales/fr-FR/uikit.js +18 -1
  439. package/dist/i18n/locales/it-IT/uikit.js +18 -1
  440. package/dist/i18n/locales/ja-JP/uikit.js +18 -1
  441. package/dist/i18n/locales/nb-NO/uikit.js +18 -1
  442. package/dist/i18n/locales/pt-BR/uikit.js +18 -1
  443. package/dist/i18n/locales/pt-PT/uikit.js +18 -1
  444. package/dist/i18n/locales/sv-SE/uikit.js +18 -1
  445. package/dist/i18n/locales/vi-VN/uikit.js +18 -1
  446. package/dist/i18n/locales.js +1 -1
  447. package/dist/i18n/useFormatter.js +1 -1
  448. package/dist/i18n/useI18n.js +1 -1
  449. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  450. package/dist/icons/AdjustmentsIcon.js +1 -1
  451. package/dist/icons/AiIcon.js +1 -1
  452. package/dist/icons/AreaChartIcon.js +1 -1
  453. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  454. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  455. package/dist/icons/BackwardIcon.js +1 -1
  456. package/dist/icons/BarChartIcon.js +1 -1
  457. package/dist/icons/BellFilledIcon.js +1 -1
  458. package/dist/icons/BellIcon.js +1 -1
  459. package/dist/icons/BooleanIcon.js +1 -1
  460. package/dist/icons/CalendarEditIcon.js +1 -1
  461. package/dist/icons/CalendarIcon.js +1 -1
  462. package/dist/icons/CaretDownIcon.js +1 -1
  463. package/dist/icons/CaretUpIcon.js +1 -1
  464. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  465. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  466. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  467. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  468. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  469. package/dist/icons/ChartBarLineIcon.js +1 -1
  470. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  471. package/dist/icons/ChartBarStackedIcon.js +1 -1
  472. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  473. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  474. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  475. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  476. package/dist/icons/ChartBubbleIcon.js +1 -1
  477. package/dist/icons/ChartDonut2Icon.js +1 -1
  478. package/dist/icons/ChartFunnelIcon.js +1 -1
  479. package/dist/icons/ChartHeatmapIcon.js +1 -1
  480. package/dist/icons/ChartKPIIcon.js +1 -1
  481. package/dist/icons/ChartPie2Icon.js +1 -1
  482. package/dist/icons/ChartScatterIcon.js +1 -1
  483. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  484. package/dist/icons/CheckCircleIcon.js +1 -1
  485. package/dist/icons/CheckIcon.js +1 -1
  486. package/dist/icons/CircleFilledIcon.js +1 -1
  487. package/dist/icons/ClearIcon.js +1 -1
  488. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  489. package/dist/icons/CloseCircleIcon.js +1 -1
  490. package/dist/icons/CloseIcon.js +1 -1
  491. package/dist/icons/CodeIcon.js +1 -1
  492. package/dist/icons/ColumnTotalIcon.js +1 -1
  493. package/dist/icons/CopyIcon.js +1 -1
  494. package/dist/icons/CountIcon.js +1 -1
  495. package/dist/icons/CubeIcon.js +1 -1
  496. package/dist/icons/CubePauseIcon.js +1 -1
  497. package/dist/icons/CubePlayIcon.js +1 -1
  498. package/dist/icons/CurrencyDollarIcon.js +1 -1
  499. package/dist/icons/DangerIcon.js +1 -1
  500. package/dist/icons/DashboardIcon.js +1 -1
  501. package/dist/icons/DatabaseIcon.js +1 -1
  502. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  503. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  504. package/dist/icons/DirectionIcon.js +1 -1
  505. package/dist/icons/DonutIcon.js +1 -1
  506. package/dist/icons/DownIcon.js +1 -1
  507. package/dist/icons/EditIcon.js +1 -1
  508. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  509. package/dist/icons/ExclamationCircleIcon.js +1 -1
  510. package/dist/icons/ExclamationIcon.js +1 -1
  511. package/dist/icons/EyeIcon.js +1 -1
  512. package/dist/icons/EyeInvisibleIcon.js +1 -1
  513. package/dist/icons/FilterIcon.js +1 -1
  514. package/dist/icons/FolderFilledIcon.js +1 -1
  515. package/dist/icons/FolderIcon.js +1 -1
  516. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  517. package/dist/icons/FolderOpenIcon.js +1 -1
  518. package/dist/icons/ForwardIcon.js +1 -1
  519. package/dist/icons/GripVerticalIcon.js +1 -1
  520. package/dist/icons/HierarchyIcon.js +1 -1
  521. package/dist/icons/HierarchyOpenIcon.js +1 -1
  522. package/dist/icons/Icon.js +1 -1
  523. package/dist/icons/InfoCircleIcon.js +1 -1
  524. package/dist/icons/InfoIcon.js +1 -1
  525. package/dist/icons/KeyIcon.js +1 -1
  526. package/dist/icons/LeftIcon.js +1 -1
  527. package/dist/icons/LineChartIcon.js +1 -1
  528. package/dist/icons/LoadingIcon.js +1 -1
  529. package/dist/icons/LockFilledIcon.js +1 -1
  530. package/dist/icons/LockIcon.js +1 -1
  531. package/dist/icons/MoreIcon.js +1 -1
  532. package/dist/icons/NotAllowedIcon.js +1 -1
  533. package/dist/icons/Number123Icon.js +1 -1
  534. package/dist/icons/NumberIcon.js +1 -1
  535. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  536. package/dist/icons/PauseCircleIcon.js +1 -1
  537. package/dist/icons/PauseIcon.js +1 -1
  538. package/dist/icons/PercentageIcon.js +1 -1
  539. package/dist/icons/PieChartIcon.js +1 -1
  540. package/dist/icons/PipetteIcon.js +1 -1
  541. package/dist/icons/PlayCircleIcon.js +1 -1
  542. package/dist/icons/PlayIcon.js +1 -1
  543. package/dist/icons/PlusIcon.js +1 -1
  544. package/dist/icons/ProgressBarIcon.js +1 -1
  545. package/dist/icons/ReloadIcon.js +1 -1
  546. package/dist/icons/ReportIcon.js +1 -1
  547. package/dist/icons/ReturnIcon.js +1 -1
  548. package/dist/icons/RightIcon.js +1 -1
  549. package/dist/icons/RowTotalsIcon.js +1 -1
  550. package/dist/icons/SchemeIcon.js +1 -1
  551. package/dist/icons/SearchIcon.js +1 -1
  552. package/dist/icons/SemanticQueryIcon.js +1 -1
  553. package/dist/icons/SettingsIcon.js +1 -1
  554. package/dist/icons/ShieldFilledIcon.js +1 -1
  555. package/dist/icons/ShieldIcon.js +1 -1
  556. package/dist/icons/SlashIcon.js +1 -1
  557. package/dist/icons/SparklesIcon.js +1 -1
  558. package/dist/icons/SqlIcon.js +1 -1
  559. package/dist/icons/StatsIcon.js +1 -1
  560. package/dist/icons/StopIcon.js +1 -1
  561. package/dist/icons/StringIcon.js +1 -1
  562. package/dist/icons/SubtotalsIcon.js +1 -1
  563. package/dist/icons/SwitchIcon.js +1 -1
  564. package/dist/icons/TableIcon.js +1 -1
  565. package/dist/icons/ThumbsDownIcon.js +1 -1
  566. package/dist/icons/ThumbsUpIcon.js +1 -1
  567. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  568. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  569. package/dist/icons/ThunderboltIcon.js +1 -1
  570. package/dist/icons/TimeIcon.js +1 -1
  571. package/dist/icons/TrashIcon.js +1 -1
  572. package/dist/icons/UnlockIcon.js +1 -1
  573. package/dist/icons/UpIcon.js +1 -1
  574. package/dist/icons/UserGroupIcon.js +1 -1
  575. package/dist/icons/UserIcon.js +1 -1
  576. package/dist/icons/UserLockIcon.js +1 -1
  577. package/dist/icons/ViewIcon.js +1 -1
  578. package/dist/icons/WarningFilledIcon.js +1 -1
  579. package/dist/icons/WarningIcon.js +1 -1
  580. package/dist/icons/wrap-icon.js +1 -1
  581. package/dist/index.d.ts +2 -1
  582. package/dist/index.js +3 -2
  583. package/dist/index.js.map +1 -1
  584. package/dist/probe/canonicalize.js +1 -1
  585. package/dist/probe/css.js +1 -1
  586. package/dist/probe/index.js +1 -1
  587. package/dist/provider.js +1 -1
  588. package/dist/providers/TrackingProvider.js +1 -1
  589. package/dist/providers/navigationAdapter.default.js +1 -1
  590. package/dist/shared/form.d.ts +9 -2
  591. package/dist/tokens/all-tokens.js +1 -1
  592. package/dist/tokens/base.js +1 -1
  593. package/dist/tokens/color-seed.js +1 -1
  594. package/dist/tokens/color-theme.js +4 -5
  595. package/dist/tokens/color-theme.js.map +1 -1
  596. package/dist/tokens/colors.js +1 -1
  597. package/dist/tokens/layout.js +1 -1
  598. package/dist/tokens/lazy-styles.js +1 -1
  599. package/dist/tokens/legacy-color.js +1 -1
  600. package/dist/tokens/palette-config.d.ts +5 -0
  601. package/dist/tokens/palette-config.js +30 -7
  602. package/dist/tokens/palette-config.js.map +1 -1
  603. package/dist/tokens/palette.js +1 -1
  604. package/dist/tokens/resolve.js +1 -1
  605. package/dist/tokens/shadows.js +1 -1
  606. package/dist/tokens/sizes.js +1 -1
  607. package/dist/tokens/spacing.js +1 -1
  608. package/dist/tokens/typography.d.ts +1 -0
  609. package/dist/tokens/typography.js +10 -1
  610. package/dist/tokens/typography.js.map +1 -1
  611. package/dist/utils/ResizeSensor.js +1 -1
  612. package/dist/utils/colors.js +1 -1
  613. package/dist/utils/dotize.js +1 -1
  614. package/dist/utils/is-dev-env.js +1 -1
  615. package/dist/utils/modules.js +1 -1
  616. package/dist/utils/promise.js +1 -1
  617. package/dist/utils/raf.js +1 -1
  618. package/dist/utils/random.js +1 -1
  619. package/dist/utils/range.js +1 -1
  620. package/dist/utils/react/RenderCache.js +1 -1
  621. package/dist/utils/react/Slots.js +1 -1
  622. package/dist/utils/react/chain.js +1 -1
  623. package/dist/utils/react/disabledProps.js +1 -1
  624. package/dist/utils/react/escapePropagation.js +1 -1
  625. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  626. package/dist/utils/react/index.js +1 -1
  627. package/dist/utils/react/interactions.js +1 -1
  628. package/dist/utils/react/isTextOnly.js +1 -1
  629. package/dist/utils/react/mapProps.js +1 -1
  630. package/dist/utils/react/mergeProps.js +1 -1
  631. package/dist/utils/react/nullableValue.js +1 -1
  632. package/dist/utils/react/programmaticFocus.js +1 -1
  633. package/dist/utils/react/resolveIcon.js +1 -1
  634. package/dist/utils/react/sharedStore.js +1 -1
  635. package/dist/utils/react/useBufferedValue.js +1 -1
  636. package/dist/utils/react/useCombinedRefs.js +1 -1
  637. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  638. package/dist/utils/react/useEventBus.js +1 -1
  639. package/dist/utils/react/useId.js +1 -1
  640. package/dist/utils/react/useIsDarwin.js +1 -1
  641. package/dist/utils/react/useKeySymbols.js +1 -1
  642. package/dist/utils/react/useLayoutEffect.js +1 -1
  643. package/dist/utils/react/useLocalStorage.js +1 -1
  644. package/dist/utils/react/useMergeStyles.js +1 -1
  645. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  646. package/dist/utils/react/usePopoverSync.js +1 -1
  647. package/dist/utils/react/useQaProps.js +1 -1
  648. package/dist/utils/react/useScheme.js +1 -1
  649. package/dist/utils/react/useViewportSize.js +1 -1
  650. package/dist/utils/react/wrapNodeIfPlain.js +3 -4
  651. package/dist/utils/react/wrapNodeIfPlain.js.map +1 -1
  652. package/dist/utils/selection.js +1 -1
  653. package/dist/utils/styles.js +1 -1
  654. package/dist/utils/tree.js +1 -1
  655. package/dist/utils/warnings.js +1 -1
  656. package/dist/version.js +2 -2
  657. package/docs/FieldProperties.md +2 -2
  658. package/docs/Usage.md +10 -9
  659. package/docs/components/actions/ButtonSplit.md +2 -0
  660. package/docs/components/actions/ItemButton.md +2 -2
  661. package/docs/components/content/InfoBadge.md +1 -1
  662. package/docs/components/content/Layout.md +1 -1
  663. package/docs/components/content/Tag.md +10 -2
  664. package/docs/components/fields/Checkbox.md +11 -0
  665. package/docs/components/fields/ColorInput.md +2 -0
  666. package/docs/components/fields/ColorPicker.md +3 -1
  667. package/docs/components/fields/DatePicker.md +2 -0
  668. package/docs/components/fields/FilterPicker.md +3 -1
  669. package/docs/components/fields/PeriodPicker.md +2 -0
  670. package/docs/components/fields/Picker.md +3 -1
  671. package/docs/components/fields/RadioGroup.md +2 -2
  672. package/docs/components/fields/Select.md +5 -0
  673. package/docs/components/fields/TagInput.md +429 -0
  674. package/docs/components/form/Field.md +2 -2
  675. package/docs/components/form/Form.md +2 -0
  676. package/docs/components/navigation/Tabs.md +3 -3
  677. package/docs/components/overlays/Dialog.md +30 -3
  678. package/docs/components/overlays/DialogForm.md +1 -0
  679. package/docs/components/overlays/TooltipProvider.md +1 -0
  680. package/package.json +1 -1
  681. package/tasty.config.ts +2 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.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";
@@ -39,7 +39,7 @@ const ColorInputTrigger = tasty(ItemAction, {
39
39
  * popover to dial it in across OKHST, OKLCH and RGB.
40
40
  */
41
41
  const ColorInput = forwardRef(function ColorInput(allProps, ref) {
42
- const $ = c(99);
42
+ const $ = c(101);
43
43
  let t0;
44
44
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
45
45
  t0 = {
@@ -49,74 +49,75 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
49
49
  $[0] = t0;
50
50
  } else t0 = $[0];
51
51
  const props = useFieldProps(allProps, t0);
52
- const { qa, value: value_0, defaultValue, onChange: onChange_0, format: t1, formatMode: t2, defaultSpace: t3, isOpen: controlledOpen, defaultOpen, onOpenChange, shouldFlip, placeholder: t4, size, isDisabled, isReadOnly, isInvalid, isValid, isLoading, autoFocus, inputStyles, triggerStyles, swatchStyles, labelProps: userLabelProps, onBlur: userOnBlur, onFocus, label, description, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby, id } = props;
52
+ const { qa, value: value_0, defaultValue, onChange: onChange_0, format: t1, formatMode: t2, defaultSpace: t3, isOpen: controlledOpen, defaultOpen, onOpenChange, shouldFlip, targetRef: targetRefProp, placement: t4, placeholder: t5, size, isDisabled, isReadOnly, isInvalid, isValid, isLoading, autoFocus, inputStyles, triggerStyles, swatchStyles, labelProps: userLabelProps, onBlur: userOnBlur, onFocus, label, description, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby, id } = props;
53
53
  const format = t1 === void 0 ? "hex" : t1;
54
54
  const formatMode = t2 === void 0 ? "forced" : t2;
55
55
  const defaultSpace = t3 === void 0 ? "hst" : t3;
56
- const placeholder = t4 === void 0 ? "Pick a color" : t4;
56
+ const placement = t4 === void 0 ? "bottom right" : t4;
57
+ const placeholder = t5 === void 0 ? "Pick a color" : t5;
57
58
  const isInsidePopover = useIsInsideColorPopover();
58
- const t5 = value_0 ?? defaultValue ?? "";
59
- let t6;
60
- if ($[1] !== t5) {
61
- t6 = t5.toString();
62
- $[1] = t5;
63
- $[2] = t6;
64
- } else t6 = $[2];
65
- const initialText = t6;
59
+ const t6 = value_0 ?? defaultValue ?? "";
66
60
  let t7;
61
+ if ($[1] !== t6) {
62
+ t7 = t6.toString();
63
+ $[1] = t6;
64
+ $[2] = t7;
65
+ } else t7 = $[2];
66
+ const initialText = t7;
67
+ let t8;
67
68
  if ($[3] !== format || $[4] !== formatMode || $[5] !== initialText) {
68
- t7 = () => {
69
+ t8 = () => {
69
70
  const parsed = parseColor(initialText);
70
71
  return parsed && formatMode === "forced" ? formatColor(parsed, format) : initialText;
71
72
  };
72
73
  $[3] = format;
73
74
  $[4] = formatMode;
74
75
  $[5] = initialText;
75
- $[6] = t7;
76
- } else t7 = $[6];
77
- const [text, setText] = useState(t7);
78
- let t8;
76
+ $[6] = t8;
77
+ } else t8 = $[6];
78
+ const [text, setText] = useState(t8);
79
+ let t9;
79
80
  if ($[7] !== initialText) {
80
- t8 = () => parseColor(initialText);
81
+ t9 = () => parseColor(initialText);
81
82
  $[7] = initialText;
82
- $[8] = t8;
83
- } else t8 = $[8];
84
- const [color, setColor] = useState(t8);
83
+ $[8] = t9;
84
+ } else t9 = $[8];
85
+ const [color, setColor] = useState(t9);
85
86
  const [space, setSpace] = useState(defaultSpace);
86
87
  const [isOpen, setOpen] = useState(defaultOpen ?? false);
87
88
  const targetRef = useRef(null);
88
89
  const inputRef = useRef(null);
89
- let t9;
90
+ let t10;
90
91
  if ($[9] !== initialText || $[10] !== text) {
91
- t9 = parseColor(initialText) ? text : "";
92
+ t10 = parseColor(initialText) ? text : "";
92
93
  $[9] = initialText;
93
94
  $[10] = text;
94
- $[11] = t9;
95
- } else t9 = $[11];
96
- const validText = useRef(t9);
95
+ $[11] = t10;
96
+ } else t10 = $[11];
97
+ const validText = useRef(t10);
97
98
  const emitted = useRef(value_0);
98
- let t10;
99
+ let t11;
99
100
  if ($[12] !== onChange_0) {
100
- t10 = (next) => {
101
+ t11 = (next) => {
101
102
  emitted.current = next;
102
103
  onChange_0?.(next);
103
104
  };
104
105
  $[12] = onChange_0;
105
- $[13] = t10;
106
- } else t10 = $[13];
107
- const emit = useEvent(t10);
108
- let t11;
106
+ $[13] = t11;
107
+ } else t11 = $[13];
108
+ const emit = useEvent(t11);
109
+ let t12;
109
110
  if ($[14] !== format || $[15] !== formatMode) {
110
- t11 = (source) => formatMode === "forced" ? format : detectFormat(source) ?? format;
111
+ t12 = (source) => formatMode === "forced" ? format : detectFormat(source) ?? format;
111
112
  $[14] = format;
112
113
  $[15] = formatMode;
113
- $[16] = t11;
114
- } else t11 = $[16];
115
- const outputFormat = t11;
116
- let t12;
114
+ $[16] = t12;
115
+ } else t12 = $[16];
116
+ const outputFormat = t12;
117
117
  let t13;
118
+ let t14;
118
119
  if ($[17] !== format || $[18] !== formatMode || $[19] !== value_0) {
119
- t12 = () => {
120
+ t13 = () => {
120
121
  if (value_0 === void 0 || value_0 === emitted.current) return;
121
122
  emitted.current = value_0;
122
123
  const raw = (value_0 ?? "").toString();
@@ -126,7 +127,7 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
126
127
  setText(nextText);
127
128
  validText.current = parsed_0 ? nextText : "";
128
129
  };
129
- t13 = [
130
+ t14 = [
130
131
  value_0,
131
132
  format,
132
133
  formatMode
@@ -134,16 +135,16 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
134
135
  $[17] = format;
135
136
  $[18] = formatMode;
136
137
  $[19] = value_0;
137
- $[20] = t12;
138
- $[21] = t13;
138
+ $[20] = t13;
139
+ $[21] = t14;
139
140
  } else {
140
- t12 = $[20];
141
- t13 = $[21];
141
+ t13 = $[20];
142
+ t14 = $[21];
142
143
  }
143
- useEffect(t12, t13);
144
- let t14;
144
+ useEffect(t13, t14);
145
+ let t15;
145
146
  if ($[22] !== emit || $[23] !== formatMode || $[24] !== outputFormat) {
146
- t14 = (nextText_0) => {
147
+ t15 = (nextText_0) => {
147
148
  setText(nextText_0);
148
149
  if (!nextText_0.trim()) {
149
150
  setColor(null);
@@ -160,12 +161,12 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
160
161
  $[22] = emit;
161
162
  $[23] = formatMode;
162
163
  $[24] = outputFormat;
163
- $[25] = t14;
164
- } else t14 = $[25];
165
- const handleTextChange = useEvent(t14);
166
- let t15;
164
+ $[25] = t15;
165
+ } else t15 = $[25];
166
+ const handleTextChange = useEvent(t15);
167
+ let t16;
167
168
  if ($[26] !== format || $[27] !== formatMode || $[28] !== text) {
168
- t15 = () => {
169
+ t16 = () => {
169
170
  if (!text.trim()) return;
170
171
  const parsed_2 = parseColor(text);
171
172
  if (!parsed_2) {
@@ -177,43 +178,43 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
177
178
  $[26] = format;
178
179
  $[27] = formatMode;
179
180
  $[28] = text;
180
- $[29] = t15;
181
- } else t15 = $[29];
182
- const settle = useEvent(t15);
183
- let t16;
181
+ $[29] = t16;
182
+ } else t16 = $[29];
183
+ const settle = useEvent(t16);
184
+ let t17;
184
185
  if ($[30] !== onFocus) {
185
- t16 = (event) => {
186
+ t17 = (event) => {
186
187
  event.currentTarget.select();
187
188
  onFocus?.(event);
188
189
  };
189
190
  $[30] = onFocus;
190
- $[31] = t16;
191
- } else t16 = $[31];
192
- const handleFocus = useEvent(t16);
191
+ $[31] = t17;
192
+ } else t17 = $[31];
193
+ const handleFocus = useEvent(t17);
193
194
  const handleMouseDown = useEvent(_temp2);
194
- let t17;
195
+ let t18;
195
196
  if ($[32] !== settle || $[33] !== userOnBlur) {
196
- t17 = (event_1) => {
197
+ t18 = (event_1) => {
197
198
  settle();
198
199
  userOnBlur?.(event_1);
199
200
  };
200
201
  $[32] = settle;
201
202
  $[33] = userOnBlur;
202
- $[34] = t17;
203
- } else t17 = $[34];
204
- const handleBlur = useEvent(t17);
205
- let t18;
203
+ $[34] = t18;
204
+ } else t18 = $[34];
205
+ const handleBlur = useEvent(t18);
206
+ let t19;
206
207
  if ($[35] !== settle) {
207
- t18 = (event_2) => {
208
+ t19 = (event_2) => {
208
209
  if (event_2.key === "Enter") settle();
209
210
  };
210
211
  $[35] = settle;
211
- $[36] = t18;
212
- } else t18 = $[36];
213
- const handleKeyDown = useEvent(t18);
214
- let t19;
212
+ $[36] = t19;
213
+ } else t19 = $[36];
214
+ const handleKeyDown = useEvent(t19);
215
+ let t20;
215
216
  if ($[37] !== emit || $[38] !== outputFormat || $[39] !== text) {
216
- t19 = (nextColor) => {
217
+ t20 = (nextColor) => {
217
218
  const nextText_1 = formatColor(nextColor, outputFormat(text));
218
219
  setColor(nextColor);
219
220
  setText(nextText_1);
@@ -223,22 +224,22 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
223
224
  $[37] = emit;
224
225
  $[38] = outputFormat;
225
226
  $[39] = text;
226
- $[40] = t19;
227
- } else t19 = $[40];
228
- const handleColorChange = useEvent(t19);
229
- let t20;
227
+ $[40] = t20;
228
+ } else t20 = $[40];
229
+ const handleColorChange = useEvent(t20);
230
+ let t21;
230
231
  if ($[41] !== onOpenChange) {
231
- t20 = (next_0) => {
232
+ t21 = (next_0) => {
232
233
  setOpen(next_0);
233
234
  onOpenChange?.(next_0);
234
235
  };
235
236
  $[41] = onOpenChange;
236
- $[42] = t20;
237
- } else t20 = $[42];
238
- const handleOpenChange = useEvent(t20);
239
- let t21;
237
+ $[42] = t21;
238
+ } else t21 = $[42];
239
+ const handleOpenChange = useEvent(t21);
240
+ let t22;
240
241
  if ($[43] !== ariaDescribedby || $[44] !== ariaLabel || $[45] !== ariaLabelledby || $[46] !== autoFocus || $[47] !== description || $[48] !== handleBlur || $[49] !== handleFocus || $[50] !== handleKeyDown || $[51] !== handleTextChange || $[52] !== id || $[53] !== isDisabled || $[54] !== isInvalid || $[55] !== isReadOnly || $[56] !== label || $[57] !== placeholder || $[58] !== text) {
241
- t21 = {
242
+ t22 = {
242
243
  id,
243
244
  label,
244
245
  description,
@@ -273,47 +274,47 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
273
274
  $[56] = label;
274
275
  $[57] = placeholder;
275
276
  $[58] = text;
276
- $[59] = t21;
277
- } else t21 = $[59];
278
- const { labelProps, inputProps } = useTextField(t21, inputRef);
279
- const t22 = qa || "ColorInput";
280
- let t23;
277
+ $[59] = t22;
278
+ } else t22 = $[59];
279
+ const { labelProps, inputProps } = useTextField(t22, inputRef);
280
+ const t23 = qa || "ColorInput";
281
+ let t24;
281
282
  if ($[60] !== color || $[61] !== swatchStyles) {
282
- t23 = /* @__PURE__ */ jsx(ColorSwatch, {
283
+ t24 = /* @__PURE__ */ jsx(ColorSwatch, {
283
284
  size: "small",
284
285
  color,
285
286
  styles: swatchStyles
286
287
  });
287
288
  $[60] = color;
288
289
  $[61] = swatchStyles;
289
- $[62] = t23;
290
- } else t23 = $[62];
291
- let t24;
290
+ $[62] = t24;
291
+ } else t24 = $[62];
292
+ let t25;
292
293
  if ($[63] !== handleMouseDown || $[64] !== inputProps) {
293
- t24 = {
294
+ t25 = {
294
295
  ...inputProps,
295
296
  spellCheck: false,
296
297
  onMouseDown: handleMouseDown
297
298
  };
298
299
  $[63] = handleMouseDown;
299
300
  $[64] = inputProps;
300
- $[65] = t24;
301
- } else t24 = $[65];
302
- let t25;
301
+ $[65] = t25;
302
+ } else t25 = $[65];
303
+ let t26;
303
304
  if ($[66] !== labelProps || $[67] !== userLabelProps) {
304
- t25 = mergeProps$1(labelProps, userLabelProps);
305
+ t26 = mergeProps$1(labelProps, userLabelProps);
305
306
  $[66] = labelProps;
306
307
  $[67] = userLabelProps;
307
- $[68] = t25;
308
- } else t25 = $[68];
309
- let t26;
310
- if ($[69] !== color || $[70] !== controlledOpen || $[71] !== handleColorChange || $[72] !== handleOpenChange || $[73] !== isDisabled || $[74] !== isInsidePopover || $[75] !== isOpen || $[76] !== isReadOnly || $[77] !== outputFormat || $[78] !== shouldFlip || $[79] !== size || $[80] !== space || $[81] !== text || $[82] !== triggerStyles) {
311
- t26 = isInsidePopover ? null : /* @__PURE__ */ jsxs(DialogTrigger, {
308
+ $[68] = t26;
309
+ } else t26 = $[68];
310
+ let t27;
311
+ 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) {
312
+ t27 = isInsidePopover ? null : /* @__PURE__ */ jsxs(DialogTrigger, {
312
313
  hideArrow: true,
313
314
  type: "popover",
314
315
  mobileType: "tray",
315
- placement: "bottom right",
316
- targetRef,
316
+ placement,
317
+ targetRef: targetRefProp ?? targetRef,
317
318
  isOpen: controlledOpen ?? isOpen,
318
319
  shouldFlip,
319
320
  onOpenChange: handleOpenChange,
@@ -348,26 +349,28 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
348
349
  $[75] = isOpen;
349
350
  $[76] = isReadOnly;
350
351
  $[77] = outputFormat;
351
- $[78] = shouldFlip;
352
- $[79] = size;
353
- $[80] = space;
354
- $[81] = text;
355
- $[82] = triggerStyles;
356
- $[83] = t26;
357
- } else t26 = $[83];
358
- let t27;
359
- if ($[84] !== inputStyles || $[85] !== isDisabled || $[86] !== isInvalid || $[87] !== isLoading || $[88] !== isReadOnly || $[89] !== isValid || $[90] !== props || $[91] !== ref || $[92] !== size || $[93] !== t22 || $[94] !== t23 || $[95] !== t24 || $[96] !== t25 || $[97] !== t26) {
360
- t27 = /* @__PURE__ */ jsx(TextInputBase, {
352
+ $[78] = placement;
353
+ $[79] = shouldFlip;
354
+ $[80] = size;
355
+ $[81] = space;
356
+ $[82] = targetRefProp;
357
+ $[83] = text;
358
+ $[84] = triggerStyles;
359
+ $[85] = t27;
360
+ } else t27 = $[85];
361
+ let t28;
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) {
363
+ t28 = /* @__PURE__ */ jsx(TextInputBase, {
361
364
  ...props,
362
365
  ref,
363
- qa: t22,
366
+ qa: t23,
364
367
  size,
365
368
  autoComplete: "off",
366
- icon: t23,
369
+ icon: t24,
367
370
  inputRef,
368
- inputProps: t24,
371
+ inputProps: t25,
369
372
  inputStyles,
370
- labelProps: t25,
373
+ labelProps: t26,
371
374
  wrapperRef: targetRef,
372
375
  isDisabled,
373
376
  isReadOnly,
@@ -375,25 +378,25 @@ const ColorInput = forwardRef(function ColorInput(allProps, ref) {
375
378
  isValid,
376
379
  isLoading,
377
380
  suffixPosition: "after",
378
- suffix: t26
381
+ suffix: t27
379
382
  });
380
- $[84] = inputStyles;
381
- $[85] = isDisabled;
382
- $[86] = isInvalid;
383
- $[87] = isLoading;
384
- $[88] = isReadOnly;
385
- $[89] = isValid;
386
- $[90] = props;
387
- $[91] = ref;
388
- $[92] = size;
389
- $[93] = t22;
390
- $[94] = t23;
391
- $[95] = t24;
392
- $[96] = t25;
393
- $[97] = t26;
394
- $[98] = t27;
395
- } else t27 = $[98];
396
- return t27;
383
+ $[86] = inputStyles;
384
+ $[87] = isDisabled;
385
+ $[88] = isInvalid;
386
+ $[89] = isLoading;
387
+ $[90] = isReadOnly;
388
+ $[91] = isValid;
389
+ $[92] = props;
390
+ $[93] = ref;
391
+ $[94] = size;
392
+ $[95] = t23;
393
+ $[96] = t24;
394
+ $[97] = t25;
395
+ $[98] = t26;
396
+ $[99] = t27;
397
+ $[100] = t28;
398
+ } else t28 = $[100];
399
+ return t28;
397
400
  });
398
401
  ColorInput.cubeInputType = "Text";
399
402
  function _temp(t0) {
@@ -1 +1 @@
1
- {"version":3,"file":"ColorInput.js","names":["BaseProps","BaseStyleProps","BlockStyleProps","ColorStyleProps","OuterStyleProps","Styles","tasty","FocusEvent","ForwardedRef","forwardRef","KeyboardEvent","MouseEvent","useEffect","useRef","useState","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","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","t4","isDisabled","isReadOnly","isInvalid","isValid","isLoading","autoFocus","labelProps","userLabelProps","userOnBlur","label","description","ariaLabel","ariaLabelledby","ariaDescribedby","id","undefined","isInsidePopover","t5","t6","toString","initialText","t7","parsed","text","setText","t8","color","setColor","space","setSpace","setOpen","targetRef","inputRef","t9","validText","emitted","t10","next","current","emit","t11","source","outputFormat","t12","t13","raw","parsed_0","nextText","t14","nextText_0","trim","parsed_1","handleTextChange","t15","parsed_2","settle","t16","currentTarget","select","handleFocus","handleMouseDown","_temp2","t17","event_1","handleBlur","t18","event_2","key","handleKeyDown","t19","nextColor","nextText_1","handleColorChange","t20","next_0","handleOpenChange","t21","type","onKeyDown","inputProps","t22","t23","t24","spellCheck","onMouseDown","t25","t26","t27","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 useEffect,\n useRef,\n useState,\n} from 'react';\nimport { 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, DialogTrigger } from '../../overlays/Dialog';\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 /** 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 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 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 mobileType=\"tray\"\n placement=\"bottom right\"\n targetRef={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":";;;;;;;;;;;;;;;;;;;;;;;;;AAyDA,MAAMoC,iBAAyB,EAAEC,UAAU,QAAQ;;AAGnD,MAAMC,iBAA6B;CAAEC,GAAG;CAAKC,GAAG;CAAKC,GAAG;CAAK;AAE7D,MAAMC,oBAAoBpC,MAAMc,YAAY;CAC1CuB,IAAI;CACJC,MAAM,oBAAC,gBAAW;CACnB,CAAC;;;;;AAmDF,MAAasB,aAAazD,WAAW,SAAAyD,WAAAC,UAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;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,QAAcvD,cAAc6C,UAAUI,GAMpC;CAEF,MAAA,EAAA5B,IAAAG,OAAAgC,SAAA/B,cAAAC,UAAA+B,YAAA9B,QAAA+B,IAAA9B,YAAA+B,IAAA9B,cAAA+B,IAAA9B,QAAA+B,gBAAA9B,aAAAC,cAAAC,YAAAC,aAAA4B,IAAA3B,MAAA4B,YAAAC,YAAAC,WAAAC,SAAAC,WAAAC,WAAA3B,aAAAC,eAAAC,cAAA0B,YAAAC,gBAAA/B,QAAAgC,YAAAnC,SAAAoC,OAAAC,aAAA,cAAAC,WAAA,mBAAAC,gBAAA,oBAAAC,iBAAAC,OAgCItB;CA3BF,MAAA5B,SAAA+B,OAAAoB,SAAA,QAAApB;CACA,MAAA9B,aAAA+B,OAAAmB,SAAA,WAAAnB;CACA,MAAA9B,eAAA+B,OAAAkB,SAAA,QAAAlB;CAKA,MAAA1B,cAAA4B,OAAAgB,SAAA,iBAAAhB;CAwBF,MAAAiB,kBAAwBrE,yBAAyB;CAE5B,MAAAsE,KAAAxB,WAAA/B,gBAAA;CAA2B,IAAAwD;AAAA,KAAAlC,EAAA,OAAAiC,IAAA;AAA5BC,OAACD,GAA2BE,UAAY;AAAAnC,IAAA,KAAAiC;AAAAjC,IAAA,KAAAkC;OAAAA,MAAAlC,EAAA;CAA5D,MAAAoC,cAAoBF;CAAyC,IAAAG;AAAA,KAAArC,EAAA,OAAApB,UAAAoB,EAAA,OAAAnB,cAAAmB,EAAA,OAAAoC,aAAA;AAC5BC,aAAA;GAC/B,MAAAC,SAAe7E,WAAW2E,YAAY;AAAC,UAEhCE,UAAUzD,eAAe,WAC5BrB,YAAY8E,QAAQ1D,OACT,GAFRwD;;AAGRpC,IAAA,KAAApB;AAAAoB,IAAA,KAAAnB;AAAAmB,IAAA,KAAAoC;AAAApC,IAAA,KAAAqC;OAAAA,MAAArC,EAAA;CAND,MAAA,CAAAuC,MAAAC,WAAwB/F,SAAS4F,GAM/B;CAAC,IAAAI;AAAA,KAAAzC,EAAA,OAAAoC,aAAA;AACgCK,aAAMhF,WAAW2E,YAAY;AAAApC,IAAA,KAAAoC;AAAApC,IAAA,KAAAyC;OAAAA,MAAAzC,EAAA;CAAhE,MAAA,CAAA0C,OAAAC,YAA0BlG,SAASgG,GAA8B;CACjE,MAAA,CAAAG,OAAAC,YAA0BpG,SAAqBqC,aAAa;CAC5D,MAAA,CAAAC,QAAA+D,WAA0BrG,SAASuC,eAAA,MAAqB;CAExD,MAAA+D,YAAkBvG,OAAuB,KAAK;CAC9C,MAAAwG,WAAiBxG,OAAyB,KAAK;CAAC,IAAAyG;AAAA,KAAAjD,EAAA,OAAAoC,eAAApC,EAAA,QAAAuC,MAAA;AAEvBU,OAAAxF,WAAW2E,YAAwB,GAAnCG,OAAA;AAAmCvC,IAAA,KAAAoC;AAAApC,IAAA,MAAAuC;AAAAvC,IAAA,MAAAiD;OAAAA,MAAAjD,EAAA;CAA5D,MAAAkD,YAAkB1G,OAAOyG,GAAoC;CAE7D,MAAAE,UAAgB3G,OAAkCiC,QAAM;CAAC,IAAA2E;AAAA,KAAApD,EAAA,QAAAU,YAAA;AAEnC0C,SAAAC,SAAA;AACpBF,WAAOG,UAAWD;AAClB1E,gBAAW0E,KAAK;;AACjBrD,IAAA,MAAAU;AAAAV,IAAA,MAAAoD;OAAAA,OAAApD,EAAA;CAHD,MAAAuD,OAAa5G,SAASyG,IAGpB;CAAC,IAAAI;AAAA,KAAAxD,EAAA,QAAApB,UAAAoB,EAAA,QAAAnB,YAAA;AAGkB2E,SAAAC,WACnB5E,eAAe,WAAfD,SAAmCrB,aAAakG,OAAiB,IAA9B7E;AAA8BoB,IAAA,MAAApB;AAAAoB,IAAA,MAAAnB;AAAAmB,IAAA,MAAAwD;OAAAA,OAAAxD,EAAA;CADnE,MAAA0D,eAAqBF;CAC+C,IAAAG;CAAA,IAAAC;AAAA,KAAA5D,EAAA,QAAApB,UAAAoB,EAAA,QAAAnB,cAAAmB,EAAA,QAAAS,SAAA;AAI1DkD,cAAA;AACR,OAAIlF,YAAUsD,UAAatD,YAAU0E,QAAOG,QAAQ;AAEpDH,WAAOG,UAAW7E;GAElB,MAAAoF,OAAapD,WAAA,IAAW0B,UAAY;GACpC,MAAA2B,WAAerG,WAAWoG,IAAI;GAC9B,MAAAE,WACED,YAAUjF,eAAe,WAAWrB,YAAY8E,UAAQ1D,OAAa,GAArEiF;AAEFlB,YAASL,SAAO;AAChBE,WAAQuB,SAAS;AACjBb,aAASI,UAAWhB,WAAAyB,WAAA;;AACnBH,QAAA;GAACnF;GAAOG;GAAQC;GAAW;AAAAmB,IAAA,MAAApB;AAAAoB,IAAA,MAAAnB;AAAAmB,IAAA,MAAAS;AAAAT,IAAA,MAAA2D;AAAA3D,IAAA,MAAA4D;QAAA;AAAAD,QAAA3D,EAAA;AAAA4D,QAAA5D,EAAA;;AAb9BzD,WAAUoH,KAaPC,IAA4B;CAAA,IAAAI;AAAA,KAAAhE,EAAA,QAAAuD,QAAAvD,EAAA,QAAAnB,cAAAmB,EAAA,QAAA0D,cAAA;AAEGM,SAAAC,eAAA;AAChCzB,WAAQuB,WAAS;AAEjB,OAAI,CAACA,WAAQG,MAAO,EAAA;AAClBvB,aAAS,KAAK;AACdO,cAASI,UAAW;AACpBC,SAAK,KAAK;AAAA;;GAKZ,MAAAY,WAAe1G,WAAWsG,WAAS;AAInC,OAAI,CAACzB,SAAM;AAEXK,YAASL,SAAO;AAChBY,aAASI,UAAWS;AACpBR,QACE1E,eAAe,SACXkF,WAAQG,MACmC,GAA3C1G,YAAY8E,UAAQoB,aAAaK,WAAS,CAChD,CAAC;;AACF/D,IAAA,MAAAuD;AAAAvD,IAAA,MAAAnB;AAAAmB,IAAA,MAAA0D;AAAA1D,IAAA,MAAAgE;OAAAA,OAAAhE,EAAA;CAxBD,MAAAoE,mBAAyBzH,SAASqH,IAwBhC;CAAC,IAAAK;AAAA,KAAArE,EAAA,QAAApB,UAAAoB,EAAA,QAAAnB,cAAAmB,EAAA,QAAAuC,MAAA;AAGqB8B,cAAA;AACtB,OAAI,CAAC9B,KAAI2B,MAAO,CAAA;GAEhB,MAAAI,WAAe7G,WAAW8E,KAAK;AAE/B,OAAI,CAACD,UAAM;AACTE,YAAQU,UAASI,QAAS;AAAA;;AAK5B,OAAIzE,eAAe,SAAU2D,SAAQhF,YAAY8E,UAAQ1D,OAAO,CAAC;;AAClEoB,IAAA,MAAApB;AAAAoB,IAAA,MAAAnB;AAAAmB,IAAA,MAAAuC;AAAAvC,IAAA,MAAAqE;OAAAA,OAAArE,EAAA;CAZD,MAAAuE,SAAe5H,SAAS0H,IAYtB;CAAC,IAAAG;AAAA,KAAAxE,EAAA,QAAAX,SAAA;AAU0BmF,SAAAlF,UAAA;AAC3BA,SAAKmF,cAAcC,QAAS;AAC5BrF,aAAUC,MAAM;;AACjBU,IAAA,MAAAX;AAAAW,IAAA,MAAAwE;OAAAA,OAAAxE,EAAA;CAHD,MAAA2E,cAAoBhI,SAAS6H,IAG3B;CAYF,MAAAI,kBAAwBjI,SAASkI,OAK/B;CAAC,IAAAC;AAAA,KAAA9E,EAAA,QAAAuE,UAAAvE,EAAA,QAAAwB,YAAA;AAEyBsD,SAAAC,YAAA;AAC1BR,WAAQ;AACR/C,gBAAalC,QAAM;;AACpBU,IAAA,MAAAuE;AAAAvE,IAAA,MAAAwB;AAAAxB,IAAA,MAAA8E;OAAAA,OAAA9E,EAAA;CAHD,MAAAgF,aAAmBrI,SAASmI,IAG1B;CAAC,IAAAG;AAAA,KAAAjF,EAAA,QAAAuE,QAAA;AAE4BU,SAAAC,YAAA;AAC7B,OAAI5F,QAAK6F,QAAS,QAASZ,SAAQ;;AACpCvE,IAAA,MAAAuE;AAAAvE,IAAA,MAAAiF;OAAAA,OAAAjF,EAAA;CAFD,MAAAoF,gBAAsBzI,SAASsI,IAE7B;CAAC,IAAAI;AAAA,KAAArF,EAAA,QAAAuD,QAAAvD,EAAA,QAAA0D,gBAAA1D,EAAA,QAAAuC,MAAA;AAEgC8C,SAAAC,cAAA;GACjC,MAAAC,aAAiB/H,YAAY8H,WAAW5B,aAAanB,KAAK,CAAC;AAE3DI,YAAS2C,UAAU;AACnB9C,WAAQuB,WAAS;AACjBb,aAASI,UAAWS;AACpBR,QAAKQ,WAAS;;AACf/D,IAAA,MAAAuD;AAAAvD,IAAA,MAAA0D;AAAA1D,IAAA,MAAAuC;AAAAvC,IAAA,MAAAqF;OAAAA,OAAArF,EAAA;CAPD,MAAAwF,oBAA0B7I,SAAS0I,IAOjC;CAAC,IAAAI;AAAA,KAAAzF,EAAA,QAAAf,cAAA;AAE+BwG,SAAAC,WAAA;AAChC5C,WAAQO,OAAK;AACbpE,kBAAeoE,OAAK;;AACrBrD,IAAA,MAAAf;AAAAe,IAAA,MAAAyF;OAAAA,OAAAzF,EAAA;CAHD,MAAA2F,mBAAyBhJ,SAAS8I,IAGhC;CAAC,IAAAG;AAAA,KAAA5F,EAAA,QAAA6B,mBAAA7B,EAAA,QAAA2B,aAAA3B,EAAA,QAAA4B,kBAAA5B,EAAA,QAAAqB,aAAArB,EAAA,QAAA0B,eAAA1B,EAAA,QAAAgF,cAAAhF,EAAA,QAAA2E,eAAA3E,EAAA,QAAAoF,iBAAApF,EAAA,QAAAoE,oBAAApE,EAAA,QAAA8B,MAAA9B,EAAA,QAAAgB,cAAAhB,EAAA,QAAAkB,aAAAlB,EAAA,QAAAiB,cAAAjB,EAAA,QAAAyB,SAAAzB,EAAA,QAAAb,eAAAa,EAAA,QAAAuC,MAAA;AAGDqD,QAAA;GAAA9D;GAAAL;GAAAC;GAAA,cAIgBC;GAAS,mBACJC;GAAc,oBACbC;GAAeb;GAAAC;GAAAC;GAAAG;GAAAlC;GAAAV,OAM5B8D;GAAIsD,MACL;GAAMlH,UACFyF;GAAgB/E,SACjBsF;GAAWnF,QACZwF;GAAUc,WACPV;GACZ;AAAApF,IAAA,MAAA6B;AAAA7B,IAAA,MAAA2B;AAAA3B,IAAA,MAAA4B;AAAA5B,IAAA,MAAAqB;AAAArB,IAAA,MAAA0B;AAAA1B,IAAA,MAAAgF;AAAAhF,IAAA,MAAA2E;AAAA3E,IAAA,MAAAoF;AAAApF,IAAA,MAAAoE;AAAApE,IAAA,MAAA8B;AAAA9B,IAAA,MAAAgB;AAAAhB,IAAA,MAAAkB;AAAAlB,IAAA,MAAAiB;AAAAjB,IAAA,MAAAyB;AAAAzB,IAAA,MAAAb;AAAAa,IAAA,MAAAuC;AAAAvC,IAAA,MAAA4F;OAAAA,OAAA5F,EAAA;CAnBH,MAAA,EAAAsB,YAAAyE,eAAmCrJ,aACjCkJ,KAmBA5C,SACD;CAMO,MAAAgD,MAAA1H,MAAA;CAAkB,IAAA2H;AAAA,KAAAjG,EAAA,QAAA0C,SAAA1C,EAAA,QAAAJ,cAAA;AAShBqG,QAAA,oBAAC;GAAiB,MAAA;GAAevD;GAAe9C,QAAAA;IAAgB;AAAAI,IAAA,MAAA0C;AAAA1C,IAAA,MAAAJ;AAAAI,IAAA,MAAAiG;OAAAA,OAAAjG,EAAA;CAAA,IAAAkG;AAAA,KAAAlG,EAAA,QAAA4E,mBAAA5E,EAAA,QAAA+F,YAAA;AAE1DG,QAAA;GAAA,GACPH;GAAUI,YACD;GAAKC,aACJxB;GACd;AAAA5E,IAAA,MAAA4E;AAAA5E,IAAA,MAAA+F;AAAA/F,IAAA,MAAAkG;OAAAA,OAAAlG,EAAA;CAAA,IAAAqG;AAAA,KAAArG,EAAA,QAAAsB,cAAAtB,EAAA,QAAAuB,gBAAA;AAEW8E,QAAAvJ,aAAWwE,YAAYC,eAAe;AAAAvB,IAAA,MAAAsB;AAAAtB,IAAA,MAAAuB;AAAAvB,IAAA,MAAAqG;OAAAA,OAAArG,EAAA;CAAA,IAAAsG;AAAA,KAAAtG,EAAA,QAAA0C,SAAA1C,EAAA,QAAAc,kBAAAd,EAAA,QAAAwF,qBAAAxF,EAAA,QAAA2F,oBAAA3F,EAAA,QAAAgB,cAAAhB,EAAA,QAAAgC,mBAAAhC,EAAA,QAAAjB,UAAAiB,EAAA,QAAAiB,cAAAjB,EAAA,QAAA0D,gBAAA1D,EAAA,QAAAd,cAAAc,EAAA,QAAAZ,QAAAY,EAAA,QAAA4C,SAAA5C,EAAA,QAAAuC,QAAAvC,EAAA,QAAAL,eAAA;AAWhD2G,QAAAtE,kBAAA,OACE,qBAAC;GACC,WAAA;GACK,MAAA;GACM,YAAA;GACD,WAAA;GACCe;GACH,QAAAjC,kBAAA/B;GACIG;GACEyG,cAAAA;cAWd,oBAAC;IAA+B3E;cAC9B,oBAAC;KACO5B;KACK,cAAA;KACC,YAAA6B,cAAA,CAAeD,aAAf,OAAAe;KACJpC,QAAAA;MAEZ;KACA,sBAAC;IACY,cAAA;IACL,OAAA;IACE5B,QAAAA;cAER,oBAAC;KACQ,OAAA2E,SAAAzE;KACA2E;KACK,YAAA5B,cAAAC;KACG,eAAAyC,aAAanB,KAAI;KACtBiD,UAAAA;KACK3C,eAAAA;MAEnB;KACF;IACD;AAAA7C,IAAA,MAAA0C;AAAA1C,IAAA,MAAAc;AAAAd,IAAA,MAAAwF;AAAAxF,IAAA,MAAA2F;AAAA3F,IAAA,MAAAgB;AAAAhB,IAAA,MAAAgC;AAAAhC,IAAA,MAAAjB;AAAAiB,IAAA,MAAAiB;AAAAjB,IAAA,MAAA0D;AAAA1D,IAAA,MAAAd;AAAAc,IAAA,MAAAZ;AAAAY,IAAA,MAAA4C;AAAA5C,IAAA,MAAAuC;AAAAvC,IAAA,MAAAL;AAAAK,IAAA,MAAAsG;OAAAA,OAAAtG,EAAA;CAAA,IAAAuG;AAAA,KAAAvG,EAAA,QAAAN,eAAAM,EAAA,QAAAgB,cAAAhB,EAAA,QAAAkB,aAAAlB,EAAA,QAAAoB,aAAApB,EAAA,QAAAiB,cAAAjB,EAAA,QAAAmB,WAAAnB,EAAA,QAAAQ,SAAAR,EAAA,QAAAD,OAAAC,EAAA,QAAAZ,QAAAY,EAAA,QAAAgG,OAAAhG,EAAA,QAAAiG,OAAAjG,EAAA,QAAAkG,OAAAlG,EAAA,QAAAqG,OAAArG,EAAA,QAAAsG,KAAA;AA1ELC,QAAA,oBAAC;GAAa,GACR/F;GACCT;GACD,IAAAiG;GACE5G;GACO,cAAA;GAOP,MAAA6G;GACIjD;GACE,YAAAkD;GAKCxG;GACD,YAAA2G;GACAtD,YAAAA;GACA/B;GACAC;GACDC;GACFC;GACEC;GAGI,gBAAA;GAEb,QAAAkF;IA6CF;AAAAtG,IAAA,MAAAN;AAAAM,IAAA,MAAAgB;AAAAhB,IAAA,MAAAkB;AAAAlB,IAAA,MAAAoB;AAAApB,IAAA,MAAAiB;AAAAjB,IAAA,MAAAmB;AAAAnB,IAAA,MAAAQ;AAAAR,IAAA,MAAAD;AAAAC,IAAA,MAAAZ;AAAAY,IAAA,MAAAgG;AAAAhG,IAAA,MAAAiG;AAAAjG,IAAA,MAAAkG;AAAAlG,IAAA,MAAAqG;AAAArG,IAAA,MAAAsG;AAAAtG,IAAA,MAAAuG;OAAAA,OAAAvG,EAAA;AAAA,QA5EFuG;EA8EF;AAEF,AAAC1G,WAAmB2G,gBAAgB;AArSC,SAAAjG,MAAAL,IAAA;CAMd,MAAA,EAAAzB,OAAAE,aAAAuB;AAAmB,QAAM;EACnCzB;EAAkCE;EAE1C;;AATgC,SAAAkG,OAAA4B,SAAA;AAgKjC,KAAIC,SAAQC,kBAAmBrH,QAAKmF,cAAc;AAElDnF,SAAKsH,gBAAiB;AACtBtH,SAAKmF,cAAcoC,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","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","spellCheck","onMouseDown","t26","t27","t28","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, DialogTrigger } from '../../overlays/Dialog';\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 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 mobileType=\"tray\"\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":"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"}
@@ -9,7 +9,8 @@ import { CubeColorSwatchItem } from "../ColorSwatchGroup/ColorSwatchGroup.js";
9
9
  import "../ColorSwatchGroup/index.js";
10
10
  import { BaseProps, BlockStyleProps, OuterStyleProps, Styles } from "@tenphi/tasty";
11
11
  import * as react from "react";
12
- import { ReactNode } from "react";
12
+ import { ReactNode, RefObject } from "react";
13
+ import { Placement } from "react-aria";
13
14
 
14
15
  //#region src/components/fields/ColorPicker/ColorPicker.d.ts
15
16
  interface CubeColorPickerProps extends BaseProps, OuterStyleProps, BlockStyleProps, FieldBaseProps<string | null | undefined> {
@@ -31,6 +32,21 @@ interface CubeColorPickerProps extends BaseProps, OuterStyleProps, BlockStylePro
31
32
  onOpenChange?: (isOpen: boolean) => void;
32
33
  /** Whether the popover may flip to the other side of the trigger. */
33
34
  shouldFlip?: boolean;
35
+ /**
36
+ * The ref of the element the popover should visually attach itself to.
37
+ * Defaults to the trigger button.
38
+ *
39
+ * Forwarded to `DialogTrigger`, so the anchor also becomes what outside-click
40
+ * dismissal treats as the trigger.
41
+ */
42
+ targetRef?: RefObject<HTMLElement | null>;
43
+ /**
44
+ * Placement of the popover relative to the anchor.
45
+ * Accepts React Aria's `Placement` strings (e.g. `'bottom start'`,
46
+ * `'top start'`, `'right top'`, `'left top'`).
47
+ * @default 'bottom start'
48
+ */
49
+ placement?: Placement;
34
50
  /** Replaces the color shown on the trigger. Pass `null` for a swatch on its own. */
35
51
  children?: ReactNode;
36
52
  /** Shown on the trigger while there is no color. */
@@ -40,7 +56,7 @@ interface CubeColorPickerProps extends BaseProps, OuterStyleProps, BlockStylePro
40
56
  /** The visual type of the trigger. */
41
57
  type?: CubeItemProps['type'];
42
58
  theme?: CubeItemProps['theme'];
43
- /** Tooltip for the trigger, separate from the field tooltip. */
59
+ /** Tooltip for the trigger, separate from `labelTooltip`. */
44
60
  triggerTooltip?: CubeItemProps['tooltip'];
45
61
  /** Colors to offer under the editor, for picking without dialing one in. */
46
62
  swatches?: CubeColorSwatchItem[];
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.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";
@@ -64,7 +64,7 @@ const ColorPicker = forwardRef(function ColorPicker(allProps, ref) {
64
64
  onChange
65
65
  })
66
66
  });
67
- const { qa, id, value: value_0, defaultValue, onChange: onChange_0, format = "hex", defaultSpace = "hst", isOpen: controlledOpen, defaultOpen, onOpenChange, shouldFlip, 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;
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;
68
68
  const styles = extractStyles(props, [...OUTER_STYLES, ...BLOCK_STYLES]);
69
69
  /**
70
70
  * Loading locks the trigger, but the popover can outlive that — it may be
@@ -110,7 +110,8 @@ const ColorPicker = forwardRef(function ColorPicker(allProps, ref) {
110
110
  hideArrow: true,
111
111
  type: "popover",
112
112
  mobileType: "tray",
113
- placement: "bottom start",
113
+ placement,
114
+ targetRef,
114
115
  isOpen: controlledOpen ?? isOpen,
115
116
  shouldFlip,
116
117
  onOpenChange: handleOpenChange,