@cube-dev/ui-kit 0.176.0 → 0.178.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 (576) hide show
  1. package/dist/CHANGELOG.md +36 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/index.js +1 -1
  37. package/dist/components/actions/use-action.js +1 -1
  38. package/dist/components/actions/use-anchored-menu.js +1 -1
  39. package/dist/components/actions/use-context-menu.js +1 -1
  40. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/dist/components/content/Alert/Alert.js +1 -1
  42. package/dist/components/content/Alert/use-alert.js +1 -1
  43. package/dist/components/content/Avatar/Avatar.js +1 -1
  44. package/dist/components/content/Badge/Badge.js +1 -1
  45. package/dist/components/content/Card/Card.js +1 -1
  46. package/dist/components/content/Content.js +1 -1
  47. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  48. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  49. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  50. package/dist/components/content/Divider.js +1 -1
  51. package/dist/components/content/Footer.js +1 -1
  52. package/dist/components/content/Header.js +1 -1
  53. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  54. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  55. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  56. package/dist/components/content/Item/Item.js +1 -1
  57. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  58. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  59. package/dist/components/content/Layout/GridLayout.js +1 -1
  60. package/dist/components/content/Layout/Layout.js +39 -28
  61. package/dist/components/content/Layout/Layout.js.map +1 -1
  62. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  63. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  64. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  65. package/dist/components/content/Layout/LayoutContent.js +1 -1
  66. package/dist/components/content/Layout/LayoutContext.js +1 -1
  67. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  68. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  69. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  70. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutPane.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  75. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  76. package/dist/components/content/Layout/index.js +1 -1
  77. package/dist/components/content/Layout/utils.js +1 -1
  78. package/dist/components/content/Paragraph.js +1 -1
  79. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  80. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  81. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  82. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  83. package/dist/components/content/Result/Result.js +1 -1
  84. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  85. package/dist/components/content/Tag/Tag.js +1 -1
  86. package/dist/components/content/Text.d.ts +14 -14
  87. package/dist/components/content/Text.js +1 -1
  88. package/dist/components/content/TextItem/TextItem.js +1 -1
  89. package/dist/components/content/Title.js +1 -1
  90. package/dist/components/content/Tree/Tree.js +1 -1
  91. package/dist/components/content/Tree/TreeNode.js +1 -1
  92. package/dist/components/content/Tree/styled.js +1 -1
  93. package/dist/components/content/Tree/tree-index.js +1 -1
  94. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  95. package/dist/components/content/Tree/use-load-data.js +3 -2
  96. package/dist/components/content/Tree/use-load-data.js.map +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/data/DataTable/DataTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  105. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  106. package/dist/components/data/TableBase/RowCollection.js +1 -1
  107. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  108. package/dist/components/data/TableBase/TableRow.js +1 -1
  109. package/dist/components/data/TableBase/TableView.js +1 -1
  110. package/dist/components/data/TableBase/column-menu.js +1 -1
  111. package/dist/components/data/TableBase/column-tint.js +1 -1
  112. package/dist/components/data/TableBase/row-menu.js +1 -1
  113. package/dist/components/data/TableBase/styled.js +1 -1
  114. package/dist/components/data/TableBase/table-tree.js +1 -1
  115. package/dist/components/data/TableBase/types.js +1 -1
  116. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  117. package/dist/components/data/TableBase/use-column-order.js +1 -1
  118. package/dist/components/data/TableBase/use-container-width.js +1 -1
  119. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  120. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  121. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  122. package/dist/components/data/TableBase/use-table-search.js +1 -1
  123. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  124. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  125. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  126. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  127. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  128. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  129. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  130. package/dist/components/fields/Checkbox/context.js +1 -1
  131. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  132. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  133. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  134. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  135. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  136. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  137. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  138. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  139. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  140. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  141. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  142. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  146. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  147. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  148. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  149. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  152. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  155. package/dist/components/fields/DatePicker/period.js +1 -1
  156. package/dist/components/fields/DatePicker/props.js +1 -1
  157. package/dist/components/fields/DatePicker/utils.js +1 -1
  158. package/dist/components/fields/FileInput/FileInput.js +1 -1
  159. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  160. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +14 -0
  161. package/dist/components/fields/FilterPicker/FilterPicker.js +26 -13
  162. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  163. package/dist/components/fields/Input/Input.js +1 -1
  164. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  165. package/dist/components/fields/ListBox/ListBox.js +1 -1
  166. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  167. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  168. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  169. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  170. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  171. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  172. package/dist/components/fields/Picker/Picker.d.ts +14 -0
  173. package/dist/components/fields/Picker/Picker.js +26 -13
  174. package/dist/components/fields/Picker/Picker.js.map +1 -1
  175. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  176. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  177. package/dist/components/fields/RadioGroup/context.js +1 -1
  178. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  179. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  180. package/dist/components/fields/Select/Select.d.ts +15 -1
  181. package/dist/components/fields/Select/Select.js +27 -6
  182. package/dist/components/fields/Select/Select.js.map +1 -1
  183. package/dist/components/fields/Slider/Gradation.js +1 -1
  184. package/dist/components/fields/Slider/HueSlider.js +1 -1
  185. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  186. package/dist/components/fields/Slider/Slider.js +1 -1
  187. package/dist/components/fields/Slider/SliderBase.js +1 -1
  188. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  189. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  190. package/dist/components/fields/Slider/elements.js +1 -1
  191. package/dist/components/fields/Slider/index.js +1 -1
  192. package/dist/components/fields/Switch/Switch.js +1 -1
  193. package/dist/components/fields/TextArea/TextArea.js +1 -1
  194. package/dist/components/fields/TextInput/TextInput.js +1 -1
  195. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  196. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  197. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  198. package/dist/components/fields/TriggerActions.js +64 -0
  199. package/dist/components/fields/TriggerActions.js.map +1 -0
  200. package/dist/components/fields/color/ColorPanel.js +1 -1
  201. package/dist/components/fields/color/channels.js +7 -6
  202. package/dist/components/fields/color/channels.js.map +1 -1
  203. package/dist/components/fields/color/color.d.ts +1 -0
  204. package/dist/components/fields/color/color.js +22 -100
  205. package/dist/components/fields/color/color.js.map +1 -1
  206. package/dist/components/fields/color/context.js +1 -1
  207. package/dist/components/form/FieldWrapper/FieldWrapper.js +3 -2
  208. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  209. package/dist/components/form/Form/Field.js +1 -1
  210. package/dist/components/form/Form/Form.js +1 -1
  211. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  212. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  213. package/dist/components/form/Form/SubmitError.js +1 -1
  214. package/dist/components/form/Form/index.js +1 -1
  215. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  216. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  217. package/dist/components/form/Form/use-field/use-field.js +1 -1
  218. package/dist/components/form/Form/use-form.js +1 -1
  219. package/dist/components/form/Form/validation.js +1 -1
  220. package/dist/components/form/Label.js +1 -1
  221. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  222. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  223. package/dist/components/form/validation/use-validation-props.js +1 -1
  224. package/dist/components/form/wrapper.js +1 -1
  225. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  226. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  227. package/dist/components/layout/Board/Board.js +1 -1
  228. package/dist/components/layout/Board/BoardProvider.js +1 -1
  229. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  230. package/dist/components/layout/Board/Widget.js +1 -1
  231. package/dist/components/layout/Board/WidgetHost.js +2 -2
  232. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  233. package/dist/components/layout/Board/board-context.js +1 -1
  234. package/dist/components/layout/Board/board-store.js +1 -1
  235. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  236. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  237. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  238. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  239. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  240. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  241. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  242. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  243. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  244. package/dist/components/layout/Board/index.js +1 -1
  245. package/dist/components/layout/Board/responsive-utils.js +1 -1
  246. package/dist/components/layout/Board/use-board-layout.js +1 -1
  247. package/dist/components/layout/Board/use-board-registry.js +1 -1
  248. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  249. package/dist/components/layout/Board/use-board-selection.js +1 -1
  250. package/dist/components/layout/Flex.js +1 -1
  251. package/dist/components/layout/Flow.js +1 -1
  252. package/dist/components/layout/Grid.js +1 -1
  253. package/dist/components/layout/Panel.js +1 -1
  254. package/dist/components/layout/Prefix.js +1 -1
  255. package/dist/components/layout/ResizablePanel.js +1 -1
  256. package/dist/components/layout/Space.js +1 -1
  257. package/dist/components/layout/Suffix.js +1 -1
  258. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  259. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  260. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  261. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  262. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  263. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  264. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  265. package/dist/components/navigation/Tabs/Tabs.d.ts +3 -0
  266. package/dist/components/navigation/Tabs/Tabs.js +10 -1
  267. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  268. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  269. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  270. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  271. package/dist/components/navigation/Tabs/styled.js +1 -1
  272. package/dist/components/navigation/Tabs/types.js +1 -1
  273. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  274. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  275. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  276. package/dist/components/other/Calendar/Calendar.js +1 -1
  277. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  278. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  279. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  280. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  281. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  282. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  283. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  284. package/dist/components/other/Calendar/styled.js +1 -1
  285. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  286. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  287. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  288. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  289. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  290. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  291. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  292. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  293. package/dist/components/overlays/Dialog/DialogTrigger.js +2 -2
  294. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  295. package/dist/components/overlays/Dialog/context.js +1 -1
  296. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  297. package/dist/components/overlays/Modal/Modal.js +1 -1
  298. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  299. package/dist/components/overlays/Modal/Overlay.js +1 -1
  300. package/dist/components/overlays/Modal/Popover.js +1 -1
  301. package/dist/components/overlays/Modal/Tray.js +1 -1
  302. package/dist/components/overlays/Modal/Underlay.js +1 -1
  303. package/dist/components/overlays/Notifications/Notification.js +1 -1
  304. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  305. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  306. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  307. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  308. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  309. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  310. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  311. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  312. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  313. package/dist/components/overlays/Notifications/index.js +1 -1
  314. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  315. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  316. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  317. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  318. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  319. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  320. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  321. package/dist/components/overlays/Toast/index.js +1 -1
  322. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  323. package/dist/components/overlays/Toast/useToast.js +1 -1
  324. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  325. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  326. package/dist/components/overlays/Tooltip/TooltipTrigger.js +3 -2
  327. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  328. package/dist/components/overlays/Tooltip/context.js +1 -1
  329. package/dist/components/portal/Portal.js +1 -1
  330. package/dist/components/portal/PortalProvider.js +1 -1
  331. package/dist/components/portal/usePortal.js +1 -1
  332. package/dist/components/shared/DraggableCollection.js +1 -1
  333. package/dist/components/shared/InvalidIcon.js +1 -1
  334. package/dist/components/shared/ValidIcon.js +1 -1
  335. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  336. package/dist/components/status/Spin/Cube.js +1 -1
  337. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  338. package/dist/components/status/Spin/Spin.js +1 -1
  339. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  340. package/dist/data/item-themes.js +1 -1
  341. package/dist/data/themes.js +1 -1
  342. package/dist/eslint-plugin/defaults.generated.js +5 -1
  343. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  344. package/dist/eslint-plugin/index.js +1 -1
  345. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  346. package/dist/i18n/I18nProvider.js +1 -1
  347. package/dist/i18n/createFormatter.js +1 -1
  348. package/dist/i18n/index.js +1 -1
  349. package/dist/i18n/instance.js +1 -1
  350. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  351. package/dist/i18n/locales/en-US/uikit.js +1 -1
  352. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  353. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  354. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  355. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  356. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  357. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  358. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  359. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  360. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  361. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  362. package/dist/i18n/locales.js +1 -1
  363. package/dist/i18n/useFormatter.js +1 -1
  364. package/dist/i18n/useI18n.js +1 -1
  365. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  366. package/dist/icons/AdjustmentsIcon.js +1 -1
  367. package/dist/icons/AiIcon.js +1 -1
  368. package/dist/icons/AreaChartIcon.js +1 -1
  369. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  370. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  371. package/dist/icons/BackwardIcon.js +1 -1
  372. package/dist/icons/BarChartIcon.js +1 -1
  373. package/dist/icons/BellFilledIcon.js +1 -1
  374. package/dist/icons/BellIcon.js +1 -1
  375. package/dist/icons/BooleanIcon.js +1 -1
  376. package/dist/icons/CalendarEditIcon.js +1 -1
  377. package/dist/icons/CalendarIcon.js +1 -1
  378. package/dist/icons/CaretDownIcon.js +1 -1
  379. package/dist/icons/CaretUpIcon.js +1 -1
  380. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  381. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  382. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  383. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  384. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  385. package/dist/icons/ChartBarLineIcon.js +1 -1
  386. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  387. package/dist/icons/ChartBarStackedIcon.js +1 -1
  388. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  389. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  390. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  391. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  392. package/dist/icons/ChartBubbleIcon.js +1 -1
  393. package/dist/icons/ChartDonut2Icon.js +1 -1
  394. package/dist/icons/ChartFunnelIcon.js +1 -1
  395. package/dist/icons/ChartHeatmapIcon.js +1 -1
  396. package/dist/icons/ChartKPIIcon.js +1 -1
  397. package/dist/icons/ChartPie2Icon.js +1 -1
  398. package/dist/icons/ChartScatterIcon.js +1 -1
  399. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  400. package/dist/icons/CheckCircleIcon.js +1 -1
  401. package/dist/icons/CheckIcon.js +1 -1
  402. package/dist/icons/CircleFilledIcon.js +1 -1
  403. package/dist/icons/ClearIcon.js +1 -1
  404. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  405. package/dist/icons/CloseCircleIcon.js +1 -1
  406. package/dist/icons/CloseIcon.js +1 -1
  407. package/dist/icons/CodeIcon.js +1 -1
  408. package/dist/icons/ColumnTotalIcon.js +1 -1
  409. package/dist/icons/CopyIcon.js +1 -1
  410. package/dist/icons/CountIcon.js +1 -1
  411. package/dist/icons/CubeIcon.js +1 -1
  412. package/dist/icons/CubePauseIcon.js +1 -1
  413. package/dist/icons/CubePlayIcon.js +1 -1
  414. package/dist/icons/CurrencyDollarIcon.js +1 -1
  415. package/dist/icons/DangerIcon.js +1 -1
  416. package/dist/icons/DashboardIcon.js +1 -1
  417. package/dist/icons/DatabaseIcon.js +1 -1
  418. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  419. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  420. package/dist/icons/DirectionIcon.js +1 -1
  421. package/dist/icons/DonutIcon.js +1 -1
  422. package/dist/icons/DownIcon.js +1 -1
  423. package/dist/icons/EditIcon.js +1 -1
  424. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  425. package/dist/icons/ExclamationCircleIcon.js +1 -1
  426. package/dist/icons/ExclamationIcon.js +1 -1
  427. package/dist/icons/EyeIcon.js +1 -1
  428. package/dist/icons/EyeInvisibleIcon.js +1 -1
  429. package/dist/icons/FilterIcon.js +1 -1
  430. package/dist/icons/FolderFilledIcon.js +1 -1
  431. package/dist/icons/FolderIcon.js +1 -1
  432. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  433. package/dist/icons/FolderOpenIcon.js +1 -1
  434. package/dist/icons/ForwardIcon.js +1 -1
  435. package/dist/icons/GripVerticalIcon.js +1 -1
  436. package/dist/icons/HierarchyIcon.js +1 -1
  437. package/dist/icons/HierarchyOpenIcon.js +1 -1
  438. package/dist/icons/Icon.js +1 -1
  439. package/dist/icons/InfoCircleIcon.js +1 -1
  440. package/dist/icons/InfoIcon.js +1 -1
  441. package/dist/icons/KeyIcon.js +1 -1
  442. package/dist/icons/LeftIcon.js +1 -1
  443. package/dist/icons/LineChartIcon.js +1 -1
  444. package/dist/icons/LoadingIcon.js +1 -1
  445. package/dist/icons/LockFilledIcon.js +1 -1
  446. package/dist/icons/LockIcon.js +1 -1
  447. package/dist/icons/MoreIcon.js +1 -1
  448. package/dist/icons/NotAllowedIcon.js +1 -1
  449. package/dist/icons/Number123Icon.js +1 -1
  450. package/dist/icons/NumberIcon.js +1 -1
  451. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  452. package/dist/icons/PauseCircleIcon.js +1 -1
  453. package/dist/icons/PauseIcon.js +1 -1
  454. package/dist/icons/PercentageIcon.js +1 -1
  455. package/dist/icons/PieChartIcon.js +1 -1
  456. package/dist/icons/PipetteIcon.js +1 -1
  457. package/dist/icons/PlayCircleIcon.js +1 -1
  458. package/dist/icons/PlayIcon.js +1 -1
  459. package/dist/icons/PlusIcon.js +1 -1
  460. package/dist/icons/ProgressBarIcon.js +1 -1
  461. package/dist/icons/ReloadIcon.js +1 -1
  462. package/dist/icons/ReportIcon.js +1 -1
  463. package/dist/icons/ReturnIcon.js +1 -1
  464. package/dist/icons/RightIcon.js +1 -1
  465. package/dist/icons/RowTotalsIcon.js +1 -1
  466. package/dist/icons/SchemeIcon.js +1 -1
  467. package/dist/icons/SearchIcon.js +1 -1
  468. package/dist/icons/SemanticQueryIcon.js +1 -1
  469. package/dist/icons/SettingsIcon.js +1 -1
  470. package/dist/icons/ShieldFilledIcon.js +1 -1
  471. package/dist/icons/ShieldIcon.js +1 -1
  472. package/dist/icons/SlashIcon.js +1 -1
  473. package/dist/icons/SparklesIcon.js +1 -1
  474. package/dist/icons/SqlIcon.js +1 -1
  475. package/dist/icons/StatsIcon.js +1 -1
  476. package/dist/icons/StopIcon.js +1 -1
  477. package/dist/icons/StringIcon.js +1 -1
  478. package/dist/icons/SubtotalsIcon.js +1 -1
  479. package/dist/icons/SwitchIcon.js +1 -1
  480. package/dist/icons/TableIcon.js +1 -1
  481. package/dist/icons/ThumbsDownIcon.js +1 -1
  482. package/dist/icons/ThumbsUpIcon.js +1 -1
  483. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  484. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  485. package/dist/icons/ThunderboltIcon.js +1 -1
  486. package/dist/icons/TimeIcon.js +1 -1
  487. package/dist/icons/TrashIcon.js +1 -1
  488. package/dist/icons/UnlockIcon.js +1 -1
  489. package/dist/icons/UpIcon.js +1 -1
  490. package/dist/icons/UserGroupIcon.js +1 -1
  491. package/dist/icons/UserIcon.js +1 -1
  492. package/dist/icons/UserLockIcon.js +1 -1
  493. package/dist/icons/ViewIcon.js +1 -1
  494. package/dist/icons/WarningFilledIcon.js +1 -1
  495. package/dist/icons/WarningIcon.js +1 -1
  496. package/dist/icons/wrap-icon.js +1 -1
  497. package/dist/index.d.ts +2 -1
  498. package/dist/index.js +3 -2
  499. package/dist/index.js.map +1 -1
  500. package/dist/probe/canonicalize.js +1 -1
  501. package/dist/probe/css.js +1 -1
  502. package/dist/probe/index.js +1 -1
  503. package/dist/provider.js +1 -1
  504. package/dist/providers/TrackingProvider.js +1 -1
  505. package/dist/providers/navigationAdapter.default.js +1 -1
  506. package/dist/tokens/all-tokens.js +1 -1
  507. package/dist/tokens/base.js +1 -1
  508. package/dist/tokens/color-seed.js +1 -1
  509. package/dist/tokens/color-theme.js +1 -1
  510. package/dist/tokens/colors.js +1 -1
  511. package/dist/tokens/index.d.ts +1 -0
  512. package/dist/tokens/layout.js +1 -1
  513. package/dist/tokens/lazy-styles.js +1 -1
  514. package/dist/tokens/legacy-color.d.ts +61 -0
  515. package/dist/tokens/legacy-color.js +58 -0
  516. package/dist/tokens/legacy-color.js.map +1 -0
  517. package/dist/tokens/palette-config.js +1 -1
  518. package/dist/tokens/palette.js +1 -1
  519. package/dist/tokens/resolve.js +1 -1
  520. package/dist/tokens/shadows.js +1 -1
  521. package/dist/tokens/sizes.js +1 -1
  522. package/dist/tokens/spacing.js +1 -1
  523. package/dist/tokens/typography.js +1 -1
  524. package/dist/utils/ResizeSensor.js +1 -1
  525. package/dist/utils/colors.d.ts +2 -0
  526. package/dist/utils/colors.js +257 -0
  527. package/dist/utils/colors.js.map +1 -0
  528. package/dist/utils/is-dev-env.js +66 -8
  529. package/dist/utils/is-dev-env.js.map +1 -1
  530. package/dist/utils/modules.js +1 -1
  531. package/dist/utils/promise.js +1 -1
  532. package/dist/utils/raf.js +1 -1
  533. package/dist/utils/random.js +1 -1
  534. package/dist/utils/range.js +1 -1
  535. package/dist/utils/react/RenderCache.js +1 -1
  536. package/dist/utils/react/Slots.js +1 -1
  537. package/dist/utils/react/chain.js +1 -1
  538. package/dist/utils/react/disabledProps.js +1 -1
  539. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  540. package/dist/utils/react/index.js +1 -1
  541. package/dist/utils/react/interactions.js +1 -1
  542. package/dist/utils/react/isTextOnly.js +1 -1
  543. package/dist/utils/react/mapProps.js +1 -1
  544. package/dist/utils/react/mergeProps.js +1 -1
  545. package/dist/utils/react/nullableValue.js +1 -1
  546. package/dist/utils/react/resolveIcon.js +1 -1
  547. package/dist/utils/react/sharedStore.js +3 -2
  548. package/dist/utils/react/sharedStore.js.map +1 -1
  549. package/dist/utils/react/useBufferedValue.js +1 -1
  550. package/dist/utils/react/useCombinedRefs.js +1 -1
  551. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  552. package/dist/utils/react/useEventBus.js +1 -1
  553. package/dist/utils/react/useId.js +1 -1
  554. package/dist/utils/react/useIsDarwin.js +1 -1
  555. package/dist/utils/react/useKeySymbols.js +1 -1
  556. package/dist/utils/react/useLayoutEffect.js +1 -1
  557. package/dist/utils/react/useLocalStorage.js +1 -1
  558. package/dist/utils/react/useMergeStyles.js +1 -1
  559. package/dist/utils/react/usePopoverSync.js +1 -1
  560. package/dist/utils/react/useQaProps.js +1 -1
  561. package/dist/utils/react/useScheme.js +1 -1
  562. package/dist/utils/react/useViewportSize.js +1 -1
  563. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  564. package/dist/utils/selection.js +1 -1
  565. package/dist/utils/styles.js +1 -1
  566. package/dist/utils/tree.js +1 -1
  567. package/dist/utils/warnings.js +5 -2
  568. package/dist/utils/warnings.js.map +1 -1
  569. package/dist/version.js +2 -2
  570. package/docs/Usage.md +18 -0
  571. package/docs/components/fields/FilterPicker.md +45 -0
  572. package/docs/components/fields/Picker.md +47 -0
  573. package/docs/components/fields/Select.md +43 -0
  574. package/docs/components/navigation/Tabs.md +19 -1
  575. package/docs/components/overlays/DialogTrigger.md +1 -1
  576. package/package.json +1 -1
@@ -0,0 +1,58 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
+ import { parseSrgbColor } from "../utils/colors.js";
3
+ import { srgbToHex } from "@tenphi/glaze";
4
+
5
+ //#region src/tokens/legacy-color.ts
6
+ /**
7
+ * Convert a color literal — most usefully the `oklch(...)` a color token
8
+ * resolves to — into a hex or `rgba()` string.
9
+ *
10
+ * ```ts
11
+ * toLegacyColor(resolveTokenValue('#purple')); // '#6147d6'
12
+ * toLegacyColor('oklch(0.55 0.21 285 / 0.4)'); // 'rgba(97, 71, 214, 0.4)'
13
+ * toLegacyColor('oklch(0.55 0.21 285 / 0.4)', { alpha: 'hex' }); // '#6147d666'
14
+ * ```
15
+ *
16
+ * Takes `null` / `undefined` so it composes with `resolveTokenValue()` without
17
+ * a null check, and reads every notation the kit emits or accepts: `oklch()`,
18
+ * `okhsl()`, `okhst()`, `rgb()`, `hsl()`, hex (3/4/6/8 digits) and
19
+ * `transparent`, in either the modern slash or the legacy comma alpha syntax.
20
+ *
21
+ * Returns `options.fallback ?? null` rather than the input when the value
22
+ * cannot be read — a color that is not `oklch()` but still not legacy-safe is
23
+ * the failure this helper exists to prevent, so handing it back would defeat
24
+ * the purpose. Named colors other than `transparent`, `color-mix()` and
25
+ * relative syntax (`oklch(from …)`) are all unreadable here, the last two
26
+ * because their value only exists inside a CSS engine.
27
+ */
28
+ function toLegacyColor(value, options = {}) {
29
+ const { alpha: format = "rgba", fallback = null } = options;
30
+ if (typeof value !== "string") return fallback;
31
+ const parsed = parseSrgbColor(value);
32
+ if (!parsed) return fallback;
33
+ const hex = srgbToHex(parsed.rgb);
34
+ if (parsed.alpha >= 1) return hex;
35
+ if (format === "hex") return `${hex}${toHexByte(parsed.alpha)}`;
36
+ const [r, g, b] = parsed.rgb.map(toByte);
37
+ return `rgba(${r}, ${g}, ${b}, ${round(parsed.alpha)})`;
38
+ }
39
+ /**
40
+ * 8-bit channels rather than the fractional ones `formatRgb()` emits. The point
41
+ * of this helper is a value a *legacy* parser accepts, and those commonly read
42
+ * channels with an integer parse; the hex form is 8-bit regardless, so this also
43
+ * keeps the two output forms describing the same color.
44
+ */
45
+ function toByte(channel) {
46
+ return Math.round(Math.min(Math.max(channel, 0), 1) * 255);
47
+ }
48
+ function toHexByte(alpha) {
49
+ return toByte(alpha).toString(16).padStart(2, "0");
50
+ }
51
+ /** Three decimals is finer than the 8-bit alpha the hex form can carry. */
52
+ function round(alpha) {
53
+ return Math.round(alpha * 1e3) / 1e3;
54
+ }
55
+
56
+ //#endregion
57
+ export { toLegacyColor };
58
+ //# sourceMappingURL=legacy-color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-color.js","names":[],"sources":["../../src/tokens/legacy-color.ts"],"sourcesContent":["import { srgbToHex } from '@tenphi/glaze';\n\nimport { parseSrgbColor } from '../utils/colors';\n\n/**\n * Converting a resolved color token into a form a third-party parser will\n * actually accept.\n *\n * Since Glaze every color token computes to `oklch(...)`, and a large class of\n * consumers validates colors against \"HEX, `rgb()`, or `hsl()`\" and *silently\n * drops* anything else — Stripe's Appearance API falls back to its own light\n * theme, `d3-color` (so Vega) throws, mapbox-gl's `csscolorparser` rejects even\n * an `#rrggbbaa` tail. A round trip through the DOM does not normalize it:\n * Chrome serializes `oklch` back as `oklch`.\n *\n * So the value `resolveTokenValue()` hands back is correct and unusable at the\n * same time, and this is the step between them.\n */\n\n/** Output form for a *translucent* color — see {@link ToLegacyColorOptions}. */\nexport type LegacyAlphaFormat = 'rgba' | 'hex';\n\nexport interface ToLegacyColorOptions {\n /**\n * How to carry alpha when the color is translucent. An opaque color is always\n * `#rrggbb`, which every consumer accepts.\n *\n * - `'rgba'` (default) — `rgba(97, 71, 214, 0.4)`. The widest form: Stripe\n * takes it, mapbox-gl takes it, CSS takes it.\n * - `'hex'` — `#rrggbbaa`. Shorter, and what Vega and plain CSS prefer, but\n * mapbox-gl's hex branch accepts only `#rgb` / `#rrggbb` and will drop it.\n *\n * When in doubt keep the default; pick `'hex'` only for a consumer known to\n * read the tail.\n */\n alpha?: LegacyAlphaFormat;\n /** Returned in place of `null` when the input is not a color we can read. */\n fallback?: string;\n}\n\n/**\n * Convert a color literal — most usefully the `oklch(...)` a color token\n * resolves to — into a hex or `rgba()` string.\n *\n * ```ts\n * toLegacyColor(resolveTokenValue('#purple')); // '#6147d6'\n * toLegacyColor('oklch(0.55 0.21 285 / 0.4)'); // 'rgba(97, 71, 214, 0.4)'\n * toLegacyColor('oklch(0.55 0.21 285 / 0.4)', { alpha: 'hex' }); // '#6147d666'\n * ```\n *\n * Takes `null` / `undefined` so it composes with `resolveTokenValue()` without\n * a null check, and reads every notation the kit emits or accepts: `oklch()`,\n * `okhsl()`, `okhst()`, `rgb()`, `hsl()`, hex (3/4/6/8 digits) and\n * `transparent`, in either the modern slash or the legacy comma alpha syntax.\n *\n * Returns `options.fallback ?? null` rather than the input when the value\n * cannot be read — a color that is not `oklch()` but still not legacy-safe is\n * the failure this helper exists to prevent, so handing it back would defeat\n * the purpose. Named colors other than `transparent`, `color-mix()` and\n * relative syntax (`oklch(from …)`) are all unreadable here, the last two\n * because their value only exists inside a CSS engine.\n */\nexport function toLegacyColor(\n value: string | null | undefined,\n options: ToLegacyColorOptions = {},\n): string | null {\n const { alpha: format = 'rgba', fallback = null } = options;\n\n if (typeof value !== 'string') return fallback;\n\n const parsed = parseSrgbColor(value);\n\n if (!parsed) return fallback;\n\n const hex = srgbToHex(parsed.rgb);\n\n if (parsed.alpha >= 1) return hex;\n\n if (format === 'hex') return `${hex}${toHexByte(parsed.alpha)}`;\n\n const [r, g, b] = parsed.rgb.map(toByte);\n\n return `rgba(${r}, ${g}, ${b}, ${round(parsed.alpha)})`;\n}\n\n/**\n * 8-bit channels rather than the fractional ones `formatRgb()` emits. The point\n * of this helper is a value a *legacy* parser accepts, and those commonly read\n * channels with an integer parse; the hex form is 8-bit regardless, so this also\n * keeps the two output forms describing the same color.\n */\nfunction toByte(channel: number): number {\n return Math.round(Math.min(Math.max(channel, 0), 1) * 255);\n}\n\nfunction toHexByte(alpha: number): string {\n return toByte(alpha).toString(16).padStart(2, '0');\n}\n\n/** Three decimals is finer than the 8-bit alpha the hex form can carry. */\nfunction round(alpha: number): number {\n return Math.round(alpha * 1000) / 1000;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAgB,cACd,OACA,UAAgC,EAAE,EACnB;CACf,MAAM,EAAE,OAAO,SAAS,QAAQ,WAAW,SAAS;AAEpD,KAAI,OAAO,UAAU,SAAU,QAAO;CAEtC,MAAM,SAAS,eAAe,MAAM;AAEpC,KAAI,CAAC,OAAQ,QAAO;CAEpB,MAAM,MAAM,UAAU,OAAO,IAAI;AAEjC,KAAI,OAAO,SAAS,EAAG,QAAO;AAE9B,KAAI,WAAW,MAAO,QAAO,GAAG,MAAM,UAAU,OAAO,MAAM;CAE7D,MAAM,CAAC,GAAG,GAAG,KAAK,OAAO,IAAI,IAAI,OAAO;AAExC,QAAO,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,OAAO,MAAM,CAAC;;;;;;;;AASvD,SAAS,OAAO,SAAyB;AACvC,QAAO,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE,EAAE,EAAE,GAAG,IAAI;;AAG5D,SAAS,UAAU,OAAuB;AACxC,QAAO,OAAO,MAAM,CAAC,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI;;;AAIpD,SAAS,MAAM,OAAuB;AACpC,QAAO,KAAK,MAAM,QAAQ,IAAK,GAAG"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { colorSeed } from "./color-seed.js";
3
3
  import { useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { SURFACE_SATURATION_SHARE, getPaletteConfig, getPaletteVersion, resolvePaletteConfig } from "./palette-config.js";
3
3
  import { lazyStyles } from "./lazy-styles.js";
4
4
  import { apcaContrast, glaze, okhslToLinearSrgb, variantToOkhsl } from "@tenphi/glaze";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../utils/react/useLayoutEffect.js";
3
3
  import { subscribeScheme } from "../utils/react/useScheme.js";
4
4
  import { warn } from "../utils/warnings.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/tokens/shadows.ts
3
3
  /**
4
4
  * Shadow tokens using tasty shorthand syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/tokens/sizes.ts
3
3
  /**
4
4
  * Component size values in pixels.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/tokens/spacing.ts
3
3
  /**
4
4
  * Spacing tokens using tasty multiplier syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/tokens/typography.ts
3
3
  /**
4
4
  * Typography presets for headings, text, and special styles.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/ResizeSensor.ts
3
3
  /**
4
4
  * Iterate over each of the provided element(s).
@@ -0,0 +1,2 @@
1
+
2
+ import "@tenphi/glaze";
@@ -0,0 +1,257 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
+ import { hslToSrgb, okhslToOklch, okhslToSrgb, okhstToOkhsl, oklabToOkhsl, parseHexAlpha } from "@tenphi/glaze";
3
+
4
+ //#region src/utils/colors.ts
5
+ /**
6
+ * Reading a CSS color *literal* into channels — the layer under both the color
7
+ * fields (which parse what a user types) and {@link toLegacyColor} (which parses
8
+ * what `resolveTokenValue()` hands back).
9
+ *
10
+ * It lives here rather than in either consumer because the two need the same
11
+ * grammar and disagreeing about it is invisible: a component this parser fails
12
+ * to recognise does not throw, it makes the whole color unparseable, and the
13
+ * caller falls back to something that merely looks plausible. The cases that
14
+ * actually show up — a negative hue, a `none` component, scientific notation
15
+ * out of a serializer, `oklch(from …)` relative syntax — are exactly the ones a
16
+ * hand-rolled regex misses.
17
+ *
18
+ * Named CSS colors (`red`, `rebeccapurple`) are deliberately not supported,
19
+ * matching `glaze.color()`. `transparent` is the one exception, because the kit
20
+ * declares it: `#clear` is `transparent`.
21
+ */
22
+ const FUNCTION_RE = /^([a-z]+)\(([^()]+)\)$/;
23
+ /**
24
+ * A number with an optional unit, both captured in one pass.
25
+ *
26
+ * This runs on whatever the user types, so it is written to stay linear in two
27
+ * separate ways. The integer and fraction parts are arranged so that no two
28
+ * quantifiers can consume the same digit — `\d+(?:\.\d*)?` rather than
29
+ * `\d+\.?\d*`, whose `\d+` and `\d*` can split a digit run n ways and make
30
+ * rejecting a long one quadratic. And the unit is a capture group here rather
31
+ * than a second, unanchored scan: reading it back with `/[a-z%]+$/` is itself
32
+ * polynomial (CodeQL `js/polynomial-redos`), because every start position
33
+ * re-walks the run of unit characters before failing at `$` — quadratic on a
34
+ * string of many `%`.
35
+ */
36
+ const NUMBER_RE = /^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(%|deg|rad|grad|turn)?$/;
37
+ /** Degrees per unit, for the angle units `<hue>` accepts. */
38
+ const ANGLE_UNITS = {
39
+ deg: 1,
40
+ rad: 180 / Math.PI,
41
+ grad: .9,
42
+ turn: 360
43
+ };
44
+ /**
45
+ * `none` is a real component value, not a parse failure. Outside interpolation
46
+ * and relative-color syntax CSS Color 4 resolves it to zero, which is what every
47
+ * caller here wants — `oklch(0.5 none 200)` is a grey, and `… / none` is
48
+ * invisible rather than unparseable.
49
+ */
50
+ const NONE = "none";
51
+ /** A component we can read: a number with an optional unit, or `none`. */
52
+ function isComponent(arg) {
53
+ return arg === NONE || NUMBER_RE.test(arg);
54
+ }
55
+ /** Read a numeric component and its unit together, or `null` if it is neither. */
56
+ function readNumber(arg) {
57
+ const match = NUMBER_RE.exec(arg);
58
+ return match ? {
59
+ value: parseFloat(match[1]),
60
+ unit: match[2] ?? ""
61
+ } : null;
62
+ }
63
+ function normalizeHue(hue) {
64
+ if (!Number.isFinite(hue)) return 0;
65
+ return (hue % 360 + 360) % 360;
66
+ }
67
+ /**
68
+ * Split a color-function literal into its name, components and alpha. Both the
69
+ * modern space-separated (`rgb(0 0 0 / 50%)`) and legacy comma-separated
70
+ * (`rgba(0, 0, 0, 0.5)`) syntaxes are accepted.
71
+ *
72
+ * Returns `null` for anything that is not a plain color-function call, which
73
+ * includes the two forms whose value cannot be worked out without a CSS engine:
74
+ * relative syntax (`oklch(from var(--x) l c h)`) and `color-mix()`. Rejecting
75
+ * them is the point — passing them through unchanged is what makes a consumer
76
+ * silently drop the color.
77
+ */
78
+ function parseColorFunction(input) {
79
+ const match = FUNCTION_RE.exec(input.trim().toLowerCase());
80
+ if (!match) return null;
81
+ const [, name, body] = match;
82
+ const [components, ...rest] = body.split("/");
83
+ if (rest.length > 1) return null;
84
+ let alpha = rest.length ? rest[0].trim() : null;
85
+ const args = components.trim().split(components.includes(",") ? "," : /\s+/).map((part) => part.trim()).filter(Boolean);
86
+ if (args.length === 4) {
87
+ if (alpha !== null) return null;
88
+ alpha = args.pop();
89
+ }
90
+ if (alpha !== null && !isComponent(alpha)) return null;
91
+ return args.every(isComponent) ? {
92
+ name,
93
+ args,
94
+ alpha
95
+ } : null;
96
+ }
97
+ /**
98
+ * Read a non-hue component. `scale` is what `100%` means in this position;
99
+ * `none` is zero, and an angle is not a value this position accepts.
100
+ */
101
+ function readComponent(arg, scale) {
102
+ if (arg === NONE) return 0;
103
+ const parsed = readNumber(arg);
104
+ if (!parsed) return NaN;
105
+ if (parsed.unit === "%") return parsed.value / 100 * scale;
106
+ return parsed.unit ? NaN : parsed.value;
107
+ }
108
+ /** Read a `<hue>`: any angle unit, or a bare number of degrees. Normalized. */
109
+ function readHue(arg) {
110
+ if (arg === NONE) return 0;
111
+ const parsed = readNumber(arg);
112
+ if (!parsed) return NaN;
113
+ if (parsed.unit === "%") return NaN;
114
+ const perDegree = parsed.unit ? ANGLE_UNITS[parsed.unit] : 1;
115
+ return perDegree === void 0 ? NaN : normalizeHue(parsed.value * perDegree);
116
+ }
117
+ /** Read an `<alpha-value>`. A missing alpha is opaque; out of range is clamped. */
118
+ function readAlpha(arg) {
119
+ if (arg === null) return 1;
120
+ const alpha = readComponent(arg, 1);
121
+ return Number.isFinite(alpha) ? clamp(alpha, 0, 1) : NaN;
122
+ }
123
+ function clamp(value, min, max) {
124
+ return value < min ? min : value > max ? max : value;
125
+ }
126
+ function anyNaN(...values) {
127
+ return values.some((value) => !Number.isFinite(value));
128
+ }
129
+ /**
130
+ * The largest OKLCh chroma that stays inside the sRGB gamut for the given hue
131
+ * and OKHSL lightness — that is exactly what OKHSL saturation `1` means.
132
+ */
133
+ function maxChroma(hue, lightness) {
134
+ return okhslToOklch(normalizeHue(hue), 1, clamp(lightness, 0, 1))[1];
135
+ }
136
+ /**
137
+ * OKLCh addresses colors outside the sRGB gamut, so chroma is clipped to the
138
+ * gamut boundary at the requested lightness. Hue is taken from the input rather
139
+ * than from the conversion, which loses it at zero chroma.
140
+ */
141
+ function oklchToOkhsl(color) {
142
+ const h = normalizeHue(color.h);
143
+ const c = Math.max(color.c, 0);
144
+ const radians = h * Math.PI / 180;
145
+ const [, s, l] = oklabToOkhsl([
146
+ clamp(color.l, 0, 1),
147
+ c * Math.cos(radians),
148
+ c * Math.sin(radians)
149
+ ]);
150
+ const limit = maxChroma(h, l);
151
+ return {
152
+ h,
153
+ s: limit > 0 ? c >= limit ? 1 : clamp(s, 0, 1) : 0,
154
+ l: clamp(l, 0, 1)
155
+ };
156
+ }
157
+ function rgbFromSrgb([r, g, b]) {
158
+ return {
159
+ r: r * 255,
160
+ g: g * 255,
161
+ b: b * 255
162
+ };
163
+ }
164
+ /**
165
+ * Read any color literal the kit can emit or accept into gamma-encoded sRGB
166
+ * channels plus alpha — the space every legacy consumer speaks.
167
+ *
168
+ * Returns `null` when the input is not a color, or is one whose value depends on
169
+ * a CSS engine we do not have (see {@link parseColorFunction}).
170
+ */
171
+ function parseSrgbColor(input) {
172
+ const text = input.trim().toLowerCase();
173
+ if (!text) return null;
174
+ if (text === "transparent") return {
175
+ rgb: [
176
+ 0,
177
+ 0,
178
+ 0
179
+ ],
180
+ alpha: 0
181
+ };
182
+ if (text.startsWith("#")) {
183
+ const parsed = parseHexAlpha(text);
184
+ return parsed ? {
185
+ rgb: parsed.rgb,
186
+ alpha: parsed.alpha ?? 1
187
+ } : null;
188
+ }
189
+ const parsed = parseColorFunction(text);
190
+ if (!parsed || parsed.args.length !== 3) return null;
191
+ const { name, args } = parsed;
192
+ const alpha = readAlpha(parsed.alpha);
193
+ if (!Number.isFinite(alpha)) return null;
194
+ const rgb = toSrgbChannels(name, args);
195
+ return rgb ? {
196
+ rgb,
197
+ alpha
198
+ } : null;
199
+ }
200
+ function toSrgbChannels(name, args) {
201
+ switch (name) {
202
+ case "rgb":
203
+ case "rgba": {
204
+ const [r, g, b] = args.map((arg) => readComponent(arg, 255));
205
+ if (anyNaN(r, g, b)) return null;
206
+ return [
207
+ clamp(r / 255, 0, 1),
208
+ clamp(g / 255, 0, 1),
209
+ clamp(b / 255, 0, 1)
210
+ ];
211
+ }
212
+ case "hsl":
213
+ case "hsla": {
214
+ const h = readHue(args[0]);
215
+ const s = readComponent(args[1], 100) / 100;
216
+ const l = readComponent(args[2], 100) / 100;
217
+ if (anyNaN(h, s, l)) return null;
218
+ return hslToSrgb(h, clamp(s, 0, 1), clamp(l, 0, 1));
219
+ }
220
+ case "okhsl": {
221
+ const h = readHue(args[0]);
222
+ const s = readComponent(args[1], 100) / 100;
223
+ const l = readComponent(args[2], 100) / 100;
224
+ if (anyNaN(h, s, l)) return null;
225
+ return okhslToSrgb(h, clamp(s, 0, 1), clamp(l, 0, 1));
226
+ }
227
+ case "okhst": {
228
+ const h = readHue(args[0]);
229
+ const s = readComponent(args[1], 100) / 100;
230
+ const t = readComponent(args[2], 100) / 100;
231
+ if (anyNaN(h, s, t)) return null;
232
+ const okhsl = okhstToOkhsl({
233
+ h,
234
+ s: clamp(s, 0, 1),
235
+ t: clamp(t, 0, 1)
236
+ });
237
+ return okhslToSrgb(normalizeHue(okhsl.h), clamp(okhsl.s, 0, 1), clamp(okhsl.l, 0, 1));
238
+ }
239
+ case "oklch": {
240
+ const l = readComponent(args[0], 1);
241
+ const c = readComponent(args[1], .4);
242
+ const h = readHue(args[2]);
243
+ if (anyNaN(l, c, h)) return null;
244
+ const okhsl = oklchToOkhsl({
245
+ l,
246
+ c,
247
+ h
248
+ });
249
+ return okhslToSrgb(okhsl.h, okhsl.s, okhsl.l);
250
+ }
251
+ default: return null;
252
+ }
253
+ }
254
+
255
+ //#endregion
256
+ export { anyNaN, clamp, maxChroma, normalizeHue, oklchToOkhsl, parseColorFunction, parseSrgbColor, readComponent, readHue, rgbFromSrgb };
257
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","names":[],"sources":["../../src/utils/colors.ts"],"sourcesContent":["import {\n hslToSrgb,\n okhslToOklch,\n okhslToSrgb,\n okhstToOkhsl,\n oklabToOkhsl,\n parseHexAlpha,\n} from '@tenphi/glaze';\n\nimport type { OkhslColor, OklchColor, RgbColor } from '@tenphi/glaze';\n\n/**\n * Reading a CSS color *literal* into channels — the layer under both the color\n * fields (which parse what a user types) and {@link toLegacyColor} (which parses\n * what `resolveTokenValue()` hands back).\n *\n * It lives here rather than in either consumer because the two need the same\n * grammar and disagreeing about it is invisible: a component this parser fails\n * to recognise does not throw, it makes the whole color unparseable, and the\n * caller falls back to something that merely looks plausible. The cases that\n * actually show up — a negative hue, a `none` component, scientific notation\n * out of a serializer, `oklch(from …)` relative syntax — are exactly the ones a\n * hand-rolled regex misses.\n *\n * Named CSS colors (`red`, `rebeccapurple`) are deliberately not supported,\n * matching `glaze.color()`. `transparent` is the one exception, because the kit\n * declares it: `#clear` is `transparent`.\n */\n\nconst FUNCTION_RE = /^([a-z]+)\\(([^()]+)\\)$/;\n\n/**\n * A number with an optional unit, both captured in one pass.\n *\n * This runs on whatever the user types, so it is written to stay linear in two\n * separate ways. The integer and fraction parts are arranged 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. And the unit is a capture group here rather\n * than a second, unanchored scan: reading it back with `/[a-z%]+$/` is itself\n * polynomial (CodeQL `js/polynomial-redos`), because every start position\n * re-walks the run of unit characters before failing at `$` — quadratic on a\n * string of many `%`.\n */\nconst NUMBER_RE =\n /^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)(%|deg|rad|grad|turn)?$/;\n\n/** Degrees per unit, for the angle units `<hue>` accepts. */\nconst ANGLE_UNITS: Record<string, number> = {\n deg: 1,\n rad: 180 / Math.PI,\n grad: 0.9,\n turn: 360,\n};\n\n/**\n * `none` is a real component value, not a parse failure. Outside interpolation\n * and relative-color syntax CSS Color 4 resolves it to zero, which is what every\n * caller here wants — `oklch(0.5 none 200)` is a grey, and `… / none` is\n * invisible rather than unparseable.\n */\nconst NONE = 'none';\n\n/** A component we can read: a number with an optional unit, or `none`. */\nfunction isComponent(arg: string): boolean {\n return arg === NONE || NUMBER_RE.test(arg);\n}\n\n/** A component's magnitude and its unit, `''` when it is a bare number. */\ninterface NumericComponent {\n value: number;\n unit: string;\n}\n\n/** Read a numeric component and its unit together, or `null` if it is neither. */\nfunction readNumber(arg: string): NumericComponent | null {\n const match = NUMBER_RE.exec(arg);\n\n return match ? { value: parseFloat(match[1]), unit: match[2] ?? '' } : null;\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 * A color-function call split into its parts, with alpha separated out. Each\n * component keeps its unit, so the caller can tell `50%` from `50` — what a\n * percentage means is per space and per position (`oklch()`'s `100%` is `1` for\n * lightness and `0.4` for chroma), so only the caller can scale it.\n */\nexport interface ColorFunction {\n /** Lowercased function name — `'oklch'`, `'rgba'`, `'okhst'`. */\n name: string;\n /** The color components, alpha excluded. */\n args: string[];\n /** The alpha component as written, or `null` when the call omits it. */\n alpha: string | null;\n}\n\n/**\n * Split a color-function literal into its name, components and alpha. Both the\n * modern space-separated (`rgb(0 0 0 / 50%)`) and legacy comma-separated\n * (`rgba(0, 0, 0, 0.5)`) syntaxes are accepted.\n *\n * Returns `null` for anything that is not a plain color-function call, which\n * includes the two forms whose value cannot be worked out without a CSS engine:\n * relative syntax (`oklch(from var(--x) l c h)`) and `color-mix()`. Rejecting\n * them is the point — passing them through unchanged is what makes a consumer\n * silently drop the color.\n */\nexport function parseColorFunction(input: string): ColorFunction | null {\n const match = FUNCTION_RE.exec(input.trim().toLowerCase());\n\n if (!match) return null;\n\n const [, name, body] = match;\n const [components, ...rest] = body.split('/');\n\n // More than one slash is never valid syntax.\n if (rest.length > 1) return null;\n\n let alpha: string | null = rest.length ? rest[0].trim() : null;\n\n const args = components\n .trim()\n .split(components.includes(',') ? ',' : /\\s+/)\n .map((part) => part.trim())\n .filter(Boolean);\n\n // A fourth component is alpha — that is the legacy `rgba(r, g, b, a)` /\n // `hsla(h, s, l, a)` form, and the same reading is the useful one for a\n // space-separated four-tuple someone typed without the slash.\n if (args.length === 4) {\n // `rgba(0, 0, 0, 1 / 0.5)` names alpha twice.\n if (alpha !== null) return null;\n\n alpha = args.pop()!;\n }\n\n if (alpha !== null && !isComponent(alpha)) return null;\n\n return args.every(isComponent) ? { name, args, alpha } : null;\n}\n\n/**\n * Read a non-hue component. `scale` is what `100%` means in this position;\n * `none` is zero, and an angle is not a value this position accepts.\n */\nexport function readComponent(arg: string, scale: number): number {\n if (arg === NONE) return 0;\n\n const parsed = readNumber(arg);\n\n if (!parsed) return NaN;\n\n if (parsed.unit === '%') return (parsed.value / 100) * scale;\n\n return parsed.unit ? NaN : parsed.value;\n}\n\n/** Read a `<hue>`: any angle unit, or a bare number of degrees. Normalized. */\nexport function readHue(arg: string): number {\n if (arg === NONE) return 0;\n\n const parsed = readNumber(arg);\n\n if (!parsed) return NaN;\n\n // A percentage is not a valid hue angle.\n if (parsed.unit === '%') return NaN;\n\n // Every unit {@link NUMBER_RE} captures other than `%` is an angle, so the\n // guard is unreachable today. It stays because a unit added there later — a\n // length, say — would otherwise arrive here and be read as degrees.\n const perDegree = parsed.unit ? ANGLE_UNITS[parsed.unit] : 1;\n\n return perDegree === undefined ? NaN : normalizeHue(parsed.value * perDegree);\n}\n\n/** Read an `<alpha-value>`. A missing alpha is opaque; out of range is clamped. */\nexport function readAlpha(arg: string | null): number {\n if (arg === null) return 1;\n\n const alpha = readComponent(arg, 1);\n\n return Number.isFinite(alpha) ? clamp(alpha, 0, 1) : NaN;\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return value < min ? min : value > max ? max : value;\n}\n\nexport function anyNaN(...values: number[]): boolean {\n return values.some((value) => !Number.isFinite(value));\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\n/**\n * OKLCh addresses colors outside the sRGB gamut, so chroma is clipped to the\n * gamut boundary at the requested lightness. Hue is taken from the input rather\n * than from the conversion, which loses it at zero chroma.\n */\nexport function oklchToOkhsl(color: OklchColor): OkhslColor {\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 rgbFromSrgb([r, g, b]: [number, number, number]): RgbColor {\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n/** Gamma-encoded sRGB channels in 0–1, plus alpha in 0–1. */\nexport interface SrgbColor {\n rgb: [number, number, number];\n alpha: number;\n}\n\n/**\n * Read any color literal the kit can emit or accept into gamma-encoded sRGB\n * channels plus alpha — the space every legacy consumer speaks.\n *\n * Returns `null` when the input is not a color, or is one whose value depends on\n * a CSS engine we do not have (see {@link parseColorFunction}).\n */\nexport function parseSrgbColor(input: string): SrgbColor | null {\n const text = input.trim().toLowerCase();\n\n if (!text) return null;\n\n // The one named color the kit declares: `#clear` is `transparent`. Browsers\n // compute it to `rgba(0, 0, 0, 0)`, but a token block read outside a browser\n // hands back the keyword as authored.\n if (text === 'transparent') return { rgb: [0, 0, 0], alpha: 0 };\n\n if (text.startsWith('#')) {\n const parsed = parseHexAlpha(text);\n\n return parsed ? { rgb: parsed.rgb, alpha: parsed.alpha ?? 1 } : null;\n }\n\n const parsed = parseColorFunction(text);\n\n if (!parsed || parsed.args.length !== 3) return null;\n\n const { name, args } = parsed;\n const alpha = readAlpha(parsed.alpha);\n\n if (!Number.isFinite(alpha)) return null;\n\n const rgb = toSrgbChannels(name, args);\n\n return rgb ? { rgb, alpha } : null;\n}\n\nfunction toSrgbChannels(\n name: string,\n args: string[],\n): [number, number, number] | null {\n switch (name) {\n case 'rgb':\n case 'rgba': {\n const [r, g, b] = args.map((arg) => readComponent(arg, 255));\n\n if (anyNaN(r, g, b)) return null;\n\n return [clamp(r / 255, 0, 1), clamp(g / 255, 0, 1), clamp(b / 255, 0, 1)];\n }\n case 'hsl':\n case 'hsla': {\n const h = readHue(args[0]);\n const s = readComponent(args[1], 100) / 100;\n const l = readComponent(args[2], 100) / 100;\n\n if (anyNaN(h, s, l)) return null;\n\n return hslToSrgb(h, clamp(s, 0, 1), clamp(l, 0, 1));\n }\n case 'okhsl': {\n const h = readHue(args[0]);\n const s = readComponent(args[1], 100) / 100;\n const l = readComponent(args[2], 100) / 100;\n\n if (anyNaN(h, s, l)) return null;\n\n return okhslToSrgb(h, clamp(s, 0, 1), clamp(l, 0, 1));\n }\n case 'okhst': {\n const h = readHue(args[0]);\n const s = readComponent(args[1], 100) / 100;\n const t = readComponent(args[2], 100) / 100;\n\n if (anyNaN(h, s, t)) return null;\n\n const okhsl = okhstToOkhsl({\n h,\n s: clamp(s, 0, 1),\n t: clamp(t, 0, 1),\n });\n\n return okhslToSrgb(\n normalizeHue(okhsl.h),\n clamp(okhsl.s, 0, 1),\n clamp(okhsl.l, 0, 1),\n );\n }\n case 'oklch': {\n // In `oklch()` a percentage means 1 for lightness and 0.4 for chroma.\n const l = readComponent(args[0], 1);\n const c = readComponent(args[1], 0.4);\n const h = readHue(args[2]);\n\n if (anyNaN(l, c, h)) return null;\n\n const okhsl = oklchToOkhsl({ l, c, h });\n\n return okhslToSrgb(okhsl.h, okhsl.s, okhsl.l);\n }\n default:\n return null;\n }\n}\n"],"mappings":"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"}
@@ -1,15 +1,73 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/is-dev-env.ts
3
- function isDevEnv() {
4
- if (typeof window !== "undefined" && window.localStorage) try {
5
- const flag = window.localStorage.getItem("UIKIT_DEBUG");
6
- if (flag !== null && flag.toLowerCase() === "true") return true;
3
+ /**
4
+ * `NODE_ENV` as the environment that is actually running reports it, or
5
+ * `undefined` when nothing can say.
6
+ *
7
+ * The one place in ui-kit allowed to read `NODE_ENV`, because it is the one
8
+ * place that has to survive the build unfolded. A comparison compiled into
9
+ * `dist` freezes whatever `NODE_ENV` the release machine exported and hands
10
+ * every consumer the same answer, so `tsdown.config.ts` defines the expression
11
+ * as itself to stop rolldown inlining it - see the comment there.
12
+ */
13
+ function readNodeEnv() {
14
+ try {
15
+ return process.env.NODE_ENV;
16
+ } catch {
17
+ return;
18
+ }
19
+ }
20
+ /**
21
+ * `localStorage.UIKIT_DEBUG` as a tri-state: an explicit `"true"` forces ui-kit's
22
+ * diagnostics on and an explicit `"false"` forces them off, in any environment.
23
+ *
24
+ * The escape hatch in both directions. Consumers whose production build somehow
25
+ * resolves to development can silence us without waiting for a release, and
26
+ * anyone debugging a built app can switch us back on.
27
+ */
28
+ function readDebugFlag() {
29
+ if (typeof window === "undefined" || !window.localStorage) return void 0;
30
+ try {
31
+ const flag = window.localStorage.getItem("UIKIT_DEBUG")?.toLowerCase();
32
+ if (flag === "true") return true;
33
+ if (flag === "false") return false;
7
34
  } catch {}
8
- if (typeof process === "undefined") return false;
9
- const nodeEnv = "development";
35
+ }
36
+ /**
37
+ * Whether to run diagnostics that only a human looking at the page can act on -
38
+ * a warning drawn into the layout, a complaint about a measurement.
39
+ *
40
+ * Off under `test`: jsdom reports `offsetHeight: 0` for everything, so anything
41
+ * keyed off a measurement is not just noisy in a consumer's test run but wrong.
42
+ * Off under `production`, and off when nobody could say what `NODE_ENV` is -
43
+ * a diagnostic shown to end users is worse than a missing one shown to a
44
+ * developer, who still has `UIKIT_DEBUG`.
45
+ *
46
+ * Use {@link isDevEnvOrTest} instead for diagnostics a test run should surface.
47
+ */
48
+ function isDevEnv() {
49
+ const flag = readDebugFlag();
50
+ if (flag !== void 0) return flag;
51
+ const nodeEnv = readNodeEnv();
52
+ if (nodeEnv === void 0) return false;
10
53
  return nodeEnv !== "test" && nodeEnv !== "production";
11
54
  }
55
+ /**
56
+ * Like {@link isDevEnv}, but on under `test` as well.
57
+ *
58
+ * For diagnostics a consumer's test run should still surface - deprecation
59
+ * warnings above all. "You are passing a prop we are about to remove" is worth
60
+ * hearing from CI, and unlike a collapsed-height complaint it cannot be wrong
61
+ * just because jsdom has no layout.
62
+ */
63
+ function isDevEnvOrTest() {
64
+ const flag = readDebugFlag();
65
+ if (flag !== void 0) return flag;
66
+ const nodeEnv = readNodeEnv();
67
+ if (nodeEnv === void 0) return false;
68
+ return nodeEnv !== "production";
69
+ }
12
70
 
13
71
  //#endregion
14
- export { isDevEnv };
72
+ export { isDevEnv, isDevEnvOrTest };
15
73
  //# sourceMappingURL=is-dev-env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-dev-env.js","names":[],"sources":["../../src/utils/is-dev-env.ts"],"sourcesContent":["export function isDevEnv(): boolean {\n if (typeof window !== 'undefined' && window.localStorage) {\n try {\n const flag = window.localStorage.getItem('UIKIT_DEBUG');\n if (flag !== null && flag.toLowerCase() === 'true') return true;\n } catch {\n // localStorage might not be available (private browsing, etc.)\n }\n }\n if (typeof process === 'undefined') return false;\n const nodeEnv = process.env?.['NODE_ENV'];\n return nodeEnv !== 'test' && nodeEnv !== 'production';\n}\n"],"mappings":";;AAAA,SAAgB,WAAoB;AAClC,KAAI,OAAO,WAAW,eAAe,OAAO,aAC1C,KAAI;EACF,MAAM,OAAO,OAAO,aAAa,QAAQ,cAAc;AACvD,MAAI,SAAS,QAAQ,KAAK,aAAa,KAAK,OAAQ,QAAO;SACrD;AAIV,KAAI,OAAO,YAAY,YAAa,QAAO;CAC3C,MAAM;AACN,QAAO,YAAY,UAAU,YAAY"}
1
+ {"version":3,"file":"is-dev-env.js","names":[],"sources":["../../src/utils/is-dev-env.ts"],"sourcesContent":["/**\n * `NODE_ENV` as the environment that is actually running reports it, or\n * `undefined` when nothing can say.\n *\n * The one place in ui-kit allowed to read `NODE_ENV`, because it is the one\n * place that has to survive the build unfolded. A comparison compiled into\n * `dist` freezes whatever `NODE_ENV` the release machine exported and hands\n * every consumer the same answer, so `tsdown.config.ts` defines the expression\n * as itself to stop rolldown inlining it - see the comment there.\n */\nfunction readNodeEnv(): string | undefined {\n try {\n // Deliberately unguarded by `typeof process`: a guard would also gate the\n // *substituted* value, and browser bundlers replace this read without\n // defining `process` itself - so `typeof process === 'undefined'` is true\n // in a Vite dev build that just told us NODE_ENV is \"development\". The\n // catch covers the case the guard was there for: no substitution and no\n // `process` to dereference, e.g. an unbundled `<script type=\"module\">`.\n return process.env.NODE_ENV;\n } catch {\n return undefined;\n }\n}\n\n/**\n * `localStorage.UIKIT_DEBUG` as a tri-state: an explicit `\"true\"` forces ui-kit's\n * diagnostics on and an explicit `\"false\"` forces them off, in any environment.\n *\n * The escape hatch in both directions. Consumers whose production build somehow\n * resolves to development can silence us without waiting for a release, and\n * anyone debugging a built app can switch us back on.\n */\nfunction readDebugFlag(): boolean | undefined {\n if (typeof window === 'undefined' || !window.localStorage) return undefined;\n\n try {\n const flag = window.localStorage.getItem('UIKIT_DEBUG')?.toLowerCase();\n\n if (flag === 'true') return true;\n if (flag === 'false') return false;\n } catch {\n // localStorage might not be available (private browsing, etc.)\n }\n\n return undefined;\n}\n\n/**\n * Whether to run diagnostics that only a human looking at the page can act on -\n * a warning drawn into the layout, a complaint about a measurement.\n *\n * Off under `test`: jsdom reports `offsetHeight: 0` for everything, so anything\n * keyed off a measurement is not just noisy in a consumer's test run but wrong.\n * Off under `production`, and off when nobody could say what `NODE_ENV` is -\n * a diagnostic shown to end users is worse than a missing one shown to a\n * developer, who still has `UIKIT_DEBUG`.\n *\n * Use {@link isDevEnvOrTest} instead for diagnostics a test run should surface.\n */\nexport function isDevEnv(): boolean {\n const flag = readDebugFlag();\n\n if (flag !== undefined) return flag;\n\n const nodeEnv = readNodeEnv();\n\n if (nodeEnv === undefined) return false;\n\n return nodeEnv !== 'test' && nodeEnv !== 'production';\n}\n\n/**\n * Like {@link isDevEnv}, but on under `test` as well.\n *\n * For diagnostics a consumer's test run should still surface - deprecation\n * warnings above all. \"You are passing a prop we are about to remove\" is worth\n * hearing from CI, and unlike a collapsed-height complaint it cannot be wrong\n * just because jsdom has no layout.\n */\nexport function isDevEnvOrTest(): boolean {\n const flag = readDebugFlag();\n\n if (flag !== undefined) return flag;\n\n const nodeEnv = readNodeEnv();\n\n if (nodeEnv === undefined) return false;\n\n return nodeEnv !== 'production';\n}\n"],"mappings":";;;;;;;;;;;;AAUA,SAAS,cAAkC;AACzC,KAAI;AAOF;SACM;AACN;;;;;;;;;;;AAYJ,SAAS,gBAAqC;AAC5C,KAAI,OAAO,WAAW,eAAe,CAAC,OAAO,aAAc,QAAO;AAElE,KAAI;EACF,MAAM,OAAO,OAAO,aAAa,QAAQ,cAAc,EAAE,aAAa;AAEtE,MAAI,SAAS,OAAQ,QAAO;AAC5B,MAAI,SAAS,QAAS,QAAO;SACvB;;;;;;;;;;;;;;AAmBV,SAAgB,WAAoB;CAClC,MAAM,OAAO,eAAe;AAE5B,KAAI,SAAS,OAAW,QAAO;CAE/B,MAAM,UAAU,aAAa;AAE7B,KAAI,YAAY,OAAW,QAAO;AAElC,QAAO,YAAY,UAAU,YAAY;;;;;;;;;;AAW3C,SAAgB,iBAA0B;CACxC,MAAM,OAAO,eAAe;AAE5B,KAAI,SAAS,OAAW,QAAO;CAE/B,MAAM,UAAU,aAAa;AAE7B,KAAI,YAAY,OAAW,QAAO;AAElC,QAAO,YAAY"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/modules.ts
3
3
  function extractModule(promise) {
4
4
  return promise.then((module) => module.default || module);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/promise.ts
3
3
  function timeout(ms = 30) {
4
4
  return new Promise((resolve) => {
package/dist/utils/raf.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/raf.ts
3
3
  /**
4
4
  * Chains N requestAnimationFrame calls and returns a cancel function.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/random.ts
3
3
  function random(min, max) {
4
4
  const realMin = min < max ? min : max;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/range.ts
3
3
  function range(count) {
4
4
  return Array.from({ length: count }, (_, i) => i);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { mergeProps } from "./mergeProps.js";
3
3
  import { Children, cloneElement, createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/react/chain.ts
3
3
  /**
4
4
  * Calls all functions in the order they were chained with the same arguments.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/react/disabledProps.ts
3
3
  /**
4
4
  * Tags where `disabled` is a real HTML attribute. Browsers refuse to dispatch
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/react/forwardRefWithGenerics.tsx
3
3
  /**
4
4
  * A helper for creating forwardRef components with generic types.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { getDisabledElementProps, omitActivationEventProps } from "./disabledProps.js";
4
4
  import { forwardRefWithGenerics } from "./forwardRefWithGenerics.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { useState } from "react";
3
3
  import { useFocus, useFocusVisible } from "react-aria";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { Children, isValidElement } from "react";
3
3
 
4
4
  //#region src/utils/react/isTextOnly.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/react/mapProps.ts
3
3
  /** Converts AriaButtonProps to CubeButtonProps */
4
4
  function ariaToCubeButtonProps(props) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { mergeIds } from "./useId.js";
4
4
  import { mergeStyles } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.176.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
2
2
  //#region src/utils/react/nullableValue.ts
3
3
  function castNullableStringValue(props) {
4
4
  return castNullableField(props, ["value", "defaultValue"], "string", (v) => String(v));