@cube-dev/ui-kit 0.0.0-canary-694a764 → 0.0.0-canary-dcbc0fb

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 (568) 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.d.ts +4 -4
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/Root.js.map +1 -1
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.d.ts +1 -0
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  58. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  59. package/dist/components/content/Item/Item.js +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.d.ts +14 -14
  89. package/dist/components/content/Text.js +1 -1
  90. package/dist/components/content/TextItem/TextItem.js +1 -1
  91. package/dist/components/content/Title.js +1 -1
  92. package/dist/components/content/Tree/Tree.js +1 -1
  93. package/dist/components/content/Tree/TreeNode.js +1 -1
  94. package/dist/components/content/Tree/styled.js +1 -1
  95. package/dist/components/content/Tree/tree-index.js +1 -1
  96. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  97. package/dist/components/content/Tree/use-load-data.js +1 -1
  98. package/dist/components/content/highlightText.js +1 -1
  99. package/dist/components/content/use-auto-tooltip.js +1 -1
  100. package/dist/components/data/DataTable/DataTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  106. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  107. package/dist/components/data/TableBase/RowCollection.js +1 -1
  108. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  109. package/dist/components/data/TableBase/TableRow.js +1 -1
  110. package/dist/components/data/TableBase/TableView.js +1 -1
  111. package/dist/components/data/TableBase/column-menu.js +1 -1
  112. package/dist/components/data/TableBase/column-tint.js +1 -1
  113. package/dist/components/data/TableBase/row-menu.js +1 -1
  114. package/dist/components/data/TableBase/styled.d.ts +2 -1
  115. package/dist/components/data/TableBase/styled.js +1 -1
  116. package/dist/components/data/TableBase/types.js +1 -1
  117. package/dist/components/data/TableBase/use-cell-selection.d.ts +1 -0
  118. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  119. package/dist/components/data/TableBase/use-column-order.js +1 -1
  120. package/dist/components/data/TableBase/use-container-width.js +1 -1
  121. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  122. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  123. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  124. package/dist/components/data/TableBase/use-table-search.js +1 -1
  125. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  126. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  127. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  128. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  129. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  130. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  131. package/dist/components/fields/Checkbox/context.js +1 -1
  132. package/dist/components/fields/ColorInput/ColorInput.js +3 -2
  133. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  134. package/dist/components/fields/ColorPicker/ColorPicker.js +2 -2
  135. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  136. package/dist/components/fields/{color → ColorSwatch}/ColorSwatch.d.ts +8 -2
  137. package/dist/components/fields/{color → ColorSwatch}/ColorSwatch.js +14 -6
  138. package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -0
  139. package/dist/components/fields/ColorSwatch/index.d.ts +2 -0
  140. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  141. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  142. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  143. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  144. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  145. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  146. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  148. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  149. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  150. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  151. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  152. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  153. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  157. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  158. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  159. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  160. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  161. package/dist/components/fields/DatePicker/period.js +1 -1
  162. package/dist/components/fields/DatePicker/props.js +1 -1
  163. package/dist/components/fields/DatePicker/utils.js +1 -1
  164. package/dist/components/fields/FileInput/FileInput.js +1 -1
  165. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  166. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  167. package/dist/components/fields/Input/Input.js +1 -1
  168. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  169. package/dist/components/fields/ListBox/ListBox.js +1 -1
  170. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  171. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
  172. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  173. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  174. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  175. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  176. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  177. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  178. package/dist/components/fields/Picker/Picker.js +1 -1
  179. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  180. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -1
  181. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  182. package/dist/components/fields/RadioGroup/context.js +1 -1
  183. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  184. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  185. package/dist/components/fields/Select/Select.js +1 -1
  186. package/dist/components/fields/Slider/Gradation.js +1 -1
  187. package/dist/components/fields/Slider/HueSlider.js +15 -2
  188. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  189. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  190. package/dist/components/fields/Slider/Slider.js +1 -1
  191. package/dist/components/fields/Slider/SliderBase.js +1 -1
  192. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  193. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  194. package/dist/components/fields/Slider/elements.js +1 -1
  195. package/dist/components/fields/Slider/index.js +1 -1
  196. package/dist/components/fields/Switch/Switch.js +1 -1
  197. package/dist/components/fields/TextArea/TextArea.js +1 -1
  198. package/dist/components/fields/TextInput/TextInput.js +1 -1
  199. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  200. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  201. package/dist/components/fields/color/ColorPanel.js +1 -1
  202. package/dist/components/fields/color/channels.js +1 -1
  203. package/dist/components/fields/color/color.js +1 -1
  204. package/dist/components/fields/color/context.js +1 -1
  205. package/dist/components/fields/color/index.d.ts +0 -1
  206. package/dist/components/fields/index.d.ts +2 -1
  207. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  208. package/dist/components/form/Form/Field.js +1 -1
  209. package/dist/components/form/Form/Form.js +1 -1
  210. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  211. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  212. package/dist/components/form/Form/SubmitError.js +1 -1
  213. package/dist/components/form/Form/index.js +1 -1
  214. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  215. package/dist/components/form/Form/use-field/use-field.js +1 -1
  216. package/dist/components/form/Form/use-form.js +1 -1
  217. package/dist/components/form/Form/validation.js +1 -1
  218. package/dist/components/form/Label.js +1 -1
  219. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  220. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  221. package/dist/components/form/validation/use-validation-props.js +1 -1
  222. package/dist/components/form/wrapper.js +1 -1
  223. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  224. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  225. package/dist/components/layout/Board/Board.js +1 -1
  226. package/dist/components/layout/Board/BoardProvider.js +1 -1
  227. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  228. package/dist/components/layout/Board/Widget.js +1 -1
  229. package/dist/components/layout/Board/WidgetHost.js +1 -1
  230. package/dist/components/layout/Board/board-context.js +1 -1
  231. package/dist/components/layout/Board/board-store.js +1 -1
  232. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  233. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  234. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  235. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  236. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  237. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  238. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  239. package/dist/components/layout/Board/index.js +1 -1
  240. package/dist/components/layout/Board/responsive-utils.js +1 -1
  241. package/dist/components/layout/Board/use-board-layout.js +1 -1
  242. package/dist/components/layout/Board/use-board-registry.js +1 -1
  243. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  244. package/dist/components/layout/Board/use-board-selection.js +1 -1
  245. package/dist/components/layout/Flex.js +1 -1
  246. package/dist/components/layout/Flow.js +1 -1
  247. package/dist/components/layout/Grid.js +1 -1
  248. package/dist/components/layout/Panel.js +1 -1
  249. package/dist/components/layout/Prefix.js +1 -1
  250. package/dist/components/layout/ResizablePanel.js +1 -1
  251. package/dist/components/layout/Space.js +1 -1
  252. package/dist/components/layout/Suffix.js +1 -1
  253. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  254. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  255. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  256. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  257. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  258. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  259. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  260. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  261. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  262. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  263. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  264. package/dist/components/navigation/Tabs/styled.js +1 -1
  265. package/dist/components/navigation/Tabs/types.js +1 -1
  266. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  267. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  268. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  269. package/dist/components/other/Calendar/Calendar.js +1 -1
  270. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  271. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  272. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  273. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  274. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  275. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  276. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  277. package/dist/components/other/Calendar/styled.js +1 -1
  278. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  279. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  280. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  281. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  282. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  283. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  284. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  285. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  286. package/dist/components/overlays/Dialog/context.js +1 -1
  287. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  288. package/dist/components/overlays/Modal/Modal.d.ts +2 -1
  289. package/dist/components/overlays/Modal/Modal.js +1 -1
  290. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  291. package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
  292. package/dist/components/overlays/Modal/Overlay.js +1 -1
  293. package/dist/components/overlays/Modal/Popover.js +1 -1
  294. package/dist/components/overlays/Modal/Tray.js +1 -1
  295. package/dist/components/overlays/Modal/Underlay.js +1 -1
  296. package/dist/components/overlays/Modal/types.d.ts +1 -0
  297. package/dist/components/overlays/Notifications/Notification.js +1 -1
  298. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  299. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  300. package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
  301. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  302. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  303. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  304. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  305. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  306. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  307. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  308. package/dist/components/overlays/Notifications/index.js +1 -1
  309. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  310. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  311. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  312. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  313. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  314. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  315. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  316. package/dist/components/overlays/Toast/index.js +1 -1
  317. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  318. package/dist/components/overlays/Toast/useToast.js +1 -1
  319. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  320. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  321. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  322. package/dist/components/overlays/Tooltip/context.js +1 -1
  323. package/dist/components/portal/Portal.js +1 -1
  324. package/dist/components/portal/PortalProvider.d.ts +2 -0
  325. package/dist/components/portal/PortalProvider.js +1 -1
  326. package/dist/components/portal/index.d.ts +1 -0
  327. package/dist/components/portal/usePortal.js +1 -1
  328. package/dist/components/shared/DraggableCollection.js +1 -1
  329. package/dist/components/shared/InvalidIcon.js +1 -1
  330. package/dist/components/shared/ValidIcon.js +1 -1
  331. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  332. package/dist/components/status/Spin/Cube.js +1 -1
  333. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  334. package/dist/components/status/Spin/Spin.js +1 -1
  335. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  336. package/dist/data/item-themes.js +1 -1
  337. package/dist/data/themes.js +1 -1
  338. package/dist/eslint-plugin/defaults.generated.js +1 -1
  339. package/dist/eslint-plugin/index.js +1 -1
  340. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  341. package/dist/i18n/I18nProvider.js +1 -1
  342. package/dist/i18n/createFormatter.js +1 -1
  343. package/dist/i18n/index.js +1 -1
  344. package/dist/i18n/instance.js +1 -1
  345. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  346. package/dist/i18n/locales/en-US/uikit.js +1 -1
  347. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  348. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  349. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  350. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  351. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  352. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  353. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  354. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  355. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  356. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  357. package/dist/i18n/locales.js +1 -1
  358. package/dist/i18n/useFormatter.js +1 -1
  359. package/dist/i18n/useI18n.js +1 -1
  360. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  361. package/dist/icons/AdjustmentsIcon.js +1 -1
  362. package/dist/icons/AiIcon.js +1 -1
  363. package/dist/icons/AreaChartIcon.js +1 -1
  364. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  365. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  366. package/dist/icons/BackwardIcon.js +1 -1
  367. package/dist/icons/BarChartIcon.js +1 -1
  368. package/dist/icons/BellFilledIcon.js +1 -1
  369. package/dist/icons/BellIcon.js +1 -1
  370. package/dist/icons/BooleanIcon.js +1 -1
  371. package/dist/icons/CalendarEditIcon.js +1 -1
  372. package/dist/icons/CalendarIcon.js +1 -1
  373. package/dist/icons/CaretDownIcon.js +1 -1
  374. package/dist/icons/CaretUpIcon.js +1 -1
  375. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  376. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  377. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  378. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  379. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  380. package/dist/icons/ChartBarLineIcon.js +1 -1
  381. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  382. package/dist/icons/ChartBarStackedIcon.js +1 -1
  383. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  384. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  385. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  386. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  387. package/dist/icons/ChartBubbleIcon.js +1 -1
  388. package/dist/icons/ChartDonut2Icon.js +1 -1
  389. package/dist/icons/ChartFunnelIcon.js +1 -1
  390. package/dist/icons/ChartHeatmapIcon.js +1 -1
  391. package/dist/icons/ChartKPIIcon.js +1 -1
  392. package/dist/icons/ChartPie2Icon.js +1 -1
  393. package/dist/icons/ChartScatterIcon.js +1 -1
  394. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  395. package/dist/icons/CheckCircleIcon.js +1 -1
  396. package/dist/icons/CheckIcon.js +1 -1
  397. package/dist/icons/CircleFilledIcon.js +1 -1
  398. package/dist/icons/ClearIcon.js +1 -1
  399. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  400. package/dist/icons/CloseCircleIcon.js +1 -1
  401. package/dist/icons/CloseIcon.js +1 -1
  402. package/dist/icons/CodeIcon.js +1 -1
  403. package/dist/icons/ColumnTotalIcon.js +1 -1
  404. package/dist/icons/CopyIcon.js +1 -1
  405. package/dist/icons/CountIcon.js +1 -1
  406. package/dist/icons/CubeIcon.js +1 -1
  407. package/dist/icons/CubePauseIcon.js +1 -1
  408. package/dist/icons/CubePlayIcon.js +1 -1
  409. package/dist/icons/CurrencyDollarIcon.js +1 -1
  410. package/dist/icons/DangerIcon.js +1 -1
  411. package/dist/icons/DashboardIcon.js +1 -1
  412. package/dist/icons/DatabaseIcon.js +1 -1
  413. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  414. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  415. package/dist/icons/DirectionIcon.js +1 -1
  416. package/dist/icons/DonutIcon.js +1 -1
  417. package/dist/icons/DownIcon.js +1 -1
  418. package/dist/icons/EditIcon.js +1 -1
  419. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  420. package/dist/icons/ExclamationCircleIcon.js +1 -1
  421. package/dist/icons/ExclamationIcon.js +1 -1
  422. package/dist/icons/EyeIcon.js +1 -1
  423. package/dist/icons/EyeInvisibleIcon.js +1 -1
  424. package/dist/icons/FilterIcon.js +1 -1
  425. package/dist/icons/FolderFilledIcon.js +1 -1
  426. package/dist/icons/FolderIcon.js +1 -1
  427. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  428. package/dist/icons/FolderOpenIcon.js +1 -1
  429. package/dist/icons/ForwardIcon.js +1 -1
  430. package/dist/icons/GripVerticalIcon.js +1 -1
  431. package/dist/icons/HierarchyIcon.js +1 -1
  432. package/dist/icons/HierarchyOpenIcon.js +1 -1
  433. package/dist/icons/Icon.js +1 -1
  434. package/dist/icons/InfoCircleIcon.js +1 -1
  435. package/dist/icons/InfoIcon.js +1 -1
  436. package/dist/icons/KeyIcon.js +1 -1
  437. package/dist/icons/LeftIcon.js +1 -1
  438. package/dist/icons/LineChartIcon.js +1 -1
  439. package/dist/icons/LoadingIcon.js +1 -1
  440. package/dist/icons/LockFilledIcon.js +1 -1
  441. package/dist/icons/LockIcon.js +1 -1
  442. package/dist/icons/MoreIcon.js +1 -1
  443. package/dist/icons/NotAllowedIcon.js +1 -1
  444. package/dist/icons/Number123Icon.js +1 -1
  445. package/dist/icons/NumberIcon.js +1 -1
  446. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  447. package/dist/icons/PauseCircleIcon.js +1 -1
  448. package/dist/icons/PauseIcon.js +1 -1
  449. package/dist/icons/PercentageIcon.js +1 -1
  450. package/dist/icons/PieChartIcon.js +1 -1
  451. package/dist/icons/PipetteIcon.js +1 -1
  452. package/dist/icons/PlayCircleIcon.js +1 -1
  453. package/dist/icons/PlayIcon.js +1 -1
  454. package/dist/icons/PlusIcon.js +1 -1
  455. package/dist/icons/ProgressBarIcon.js +1 -1
  456. package/dist/icons/ReloadIcon.js +1 -1
  457. package/dist/icons/ReportIcon.js +1 -1
  458. package/dist/icons/ReturnIcon.js +1 -1
  459. package/dist/icons/RightIcon.js +1 -1
  460. package/dist/icons/RowTotalsIcon.js +1 -1
  461. package/dist/icons/SchemeIcon.js +1 -1
  462. package/dist/icons/SearchIcon.js +1 -1
  463. package/dist/icons/SemanticQueryIcon.js +1 -1
  464. package/dist/icons/SettingsIcon.js +1 -1
  465. package/dist/icons/ShieldFilledIcon.js +1 -1
  466. package/dist/icons/ShieldIcon.js +1 -1
  467. package/dist/icons/SlashIcon.js +1 -1
  468. package/dist/icons/SparklesIcon.js +1 -1
  469. package/dist/icons/SqlIcon.js +1 -1
  470. package/dist/icons/StatsIcon.js +1 -1
  471. package/dist/icons/StopIcon.js +1 -1
  472. package/dist/icons/StringIcon.js +1 -1
  473. package/dist/icons/SubtotalsIcon.js +1 -1
  474. package/dist/icons/SwitchIcon.js +1 -1
  475. package/dist/icons/TableIcon.js +1 -1
  476. package/dist/icons/ThumbsDownIcon.js +1 -1
  477. package/dist/icons/ThumbsUpIcon.js +1 -1
  478. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  479. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  480. package/dist/icons/ThunderboltIcon.js +1 -1
  481. package/dist/icons/TimeIcon.js +1 -1
  482. package/dist/icons/TrashIcon.js +1 -1
  483. package/dist/icons/UnlockIcon.js +1 -1
  484. package/dist/icons/UpIcon.js +1 -1
  485. package/dist/icons/UserGroupIcon.js +1 -1
  486. package/dist/icons/UserIcon.js +1 -1
  487. package/dist/icons/UserLockIcon.js +1 -1
  488. package/dist/icons/ViewIcon.js +1 -1
  489. package/dist/icons/WarningFilledIcon.js +1 -1
  490. package/dist/icons/WarningIcon.js +1 -1
  491. package/dist/icons/wrap-icon.js +1 -1
  492. package/dist/index.d.ts +4 -3
  493. package/dist/index.js +5 -4
  494. package/dist/index.js.map +1 -1
  495. package/dist/probe/canonicalize.js +1 -1
  496. package/dist/probe/css.js +1 -1
  497. package/dist/probe/index.js +1 -1
  498. package/dist/provider.js +1 -1
  499. package/dist/providers/TrackingProvider.js +1 -1
  500. package/dist/providers/navigationAdapter.default.js +1 -1
  501. package/dist/tokens/base.js +1 -1
  502. package/dist/tokens/color-seed.d.ts +44 -0
  503. package/dist/tokens/color-seed.js +48 -0
  504. package/dist/tokens/color-seed.js.map +1 -0
  505. package/dist/tokens/color-theme.d.ts +8 -1
  506. package/dist/tokens/color-theme.js +19 -7
  507. package/dist/tokens/color-theme.js.map +1 -1
  508. package/dist/tokens/colors.js +1 -1
  509. package/dist/tokens/index.d.ts +2 -1
  510. package/dist/tokens/index.js +3 -2
  511. package/dist/tokens/index.js.map +1 -1
  512. package/dist/tokens/layout.js +1 -1
  513. package/dist/tokens/lazy-styles.js +1 -1
  514. package/dist/tokens/palette-config.d.ts +175 -9
  515. package/dist/tokens/palette-config.js +62 -10
  516. package/dist/tokens/palette-config.js.map +1 -1
  517. package/dist/tokens/palette.js +398 -157
  518. package/dist/tokens/palette.js.map +1 -1
  519. package/dist/tokens/shadows.js +1 -1
  520. package/dist/tokens/sizes.js +1 -1
  521. package/dist/tokens/spacing.js +1 -1
  522. package/dist/tokens/typography.js +1 -1
  523. package/dist/utils/ResizeSensor.js +1 -1
  524. package/dist/utils/is-dev-env.js +1 -1
  525. package/dist/utils/modules.js +1 -1
  526. package/dist/utils/promise.js +1 -1
  527. package/dist/utils/raf.js +1 -1
  528. package/dist/utils/random.js +1 -1
  529. package/dist/utils/range.js +1 -1
  530. package/dist/utils/react/RenderCache.js +1 -1
  531. package/dist/utils/react/Slots.js +1 -1
  532. package/dist/utils/react/chain.js +1 -1
  533. package/dist/utils/react/disabledProps.js +1 -1
  534. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  535. package/dist/utils/react/index.js +1 -1
  536. package/dist/utils/react/interactions.js +1 -1
  537. package/dist/utils/react/isTextOnly.js +1 -1
  538. package/dist/utils/react/mapProps.js +1 -1
  539. package/dist/utils/react/mergeProps.js +1 -1
  540. package/dist/utils/react/nullableValue.js +1 -1
  541. package/dist/utils/react/resolveIcon.js +1 -1
  542. package/dist/utils/react/sharedStore.js +1 -1
  543. package/dist/utils/react/useBufferedValue.js +1 -1
  544. package/dist/utils/react/useCombinedRefs.js +1 -1
  545. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  546. package/dist/utils/react/useEventBus.js +1 -1
  547. package/dist/utils/react/useId.js +1 -1
  548. package/dist/utils/react/useIsDarwin.js +1 -1
  549. package/dist/utils/react/useKeySymbols.js +1 -1
  550. package/dist/utils/react/useLayoutEffect.js +1 -1
  551. package/dist/utils/react/useLocalStorage.js +1 -1
  552. package/dist/utils/react/useMergeStyles.js +1 -1
  553. package/dist/utils/react/usePopoverSync.js +1 -1
  554. package/dist/utils/react/useQaProps.js +1 -1
  555. package/dist/utils/react/useViewportSize.js +1 -1
  556. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  557. package/dist/utils/selection.js +1 -1
  558. package/dist/utils/styles.js +1 -1
  559. package/dist/utils/tree.js +1 -1
  560. package/dist/utils/warnings.js +1 -1
  561. package/dist/version.js +2 -2
  562. package/docs/Theming.md +306 -30
  563. package/docs/components/fields/ColorSwatch.md +148 -0
  564. package/docs/glaze/api.md +117 -38
  565. package/docs/glaze/methodology.md +15 -13
  566. package/docs/glaze/okhst.md +4 -0
  567. package/package.json +2 -2
  568. package/dist/components/fields/color/ColorSwatch.js.map +0 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-694a764 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
2
2
  //#region src/utils/warnings.ts
3
3
  const SUGGESTED_PROP_MAP = {
4
4
  disabled: "isDisabled",
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-694a764 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.0.0-canary-694a764";
3
+ const VERSION = "0.0.0-canary-dcbc0fb";
4
4
  const TASTY_VERSION = "3.0.1";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
package/docs/Theming.md CHANGED
@@ -5,6 +5,10 @@ handful of seeds: an accent hue, a base hue, a saturation, and a hue per status
5
5
  theme. Those seeds are tunable at runtime — change one and every token re-resolves, in light,
6
6
  dark, and high-contrast schemes at once.
7
7
 
8
+ The accent and base zones can each be seeded by a **color** instead of a hue, which is
9
+ usually what you have: `accentColor: '#2F5BFF'` rather than `hue: 266`. See
10
+ [Two zones, two ways to seed them](#two-zones-two-ways-to-seed-them).
11
+
8
12
  ```ts
9
13
  import { setPaletteConfig } from '@cube-dev/ui-kit';
10
14
 
@@ -23,13 +27,17 @@ value so this stays true.
23
27
 
24
28
  | Option | Scope | Default |
25
29
  | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
30
+ | `accentColor` | **Accent** zone seeded by a color. Derives the hue, the saturation (with `pastel` off) and the accent **tone**, so the brand fill renders as the color you passed. | unset |
31
+ | `baseColor` | **Base** zone seeded by a color. Hue **and saturation** (clipped to 50); its tone is discarded. | unset |
26
32
  | `hue` | **Accent** hue in degrees — the brand. Drives the `accent-*` family, `primary` / `purple` / `special`, and the brand-tinted `focus`, loading faces and disabled chip. | `280.3` |
27
33
  | `baseHue` | **Base** hue in degrees — the neutral chrome: `surface` and its ladder, the `surface-text*` ramp, `border`, `placeholder`. | inherits `hue` |
28
- | `saturation` | Seed saturation (0–100) for the `default` theme, and the fallback for every theme that sets none. | `100` |
34
+ | `saturation` | Seed saturation (0–100) for the `default` theme, and the fallback for every theme that sets none. Setting it **turns `pastel` off**, which is the path it belongs to. | `100` |
35
+ | `baseSaturation` | Seed saturation (0–100) of the **base** zone — the same family `baseHue` governs. On the same scale as `saturation`; the shipped chrome is `12`. | `baseColor`'s, clipped to 50, else `(accentColor ?? saturation) × 0.12` |
36
+ | `surfaceMode` | Global. `'tinted'` moves the neutral surface ramp two tones off the end of the tone scale, which is what gives `baseSaturation` room to reach the page surface. | `'neutral'` |
29
37
  | `themes.<status>.hue` | Hue for `success` / `danger` / `warning` / `note`. | `156.9` / `23.1` / `84.3` / `302.3` |
30
38
  | `themes.<status>.saturation` | Saturation for that status theme. | inherits `saturation` |
31
39
  | `themes.code.saturation` | Saturation for the `code-*` syntax family. Hues are fixed, and this does **not** inherit `saturation`, nor track its default. | `80` |
32
- | `pastel` | Global. Relaxes the sRGB-safe chroma limit. Every theme except `code`. | `true` |
40
+ | `pastel` | Global. Relaxes the sRGB-safe chroma limit, and **pins `saturation` to 100**. Wins wherever both are set. Every theme except `code`. | `true` |
33
41
  | `contrastLevel` | Global. `'auto'`, or a manual `0`–`100` level. | `'auto'` |
34
42
 
35
43
  ### The setter replaces
@@ -64,13 +72,13 @@ setPaletteConfig((config) => ({
64
72
  `resetPaletteConfig()` drops all tuning at once — the same as
65
73
  `setPaletteConfig({})`, just easier to read at a call site.
66
74
 
67
- ### Two hue zones
75
+ ### Two zones, two ways to seed them
68
76
 
69
77
  Hue is split into an **accent** zone and a **base** zone:
70
78
 
71
- - **Accent** (`hue`) — the `accent-*` family on every theme, `primary` / `purple` /
72
- `special`, plus `focus`, the loading faces and the disabled chip.
73
- - **Base** (`baseHue`) — the neutral chrome: `surface` and its ladder, the
79
+ - **Accent** (`hue` / `accentColor`) — the `accent-*` family on every theme, `primary` /
80
+ `purple` / `special`, plus `focus`, the loading faces and the disabled chip.
81
+ - **Base** (`baseHue` / `baseColor`) — the neutral chrome: `surface` and its ladder, the
74
82
  `surface-text*` ramp, `border`, `placeholder`.
75
83
 
76
84
  `baseHue` inherits `hue`, so out of the box the chrome carries a faint tint of the
@@ -83,11 +91,81 @@ setPaletteConfig({ hue: 235, baseHue: 60 });
83
91
  Only the `default` theme is affected. A colored theme's tinted `surface`
84
92
  deliberately follows _its own_ hue, because a danger banner should read as red.
85
93
 
94
+ Either zone can take a **color** instead, which is usually the form a brand arrives in.
95
+ Anything Glaze parses works — hex, `rgb()`, `hsl()`, `okhsl()`, `okhst()`, `oklch()`.
96
+ CSS color keywords (`rebeccapurple`) are not supported; an unparseable value warns and
97
+ falls back to the numeric seed.
98
+
99
+ ```ts
100
+ setPaletteConfig({ accentColor: '#2F5BFF', baseColor: '#7A7269' });
101
+ ```
102
+
103
+ The two are not symmetric, and the difference is the point:
104
+
105
+ - `accentColor` contributes hue, saturation **and tone**. The tone is what makes the
106
+ brand fill actually _be_ your color. Without it the fill is authored as a fixed tone
107
+ step off white, so every accent hue lands at roughly the same lightness — a yellow
108
+ brand comes out olive. The chroma reaches the accent family through Glaze's `from`
109
+ rather than through the `saturation` seed, which is what stops a brand from
110
+ re-chromatising the chrome and the status themes.
111
+ - `baseColor` contributes **hue and saturation**; its **tone** is discarded, because the
112
+ chrome's own lightness ladder is the design. A base color says which way the greys lean
113
+ and how far, not how dark they are.
114
+
115
+ The base color's saturation is **clipped to 50**. Naming a base color says "the chrome
116
+ _is_ this color", so it lands near it rather than at the 12% share `baseSaturation`
117
+ otherwise inherits — but a fully saturated chrome stops being chrome, and the base colors
118
+ begin to converge above 25 anyway (see [Tinted surfaces](#tinted-surfaces)). The tuner's
119
+ manual slider shares the same ceiling, so the two routes agree on what the top of the
120
+ range means.
121
+
122
+ ```ts
123
+ setPaletteConfig({ baseColor: '#6e7076' }); // near-grey in, near-grey chrome out
124
+ setPaletteConfig({ baseColor: '#FFD400' }); // saturation 100 in, clipped to 50
125
+ ```
126
+
127
+ The numeric fields still win where both are set, and the tone keeps coming from the
128
+ color either way — so a preview can rotate the hue without losing the brand's lightness:
129
+
130
+ ```ts
131
+ setPaletteConfig({ accentColor: '#2F5BFF', hue: 300 }); // hue 300, tone still #2F5BFF's
132
+ ```
133
+
134
+ ### A color seed is a request
135
+
136
+ The palette renders the color you asked for, and moves it only as far as it has to. Two
137
+ things can make it move.
138
+
139
+ First, **exactness is scoped to the light, normal-contrast variant.** That is the one
140
+ that reproduces your color. Dark and high contrast adapt, as every other color in the
141
+ palette does — they are different pages, and a brand pinned across all four would be
142
+ less faithful, not more. What holds everywhere is the floor below.
143
+
144
+ **The fill has a 3:1 floor against the page.** That is WCAG's non-text floor: enough
145
+ that a button reads as a shape on the surface. It is a floor and not a target — a brand
146
+ already at 5:1, or 17:1, is emitted exactly as given, and one that misses moves only as
147
+ far as the floor. `#FFD400` cannot clear 3:1 on a white page, so it darkens to
148
+ `#b09200`; `#7A4DBF` measures 5.8:1 and is left alone.
149
+
150
+ High contrast tightens it further, deliberately: there the floor goes back to AAA
151
+ whatever you passed, because that tier is selected by `prefers-contrast: more` or an
152
+ explicit `data-contrast="high"` — anyone reading it has asked for separation over brand.
153
+
154
+ **`pastel` caps chroma.** The flat, hue-independent ceiling is what makes pastel even
155
+ across hues, and it sits below where a saturated color would land, so under it a color
156
+ seed can never resolve to itself: `#EF4444` renders `#c47069`. Under pastel the color
157
+ contributes its hue and its tone; turn pastel off to get its chroma too.
158
+
159
+ Read the result back from the tokens themselves — `#accent-surface` is the fill,
160
+ `#accent-text-soft` the rest link color — or watch the requested/resolved chips in the
161
+ [Theme builder](#theme-builder).
162
+
86
163
  ### One saturation scale per theme
87
164
 
88
- Saturation is _not_ split, deliberately: `saturation` is the theme's **seed**, and
89
- every color's own `saturation` is a 0–1 factor of it. `surface` sits at `0.12`,
90
- `border` at `0.175`, the text ramp at `0.2`, the accent family at ~`1.0`.
165
+ Saturation is _not_ split per token, deliberately: `saturation` is the theme's
166
+ **seed**, and every color's own `saturation` is a 0–1 factor of it. `surface` sits
167
+ at `0.12`, `border` at `0.175`, the text ramp at `0.2`, the accent family at
168
+ ~`1.0`.
91
169
 
92
170
  So the palette has one saturation _scale_, and everything on it keeps its
93
171
  proportions: turning `saturation` down mutes the brand fills and the neutral tint
@@ -95,6 +173,84 @@ together, in the ratios the palette was designed around. That is the point — t
95
173
  relationship between a subtle surface tint and a saturated accent is part of the
96
174
  design, not something to tune per token.
97
175
 
176
+ The one seam is the **base zone**, and it is the same seam `baseHue` opens: the
177
+ chrome is the one family whose job is _not_ to look like the brand. `baseSaturation`
178
+ gives it its own seed, on the same 0–100 scale, so a vivid accent over near-grey
179
+ chrome — or a muted accent over visibly warm chrome — is one number rather than a
180
+ choice between them:
181
+
182
+ ```ts
183
+ setPaletteConfig({ pastel: false, saturation: 90, baseSaturation: 3 });
184
+ ```
185
+
186
+ Unset, it takes `0.12` — `surface`'s own factor — of whatever the accent zone carries:
187
+ the `saturation` seed, or an `accentColor`'s own chroma when one is set. So leaving it
188
+ alone reproduces the shipped palette exactly, a muted `saturation` still mutes the
189
+ chrome along with everything else, and a near-grey brand hex leaves near-grey chrome
190
+ rather than 12% of a saturation nobody asked for. A `baseColor` overrides all of that
191
+ with its own, clipped to 50.
192
+
193
+ **The shipped value is `12`** — a faint tint is what a neutral surface _is_ — so the
194
+ interesting range is the low end. The base colors keep their proportions to one another
195
+ until the highest of them (`0.475`, `surface-inverse`) hits the top of the scale, around
196
+ `25`; past that they converge.
197
+
198
+ Note the asymmetry with `saturation`: writing `baseSaturation` does **not** turn
199
+ `pastel` off. How much hue the chrome carries says nothing about which chroma space
200
+ the palette is in.
201
+
202
+ ### Tinted surfaces
203
+
204
+ A neutral `surface` sits at the extreme of the tone scale — pure white in light,
205
+ the darkest step the dark tone window allows in dark. Chroma needs distance from
206
+ the extreme to exist at all, so on a light page `surface` is white whatever
207
+ `baseSaturation` asks for. The base seed reaches `surface-2`…`surface-4`, `border`,
208
+ `placeholder` and the text ramp, and stops at the page itself.
209
+
210
+ `surfaceMode: 'tinted'` moves the whole ramp two tones inward:
211
+
212
+ ```ts
213
+ setPaletteConfig({ surfaceMode: 'tinted', baseSaturation: 25 });
214
+ ```
215
+
216
+ Two tones is not a lightness change you would name — it is _room_. Everything below
217
+ `surface` is positioned relative to it, so the ladder, the borders and the text ramp
218
+ all follow, and the text's `['AA','AAA']` floors re-solve against the new background
219
+ rather than drifting. The `code-*` family follows too: its mirrored `surface` exists
220
+ to be the page, so it tracks both the tone and the base seed.
221
+
222
+ **The tinted surfaces move with it.** A status theme's `surface` — and a runtime
223
+ tint's, from `getColorTheme()` — is authored as an offset from the page's rather
224
+ than as an absolute tone, and that offset is exactly the two tones `tinted` shifts
225
+ by. Anchored absolutely they would land on the page's own new tone and a `note`
226
+ banner would stop reading as a banner at all; anchored to the page they keep the
227
+ separation the offset was chosen for, in both schemes. They also pick up a little
228
+ more chroma there, being further from the extreme — so `tinted` makes a status
229
+ surface easier to see, not harder.
230
+
231
+ The tint stays subtle by construction. Near white the sRGB gamut has very little
232
+ chroma to give, so `tinted` buys a surface that reads as warm or cool rather than
233
+ one that reads as colored — which is the whole ask. For a genuinely colored panel,
234
+ reach for a status theme's `surface` instead.
235
+
236
+ All of which describes the `pastel: false` path. Under `pastel` there is still one seed
237
+ and it is pinned to `100`, because a flat chroma ceiling is the whole mechanism and a
238
+ second scale on top of it would only undo the evenness. So there are two paths:
239
+
240
+ ```ts
241
+ setPaletteConfig({ pastel: true }); // even across hues; saturation is 100, full stop
242
+ setPaletteConfig({ saturation: 65 }); // your scale, per-hue ceiling — pastel goes off
243
+ ```
244
+
245
+ Note the second line does not mention `pastel`. **Setting a `saturation` turns pastel
246
+ off**, because tuning a saturation is the non-pastel path by definition — so you pick a
247
+ path by asking for what you want from it, not by setting a flag first.
248
+
249
+ State `pastel` only to override that. It is the coarser of the two choices — a color
250
+ space rather than a value on one — so it wins wherever both are set, and a saturation it
251
+ shadows is ignored with a dev-mode warning. The number is **kept** rather than dropped,
252
+ though: it stays in the sparse config, so turning pastel back off restores it.
253
+
98
254
  ### The `code-*` family is the exception
99
255
 
100
256
  Syntax colors are their own theme with their own seed, so neither the brand hue nor
@@ -142,6 +298,20 @@ setPaletteConfig({ hue: 235 }); // baseHue dropped — inherits again → 235
142
298
  setPaletteConfig(({ baseHue, ...config }) => config);
143
299
  ```
144
300
 
301
+ The color seeds are pinned fields too, which makes the base zone three-state: unset and
302
+ it follows the accent, `baseHue` and it is pinned to a number, `baseColor` and it is
303
+ derived from a color. A settings UI reads the sparse config to know which of its own
304
+ controls is in charge:
305
+
306
+ ```ts
307
+ const input = getPaletteConfigInput();
308
+ const accentMode = input.accentColor !== undefined ? 'color' : 'hue';
309
+ ```
310
+
311
+ Swapping one form for the other counts as a change even when the numbers agree — a
312
+ `hue: 45` replaced by a color that derives hue 45 resolves identically, but the UI still
313
+ has to re-render to move its mode control.
314
+
145
315
  An explicit `baseHue: undefined` is equivalent to omitting it; neither is a value.
146
316
 
147
317
  `getPaletteConfig()` resolves everything, which loses that distinction — it cannot
@@ -183,29 +353,124 @@ By default contrast is a two-tier switch: normal colors plus a separate
183
353
  high-contrast set, selected by `<html data-contrast="high">` or a
184
354
  `prefers-contrast: more` preference.
185
355
 
186
- A manual `contrastLevel` replaces both tiers with a single 0–100 slider. Because
187
- the level already carries the contrast preference, **no separate high-contrast
188
- variant is emitted** — which means `data-contrast="high"` and
189
- `prefers-contrast: more` stop having any effect while a level is set. Levels `0`
190
- and `100` reproduce the normal and high-contrast palettes bit for bit, so the
191
- slider is a continuous interpolation between exactly what the two tiers ship
192
- today.
356
+ A manual `contrastLevel` adds a 0–100 slider that positions the **normal** colors,
357
+ for a product that wants to offer its own contrast control. Level `0` is the
358
+ shipped palette and `100` is the high-contrast one, bit for bit, so the slider
359
+ interpolates between exactly what the two tiers already ship.
360
+
361
+ The two **compose**; the slider does not replace the switch. The high-contrast
362
+ tier stays the true high-contrast resolution at every level — identical to what
363
+ `'auto'` emits — so `data-contrast="high"` and `prefers-contrast: more` keep
364
+ working and escalate on top of wherever the slider has put the baseline.
193
365
 
194
- That is a real accessibility trade-off: leave `contrastLevel` at `'auto'` unless
195
- you are giving users their own contrast control.
366
+ The one exception is level `100`: there the normal colors already _are_ the
367
+ high-contrast ones, so a second tier would only duplicate them and a single
368
+ light/dark set is emitted.
369
+
370
+ Because level `0` reproduces `'auto'` exactly, tier included, shipping the slider
371
+ and defaulting it off costs a consumer nothing.
196
372
 
197
373
  ## Theme builder
198
374
 
199
375
  The `Theme Builder` story puts the whole config behind controls and renders the
200
- result into a single region: pick **Light / Dark**, then either a contrast **mode**
201
- (Normal / High) or a **custom** 0–100 level, and the preview shows exactly that
202
- variant while the page around it stays as it is.
203
-
204
- There is no `Auto` for scheme or contrast mode, on purpose. `Auto` means "follow
205
- the OS" — a _preference_, and a flat token value cannot express one. A preview
206
- renders one concrete variant, so it has to name which. The contrast _level_ keeps
207
- its `Auto`, because there the choice is between the two-tier model and a hand-set
208
- number rather than between following and not following the system.
376
+ result into a single region, with one line drawn through the middle of the page:
377
+ **the left column is the theme, the two switches over the preview are the
378
+ viewing conditions.** Everything on the left writes to the palette config and
379
+ would ship with the product; **Light / Dark** and **Normal / High contrast**
380
+ write nothing at all — the same theme renders in all four combinations, and
381
+ moving between them is how you check a theme rather than how you change one.
382
+
383
+ Those two switches start on whatever the surrounding page is already showing and
384
+ keep following it until you press one, after which they are yours. There is no
385
+ `Auto` option to press: `Auto` means "follow the OS" — a _preference_ — and the
386
+ preview resolves to flat token values, which can only express one concrete
387
+ variant. Following is the default behaviour rather than a third choice.
388
+
389
+ On the theme side, the panel is grouped by **what a knob reaches** rather than by
390
+ what it is named after: **Global** for the ones that govern both zones — `pastel`,
391
+ `saturation`, `surfaceMode` and `contrastLevel` — then **Accent** and **Base** for
392
+ the ones that do not. `surfaceMode` files under Global despite moving the *base*
393
+ surfaces, because the status themes' tinted surfaces follow it too, and so does the
394
+ mirrored surface the syntax palette solves against.
395
+
396
+ Those headings are also why the field labels are bare. `Seeded by` and `Hue` appear
397
+ in both zones, and the heading above them is what says which — repeating it in
398
+ every label was two words of noise on every line of a narrow column.
399
+
400
+ The **contrast level** needs no on/off switch: level `0` and `'auto'` are
401
+ output-identical, tier included, so the slider at rest _is_ the shipped palette.
402
+
403
+ Status themes are four chips on one line rather than eight sliders. Each chip is a
404
+ `type="current"` `Button` colored by its own theme with a
405
+ [ColorSwatch](./components/fields/ColorSwatch.md) of its accent, so the group answers
406
+ the question you actually have — do these four still read as four different
407
+ things — at a glance; press one to open its hue and saturation. The hue is not
408
+ printed on the chip: it belongs to the slider that sets it, and carrying it there
409
+ cost the whole row, since `success — 157°` is wide enough that four of them have
410
+ to stack.
411
+
412
+ **Reset**, **Export** and **JSON** sit at the top of the column, not the bottom.
413
+ The one button you reach for when an experiment goes wrong should not be behind
414
+ the controls that caused it. `Export` opens the config as a `setPaletteConfig()`
415
+ call to copy; `JSON` downloads `palette.json` on the press, with no intermediate
416
+ state worth a second click. Both carry the config _as written_ rather than the
417
+ resolved one, so an inherited `baseHue` stays inherited instead of being frozen to
418
+ whatever the accent happened to be.
419
+
420
+ Every caveat on the panel is an **InfoBadge** beside the control it qualifies rather
421
+ than a paragraph under it. A tuner is a dense column of controls, and prose between
422
+ them pushes the next knob off the screen to explain something you need once.
423
+
424
+ ### Three states, one tab bar
425
+
426
+ An unlabelled tab bar spans the top of the panel, and everything below reads as the state
427
+ it has selected:
428
+
429
+ | | **Pastel** | **Advanced** | **Color** |
430
+ | ------------ | ----------------------- | ------------------------------------ | ------------------------- |
431
+ | **Accent** | Hue | Hue + Saturation | Color (hue+chroma+tone) |
432
+ | **Base** | Hue, or _Follow accent_ | Hue + Saturation, or _Follow accent_ | Color, or _Follow accent_ |
433
+ | **Status** | Hue | Hue + Saturation | Hue + Saturation |
434
+ | **Syntax** | Saturation | Saturation | Saturation |
435
+
436
+ `Advanced` and `Color` are the **same chroma space** — the per-hue ceiling — and differ
437
+ only in what you hand it. `Pastel` is the other space, and it takes hues because a flat
438
+ ceiling has nothing to do with a color.
439
+
440
+ It began as two controls, a `pastel` switch and a per-zone **Seeded by**, which described
441
+ a 2×2 grid with one impossible cell: pastel cannot honour a color, so one of the two spent
442
+ its life disabled. Three tabs spend three buttons on the three reachable states, and make
443
+ Pastel → Color one press instead of two. The bar carries no label, because naming it would
444
+ mean finding a word for "the palette" — and both candidates, _Mode_ and _Surfaces_, are
445
+ spoken for further down.
446
+
447
+ Two rules follow from it:
448
+
449
+ - **`pastel` gates saturation.** It is one flat, hue-independent ceiling, which is what
450
+ makes the palette even across hues and what leaves nothing for a saturation scale to
451
+ do. There is no saturation control in that state except the syntax one, which `pastel`
452
+ never reaches.
453
+ - **A derived control is not shown.** Whatever a seed already supplies, its slider goes
454
+ away rather than sitting on screen disabled. A disabled slider under a color seed is a
455
+ read-out dressed as a control, and it cost two rows to repeat what the color field
456
+ above it already said.
457
+
458
+ The base zone keeps its own **Follow accent | Own**, which is orthogonal to the tabs: it
459
+ is about whether the chrome has a seed at all, not about how a seed is spelled.
460
+
461
+ Every transition hands the incoming controls the values the outgoing ones were displaying,
462
+ so switching changes who is in charge without repainting on the way. Leaving `Color`
463
+ therefore pins each zone at what its color derived and drops the hex — including on the
464
+ way to `Pastel`, which cannot honour a color at all.
465
+
466
+ In color mode the panel shows where the color actually landed — **Accent Fill** and
467
+ **Accent Text**, the two tokens the seed's tone reaches. The requested color is not
468
+ repeated beside them: the field above holds it, with a swatch of its own.
469
+
470
+ The **preset** buttons show which one is active, and stop showing it the moment you
471
+ touch a control. The setter replaces rather than merges, so a preset is either the
472
+ whole config or it is not the config at all; anything else would claim a theme is
473
+ still `Ocean` after you had re-seeded half of it.
209
474
 
210
475
  The preview deliberately shows all three surface levels with their own text ramps
211
476
  (`#surface-text`, `#surface-2-text`, `#surface-3-text`), because a theme that looks
@@ -267,8 +532,10 @@ Notes:
267
532
  - `contrastLevel` works per region, so the whole 0–100 ramp can be shown at once —
268
533
  something a document cannot do, since it is only ever at one level. Level `0`
269
534
  reproduces the normal tier and `100` the high-contrast tier exactly, in both
270
- schemes. Because a manual level leaves no separate high-contrast tier,
271
- `highContrast: true` correctly returns the same colors as the normal variant.
535
+ schemes. `highContrast: true` still returns the genuine high-contrast
536
+ resolution at any level below `100`, because the level moves the baseline and
537
+ the tier escalates from where `'auto'` would put it; at `100` the two coincide
538
+ and it returns the same colors as the normal variant.
272
539
  Note that tokens carrying a contrast _floor_ (most text) can sit still over part
273
540
  of the ramp — the floor is solved, not approximated, so the value only moves once
274
541
  the interpolated target does. Tokens positioned by a plain tone pair, like
@@ -350,9 +617,18 @@ therefore re-tunes nothing — a seed picked in one space lands somewhere else i
350
617
  other, and the warm statuses move most. Re-tune the seeds alongside it, in whichever
351
618
  direction you flip.
352
619
 
620
+ It also owns `saturation` outright — pinned to `100`, so a number passed _explicitly
621
+ alongside_ it is inert and warned about (a number passed on its own turns pastel off
622
+ instead). And it caps an `accentColor` short of itself: the ceiling sits below where a
623
+ saturated color lands, so `#EF4444` resolves to `#c47069`. Both are visible in the
624
+ [Theme builder](#theme-builder), the first as a disabled slider and the second as the
625
+ requested/resolved chips.
626
+
353
627
  **Re-seeding costs about 10 ms.** Rebuilding the eight themes and re-solving
354
628
  ~156 tokens across four scheme variants is not free, though it is inside a frame.
355
- A manual `contrastLevel` is cheaper, since it skips both high-contrast passes.
629
+ A manual `contrastLevel` costs the same — it runs the same four passes — except
630
+ at level `100`, which skips the two high-contrast ones because the normal pass
631
+ already produced those values.
356
632
  Setting the config to a value it already holds is free — it does not even bump
357
633
  the version. If you are driving it from a slider, let the input coalesce to
358
634
  frames (a pointer-driven `onChange` already does) rather than writing on every
@@ -0,0 +1,148 @@
1
+ # ColorSwatch
2
+
3
+ A square of color. It is the smallest piece of the color family —
4
+ [ColorPicker](./ColorPicker.md),
5
+ [ColorInput](./ColorInput.md) and
6
+ [ColorSwatchGroup](./ColorSwatchGroup.md) all draw one, and it is
7
+ exported so a legend, a list row or a table cell can draw the same one.
8
+
9
+ It is decorative on its own: it carries no text and no accessible name. Pair it
10
+ with the value written out, or put it in a control that names it.
11
+
12
+ ## When to Use
13
+
14
+ - Next to a color value in a list, a table or a chart legend
15
+ - In the `icon` / `rightIcon` / `prefix` / `suffix` slot of an `Item` or `Button`
16
+ - As the color part of a custom control built on top of the color fields
17
+
18
+ ## Component
19
+
20
+ ---
21
+
22
+ ### Properties
23
+
24
+ - **`color`** `string | ColorValue | null` — The color to show. Anything the color fields accept — `#7a4dbf`, `rgb(122 77 191)`, `oklch(…)`. `null`, or a string that cannot be parsed, shows the empty state
25
+ - **`size`** `'small' | 'medium' | 'large'` — The edge of the swatch: `20px`, `24px` or `28px`. Left unset, the swatch tracks the control around it (see below)
26
+
27
+ ### Base Properties
28
+
29
+ Supports [Base properties](../../BaseProperties.md)
30
+
31
+ ### Styling Properties
32
+
33
+ #### styles
34
+
35
+ Customizes the swatch itself. `width` and `height` set here win over both the
36
+ `size` prop and the automatic sizing.
37
+
38
+ ### Style Properties
39
+
40
+ These properties allow direct style application without using the `styles` prop:
41
+
42
+ - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
43
+ - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
44
+ - **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
45
+ - **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
46
+
47
+ ### Modifiers
48
+
49
+ The `mods` property accepts the following modifiers you can override:
50
+
51
+ | Modifier | Type | Description |
52
+ | -------- | --------- | -------------------------------------------------------------- |
53
+ | `empty` | `boolean` | No color to show — drawn as the conventional diagonal stroke |
54
+
55
+ ## Sizes
56
+
57
+ - `small` — `20px`
58
+ - `medium` — `24px`
59
+ - `large` — `28px`
60
+
61
+ ### Sizing inside a control
62
+
63
+ Leave `size` off and the swatch sizes itself to whatever it sits in. `Item`,
64
+ `Button` and the text inputs publish their own height as the `$size` custom
65
+ property, and the swatch reads it and lands `8px` inside — `20px` in a `small`
66
+ control, `24px` in a `medium` one, `32px` in a `large` one. Nothing has to be
67
+ passed between the two, so a control that changes size takes its swatch with it.
68
+
69
+ Outside a control there is nothing to read, and the swatch falls back to
70
+ `medium`.
71
+
72
+ ## Examples
73
+
74
+ ### Basic Usage
75
+
76
+ ```jsx
77
+ <ColorSwatch color="#7a4dbf" />
78
+ ```
79
+
80
+ ### In a control
81
+
82
+ ```jsx
83
+ <Button icon={<ColorSwatch color={color} />}>{color}</Button>
84
+
85
+ <Item icon={<ColorSwatch color={color} />} suffix={<ColorSwatch color={hover} />}>
86
+ Accent
87
+ </Item>
88
+ ```
89
+
90
+ ### With the value spelled out
91
+
92
+ The swatch has no accessible name of its own, so the text beside it is what a
93
+ screen reader announces.
94
+
95
+ ```jsx
96
+ <Space gap="1x" placeItems="center start">
97
+ <ColorSwatch color={value} />
98
+ <Text>{value}</Text>
99
+ </Space>
100
+ ```
101
+
102
+ ### A fixed size
103
+
104
+ ```jsx
105
+ <ColorSwatch size="large" color="#26fcb2" />
106
+ ```
107
+
108
+ ### Any other shape
109
+
110
+ ```jsx
111
+ <ColorSwatch color="#26fcb2" radius="round" width="6x" height="6x" />
112
+ ```
113
+
114
+ ## Accessibility
115
+
116
+ `ColorSwatch` renders a plain `div` with no role and no name — a color on its
117
+ own is not information a screen reader can use, and an announced hex is rarely
118
+ what the user wants to hear.
119
+
120
+ - **Do** put the value, or the name of the thing the color belongs to, next to it
121
+ - **Do** rely on the surrounding control's `aria-label` when the swatch is its icon
122
+ - **Don't** use color as the only way to tell two rows apart
123
+
124
+ ## Best Practices
125
+
126
+ 1. **Do**: let a swatch inside a control size itself
127
+
128
+ ```jsx
129
+ <Button size="small" icon={<ColorSwatch color={color} />}>
130
+ {color}
131
+ </Button>
132
+ ```
133
+
134
+ 2. **Don't**: hand-tune the box to match a control
135
+
136
+ ```jsx
137
+ <Button size="small" icon={<ColorSwatch color={color} width="2.5x" height="2.5x" />}>
138
+ {color}
139
+ </Button>
140
+ ```
141
+
142
+ 3. **Accessibility**: never let the swatch be the only carrier of the meaning
143
+
144
+ ## Related Components
145
+
146
+ - [ColorPicker](./ColorPicker.md) — a swatch that opens the color popover
147
+ - [ColorInput](./ColorInput.md) — the color as editable text, with a swatch inside
148
+ - [ColorSwatchGroup](./ColorSwatchGroup.md) — a selectable grid of swatches