@cube-dev/ui-kit 0.155.0 → 0.156.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 (521) hide show
  1. package/dist/CHANGELOG.md +64 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +10 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.js +4 -3
  25. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  58. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  59. package/dist/components/content/Item/Item.js +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  100. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  101. package/dist/components/fields/Checkbox/context.js +1 -1
  102. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +67 -0
  103. package/dist/components/fields/ColorPicker/ColorPicker.js +240 -0
  104. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -0
  105. package/dist/components/fields/ColorPicker/ColorPickerPanel.js +149 -0
  106. package/dist/components/fields/ColorPicker/ColorPickerPanel.js.map +1 -0
  107. package/dist/components/fields/ColorPicker/channels.d.ts +13 -0
  108. package/dist/components/fields/ColorPicker/channels.js +194 -0
  109. package/dist/components/fields/ColorPicker/channels.js.map +1 -0
  110. package/dist/components/fields/ColorPicker/color.d.ts +15 -0
  111. package/dist/components/fields/ColorPicker/color.js +282 -0
  112. package/dist/components/fields/ColorPicker/color.js.map +1 -0
  113. package/dist/components/fields/ColorPicker/index.d.ts +4 -0
  114. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  115. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  116. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  117. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  118. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  119. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  120. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  121. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  122. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  123. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  124. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  125. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  126. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  127. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  128. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  129. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  130. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  131. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  132. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  133. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  134. package/dist/components/fields/DatePicker/period.js +1 -1
  135. package/dist/components/fields/DatePicker/props.js +1 -1
  136. package/dist/components/fields/DatePicker/utils.js +1 -1
  137. package/dist/components/fields/FileInput/FileInput.js +1 -1
  138. package/dist/components/fields/FilterListBox/FilterListBox.d.ts +3 -3
  139. package/dist/components/fields/FilterListBox/FilterListBox.js +7 -6
  140. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  141. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  142. package/dist/components/fields/Input/Input.js +1 -1
  143. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  144. package/dist/components/fields/ListBox/ListBox.js +1 -1
  145. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  146. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  147. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  148. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  149. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  150. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  151. package/dist/components/fields/Picker/Picker.js +1 -1
  152. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  153. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  154. package/dist/components/fields/RadioGroup/context.js +1 -1
  155. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  156. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  157. package/dist/components/fields/Select/Select.js +1 -1
  158. package/dist/components/fields/Slider/Gradation.js +1 -1
  159. package/dist/components/fields/Slider/HueSlider.js +1 -1
  160. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  161. package/dist/components/fields/Slider/Slider.js +1 -1
  162. package/dist/components/fields/Slider/SliderBase.js +1 -1
  163. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  164. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  165. package/dist/components/fields/Slider/elements.js +1 -1
  166. package/dist/components/fields/Slider/index.js +1 -1
  167. package/dist/components/fields/Switch/Switch.js +1 -1
  168. package/dist/components/fields/TextArea/TextArea.js +1 -1
  169. package/dist/components/fields/TextInput/TextInput.js +1 -1
  170. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  171. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  172. package/dist/components/fields/index.d.ts +4 -0
  173. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  174. package/dist/components/form/Form/Field.js +1 -1
  175. package/dist/components/form/Form/Form.js +1 -1
  176. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  177. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  178. package/dist/components/form/Form/SubmitError.js +1 -1
  179. package/dist/components/form/Form/index.js +1 -1
  180. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  181. package/dist/components/form/Form/use-field/use-field.js +1 -1
  182. package/dist/components/form/Form/use-form.js +1 -1
  183. package/dist/components/form/Form/validation.js +1 -1
  184. package/dist/components/form/Label.js +1 -1
  185. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  186. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  187. package/dist/components/form/validation/use-validation-props.js +1 -1
  188. package/dist/components/form/wrapper.js +1 -1
  189. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  190. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  191. package/dist/components/layout/Board/Board.d.ts +55 -1
  192. package/dist/components/layout/Board/Board.js +278 -75
  193. package/dist/components/layout/Board/Board.js.map +1 -1
  194. package/dist/components/layout/Board/BoardProvider.js +1 -1
  195. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  196. package/dist/components/layout/Board/Widget.d.ts +16 -0
  197. package/dist/components/layout/Board/Widget.js +6 -3
  198. package/dist/components/layout/Board/Widget.js.map +1 -1
  199. package/dist/components/layout/Board/WidgetHost.js +81 -14
  200. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  201. package/dist/components/layout/Board/board-context.js +1 -1
  202. package/dist/components/layout/Board/board-context.js.map +1 -1
  203. package/dist/components/layout/Board/board-store.js +2 -2
  204. package/dist/components/layout/Board/board-store.js.map +1 -1
  205. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  206. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  207. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  208. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  209. package/dist/components/layout/Board/grid-core/group-move.js +132 -0
  210. package/dist/components/layout/Board/grid-core/group-move.js.map +1 -0
  211. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  212. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  213. package/dist/components/layout/Board/index.d.ts +2 -1
  214. package/dist/components/layout/Board/index.js +2 -2
  215. package/dist/components/layout/Board/index.js.map +1 -1
  216. package/dist/components/layout/Board/responsive-utils.js +1 -1
  217. package/dist/components/layout/Board/use-board-layout.js +17 -12
  218. package/dist/components/layout/Board/use-board-layout.js.map +1 -1
  219. package/dist/components/layout/Board/use-board-registry.js +139 -20
  220. package/dist/components/layout/Board/use-board-registry.js.map +1 -1
  221. package/dist/components/layout/Board/use-board-select-modifier-key.js +24 -0
  222. package/dist/components/layout/Board/use-board-select-modifier-key.js.map +1 -0
  223. package/dist/components/layout/Board/use-board-selection.d.ts +8 -0
  224. package/dist/components/layout/Board/use-board-selection.js +113 -0
  225. package/dist/components/layout/Board/use-board-selection.js.map +1 -0
  226. package/dist/components/layout/Flex.js +1 -1
  227. package/dist/components/layout/Flow.js +1 -1
  228. package/dist/components/layout/Grid.js +1 -1
  229. package/dist/components/layout/Panel.js +1 -1
  230. package/dist/components/layout/Prefix.js +1 -1
  231. package/dist/components/layout/ResizablePanel.js +1 -1
  232. package/dist/components/layout/Space.js +1 -1
  233. package/dist/components/layout/Suffix.js +1 -1
  234. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  235. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  236. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  237. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  238. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  239. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  240. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  241. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  242. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  243. package/dist/components/navigation/Tabs/styled.js +1 -1
  244. package/dist/components/navigation/Tabs/types.js +1 -1
  245. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  246. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  247. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  248. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  249. package/dist/components/other/Calendar/Calendar.js +1 -1
  250. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  251. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  252. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  253. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  254. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  255. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  256. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  257. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  258. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  259. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  260. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  261. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  262. package/dist/components/overlays/Dialog/context.js +1 -1
  263. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  264. package/dist/components/overlays/Modal/Modal.js +1 -1
  265. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  266. package/dist/components/overlays/Modal/Overlay.js +1 -1
  267. package/dist/components/overlays/Modal/Popover.js +1 -1
  268. package/dist/components/overlays/Modal/Tray.js +1 -1
  269. package/dist/components/overlays/Modal/Underlay.js +1 -1
  270. package/dist/components/overlays/Notifications/Notification.js +1 -1
  271. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  272. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  273. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  274. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  275. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  276. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  277. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  278. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  279. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  280. package/dist/components/overlays/Notifications/index.js +1 -1
  281. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  282. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  283. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  284. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  285. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  286. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  287. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  288. package/dist/components/overlays/Toast/index.js +1 -1
  289. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  290. package/dist/components/overlays/Toast/useToast.js +1 -1
  291. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  292. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  293. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  294. package/dist/components/overlays/Tooltip/context.js +1 -1
  295. package/dist/components/portal/Portal.js +1 -1
  296. package/dist/components/portal/PortalProvider.js +1 -1
  297. package/dist/components/portal/usePortal.js +1 -1
  298. package/dist/components/shared/DraggableCollection.js +1 -1
  299. package/dist/components/shared/InvalidIcon.js +1 -1
  300. package/dist/components/shared/ValidIcon.js +1 -1
  301. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  302. package/dist/components/status/Spin/Cube.js +1 -1
  303. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  304. package/dist/components/status/Spin/Spin.js +1 -1
  305. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  306. package/dist/data/item-themes.js +1 -1
  307. package/dist/data/themes.js +1 -1
  308. package/dist/eslint-plugin/defaults.generated.js +9 -1
  309. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  310. package/dist/eslint-plugin/index.js +1 -1
  311. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  312. package/dist/i18n/I18nProvider.js +1 -1
  313. package/dist/i18n/createFormatter.js +1 -1
  314. package/dist/i18n/index.js +1 -1
  315. package/dist/i18n/instance.js +1 -1
  316. package/dist/i18n/locales/de-DE/uikit.js +9 -1
  317. package/dist/i18n/locales/en-US/uikit.js +9 -1
  318. package/dist/i18n/locales/en-US/uikit.json.d.ts +9 -1
  319. package/dist/i18n/locales/es-ES/uikit.js +9 -1
  320. package/dist/i18n/locales/es-MX/uikit.js +9 -1
  321. package/dist/i18n/locales/fr-FR/uikit.js +9 -1
  322. package/dist/i18n/locales/it-IT/uikit.js +9 -1
  323. package/dist/i18n/locales/ja-JP/uikit.js +9 -1
  324. package/dist/i18n/locales/nb-NO/uikit.js +9 -1
  325. package/dist/i18n/locales/pt-BR/uikit.js +9 -1
  326. package/dist/i18n/locales/pt-PT/uikit.js +9 -1
  327. package/dist/i18n/locales/sv-SE/uikit.js +9 -1
  328. package/dist/i18n/locales/vi-VN/uikit.js +9 -1
  329. package/dist/i18n/locales.js +1 -1
  330. package/dist/i18n/useFormatter.js +1 -1
  331. package/dist/i18n/useI18n.js +1 -1
  332. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  333. package/dist/icons/AdjustmentsIcon.js +1 -1
  334. package/dist/icons/AiIcon.js +1 -1
  335. package/dist/icons/AreaChartIcon.js +1 -1
  336. package/dist/icons/BackwardIcon.js +1 -1
  337. package/dist/icons/BarChartIcon.js +1 -1
  338. package/dist/icons/BellFilledIcon.js +1 -1
  339. package/dist/icons/BellIcon.js +1 -1
  340. package/dist/icons/BooleanIcon.js +1 -1
  341. package/dist/icons/CalendarEditIcon.js +1 -1
  342. package/dist/icons/CalendarIcon.js +1 -1
  343. package/dist/icons/CaretDownIcon.js +1 -1
  344. package/dist/icons/CaretUpIcon.js +1 -1
  345. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  346. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  347. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  348. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  349. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  350. package/dist/icons/ChartBarLineIcon.js +1 -1
  351. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  352. package/dist/icons/ChartBarStackedIcon.js +1 -1
  353. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  354. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  355. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  356. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  357. package/dist/icons/ChartBubbleIcon.js +1 -1
  358. package/dist/icons/ChartDonut2Icon.js +1 -1
  359. package/dist/icons/ChartFunnelIcon.js +1 -1
  360. package/dist/icons/ChartHeatmapIcon.js +1 -1
  361. package/dist/icons/ChartKPIIcon.js +1 -1
  362. package/dist/icons/ChartPie2Icon.js +1 -1
  363. package/dist/icons/ChartScatterIcon.js +1 -1
  364. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  365. package/dist/icons/CheckCircleIcon.js +1 -1
  366. package/dist/icons/CheckIcon.js +1 -1
  367. package/dist/icons/CircleFilledIcon.js +1 -1
  368. package/dist/icons/ClearIcon.js +1 -1
  369. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  370. package/dist/icons/CloseCircleIcon.js +1 -1
  371. package/dist/icons/CloseIcon.js +1 -1
  372. package/dist/icons/CodeIcon.js +1 -1
  373. package/dist/icons/ColumnTotalIcon.js +1 -1
  374. package/dist/icons/CopyIcon.js +1 -1
  375. package/dist/icons/CountIcon.js +1 -1
  376. package/dist/icons/CubeIcon.js +1 -1
  377. package/dist/icons/CubePauseIcon.js +1 -1
  378. package/dist/icons/CubePlayIcon.js +1 -1
  379. package/dist/icons/CurrencyDollarIcon.js +1 -1
  380. package/dist/icons/DangerIcon.js +1 -1
  381. package/dist/icons/DashboardIcon.js +1 -1
  382. package/dist/icons/DatabaseIcon.js +1 -1
  383. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  384. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  385. package/dist/icons/DirectionIcon.js +1 -1
  386. package/dist/icons/DonutIcon.js +1 -1
  387. package/dist/icons/DownIcon.js +1 -1
  388. package/dist/icons/EditIcon.js +1 -1
  389. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  390. package/dist/icons/ExclamationCircleIcon.js +1 -1
  391. package/dist/icons/ExclamationIcon.js +1 -1
  392. package/dist/icons/EyeIcon.js +1 -1
  393. package/dist/icons/EyeInvisibleIcon.js +1 -1
  394. package/dist/icons/FilterIcon.js +1 -1
  395. package/dist/icons/FolderFilledIcon.js +1 -1
  396. package/dist/icons/FolderIcon.js +1 -1
  397. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  398. package/dist/icons/FolderOpenIcon.js +1 -1
  399. package/dist/icons/ForwardIcon.js +1 -1
  400. package/dist/icons/GripVerticalIcon.js +1 -1
  401. package/dist/icons/HierarchyIcon.js +1 -1
  402. package/dist/icons/HierarchyOpenIcon.js +1 -1
  403. package/dist/icons/Icon.js +1 -1
  404. package/dist/icons/InfoCircleIcon.js +1 -1
  405. package/dist/icons/InfoIcon.js +1 -1
  406. package/dist/icons/KeyIcon.js +1 -1
  407. package/dist/icons/LeftIcon.js +1 -1
  408. package/dist/icons/LineChartIcon.js +1 -1
  409. package/dist/icons/LoadingIcon.js +1 -1
  410. package/dist/icons/LockFilledIcon.js +1 -1
  411. package/dist/icons/LockIcon.js +1 -1
  412. package/dist/icons/MoreIcon.js +1 -1
  413. package/dist/icons/NotAllowedIcon.js +1 -1
  414. package/dist/icons/Number123Icon.js +1 -1
  415. package/dist/icons/NumberIcon.js +1 -1
  416. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  417. package/dist/icons/PauseCircleIcon.js +1 -1
  418. package/dist/icons/PauseIcon.js +1 -1
  419. package/dist/icons/PercentageIcon.js +1 -1
  420. package/dist/icons/PieChartIcon.js +1 -1
  421. package/dist/icons/PipetteIcon.d.ts +12 -0
  422. package/dist/icons/PipetteIcon.js +11 -0
  423. package/dist/icons/PipetteIcon.js.map +1 -0
  424. package/dist/icons/PlayCircleIcon.js +1 -1
  425. package/dist/icons/PlayIcon.js +1 -1
  426. package/dist/icons/PlusIcon.js +1 -1
  427. package/dist/icons/ProgressBarIcon.js +1 -1
  428. package/dist/icons/ReloadIcon.js +1 -1
  429. package/dist/icons/ReportIcon.js +1 -1
  430. package/dist/icons/ReturnIcon.js +1 -1
  431. package/dist/icons/RightIcon.js +1 -1
  432. package/dist/icons/RowTotalsIcon.js +1 -1
  433. package/dist/icons/SchemeIcon.js +1 -1
  434. package/dist/icons/SearchIcon.js +1 -1
  435. package/dist/icons/SemanticQueryIcon.js +1 -1
  436. package/dist/icons/SettingsIcon.js +1 -1
  437. package/dist/icons/ShieldFilledIcon.js +1 -1
  438. package/dist/icons/ShieldIcon.js +1 -1
  439. package/dist/icons/SlashIcon.js +1 -1
  440. package/dist/icons/SparklesIcon.js +1 -1
  441. package/dist/icons/SqlIcon.js +1 -1
  442. package/dist/icons/StatsIcon.js +1 -1
  443. package/dist/icons/StopIcon.js +1 -1
  444. package/dist/icons/StringIcon.js +1 -1
  445. package/dist/icons/SubtotalsIcon.js +1 -1
  446. package/dist/icons/SwitchIcon.js +1 -1
  447. package/dist/icons/TableIcon.js +1 -1
  448. package/dist/icons/ThumbsDownIcon.js +1 -1
  449. package/dist/icons/ThumbsUpIcon.js +1 -1
  450. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  451. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  452. package/dist/icons/ThunderboltIcon.js +1 -1
  453. package/dist/icons/TimeIcon.js +1 -1
  454. package/dist/icons/TrashIcon.js +1 -1
  455. package/dist/icons/UnlockIcon.js +1 -1
  456. package/dist/icons/UpIcon.js +1 -1
  457. package/dist/icons/UserGroupIcon.js +1 -1
  458. package/dist/icons/UserIcon.js +1 -1
  459. package/dist/icons/UserLockIcon.js +1 -1
  460. package/dist/icons/ViewIcon.js +1 -1
  461. package/dist/icons/WarningFilledIcon.js +1 -1
  462. package/dist/icons/WarningIcon.js +1 -1
  463. package/dist/icons/index.d.ts +1 -0
  464. package/dist/icons/wrap-icon.js +1 -1
  465. package/dist/index.d.ts +7 -2
  466. package/dist/index.js +13 -8
  467. package/dist/index.js.map +1 -1
  468. package/dist/provider.js +1 -1
  469. package/dist/providers/TrackingProvider.js +1 -1
  470. package/dist/providers/navigationAdapter.default.js +1 -1
  471. package/dist/tokens/base.js +1 -1
  472. package/dist/tokens/colors.js +1 -1
  473. package/dist/tokens/index.js +1 -1
  474. package/dist/tokens/layout.js +1 -1
  475. package/dist/tokens/lazy-styles.js +1 -1
  476. package/dist/tokens/palette-config.js +1 -1
  477. package/dist/tokens/palette.js +1 -1
  478. package/dist/tokens/shadows.js +1 -1
  479. package/dist/tokens/sizes.js +1 -1
  480. package/dist/tokens/spacing.js +1 -1
  481. package/dist/tokens/typography.js +1 -1
  482. package/dist/utils/ResizeSensor.js +1 -1
  483. package/dist/utils/is-dev-env.js +1 -1
  484. package/dist/utils/modules.js +1 -1
  485. package/dist/utils/promise.js +1 -1
  486. package/dist/utils/raf.js +1 -1
  487. package/dist/utils/random.js +1 -1
  488. package/dist/utils/range.js +1 -1
  489. package/dist/utils/react/RenderCache.js +1 -1
  490. package/dist/utils/react/Slots.js +1 -1
  491. package/dist/utils/react/chain.js +1 -1
  492. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  493. package/dist/utils/react/index.js +1 -1
  494. package/dist/utils/react/interactions.js +1 -1
  495. package/dist/utils/react/isTextOnly.js +1 -1
  496. package/dist/utils/react/mapProps.js +1 -1
  497. package/dist/utils/react/mergeProps.js +1 -1
  498. package/dist/utils/react/nullableValue.js +1 -1
  499. package/dist/utils/react/resolveIcon.js +1 -1
  500. package/dist/utils/react/sharedStore.js +1 -1
  501. package/dist/utils/react/useCombinedRefs.js +1 -1
  502. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  503. package/dist/utils/react/useEventBus.js +1 -1
  504. package/dist/utils/react/useId.js +1 -1
  505. package/dist/utils/react/useIsDarwin.js +1 -1
  506. package/dist/utils/react/useKeySymbols.js +1 -1
  507. package/dist/utils/react/useLayoutEffect.js +1 -1
  508. package/dist/utils/react/useLocalStorage.js +1 -1
  509. package/dist/utils/react/useMergeStyles.js +1 -1
  510. package/dist/utils/react/usePopoverSync.js +1 -1
  511. package/dist/utils/react/useQaProps.js +1 -1
  512. package/dist/utils/react/useViewportSize.js +1 -1
  513. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  514. package/dist/utils/selection.js +1 -1
  515. package/dist/utils/styles.js +1 -1
  516. package/dist/utils/tree.js +1 -1
  517. package/dist/utils/warnings.js +1 -1
  518. package/dist/version.js +2 -2
  519. package/docs/components/fields/ColorPicker.md +271 -0
  520. package/docs/components/layout/Board.md +154 -6
  521. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+
2
+ import "@tenphi/glaze";
3
+
4
+ //#region src/components/fields/ColorPicker/color.d.ts
5
+ /**
6
+ * Every color format the picker can read and write.
7
+ *
8
+ * `okhsl` and `okhst` are Glaze / Tasty spaces rather than native CSS ones,
9
+ * but Tasty parses both, so the produced strings are usable as style values.
10
+ */
11
+ declare const COLOR_FORMATS: readonly ["hex", "rgb", "hsl", "okhsl", "okhst", "oklch"];
12
+ type ColorFormat = (typeof COLOR_FORMATS)[number];
13
+ //#endregion
14
+ export { COLOR_FORMATS, ColorFormat };
15
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1,282 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
+ import { contrastRatioFromLuminance, formatHsl, formatOkhsl, formatOkhst, formatOklch, formatRgb, hslToSrgb, okhslToLinearSrgb, okhslToOkhst, okhslToOklch, okhslToSrgb, okhstToOkhsl, oklabToOkhsl, parseHexAlpha, relativeLuminanceFromLinearRgb, srgbToHex, srgbToOkhsl } from "@tenphi/glaze";
3
+
4
+ //#region src/components/fields/ColorPicker/color.ts
5
+ /**
6
+ * Every color format the picker can read and write.
7
+ *
8
+ * `okhsl` and `okhst` are Glaze / Tasty spaces rather than native CSS ones,
9
+ * but Tasty parses both, so the produced strings are usable as style values.
10
+ */
11
+ const COLOR_FORMATS = [
12
+ "hex",
13
+ "rgb",
14
+ "hsl",
15
+ "okhsl",
16
+ "okhst",
17
+ "oklch"
18
+ ];
19
+ const FUNCTION_RE = /^([a-z]+)\(([^()]+)\)$/;
20
+ /**
21
+ * A number with an optional `%` or `deg` unit.
22
+ *
23
+ * The integer and fraction parts are deliberately written so that no two
24
+ * quantifiers can consume the same digit — `\d+(?:\.\d*)?` rather than
25
+ * `\d+\.?\d*`, whose `\d+` and `\d*` can split a digit run n ways and make
26
+ * rejecting a long one quadratic. This runs on whatever the user types.
27
+ */
28
+ const NUMBER_RE = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?(?:%|deg)?$/;
29
+ /**
30
+ * Saturation below this rounds to `0%` in every output notation, so the color
31
+ * is achromatic for display purposes even when the conversion left a residue.
32
+ */
33
+ const ACHROMATIC_SATURATION = 5e-5;
34
+ function clamp(value, min, max) {
35
+ return value < min ? min : value > max ? max : value;
36
+ }
37
+ function normalizeHue(hue) {
38
+ if (!Number.isFinite(hue)) return 0;
39
+ return (hue % 360 + 360) % 360;
40
+ }
41
+ /**
42
+ * The color carries no meaningful hue: every conversion out of it invents an
43
+ * angle, so callers that need one should keep the hue they already had.
44
+ */
45
+ function isAchromatic(color) {
46
+ return color.s < ACHROMATIC_SATURATION;
47
+ }
48
+ /**
49
+ * Split a color-function body into its numeric arguments, dropping the alpha
50
+ * component. Both the modern space-separated and the legacy comma-separated
51
+ * syntaxes are accepted.
52
+ *
53
+ * Each argument keeps its unit so the caller can tell `50%` from `50`.
54
+ */
55
+ function splitArguments(body) {
56
+ const [values, ...rest] = body.split("/");
57
+ if (rest.length > 1) return null;
58
+ const args = values.trim().split(values.includes(",") ? "," : /\s+/).map((part) => part.trim()).filter(Boolean);
59
+ if (args.length === 4) args.pop();
60
+ return args.every((arg) => NUMBER_RE.test(arg)) ? args : null;
61
+ }
62
+ /** Parse an argument that may carry a `%` unit. `scale` is the 100% value. */
63
+ function scalar(arg, scale) {
64
+ return arg.endsWith("%") ? parseFloat(arg) / 100 * scale : parseFloat(arg);
65
+ }
66
+ function hueArgument(arg) {
67
+ return arg.endsWith("%") ? NaN : normalizeHue(parseFloat(arg));
68
+ }
69
+ function fromRgb(color) {
70
+ const [h, s, l] = srgbToOkhsl([
71
+ clamp(color.r, 0, 255) / 255,
72
+ clamp(color.g, 0, 255) / 255,
73
+ clamp(color.b, 0, 255) / 255
74
+ ]);
75
+ return {
76
+ h: normalizeHue(h),
77
+ s: clamp(s, 0, 1),
78
+ l: clamp(l, 0, 1)
79
+ };
80
+ }
81
+ function toRgb(color) {
82
+ const [r, g, b] = okhslToSrgb(color.h, color.s, color.l);
83
+ return {
84
+ r: Math.round(clamp(r, 0, 1) * 255),
85
+ g: Math.round(clamp(g, 0, 1) * 255),
86
+ b: Math.round(clamp(b, 0, 1) * 255)
87
+ };
88
+ }
89
+ function fromOkhst(color) {
90
+ const { h, s, l } = okhstToOkhsl({
91
+ h: normalizeHue(color.h),
92
+ s: clamp(color.s, 0, 1),
93
+ t: clamp(color.t, 0, 1)
94
+ });
95
+ return {
96
+ h: normalizeHue(h),
97
+ s: clamp(s, 0, 1),
98
+ l: clamp(l, 0, 1)
99
+ };
100
+ }
101
+ function toOkhst(color) {
102
+ const { t } = okhslToOkhst(color);
103
+ return {
104
+ h: color.h,
105
+ s: color.s,
106
+ t: clamp(t, 0, 1)
107
+ };
108
+ }
109
+ /**
110
+ * The largest OKLCh chroma that stays inside the sRGB gamut for the given hue
111
+ * and OKHSL lightness — that is exactly what OKHSL saturation `1` means.
112
+ */
113
+ function maxChroma(hue, lightness) {
114
+ return okhslToOklch(normalizeHue(hue), 1, clamp(lightness, 0, 1))[1];
115
+ }
116
+ function toOklch(color) {
117
+ const [l, c, h] = okhslToOklch(color.h, color.s, color.l);
118
+ return {
119
+ l,
120
+ c,
121
+ h: normalizeHue(h)
122
+ };
123
+ }
124
+ /**
125
+ * OKLCh addresses colors outside the sRGB gamut, so chroma is clipped to the
126
+ * gamut boundary at the requested lightness before it is stored. Hue is taken
127
+ * from the input rather than from the conversion, which loses it at zero
128
+ * chroma.
129
+ */
130
+ function fromOklch(color) {
131
+ const h = normalizeHue(color.h);
132
+ const c = Math.max(color.c, 0);
133
+ const radians = h * Math.PI / 180;
134
+ const [, s, l] = oklabToOkhsl([
135
+ clamp(color.l, 0, 1),
136
+ c * Math.cos(radians),
137
+ c * Math.sin(radians)
138
+ ]);
139
+ const limit = maxChroma(h, l);
140
+ return {
141
+ h,
142
+ s: limit > 0 ? c >= limit ? 1 : clamp(s, 0, 1) : 0,
143
+ l: clamp(l, 0, 1)
144
+ };
145
+ }
146
+ function toHex(color) {
147
+ return srgbToHex(okhslToSrgb(color.h, color.s, color.l));
148
+ }
149
+ /**
150
+ * Read any supported color notation into the canonical space. Returns `null`
151
+ * for anything that is not a real color — that is what lets the picker reject
152
+ * partial input instead of guessing.
153
+ *
154
+ * Named CSS colors (`red`, `rebeccapurple`) are intentionally not supported,
155
+ * matching `glaze.color()`.
156
+ */
157
+ function parseColor(input) {
158
+ const text = input.trim().toLowerCase();
159
+ if (!text) return null;
160
+ if (text.startsWith("#")) {
161
+ const parsed = parseHexAlpha(text);
162
+ return parsed ? fromRgb(rgbFromSrgb(parsed.rgb)) : null;
163
+ }
164
+ const match = FUNCTION_RE.exec(text);
165
+ if (!match) return null;
166
+ const [, name, body] = match;
167
+ const args = splitArguments(body);
168
+ if (!args || args.length !== 3) return null;
169
+ switch (name) {
170
+ case "rgb":
171
+ case "rgba": {
172
+ const [r, g, b] = args.map((arg) => scalar(arg, 255));
173
+ return anyNaN(r, g, b) ? null : fromRgb({
174
+ r,
175
+ g,
176
+ b
177
+ });
178
+ }
179
+ case "hsl":
180
+ case "hsla": {
181
+ const h = hueArgument(args[0]);
182
+ const s = scalar(args[1], 100) / 100;
183
+ const l = scalar(args[2], 100) / 100;
184
+ if (anyNaN(h, s, l)) return null;
185
+ return fromRgb(rgbFromSrgb(hslToSrgb(h, clamp(s, 0, 1), clamp(l, 0, 1))));
186
+ }
187
+ case "okhsl": {
188
+ const h = hueArgument(args[0]);
189
+ const s = scalar(args[1], 100) / 100;
190
+ const l = scalar(args[2], 100) / 100;
191
+ if (anyNaN(h, s, l)) return null;
192
+ return {
193
+ h,
194
+ s: clamp(s, 0, 1),
195
+ l: clamp(l, 0, 1)
196
+ };
197
+ }
198
+ case "okhst": {
199
+ const h = hueArgument(args[0]);
200
+ const s = scalar(args[1], 100) / 100;
201
+ const t = scalar(args[2], 100) / 100;
202
+ if (anyNaN(h, s, t)) return null;
203
+ return fromOkhst({
204
+ h,
205
+ s,
206
+ t
207
+ });
208
+ }
209
+ case "oklch": {
210
+ const l = scalar(args[0], 1);
211
+ const c = scalar(args[1], .4);
212
+ const h = hueArgument(args[2]);
213
+ return anyNaN(l, c, h) ? null : fromOklch({
214
+ l,
215
+ c,
216
+ h
217
+ });
218
+ }
219
+ default: return null;
220
+ }
221
+ }
222
+ function anyNaN(...values) {
223
+ return values.some((value) => !Number.isFinite(value));
224
+ }
225
+ function rgbFromSrgb([r, g, b]) {
226
+ return {
227
+ r: r * 255,
228
+ g: g * 255,
229
+ b: b * 255
230
+ };
231
+ }
232
+ /** Serialize the canonical color into one of the supported notations. */
233
+ function formatColor(color, format) {
234
+ const gray = isAchromatic(color);
235
+ const hue = gray ? 0 : color.h;
236
+ const saturation = color.s * 100;
237
+ const lightness = color.l * 100;
238
+ switch (format) {
239
+ case "rgb": return formatRgb(hue, saturation, lightness);
240
+ case "hsl": {
241
+ const text = formatHsl(hue, saturation, lightness);
242
+ return gray ? text.replace(/\(-?[\d.]+/, "(0") : text;
243
+ }
244
+ case "okhsl": return formatOkhsl(hue, saturation, lightness);
245
+ case "okhst": return formatOkhst(hue, saturation, toOkhst(color).t * 100);
246
+ case "oklch": return formatOklch(hue, saturation, lightness);
247
+ default: return toHex(color);
248
+ }
249
+ }
250
+ /**
251
+ * Which notation a string is written in, or `null` when it is not a color.
252
+ * Used to keep the user's own notation while still normalizing the value.
253
+ */
254
+ function detectFormat(input) {
255
+ const text = input.trim().toLowerCase();
256
+ if (!parseColor(text)) return null;
257
+ if (text.startsWith("#")) return "hex";
258
+ switch (FUNCTION_RE.exec(text)?.[1]) {
259
+ case "rgb":
260
+ case "rgba": return "rgb";
261
+ case "hsl":
262
+ case "hsla": return "hsl";
263
+ case "okhsl": return "okhsl";
264
+ case "okhst": return "okhst";
265
+ case "oklch": return "oklch";
266
+ default: return null;
267
+ }
268
+ }
269
+ /**
270
+ * Black or white — whichever the WCAG contrast ratio favors on the given
271
+ * color. Keeps the popover preview label readable at any lightness. Returns a
272
+ * literal hex rather than a token, because the answer is measured against this
273
+ * exact fill and must not adapt with the color scheme.
274
+ */
275
+ function getContrastingColor(color) {
276
+ const luminance = relativeLuminanceFromLinearRgb(okhslToLinearSrgb(color.h, color.s, color.l));
277
+ return contrastRatioFromLuminance(luminance, 0) >= contrastRatioFromLuminance(1, luminance) ? "#000000" : "#ffffff";
278
+ }
279
+
280
+ //#endregion
281
+ export { COLOR_FORMATS, detectFormat, formatColor, fromOkhst, fromOklch, fromRgb, getContrastingColor, isAchromatic, maxChroma, normalizeHue, parseColor, toHex, toOkhst, toOklch, toRgb };
282
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","names":[],"sources":["../../../../src/components/fields/ColorPicker/color.ts"],"sourcesContent":["import {\n contrastRatioFromLuminance,\n formatHsl,\n formatOkhsl,\n formatOkhst,\n formatOklch,\n formatRgb,\n hslToSrgb,\n okhslToLinearSrgb,\n okhslToOkhst,\n okhslToOklch,\n okhslToSrgb,\n okhstToOkhsl,\n oklabToOkhsl,\n parseHexAlpha,\n relativeLuminanceFromLinearRgb,\n srgbToHex,\n srgbToOkhsl,\n} from '@tenphi/glaze';\n\nimport type {\n OkhslColor,\n OkhstColor,\n OklchColor,\n RgbColor,\n} from '@tenphi/glaze';\n\nexport type { OkhslColor, OkhstColor, OklchColor, RgbColor };\n\n/**\n * Every color format the picker can read and write.\n *\n * `okhsl` and `okhst` are Glaze / Tasty spaces rather than native CSS ones,\n * but Tasty parses both, so the produced strings are usable as style values.\n */\nexport const COLOR_FORMATS = [\n 'hex',\n 'rgb',\n 'hsl',\n 'okhsl',\n 'okhst',\n 'oklch',\n] as const;\n\nexport type ColorFormat = (typeof COLOR_FORMATS)[number];\n\n/**\n * OKHSL is the canonical space of the picker: it is Glaze's authoring space,\n * every channel is bounded, and — unlike OKLCh — every value inside those\n * bounds is inside the sRGB gamut, so no state can be unrepresentable.\n */\nexport type ColorValue = OkhslColor;\n\nconst FUNCTION_RE = /^([a-z]+)\\(([^()]+)\\)$/;\n/**\n * A number with an optional `%` or `deg` unit.\n *\n * The integer and fraction parts are deliberately written so that no two\n * quantifiers can consume the same digit — `\\d+(?:\\.\\d*)?` rather than\n * `\\d+\\.?\\d*`, whose `\\d+` and `\\d*` can split a digit run n ways and make\n * rejecting a long one quadratic. This runs on whatever the user types.\n */\nconst NUMBER_RE = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?(?:%|deg)?$/;\n\n/**\n * Saturation below this rounds to `0%` in every output notation, so the color\n * is achromatic for display purposes even when the conversion left a residue.\n */\nconst ACHROMATIC_SATURATION = 5e-5;\n\nfunction clamp(value: number, min: number, max: number): number {\n return value < min ? min : value > max ? max : value;\n}\n\nexport function normalizeHue(hue: number): number {\n if (!Number.isFinite(hue)) return 0;\n\n return ((hue % 360) + 360) % 360;\n}\n\n/**\n * The color carries no meaningful hue: every conversion out of it invents an\n * angle, so callers that need one should keep the hue they already had.\n */\nexport function isAchromatic(color: ColorValue): boolean {\n return color.s < ACHROMATIC_SATURATION;\n}\n\n/** Both channel objects describe the same color, within display precision. */\nexport function isSameColor(a?: ColorValue | null, b?: ColorValue | null) {\n if (!a || !b) return a === b;\n\n return (\n Math.abs(a.h - b.h) < 1e-6 &&\n Math.abs(a.s - b.s) < 1e-6 &&\n Math.abs(a.l - b.l) < 1e-6\n );\n}\n\n/**\n * Split a color-function body into its numeric arguments, dropping the alpha\n * component. Both the modern space-separated and the legacy comma-separated\n * syntaxes are accepted.\n *\n * Each argument keeps its unit so the caller can tell `50%` from `50`.\n */\nfunction splitArguments(body: string): string[] | null {\n const [values, ...rest] = body.split('/');\n\n // More than one slash is never valid syntax.\n if (rest.length > 1) return null;\n\n const args = values\n .trim()\n .split(values.includes(',') ? ',' : /\\s+/)\n .map((part) => part.trim())\n .filter(Boolean);\n\n // Legacy `rgba(r, g, b, a)` / `hsla(h, s, l, a)` carry alpha as a fourth\n // argument. Alpha is not part of the value, so it is dropped either way.\n if (args.length === 4) args.pop();\n\n return args.every((arg) => NUMBER_RE.test(arg)) ? args : null;\n}\n\n/** Parse an argument that may carry a `%` unit. `scale` is the 100% value. */\nfunction scalar(arg: string, scale: number): number {\n return arg.endsWith('%') ? (parseFloat(arg) / 100) * scale : parseFloat(arg);\n}\n\nfunction hueArgument(arg: string): number {\n // A percentage is not a valid hue angle.\n return arg.endsWith('%') ? NaN : normalizeHue(parseFloat(arg));\n}\n\nexport function fromRgb(color: RgbColor): ColorValue {\n const [h, s, l] = srgbToOkhsl([\n clamp(color.r, 0, 255) / 255,\n clamp(color.g, 0, 255) / 255,\n clamp(color.b, 0, 255) / 255,\n ]);\n\n return { h: normalizeHue(h), s: clamp(s, 0, 1), l: clamp(l, 0, 1) };\n}\n\nexport function toRgb(color: ColorValue): RgbColor {\n const [r, g, b] = okhslToSrgb(color.h, color.s, color.l);\n\n return {\n r: Math.round(clamp(r, 0, 1) * 255),\n g: Math.round(clamp(g, 0, 1) * 255),\n b: Math.round(clamp(b, 0, 1) * 255),\n };\n}\n\nexport function fromOkhst(color: OkhstColor): ColorValue {\n const { h, s, l } = okhstToOkhsl({\n h: normalizeHue(color.h),\n s: clamp(color.s, 0, 1),\n t: clamp(color.t, 0, 1),\n });\n\n return { h: normalizeHue(h), s: clamp(s, 0, 1), l: clamp(l, 0, 1) };\n}\n\nexport function toOkhst(color: ColorValue): OkhstColor {\n const { t } = okhslToOkhst(color);\n\n return { h: color.h, s: color.s, t: clamp(t, 0, 1) };\n}\n\n/**\n * The largest OKLCh chroma that stays inside the sRGB gamut for the given hue\n * and OKHSL lightness — that is exactly what OKHSL saturation `1` means.\n */\nexport function maxChroma(hue: number, lightness: number): number {\n return okhslToOklch(normalizeHue(hue), 1, clamp(lightness, 0, 1))[1];\n}\n\nexport function toOklch(color: ColorValue): OklchColor {\n const [l, c, h] = okhslToOklch(color.h, color.s, color.l);\n\n return { l, c, h: normalizeHue(h) };\n}\n\n/**\n * OKLCh addresses colors outside the sRGB gamut, so chroma is clipped to the\n * gamut boundary at the requested lightness before it is stored. Hue is taken\n * from the input rather than from the conversion, which loses it at zero\n * chroma.\n */\nexport function fromOklch(color: OklchColor): ColorValue {\n const h = normalizeHue(color.h);\n const c = Math.max(color.c, 0);\n const radians = (h * Math.PI) / 180;\n const [, s, l] = oklabToOkhsl([\n clamp(color.l, 0, 1),\n c * Math.cos(radians),\n c * Math.sin(radians),\n ]);\n const limit = maxChroma(h, l);\n\n return {\n h,\n s: limit > 0 ? (c >= limit ? 1 : clamp(s, 0, 1)) : 0,\n l: clamp(l, 0, 1),\n };\n}\n\nexport function toHex(color: ColorValue): string {\n return srgbToHex(okhslToSrgb(color.h, color.s, color.l));\n}\n\n/**\n * Read any supported color notation into the canonical space. Returns `null`\n * for anything that is not a real color — that is what lets the picker reject\n * partial input instead of guessing.\n *\n * Named CSS colors (`red`, `rebeccapurple`) are intentionally not supported,\n * matching `glaze.color()`.\n */\nexport function parseColor(input: string): ColorValue | null {\n const text = input.trim().toLowerCase();\n\n if (!text) return null;\n\n if (text.startsWith('#')) {\n const parsed = parseHexAlpha(text);\n\n return parsed ? fromRgb(rgbFromSrgb(parsed.rgb)) : null;\n }\n\n const match = FUNCTION_RE.exec(text);\n\n if (!match) return null;\n\n const [, name, body] = match;\n const args = splitArguments(body);\n\n if (!args || args.length !== 3) return null;\n\n switch (name) {\n case 'rgb':\n case 'rgba': {\n const [r, g, b] = args.map((arg) => scalar(arg, 255));\n\n return anyNaN(r, g, b) ? null : fromRgb({ r, g, b });\n }\n case 'hsl':\n case 'hsla': {\n const h = hueArgument(args[0]);\n const s = scalar(args[1], 100) / 100;\n const l = scalar(args[2], 100) / 100;\n\n if (anyNaN(h, s, l)) return null;\n\n return fromRgb(rgbFromSrgb(hslToSrgb(h, clamp(s, 0, 1), clamp(l, 0, 1))));\n }\n case 'okhsl': {\n const h = hueArgument(args[0]);\n const s = scalar(args[1], 100) / 100;\n const l = scalar(args[2], 100) / 100;\n\n if (anyNaN(h, s, l)) return null;\n\n return { h, s: clamp(s, 0, 1), l: clamp(l, 0, 1) };\n }\n case 'okhst': {\n const h = hueArgument(args[0]);\n const s = scalar(args[1], 100) / 100;\n const t = scalar(args[2], 100) / 100;\n\n if (anyNaN(h, s, t)) return null;\n\n return fromOkhst({ h, s, t });\n }\n case 'oklch': {\n // In `oklch()` a percentage means 1 for lightness and 0.4 for chroma.\n const l = scalar(args[0], 1);\n const c = scalar(args[1], 0.4);\n const h = hueArgument(args[2]);\n\n return anyNaN(l, c, h) ? null : fromOklch({ l, c, h });\n }\n default:\n return null;\n }\n}\n\nfunction anyNaN(...values: number[]): boolean {\n return values.some((value) => !Number.isFinite(value));\n}\n\nfunction rgbFromSrgb([r, g, b]: [number, number, number]): RgbColor {\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n/** Serialize the canonical color into one of the supported notations. */\nexport function formatColor(color: ColorValue, format: ColorFormat): string {\n // An achromatic color has no meaningful hue, and the conversions leave\n // whatever angle the source happened to carry. Zero reads better.\n const gray = isAchromatic(color);\n const hue = gray ? 0 : color.h;\n const saturation = color.s * 100;\n const lightness = color.l * 100;\n\n switch (format) {\n case 'rgb':\n return formatRgb(hue, saturation, lightness);\n case 'hsl': {\n const text = formatHsl(hue, saturation, lightness);\n\n // CSS HSL derives its hue from the sRGB channels, which is undefined\n // when they are equal — Glaze emits whatever the formula produces. Every\n // other notation carries the hue through, so only HSL needs this.\n return gray ? text.replace(/\\(-?[\\d.]+/, '(0') : text;\n }\n case 'okhsl':\n return formatOkhsl(hue, saturation, lightness);\n case 'okhst':\n return formatOkhst(hue, saturation, toOkhst(color).t * 100);\n case 'oklch':\n return formatOklch(hue, saturation, lightness);\n default:\n return toHex(color);\n }\n}\n\n/**\n * Which notation a string is written in, or `null` when it is not a color.\n * Used to keep the user's own notation while still normalizing the value.\n */\nexport function detectFormat(input: string): ColorFormat | null {\n const text = input.trim().toLowerCase();\n\n if (!parseColor(text)) return null;\n\n if (text.startsWith('#')) return 'hex';\n\n const name = FUNCTION_RE.exec(text)?.[1];\n\n switch (name) {\n case 'rgb':\n case 'rgba':\n return 'rgb';\n case 'hsl':\n case 'hsla':\n return 'hsl';\n case 'okhsl':\n return 'okhsl';\n case 'okhst':\n return 'okhst';\n case 'oklch':\n return 'oklch';\n default:\n return null;\n }\n}\n\n/**\n * Black or white — whichever the WCAG contrast ratio favors on the given\n * color. Keeps the popover preview label readable at any lightness. Returns a\n * literal hex rather than a token, because the answer is measured against this\n * exact fill and must not adapt with the color scheme.\n */\nexport function getContrastingColor(color: ColorValue): '#000000' | '#ffffff' {\n const luminance = relativeLuminanceFromLinearRgb(\n okhslToLinearSrgb(color.h, color.s, color.l),\n );\n\n return contrastRatioFromLuminance(luminance, 0) >=\n contrastRatioFromLuminance(1, luminance)\n ? '#000000'\n : '#ffffff';\n}\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+
2
+ import { COLOR_FORMATS, ColorFormat } from "./color.js";
3
+ import { COLOR_SPACES, ColorSpace } from "./channels.js";
4
+ import { ColorPicker, ColorPickerFormatMode, CubeColorPickerProps } from "./ColorPicker.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  //#region src/components/fields/CommandTextArea/caretPosition.ts
3
3
  const MIRROR_STYLES = [
4
4
  "boxSizing",
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { getCaretRect } from "./caretPosition.js";
3
3
  import { useEffect, useLayoutEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
3
3
  import { CalendarIcon } from "../../../icons/CalendarIcon.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { Space } from "../../layout/Space.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { DatePickerSegment } from "./DatePickerSegment.js";
4
4
  import { formatSegments } from "./utils.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
  import { useRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { Space } from "../../layout/Space.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { _PeriodPicker } from "./PeriodPicker.js";
3
3
  import { forwardRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { _PeriodPicker } from "./PeriodPicker.js";
3
3
  import { forwardRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { _PeriodPicker } from "./PeriodPicker.js";
3
3
  import { forwardRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { _PeriodPicker } from "./PeriodPicker.js";
3
3
  import { forwardRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { parseAbsolute } from "@internationalized/date";
3
3
 
4
4
  //#region src/components/fields/DatePicker/parseDate.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { CalendarDate, startOfMonth, startOfWeek, startOfYear, toCalendarDate } from "@internationalized/date";
3
3
 
4
4
  //#region src/components/fields/DatePicker/period.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  //#region src/components/fields/DatePicker/props.ts
3
3
  const DEFAULT_DATE_PROPS = {
4
4
  granularity: "day",
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { useImperativeHandle, useRef } from "react";
3
3
  import { createDOMRef } from "@react-spectrum/utils";
4
4
  import { createFocusManager } from "@react-aria/focus";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,11 +1,11 @@
1
1
 
2
2
  import { FieldBaseProps } from "../../../shared/form.js";
3
3
  import "../../../shared/index.js";
4
- import { CubeCollectionItemProps } from "../../CollectionItem.js";
4
+ import { CubeCollectionItemProps, _CollectionItem } from "../../CollectionItem.js";
5
5
  import { CubeListBoxProps } from "../ListBox/ListBox.js";
6
6
  import { Styles } from "@tenphi/tasty";
7
7
  import { ForwardedRef, ReactElement, ReactNode, RefObject } from "react";
8
- import { Item, Section } from "react-stately";
8
+ import { Section } from "react-stately";
9
9
  import { Collection, Key as Key$1, Node } from "@react-types/shared";
10
10
 
11
11
  //#region src/components/fields/FilterListBox/FilterListBox.d.ts
@@ -80,7 +80,7 @@ interface CubeFilterListBoxProps<T> extends Omit<CubeListBoxProps<T>, 'filter'>,
80
80
  declare const FilterListBox: (<T>(props: CubeFilterListBoxProps<T> & {
81
81
  ref?: ForwardedRef<HTMLDivElement>;
82
82
  }) => ReactElement) & {
83
- Item: typeof Item;
83
+ Item: typeof _CollectionItem;
84
84
  Section: typeof Section;
85
85
  };
86
86
  //#endregion
@@ -1,10 +1,11 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.156.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
5
5
  import { modAttrs } from "../../../utils/react/index.js";
6
6
  import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
7
7
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
8
+ import { _CollectionItem } from "../../CollectionItem.js";
8
9
  import { useI18n } from "../../../i18n/useI18n.js";
9
10
  import { StyledHeader } from "../../actions/Menu/styled.js";
10
11
  import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
@@ -16,7 +17,7 @@ import { BASE_STYLES, COLOR_STYLES, OUTER_STYLES, tasty } from "@tenphi/tasty";
16
17
  import { cloneElement, forwardRef, isValidElement, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
17
18
  import { jsx, jsxs } from "react/jsx-runtime";
18
19
  import { useFilter, useKeyboard } from "react-aria";
19
- import { Item, Section, useListState } from "react-stately";
20
+ import { Section, useListState } from "react-stately";
20
21
 
21
22
  //#region src/components/fields/FilterListBox/FilterListBox.tsx
22
23
  const FilterListBoxWrapperElement = tasty({ styles: {
@@ -132,7 +133,7 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
132
133
  if (!children && customKeys.size === 0) return children;
133
134
  const term = searchValue.trim();
134
135
  const localFilter = typeof filter === "function" ? filter : contains;
135
- const customArray = Array.from(customKeys).filter((key) => !term || localFilter(key, term)).map((key) => /* @__PURE__ */ jsx(Item, {
136
+ const customArray = Array.from(customKeys).filter((key) => !term || localFilter(key, term)).map((key) => /* @__PURE__ */ jsx(_CollectionItem, {
136
137
  textValue: key,
137
138
  ...customValueProps,
138
139
  children: key
@@ -222,9 +223,9 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
222
223
  for (const customKey of customKeys) if (localFilter(customKey, term)) return true;
223
224
  return false;
224
225
  })();
225
- const customOption = /* @__PURE__ */ jsx(Item, {
226
+ const customOption = /* @__PURE__ */ jsx(_CollectionItem, {
226
227
  textValue: term,
227
- ...mergeProps$1(customValueProps, newCustomValueProps),
228
+ ...mergeProps$1(customValueProps ?? {}, newCustomValueProps ?? {}),
228
229
  children: term
229
230
  }, term);
230
231
  if (hasVisibleFilteredItems && childrenToProcess) {
@@ -542,7 +543,7 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
542
543
  ]
543
544
  }), ref, props);
544
545
  });
545
- FilterListBox.Item = ListBox.Item;
546
+ FilterListBox.Item = _CollectionItem;
546
547
  FilterListBox.Section = Section;
547
548
  Object.defineProperty(FilterListBox, "cubeInputType", {
548
549
  value: "FilterListBox",