@cube-dev/ui-kit 0.0.0-canary-9f74ccc → 0.0.0-canary-a93b304

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 (526) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  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.d.ts +1 -0
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  57. package/dist/components/content/Item/Item.js +1 -1
  58. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  59. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  60. package/dist/components/content/Layout/GridLayout.js +1 -1
  61. package/dist/components/content/Layout/Layout.js +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 +1 -1
  96. package/dist/components/content/highlightText.js +1 -1
  97. package/dist/components/content/use-auto-tooltip.js +1 -1
  98. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  99. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  100. package/dist/components/fields/Checkbox/context.js +1 -1
  101. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  102. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  103. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  104. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  105. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  106. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  107. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  109. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  110. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  111. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  112. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  113. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  114. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  115. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  116. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  117. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  118. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  119. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  120. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  121. package/dist/components/fields/DatePicker/period.js +1 -1
  122. package/dist/components/fields/DatePicker/props.js +1 -1
  123. package/dist/components/fields/DatePicker/utils.js +1 -1
  124. package/dist/components/fields/FileInput/FileInput.js +1 -1
  125. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  126. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  127. package/dist/components/fields/Input/Input.js +1 -1
  128. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  129. package/dist/components/fields/ListBox/ListBox.js +1 -1
  130. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  131. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
  132. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  133. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  134. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  135. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  136. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  137. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  138. package/dist/components/fields/Picker/Picker.js +1 -1
  139. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  140. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  141. package/dist/components/fields/RadioGroup/context.js +1 -1
  142. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  143. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  144. package/dist/components/fields/Select/Select.js +1 -1
  145. package/dist/components/fields/Slider/Gradation.js +1 -1
  146. package/dist/components/fields/Slider/HueSlider.js +1 -1
  147. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  148. package/dist/components/fields/Slider/Slider.js +1 -1
  149. package/dist/components/fields/Slider/SliderBase.js +1 -1
  150. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  151. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  152. package/dist/components/fields/Slider/elements.js +1 -1
  153. package/dist/components/fields/Slider/index.js +1 -1
  154. package/dist/components/fields/Switch/Switch.js +1 -1
  155. package/dist/components/fields/TextArea/TextArea.js +1 -1
  156. package/dist/components/fields/TextInput/TextInput.js +1 -1
  157. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  158. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  159. package/dist/components/fields/index.d.ts +0 -4
  160. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  161. package/dist/components/form/Form/Field.js +1 -1
  162. package/dist/components/form/Form/Form.js +1 -1
  163. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  164. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  165. package/dist/components/form/Form/SubmitError.js +1 -1
  166. package/dist/components/form/Form/index.js +1 -1
  167. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  168. package/dist/components/form/Form/use-field/use-field.js +1 -1
  169. package/dist/components/form/Form/use-form.js +1 -1
  170. package/dist/components/form/Form/validation.js +1 -1
  171. package/dist/components/form/Label.js +1 -1
  172. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  173. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  174. package/dist/components/form/validation/use-validation-props.js +1 -1
  175. package/dist/components/form/wrapper.js +1 -1
  176. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  177. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  178. package/dist/components/layout/Board/Board.d.ts +55 -1
  179. package/dist/components/layout/Board/Board.js +276 -74
  180. package/dist/components/layout/Board/Board.js.map +1 -1
  181. package/dist/components/layout/Board/BoardProvider.js +1 -1
  182. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  183. package/dist/components/layout/Board/Widget.d.ts +16 -0
  184. package/dist/components/layout/Board/Widget.js +6 -3
  185. package/dist/components/layout/Board/Widget.js.map +1 -1
  186. package/dist/components/layout/Board/WidgetHost.js +85 -15
  187. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  188. package/dist/components/layout/Board/board-context.js +1 -1
  189. package/dist/components/layout/Board/board-context.js.map +1 -1
  190. package/dist/components/layout/Board/board-store.js +2 -2
  191. package/dist/components/layout/Board/board-store.js.map +1 -1
  192. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  193. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  194. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  195. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  196. package/dist/components/layout/Board/grid-core/group-move.js +132 -0
  197. package/dist/components/layout/Board/grid-core/group-move.js.map +1 -0
  198. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  199. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  200. package/dist/components/layout/Board/index.d.ts +2 -1
  201. package/dist/components/layout/Board/index.js +2 -2
  202. package/dist/components/layout/Board/index.js.map +1 -1
  203. package/dist/components/layout/Board/responsive-utils.js +1 -1
  204. package/dist/components/layout/Board/use-board-layout.js +17 -12
  205. package/dist/components/layout/Board/use-board-layout.js.map +1 -1
  206. package/dist/components/layout/Board/use-board-registry.js +139 -20
  207. package/dist/components/layout/Board/use-board-registry.js.map +1 -1
  208. package/dist/components/layout/Board/use-board-select-modifier-key.js +24 -0
  209. package/dist/components/layout/Board/use-board-select-modifier-key.js.map +1 -0
  210. package/dist/components/layout/Board/use-board-selection.d.ts +8 -0
  211. package/dist/components/layout/Board/use-board-selection.js +113 -0
  212. package/dist/components/layout/Board/use-board-selection.js.map +1 -0
  213. package/dist/components/layout/Flex.js +1 -1
  214. package/dist/components/layout/Flow.js +1 -1
  215. package/dist/components/layout/Grid.js +1 -1
  216. package/dist/components/layout/Panel.js +1 -1
  217. package/dist/components/layout/Prefix.js +1 -1
  218. package/dist/components/layout/ResizablePanel.js +1 -1
  219. package/dist/components/layout/Space.js +1 -1
  220. package/dist/components/layout/Suffix.js +1 -1
  221. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  222. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  223. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  224. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  225. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  226. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  227. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  228. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  229. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  230. package/dist/components/navigation/Tabs/styled.js +1 -1
  231. package/dist/components/navigation/Tabs/types.js +1 -1
  232. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  233. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  234. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  235. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  236. package/dist/components/other/Calendar/Calendar.js +1 -1
  237. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  238. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  239. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  240. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  241. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  242. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  243. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  244. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  245. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  246. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  247. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  248. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  249. package/dist/components/overlays/Dialog/context.js +1 -1
  250. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  251. package/dist/components/overlays/Modal/Modal.d.ts +2 -1
  252. package/dist/components/overlays/Modal/Modal.js +1 -1
  253. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  254. package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
  255. package/dist/components/overlays/Modal/Overlay.js +1 -1
  256. package/dist/components/overlays/Modal/Popover.js +1 -1
  257. package/dist/components/overlays/Modal/Tray.js +1 -1
  258. package/dist/components/overlays/Modal/Underlay.js +1 -1
  259. package/dist/components/overlays/Modal/types.d.ts +1 -0
  260. package/dist/components/overlays/Notifications/Notification.js +1 -1
  261. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  262. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  263. package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
  264. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  265. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  266. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  267. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  268. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  269. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  270. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  271. package/dist/components/overlays/Notifications/index.js +1 -1
  272. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  273. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  274. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  275. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  276. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  277. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  278. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  279. package/dist/components/overlays/Toast/index.js +1 -1
  280. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  281. package/dist/components/overlays/Toast/useToast.js +1 -1
  282. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  283. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  284. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  285. package/dist/components/overlays/Tooltip/context.js +1 -1
  286. package/dist/components/portal/Portal.js +1 -1
  287. package/dist/components/portal/PortalProvider.d.ts +2 -0
  288. package/dist/components/portal/PortalProvider.js +1 -1
  289. package/dist/components/portal/index.d.ts +1 -0
  290. package/dist/components/portal/usePortal.js +1 -1
  291. package/dist/components/shared/DraggableCollection.js +1 -1
  292. package/dist/components/shared/InvalidIcon.js +1 -1
  293. package/dist/components/shared/ValidIcon.js +1 -1
  294. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  295. package/dist/components/status/Spin/Cube.js +1 -1
  296. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  297. package/dist/components/status/Spin/Spin.js +1 -1
  298. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  299. package/dist/data/item-themes.js +1 -1
  300. package/dist/data/themes.js +1 -1
  301. package/dist/eslint-plugin/defaults.generated.js +9 -1
  302. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  303. package/dist/eslint-plugin/index.js +1 -1
  304. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  305. package/dist/i18n/I18nProvider.js +1 -1
  306. package/dist/i18n/createFormatter.js +1 -1
  307. package/dist/i18n/index.js +1 -1
  308. package/dist/i18n/instance.js +1 -1
  309. package/dist/i18n/locales/de-DE/uikit.js +9 -1
  310. package/dist/i18n/locales/en-US/uikit.js +9 -1
  311. package/dist/i18n/locales/en-US/uikit.json.d.ts +9 -1
  312. package/dist/i18n/locales/es-ES/uikit.js +9 -1
  313. package/dist/i18n/locales/es-MX/uikit.js +9 -1
  314. package/dist/i18n/locales/fr-FR/uikit.js +9 -1
  315. package/dist/i18n/locales/it-IT/uikit.js +9 -1
  316. package/dist/i18n/locales/ja-JP/uikit.js +9 -1
  317. package/dist/i18n/locales/nb-NO/uikit.js +9 -1
  318. package/dist/i18n/locales/pt-BR/uikit.js +9 -1
  319. package/dist/i18n/locales/pt-PT/uikit.js +9 -1
  320. package/dist/i18n/locales/sv-SE/uikit.js +9 -1
  321. package/dist/i18n/locales/vi-VN/uikit.js +9 -1
  322. package/dist/i18n/locales.js +1 -1
  323. package/dist/i18n/useFormatter.js +1 -1
  324. package/dist/i18n/useI18n.js +1 -1
  325. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  326. package/dist/icons/AdjustmentsIcon.js +1 -1
  327. package/dist/icons/AiIcon.js +1 -1
  328. package/dist/icons/AreaChartIcon.js +1 -1
  329. package/dist/icons/BackwardIcon.js +1 -1
  330. package/dist/icons/BarChartIcon.js +1 -1
  331. package/dist/icons/BellFilledIcon.js +1 -1
  332. package/dist/icons/BellIcon.js +1 -1
  333. package/dist/icons/BooleanIcon.js +1 -1
  334. package/dist/icons/CalendarEditIcon.js +1 -1
  335. package/dist/icons/CalendarIcon.js +1 -1
  336. package/dist/icons/CaretDownIcon.js +1 -1
  337. package/dist/icons/CaretUpIcon.js +1 -1
  338. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  339. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  340. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  341. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  342. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  343. package/dist/icons/ChartBarLineIcon.js +1 -1
  344. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  345. package/dist/icons/ChartBarStackedIcon.js +1 -1
  346. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  347. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  348. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  349. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  350. package/dist/icons/ChartBubbleIcon.js +1 -1
  351. package/dist/icons/ChartDonut2Icon.js +1 -1
  352. package/dist/icons/ChartFunnelIcon.js +1 -1
  353. package/dist/icons/ChartHeatmapIcon.js +1 -1
  354. package/dist/icons/ChartKPIIcon.js +1 -1
  355. package/dist/icons/ChartPie2Icon.js +1 -1
  356. package/dist/icons/ChartScatterIcon.js +1 -1
  357. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  358. package/dist/icons/CheckCircleIcon.js +1 -1
  359. package/dist/icons/CheckIcon.js +1 -1
  360. package/dist/icons/CircleFilledIcon.js +1 -1
  361. package/dist/icons/ClearIcon.js +1 -1
  362. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  363. package/dist/icons/CloseCircleIcon.js +1 -1
  364. package/dist/icons/CloseIcon.js +1 -1
  365. package/dist/icons/CodeIcon.js +1 -1
  366. package/dist/icons/ColumnTotalIcon.js +1 -1
  367. package/dist/icons/CopyIcon.js +1 -1
  368. package/dist/icons/CountIcon.js +1 -1
  369. package/dist/icons/CubeIcon.js +1 -1
  370. package/dist/icons/CubePauseIcon.js +1 -1
  371. package/dist/icons/CubePlayIcon.js +1 -1
  372. package/dist/icons/CurrencyDollarIcon.js +1 -1
  373. package/dist/icons/DangerIcon.js +1 -1
  374. package/dist/icons/DashboardIcon.js +1 -1
  375. package/dist/icons/DatabaseIcon.js +1 -1
  376. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  377. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  378. package/dist/icons/DirectionIcon.js +1 -1
  379. package/dist/icons/DonutIcon.js +1 -1
  380. package/dist/icons/DownIcon.js +1 -1
  381. package/dist/icons/EditIcon.js +1 -1
  382. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  383. package/dist/icons/ExclamationCircleIcon.js +1 -1
  384. package/dist/icons/ExclamationIcon.js +1 -1
  385. package/dist/icons/EyeIcon.js +1 -1
  386. package/dist/icons/EyeInvisibleIcon.js +1 -1
  387. package/dist/icons/FilterIcon.js +1 -1
  388. package/dist/icons/FolderFilledIcon.js +1 -1
  389. package/dist/icons/FolderIcon.js +1 -1
  390. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  391. package/dist/icons/FolderOpenIcon.js +1 -1
  392. package/dist/icons/ForwardIcon.js +1 -1
  393. package/dist/icons/GripVerticalIcon.js +1 -1
  394. package/dist/icons/HierarchyIcon.js +1 -1
  395. package/dist/icons/HierarchyOpenIcon.js +1 -1
  396. package/dist/icons/Icon.js +1 -1
  397. package/dist/icons/InfoCircleIcon.js +1 -1
  398. package/dist/icons/InfoIcon.js +1 -1
  399. package/dist/icons/KeyIcon.js +1 -1
  400. package/dist/icons/LeftIcon.js +1 -1
  401. package/dist/icons/LineChartIcon.js +1 -1
  402. package/dist/icons/LoadingIcon.js +1 -1
  403. package/dist/icons/LockFilledIcon.js +1 -1
  404. package/dist/icons/LockIcon.js +1 -1
  405. package/dist/icons/MoreIcon.js +1 -1
  406. package/dist/icons/NotAllowedIcon.js +1 -1
  407. package/dist/icons/Number123Icon.js +1 -1
  408. package/dist/icons/NumberIcon.js +1 -1
  409. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  410. package/dist/icons/PauseCircleIcon.js +1 -1
  411. package/dist/icons/PauseIcon.js +1 -1
  412. package/dist/icons/PercentageIcon.js +1 -1
  413. package/dist/icons/PieChartIcon.js +1 -1
  414. package/dist/icons/PlayCircleIcon.js +1 -1
  415. package/dist/icons/PlayIcon.js +1 -1
  416. package/dist/icons/PlusIcon.js +1 -1
  417. package/dist/icons/ProgressBarIcon.js +1 -1
  418. package/dist/icons/ReloadIcon.js +1 -1
  419. package/dist/icons/ReportIcon.js +1 -1
  420. package/dist/icons/ReturnIcon.js +1 -1
  421. package/dist/icons/RightIcon.js +1 -1
  422. package/dist/icons/RowTotalsIcon.js +1 -1
  423. package/dist/icons/SchemeIcon.js +1 -1
  424. package/dist/icons/SearchIcon.js +1 -1
  425. package/dist/icons/SemanticQueryIcon.js +1 -1
  426. package/dist/icons/SettingsIcon.js +1 -1
  427. package/dist/icons/ShieldFilledIcon.js +1 -1
  428. package/dist/icons/ShieldIcon.js +1 -1
  429. package/dist/icons/SlashIcon.js +1 -1
  430. package/dist/icons/SparklesIcon.js +1 -1
  431. package/dist/icons/SqlIcon.js +1 -1
  432. package/dist/icons/StatsIcon.js +1 -1
  433. package/dist/icons/StopIcon.js +1 -1
  434. package/dist/icons/StringIcon.js +1 -1
  435. package/dist/icons/SubtotalsIcon.js +1 -1
  436. package/dist/icons/SwitchIcon.js +1 -1
  437. package/dist/icons/TableIcon.js +1 -1
  438. package/dist/icons/ThumbsDownIcon.js +1 -1
  439. package/dist/icons/ThumbsUpIcon.js +1 -1
  440. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  441. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  442. package/dist/icons/ThunderboltIcon.js +1 -1
  443. package/dist/icons/TimeIcon.js +1 -1
  444. package/dist/icons/TrashIcon.js +1 -1
  445. package/dist/icons/UnlockIcon.js +1 -1
  446. package/dist/icons/UpIcon.js +1 -1
  447. package/dist/icons/UserGroupIcon.js +1 -1
  448. package/dist/icons/UserIcon.js +1 -1
  449. package/dist/icons/UserLockIcon.js +1 -1
  450. package/dist/icons/ViewIcon.js +1 -1
  451. package/dist/icons/WarningFilledIcon.js +1 -1
  452. package/dist/icons/WarningIcon.js +1 -1
  453. package/dist/icons/index.d.ts +0 -1
  454. package/dist/icons/wrap-icon.js +1 -1
  455. package/dist/index.d.ts +3 -6
  456. package/dist/index.js +9 -12
  457. package/dist/index.js.map +1 -1
  458. package/dist/provider.js +1 -1
  459. package/dist/providers/TrackingProvider.js +1 -1
  460. package/dist/providers/navigationAdapter.default.js +1 -1
  461. package/dist/tokens/base.js +1 -1
  462. package/dist/tokens/colors.js +1 -1
  463. package/dist/tokens/index.js +1 -1
  464. package/dist/tokens/layout.js +1 -1
  465. package/dist/tokens/lazy-styles.js +1 -1
  466. package/dist/tokens/palette-config.js +1 -1
  467. package/dist/tokens/palette.js +1 -1
  468. package/dist/tokens/shadows.js +1 -1
  469. package/dist/tokens/sizes.js +1 -1
  470. package/dist/tokens/spacing.js +1 -1
  471. package/dist/tokens/typography.js +1 -1
  472. package/dist/utils/ResizeSensor.js +1 -1
  473. package/dist/utils/is-dev-env.js +1 -1
  474. package/dist/utils/modules.js +1 -1
  475. package/dist/utils/promise.js +1 -1
  476. package/dist/utils/raf.js +1 -1
  477. package/dist/utils/random.js +1 -1
  478. package/dist/utils/range.js +1 -1
  479. package/dist/utils/react/RenderCache.js +1 -1
  480. package/dist/utils/react/Slots.js +1 -1
  481. package/dist/utils/react/chain.js +1 -1
  482. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  483. package/dist/utils/react/index.js +1 -1
  484. package/dist/utils/react/interactions.js +1 -1
  485. package/dist/utils/react/isTextOnly.js +1 -1
  486. package/dist/utils/react/mapProps.js +1 -1
  487. package/dist/utils/react/mergeProps.js +1 -1
  488. package/dist/utils/react/nullableValue.js +1 -1
  489. package/dist/utils/react/resolveIcon.js +1 -1
  490. package/dist/utils/react/sharedStore.js +1 -1
  491. package/dist/utils/react/useCombinedRefs.js +1 -1
  492. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  493. package/dist/utils/react/useEventBus.js +1 -1
  494. package/dist/utils/react/useId.js +1 -1
  495. package/dist/utils/react/useIsDarwin.js +1 -1
  496. package/dist/utils/react/useKeySymbols.js +1 -1
  497. package/dist/utils/react/useLayoutEffect.js +1 -1
  498. package/dist/utils/react/useLocalStorage.js +1 -1
  499. package/dist/utils/react/useMergeStyles.js +1 -1
  500. package/dist/utils/react/usePopoverSync.js +1 -1
  501. package/dist/utils/react/useQaProps.js +1 -1
  502. package/dist/utils/react/useViewportSize.js +1 -1
  503. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  504. package/dist/utils/selection.js +1 -1
  505. package/dist/utils/styles.js +1 -1
  506. package/dist/utils/tree.js +1 -1
  507. package/dist/utils/warnings.js +1 -1
  508. package/dist/version.js +2 -2
  509. package/docs/components/layout/Board.md +155 -6
  510. package/package.json +1 -1
  511. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +0 -67
  512. package/dist/components/fields/ColorPicker/ColorPicker.js +0 -211
  513. package/dist/components/fields/ColorPicker/ColorPicker.js.map +0 -1
  514. package/dist/components/fields/ColorPicker/ColorPickerPanel.js +0 -149
  515. package/dist/components/fields/ColorPicker/ColorPickerPanel.js.map +0 -1
  516. package/dist/components/fields/ColorPicker/channels.d.ts +0 -13
  517. package/dist/components/fields/ColorPicker/channels.js +0 -194
  518. package/dist/components/fields/ColorPicker/channels.js.map +0 -1
  519. package/dist/components/fields/ColorPicker/color.d.ts +0 -15
  520. package/dist/components/fields/ColorPicker/color.js +0 -274
  521. package/dist/components/fields/ColorPicker/color.js.map +0 -1
  522. package/dist/components/fields/ColorPicker/index.d.ts +0 -4
  523. package/dist/icons/PipetteIcon.d.ts +0 -12
  524. package/dist/icons/PipetteIcon.js +0 -11
  525. package/dist/icons/PipetteIcon.js.map +0 -1
  526. package/docs/components/fields/ColorPicker.md +0 -265
@@ -1 +0,0 @@
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]+)\\(([^()]+)\\)$/;\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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"}
@@ -1,4 +0,0 @@
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,12 +0,0 @@
1
-
2
- import { CubeIconProps } from "./Icon.js";
3
- import * as react_jsx_runtime0 from "react/jsx-runtime";
4
-
5
- //#region src/icons/PipetteIcon.d.ts
6
- declare const PipetteIcon: {
7
- (props: CubeIconProps): react_jsx_runtime0.JSX.Element;
8
- displayName: string;
9
- };
10
- //#endregion
11
- export { PipetteIcon };
12
- //# sourceMappingURL=PipetteIcon.d.ts.map
@@ -1,11 +0,0 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9f74ccc | Cube Dev Team */
2
- import { wrapIcon } from "./wrap-icon.js";
3
- import { jsx } from "react/jsx-runtime";
4
- import { IconColorPicker } from "@tabler/icons-react";
5
-
6
- //#region src/icons/PipetteIcon.tsx
7
- const PipetteIcon = wrapIcon("PipetteIcon", /* @__PURE__ */ jsx(IconColorPicker, {}));
8
-
9
- //#endregion
10
- export { PipetteIcon };
11
- //# sourceMappingURL=PipetteIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PipetteIcon.js","names":[],"sources":["../../src/icons/PipetteIcon.tsx"],"sourcesContent":["import { IconColorPicker } from '@tabler/icons-react';\n\nimport { wrapIcon } from './wrap-icon';\n\nexport const PipetteIcon = wrapIcon('PipetteIcon', <IconColorPicker />);\n"],"mappings":";;;;;;AAIA,MAAa,cAAc,SAAS,eAAe,oBAAC,oBAAkB,CAAC"}
@@ -1,265 +0,0 @@
1
- # ColorPicker
2
-
3
- An input for a single color. It reads and writes color **text** — hex, `rgb()`,
4
- `hsl()`, `okhsl()`, `okhst()` and `oklch()` — shows the current color as a
5
- swatch, and opens a popover where the color can be dialed in on three
6
- perceptual axes.
7
-
8
- Every conversion goes through [Glaze](https://github.com/tenphi/glaze), so the
9
- canonical value the picker holds is OKHSL: bounded on every channel, and always
10
- inside the sRGB gamut. That is what makes an out-of-gamut state impossible and
11
- lets the same value be re-serialized into any of the supported notations without
12
- drift.
13
-
14
- ## When to Use
15
-
16
- - Theme and branding forms — a seed color, an accent, a chart series color
17
- - Anywhere a color has to be typed *or* explored, rather than chosen from a
18
- fixed palette
19
- - When the stored format matters (a design token file wants `oklch()`, a legacy
20
- API wants hex) and the input has to guarantee it
21
-
22
- Reach for a `RadioGroup` or `Picker` of swatches instead when the choice is
23
- limited to a handful of approved colors.
24
-
25
- ## Component
26
-
27
- ---
28
-
29
- ### Properties
30
-
31
- - **`value`** `string | null` — The selected color (controlled)
32
- - **`defaultValue`** `string | null` — The selected color (uncontrolled)
33
- - **`onChange`** `(value: string | null) => void` — Fired with the color string, or `null` when the field is cleared
34
- - **`format`** `'hex' | 'rgb' | 'hsl' | 'okhsl' | 'okhst' | 'oklch'` (default: `hex`) — Notation the value is written in, and the one `forced` mode displays
35
- - **`formatMode`** `'forced' | 'derive' | 'free'` (default: `forced`) — How strictly the input text is tied to `format`
36
- - **`defaultSpace`** `'hst' | 'lch' | 'rgb'` (default: `hst`) — Color concept the popover opens with
37
- - **`placeholder`** `string` (default: `Pick a color`) — Text shown while the field is empty
38
- - **`size`** `'small' | 'medium' | 'large' | (string & {})` (default: `medium`) — Input size
39
- - **`isOpen`** `boolean` — Whether the popover is open (controlled)
40
- - **`defaultOpen`** `boolean` (default: `false`) — Whether the popover is open initially
41
- - **`onOpenChange`** `(isOpen: boolean) => void` — Fired when the popover opens or closes
42
- - **`shouldFlip`** `boolean` (default: `true`) — Whether the popover may flip to the other side of the input
43
- - **`onFocus`** `(event: FocusEvent) => void` — Fired when the text input receives focus
44
- - **`onBlur`** `(event: FocusEvent) => void` — Fired when the text input loses focus
45
-
46
- Named CSS colors (`red`, `rebeccapurple`) are **not** accepted — they are not a
47
- color space, and Glaze does not resolve them either. Alpha is parsed but
48
- dropped: the value is always opaque.
49
-
50
- ### Base Properties
51
-
52
- Supports [Base properties](../../BaseProperties.md)
53
-
54
- ### Field Properties
55
-
56
- Supports all [Field properties](../../FieldProperties.md)
57
-
58
- ### Styling Properties
59
-
60
- #### styles
61
-
62
- Customizes the input wrapper — the element that owns the border, fill and size.
63
-
64
- **Sub-elements:**
65
-
66
- - `Prefix` — the container holding the color swatch
67
- - `Suffix` — the container holding the popover trigger and the validation state
68
- - `InputIcon` — the swatch slot
69
- - `State` — the validation / loading indicator
70
-
71
- #### inputStyles
72
-
73
- Customizes the `<input>` element itself.
74
-
75
- #### triggerStyles
76
-
77
- Customizes the popover trigger button.
78
-
79
- #### swatchStyles
80
-
81
- Customizes the color swatch shown inside the input.
82
-
83
- ### Style Properties
84
-
85
- These properties allow direct style application without using the `styles` prop:
86
-
87
- - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
88
- - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
89
- - **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
90
- - **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
91
- - **Color:** `color`, `fill`, `fade`, `image`
92
-
93
- ### Modifiers
94
-
95
- The `mods` property accepts the following modifiers you can override:
96
-
97
- | Modifier | Type | Description |
98
- | ---------- | --------- | ------------------------------------------------- |
99
- | `focused` | `boolean` | The text input has focus |
100
- | `hovered` | `boolean` | The pointer is over the input |
101
- | `disabled` | `boolean` | The picker is disabled |
102
- | `valid` | `boolean` | The field is in the valid state |
103
- | `invalid` | `boolean` | The field is in the invalid state |
104
- | `prefix` | `boolean` | A prefix (the swatch) is rendered |
105
- | `suffix` | `boolean` | A suffix (the trigger) is rendered |
106
-
107
- The swatch carries its own `empty` modifier while there is no color to show.
108
-
109
- ## Format modes
110
-
111
- The three modes differ in how much freedom the *text* gets. The value is always
112
- a real color in every one of them.
113
-
114
- | Mode | Text | Value |
115
- | -------- | ----------------------------------- | ---------------------------------------------------- |
116
- | `forced` | Rewritten in `format` on blur/Enter | Always written in `format` |
117
- | `derive` | Left exactly as typed | Normalized in the notation the text is written in |
118
- | `free` | Left exactly as typed | The text itself, verbatim |
119
-
120
- In every mode an entry that is not a color is rejected: the previous valid color
121
- stays the value while it is being typed, and the text snaps back to it on blur.
122
- Emptying the field is not an error — it commits `null`.
123
-
124
- ```jsx
125
- // A design-token form that must store OKLCH
126
- <ColorPicker label="Accent" format="oklch" onChange={setAccent} />
127
-
128
- // A CSS editor: keep whatever the author wrote, but guarantee it parses
129
- <ColorPicker label="Color" formatMode="free" onChange={setCss} />
130
- ```
131
-
132
- ## Color spaces
133
-
134
- The popover edits one canonical color through three sets of axes:
135
-
136
- | Space | Axes | Good for |
137
- | ----- | ----------------------------- | ----------------------------------------------------- |
138
- | `hst` | Hue, Saturation, Tone (OKHST) | Building ramps — equal tone steps read as equal steps |
139
- | `lch` | Lightness, Chroma, Hue (OKLCH)| Matching a value from a design-token file |
140
- | `rgb` | Red, Green, Blue | Matching a value from a legacy palette or a screenshot|
141
-
142
- Each of these opens on its own space; the switcher inside the popover moves
143
- between them at any time.
144
-
145
- `H` means the same angle in HST and LCH, so the hue strip is identical in both.
146
- The chroma slider is bounded by the sRGB gamut at the current lightness and hue,
147
- which is why its range changes as `L` moves.
148
-
149
- ## Examples
150
-
151
- ### Basic usage
152
-
153
- ```jsx
154
- <ColorPicker label="Brand color" defaultValue="#7a4dbf" />
155
- ```
156
-
157
- ### Controlled
158
-
159
- ```jsx
160
- const [color, setColor] = useState('#7a4dbf');
161
-
162
- <ColorPicker label="Brand color" value={color} onChange={setColor} />;
163
- ```
164
-
165
- ### Inside a form
166
-
167
- ```jsx
168
- <Form onSubmit={onSubmit}>
169
- <ColorPicker
170
- name="accent"
171
- label="Accent color"
172
- format="oklch"
173
- rules={[{ required: true, message: 'Pick an accent color' }]}
174
- />
175
- </Form>
176
- ```
177
-
178
- ### Opening on a specific space
179
-
180
- ```jsx
181
- <ColorPicker label="Series color" defaultSpace="rgb" defaultValue="#26fcb2" />
182
- ```
183
-
184
- ### Using the value as a style
185
-
186
- Because the emitted value is a plain color string, it can go straight into a
187
- tasty style — including the `okhsl()` and `okhst()` notations, which tasty
188
- parses natively.
189
-
190
- ```jsx
191
- const [color, setColor] = useState('okhst(264 80% 60%)');
192
-
193
- <>
194
- <ColorPicker label="Fill" format="okhst" value={color} onChange={setColor} />
195
- <Block fill={color} height="10x" radius="1r" />
196
- </>;
197
- ```
198
-
199
- ## Accessibility
200
-
201
- ### Keyboard Navigation
202
-
203
- - `Tab` — moves focus to the text input, then to the popover trigger
204
- - `Enter` — commits and normalizes the typed color without leaving the field
205
- - `Space` / `Enter` on the trigger — opens the popover
206
- - `Escape` — closes the popover
207
- - `Left` / `Right`, `Home` / `End` on a channel slider — moves that channel
208
- - `Left` / `Right` on the space switcher — moves between HST, LCH and RGB
209
-
210
- ### Screen Reader Support
211
-
212
- - The text input announces as a textbox with the field's label
213
- - The trigger announces as "Open the color picker"
214
- - The popover announces as a dialog named "Color picker"
215
- - Each channel slider sits in a group named after its axis (`Hue`,
216
- `Saturation`, `Tone`, `Lightness`, `Chroma`, `Red`, `Green`, `Blue`)
217
- - The swatch is decorative and is not announced — the text carries the value
218
-
219
- ### ARIA Properties
220
-
221
- - `aria-label` — names the field when there is no visible label
222
- - `aria-describedby` — wired to the field description by the form system
223
-
224
- ## Best Practices
225
-
226
- 1. **Do**: name the field, so the text input is announced meaningfully
227
-
228
- ```jsx
229
- <ColorPicker label="Brand color" />
230
- ```
231
-
232
- 2. **Don't**: rely on the swatch alone to convey the value
233
-
234
- ```jsx
235
- <ColorPicker aria-label="" />
236
- ```
237
-
238
- 3. **Do**: pick the `format` your backend stores, and leave `formatMode` at
239
- `forced` so the two can never disagree.
240
-
241
- 4. **Don't**: use `free` mode when the value is later parsed by something
242
- stricter than a browser — the text is passed through as written.
243
-
244
- ## Integration with Forms
245
-
246
- This component supports all
247
- [Field properties](../../FieldProperties.md) when used
248
- within a Form. The field value is the color string, and clearing the input
249
- stores `null`, which makes `required` rules behave as expected.
250
-
251
- ## Suggested Improvements
252
-
253
- - An eyedropper that samples a pixel from the page, where
254
- [`EyeDropper`](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper) is
255
- available
256
- - Optional alpha support, which the canonical value currently drops
257
- - A row of recent or preset swatches inside the popover
258
- - Editable numeric inputs next to each channel slider, for exact entry without
259
- going through the text field
260
-
261
- ## Related Components
262
-
263
- - [HueSlider](./HueSlider.md) — just the hue axis, when only a hue is needed
264
- - [Slider](./Slider.md) — the primitive each channel is built from
265
- - [TextInput](./TextInput.md) — the input chrome this component reuses