@cube-dev/ui-kit 0.142.4 → 0.142.5

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 (423) hide show
  1. package/dist/CHANGELOG.md +8 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.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/InlineInput/InlineInput.js +1 -1
  56. package/dist/components/content/Item/Item.js +1 -1
  57. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  58. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  59. package/dist/components/content/Layout/GridLayout.js +1 -1
  60. package/dist/components/content/Layout/Layout.js +1 -1
  61. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  62. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  63. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  64. package/dist/components/content/Layout/LayoutContent.js +1 -1
  65. package/dist/components/content/Layout/LayoutContext.js +1 -1
  66. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  67. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  68. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  69. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  70. package/dist/components/content/Layout/LayoutPane.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  74. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  75. package/dist/components/content/Layout/index.js +1 -1
  76. package/dist/components/content/Layout/utils.js +1 -1
  77. package/dist/components/content/Paragraph.js +1 -1
  78. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  79. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  80. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  81. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  82. package/dist/components/content/Result/Result.js +1 -1
  83. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  84. package/dist/components/content/Tag/Tag.js +1 -1
  85. package/dist/components/content/Text.js +1 -1
  86. package/dist/components/content/TextItem/TextItem.js +1 -1
  87. package/dist/components/content/Title.js +1 -1
  88. package/dist/components/content/Tree/Tree.js +1 -1
  89. package/dist/components/content/Tree/TreeNode.js +1 -1
  90. package/dist/components/content/Tree/styled.js +1 -1
  91. package/dist/components/content/Tree/tree-index.js +1 -1
  92. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  93. package/dist/components/content/Tree/use-load-data.js +1 -1
  94. package/dist/components/content/highlightText.js +1 -1
  95. package/dist/components/content/use-auto-tooltip.js +1 -1
  96. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  97. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  98. package/dist/components/fields/Checkbox/context.js +1 -1
  99. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  100. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  101. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  102. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  103. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  104. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  105. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  106. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  107. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  108. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  109. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  110. package/dist/components/fields/DatePicker/intl.js +1 -1
  111. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  112. package/dist/components/fields/DatePicker/props.js +1 -1
  113. package/dist/components/fields/DatePicker/utils.js +1 -1
  114. package/dist/components/fields/FileInput/FileInput.js +1 -1
  115. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  116. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  117. package/dist/components/fields/Input/Input.js +1 -1
  118. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  119. package/dist/components/fields/ListBox/ListBox.js +1 -1
  120. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  121. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  122. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  123. package/dist/components/fields/Picker/Picker.js +1 -1
  124. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  125. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  126. package/dist/components/fields/RadioGroup/context.js +1 -1
  127. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  128. package/dist/components/fields/Select/Select.js +1 -1
  129. package/dist/components/fields/Slider/Gradation.js +1 -1
  130. package/dist/components/fields/Slider/HueSlider.js +1 -1
  131. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  132. package/dist/components/fields/Slider/Slider.js +1 -1
  133. package/dist/components/fields/Slider/SliderBase.js +1 -1
  134. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  135. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  136. package/dist/components/fields/Slider/elements.js +1 -1
  137. package/dist/components/fields/Slider/index.js +1 -1
  138. package/dist/components/fields/Switch/Switch.js +1 -1
  139. package/dist/components/fields/TextArea/TextArea.js +1 -1
  140. package/dist/components/fields/TextInput/TextInput.js +1 -1
  141. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  142. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  143. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  144. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  145. package/dist/components/form/Form/Field.js +1 -1
  146. package/dist/components/form/Form/Form.js +1 -1
  147. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  148. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  149. package/dist/components/form/Form/SubmitError.js +1 -1
  150. package/dist/components/form/Form/index.js +1 -1
  151. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  152. package/dist/components/form/Form/use-field/use-field.js +1 -1
  153. package/dist/components/form/Form/use-form.js +1 -1
  154. package/dist/components/form/Form/validation.js +1 -1
  155. package/dist/components/form/Label.js +1 -1
  156. package/dist/components/form/wrapper.js +1 -1
  157. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  158. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  159. package/dist/components/layout/Flex.js +1 -1
  160. package/dist/components/layout/Flow.js +1 -1
  161. package/dist/components/layout/Grid.js +1 -1
  162. package/dist/components/layout/Panel.js +1 -1
  163. package/dist/components/layout/Prefix.js +1 -1
  164. package/dist/components/layout/ResizablePanel.js +1 -1
  165. package/dist/components/layout/Space.js +1 -1
  166. package/dist/components/layout/Suffix.js +1 -1
  167. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  168. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  169. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  170. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  171. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  172. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  173. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  174. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  175. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  176. package/dist/components/navigation/Tabs/styled.js +1 -1
  177. package/dist/components/navigation/Tabs/types.js +1 -1
  178. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  179. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  180. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  181. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  182. package/dist/components/other/Calendar/Calendar.js +8 -5
  183. package/dist/components/other/Calendar/Calendar.js.map +1 -1
  184. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  185. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  186. package/dist/components/other/Calendar/RangeCalendar.js +8 -5
  187. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  188. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  189. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  190. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  191. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  192. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  193. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  194. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  195. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  196. package/dist/components/overlays/Dialog/context.js +1 -1
  197. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  198. package/dist/components/overlays/Modal/Modal.js +1 -1
  199. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  200. package/dist/components/overlays/Modal/Overlay.js +1 -1
  201. package/dist/components/overlays/Modal/Popover.js +1 -1
  202. package/dist/components/overlays/Modal/Tray.js +1 -1
  203. package/dist/components/overlays/Modal/Underlay.js +1 -1
  204. package/dist/components/overlays/Notifications/Notification.js +1 -1
  205. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  206. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  207. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  208. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  209. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  210. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  211. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  212. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  213. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  214. package/dist/components/overlays/Notifications/index.js +1 -1
  215. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  216. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  217. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  218. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  219. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  220. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  221. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  222. package/dist/components/overlays/Toast/index.js +1 -1
  223. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  224. package/dist/components/overlays/Toast/useToast.js +1 -1
  225. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  226. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  227. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  228. package/dist/components/overlays/Tooltip/context.js +1 -1
  229. package/dist/components/portal/Portal.js +1 -1
  230. package/dist/components/portal/PortalProvider.js +1 -1
  231. package/dist/components/portal/usePortal.js +1 -1
  232. package/dist/components/shared/DraggableCollection.js +1 -1
  233. package/dist/components/shared/InvalidIcon.js +1 -1
  234. package/dist/components/shared/ValidIcon.js +1 -1
  235. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  236. package/dist/components/status/Spin/Cube.js +1 -1
  237. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  238. package/dist/components/status/Spin/Spin.js +1 -1
  239. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  240. package/dist/data/item-themes.js +1 -1
  241. package/dist/data/themes.js +1 -1
  242. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  243. package/dist/icons/AdjustmentsIcon.js +1 -1
  244. package/dist/icons/AiIcon.js +1 -1
  245. package/dist/icons/AreaChartIcon.js +1 -1
  246. package/dist/icons/BackwardIcon.js +1 -1
  247. package/dist/icons/BarChartIcon.js +1 -1
  248. package/dist/icons/BellFilledIcon.js +1 -1
  249. package/dist/icons/BellIcon.js +1 -1
  250. package/dist/icons/BooleanIcon.js +1 -1
  251. package/dist/icons/CalendarEditIcon.js +1 -1
  252. package/dist/icons/CalendarIcon.js +1 -1
  253. package/dist/icons/CaretDownIcon.js +1 -1
  254. package/dist/icons/CaretUpIcon.js +1 -1
  255. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  256. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  257. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  258. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  259. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  260. package/dist/icons/ChartBarLineIcon.js +1 -1
  261. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  262. package/dist/icons/ChartBarStackedIcon.js +1 -1
  263. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  264. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  265. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  266. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  267. package/dist/icons/ChartBubbleIcon.js +1 -1
  268. package/dist/icons/ChartDonut2Icon.js +1 -1
  269. package/dist/icons/ChartFunnelIcon.js +1 -1
  270. package/dist/icons/ChartHeatmapIcon.js +1 -1
  271. package/dist/icons/ChartKPIIcon.js +1 -1
  272. package/dist/icons/ChartPie2Icon.js +1 -1
  273. package/dist/icons/ChartScatterIcon.js +1 -1
  274. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  275. package/dist/icons/CheckCircleIcon.js +1 -1
  276. package/dist/icons/CheckIcon.js +1 -1
  277. package/dist/icons/CircleFilledIcon.js +1 -1
  278. package/dist/icons/ClearIcon.js +1 -1
  279. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  280. package/dist/icons/CloseCircleIcon.js +1 -1
  281. package/dist/icons/CloseIcon.js +1 -1
  282. package/dist/icons/CodeIcon.js +1 -1
  283. package/dist/icons/ColumnTotalIcon.js +1 -1
  284. package/dist/icons/CopyIcon.js +1 -1
  285. package/dist/icons/CountIcon.js +1 -1
  286. package/dist/icons/CubeIcon.js +1 -1
  287. package/dist/icons/CubePauseIcon.js +1 -1
  288. package/dist/icons/CubePlayIcon.js +1 -1
  289. package/dist/icons/CurrencyDollarIcon.js +1 -1
  290. package/dist/icons/DangerIcon.js +1 -1
  291. package/dist/icons/DashboardIcon.js +1 -1
  292. package/dist/icons/DatabaseIcon.js +1 -1
  293. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  294. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  295. package/dist/icons/DirectionIcon.js +1 -1
  296. package/dist/icons/DonutIcon.js +1 -1
  297. package/dist/icons/DownIcon.js +1 -1
  298. package/dist/icons/EditIcon.js +1 -1
  299. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  300. package/dist/icons/ExclamationCircleIcon.js +1 -1
  301. package/dist/icons/ExclamationIcon.js +1 -1
  302. package/dist/icons/EyeIcon.js +1 -1
  303. package/dist/icons/EyeInvisibleIcon.js +1 -1
  304. package/dist/icons/FilterIcon.js +1 -1
  305. package/dist/icons/FolderFilledIcon.js +1 -1
  306. package/dist/icons/FolderIcon.js +1 -1
  307. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  308. package/dist/icons/FolderOpenIcon.js +1 -1
  309. package/dist/icons/ForwardIcon.js +1 -1
  310. package/dist/icons/GripVerticalIcon.js +1 -1
  311. package/dist/icons/HierarchyIcon.js +1 -1
  312. package/dist/icons/HierarchyOpenIcon.js +1 -1
  313. package/dist/icons/Icon.js +1 -1
  314. package/dist/icons/InfoCircleIcon.js +1 -1
  315. package/dist/icons/InfoIcon.js +1 -1
  316. package/dist/icons/KeyIcon.js +1 -1
  317. package/dist/icons/LeftIcon.js +1 -1
  318. package/dist/icons/LineChartIcon.js +1 -1
  319. package/dist/icons/LoadingIcon.js +1 -1
  320. package/dist/icons/LockFilledIcon.js +1 -1
  321. package/dist/icons/LockIcon.js +1 -1
  322. package/dist/icons/MoreIcon.js +1 -1
  323. package/dist/icons/NotAllowedIcon.js +1 -1
  324. package/dist/icons/Number123Icon.js +1 -1
  325. package/dist/icons/NumberIcon.js +1 -1
  326. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  327. package/dist/icons/PauseCircleIcon.js +1 -1
  328. package/dist/icons/PauseIcon.js +1 -1
  329. package/dist/icons/PercentageIcon.js +1 -1
  330. package/dist/icons/PieChartIcon.js +1 -1
  331. package/dist/icons/PlayCircleIcon.js +1 -1
  332. package/dist/icons/PlayIcon.js +1 -1
  333. package/dist/icons/PlusIcon.js +1 -1
  334. package/dist/icons/ProgressBarIcon.js +1 -1
  335. package/dist/icons/ReloadIcon.js +1 -1
  336. package/dist/icons/ReportIcon.js +1 -1
  337. package/dist/icons/ReturnIcon.js +1 -1
  338. package/dist/icons/RightIcon.js +1 -1
  339. package/dist/icons/RowTotalsIcon.js +1 -1
  340. package/dist/icons/SchemeIcon.js +1 -1
  341. package/dist/icons/SearchIcon.js +1 -1
  342. package/dist/icons/SemanticQueryIcon.js +1 -1
  343. package/dist/icons/SettingsIcon.js +1 -1
  344. package/dist/icons/ShieldFilledIcon.js +1 -1
  345. package/dist/icons/ShieldIcon.js +1 -1
  346. package/dist/icons/SlashIcon.js +1 -1
  347. package/dist/icons/SparklesIcon.js +1 -1
  348. package/dist/icons/SqlIcon.js +1 -1
  349. package/dist/icons/StatsIcon.js +1 -1
  350. package/dist/icons/StopIcon.js +1 -1
  351. package/dist/icons/StringIcon.js +1 -1
  352. package/dist/icons/SubtotalsIcon.js +1 -1
  353. package/dist/icons/SwitchIcon.js +1 -1
  354. package/dist/icons/TableIcon.js +1 -1
  355. package/dist/icons/ThumbsDownIcon.js +1 -1
  356. package/dist/icons/ThumbsUpIcon.js +1 -1
  357. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  358. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  359. package/dist/icons/ThunderboltIcon.js +1 -1
  360. package/dist/icons/TimeIcon.js +1 -1
  361. package/dist/icons/TrashIcon.js +1 -1
  362. package/dist/icons/UnlockIcon.js +1 -1
  363. package/dist/icons/UpIcon.js +1 -1
  364. package/dist/icons/UserGroupIcon.js +1 -1
  365. package/dist/icons/UserIcon.js +1 -1
  366. package/dist/icons/UserLockIcon.js +1 -1
  367. package/dist/icons/ViewIcon.js +1 -1
  368. package/dist/icons/WarningFilledIcon.js +1 -1
  369. package/dist/icons/WarningIcon.js +1 -1
  370. package/dist/icons/wrap-icon.js +1 -1
  371. package/dist/index.js +1 -1
  372. package/dist/provider.js +1 -1
  373. package/dist/providers/TrackingProvider.js +1 -1
  374. package/dist/providers/navigationAdapter.default.js +1 -1
  375. package/dist/tokens/base.js +1 -1
  376. package/dist/tokens/colors.js +1 -1
  377. package/dist/tokens/index.js +1 -1
  378. package/dist/tokens/layout.js +1 -1
  379. package/dist/tokens/palette.js +1 -1
  380. package/dist/tokens/shadows.js +1 -1
  381. package/dist/tokens/sizes.js +1 -1
  382. package/dist/tokens/spacing.js +1 -1
  383. package/dist/tokens/typography.js +1 -1
  384. package/dist/utils/ResizeSensor.js +1 -1
  385. package/dist/utils/is-dev-env.js +1 -1
  386. package/dist/utils/modules.js +1 -1
  387. package/dist/utils/promise.js +1 -1
  388. package/dist/utils/raf.js +1 -1
  389. package/dist/utils/random.js +1 -1
  390. package/dist/utils/range.js +1 -1
  391. package/dist/utils/react/RenderCache.js +1 -1
  392. package/dist/utils/react/Slots.js +1 -1
  393. package/dist/utils/react/chain.js +1 -1
  394. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  395. package/dist/utils/react/index.js +1 -1
  396. package/dist/utils/react/interactions.js +1 -1
  397. package/dist/utils/react/isTextOnly.js +1 -1
  398. package/dist/utils/react/mapProps.js +1 -1
  399. package/dist/utils/react/mergeProps.js +1 -1
  400. package/dist/utils/react/nullableValue.js +1 -1
  401. package/dist/utils/react/resolveIcon.js +1 -1
  402. package/dist/utils/react/sharedStore.js +1 -1
  403. package/dist/utils/react/useCombinedRefs.js +1 -1
  404. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  405. package/dist/utils/react/useEventBus.js +1 -1
  406. package/dist/utils/react/useId.js +1 -1
  407. package/dist/utils/react/useIsDarwin.js +1 -1
  408. package/dist/utils/react/useKeySymbols.js +1 -1
  409. package/dist/utils/react/useLayoutEffect.js +1 -1
  410. package/dist/utils/react/useLocalStorage.js +1 -1
  411. package/dist/utils/react/useMergeStyles.js +1 -1
  412. package/dist/utils/react/usePopoverSync.js +1 -1
  413. package/dist/utils/react/useQaProps.js +1 -1
  414. package/dist/utils/react/useViewportSize.js +1 -1
  415. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  416. package/dist/utils/selection.js +1 -1
  417. package/dist/utils/styles.js +1 -1
  418. package/dist/utils/tree.js +1 -1
  419. package/dist/utils/warnings.js +1 -1
  420. package/dist/version.js +2 -2
  421. package/docs/glaze/api.md +143 -71
  422. package/docs/glaze/methodology.md +12 -6
  423. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/react/forwardRefWithGenerics.tsx
3
3
  /**
4
4
  * A helper for creating forwardRef components with generic types.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { forwardRefWithGenerics } from "./forwardRefWithGenerics.js";
4
4
  import { isTextOnly } from "./isTextOnly.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useState } from "react";
3
3
  import { useFocus, useFocusVisible } from "react-aria";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { Children, isValidElement } from "react";
3
3
 
4
4
  //#region src/utils/react/isTextOnly.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/react/mapProps.ts
3
3
  /** Converts AriaButtonProps to CubeButtonProps */
4
4
  function ariaToCubeButtonProps(props) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { mergeIds } from "./useId.js";
4
4
  import { mergeStyles } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/react/nullableValue.ts
3
3
  function castNullableStringValue(props) {
4
4
  return castNullableField(props, ["value", "defaultValue"], "string", (v) => String(v));
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/react/resolveIcon.ts
3
3
  /**
4
4
  * Resolves a dynamic icon prop to its content and slot state.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useEffect, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useCombinedRefs.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { createSharedStore } from "./sharedStore.js";
3
3
  import { useEffect } from "react";
4
4
  import { useFocusVisible } from "react-aria";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useEventBus.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "./useLayoutEffect.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { useSSRSafeId } from "@react-aria/ssr";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useIsDarwin.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useIsDarwin } from "./useIsDarwin.js";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import * as React$1 from "react";
3
3
 
4
4
  //#region src/utils/react/useLayoutEffect.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useCallback, useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { mergeStyles } from "@tenphi/tasty";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { EventBusContext, useEventBus } from "./useEventBus.js";
3
3
  import { useCallback, useContext, useEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/react/useQaProps.ts
3
3
  /**
4
4
  * Processes QA props.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useViewportSize.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  import { isValidElement } from "react";
3
3
  import { isFragment } from "react-is";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/selection.ts
3
3
  /**
4
4
  * Deduplicate/toggle keys in a selection: if a key appears twice it is
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/styles.ts
3
3
  /**
4
4
  * Split properties into style and non-style properties.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/utils/tree.ts
3
3
  function toFlatTree(tree, includingFolders) {
4
4
  return tree.reduce((result, node) => {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | 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.142.4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.5 | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.142.4";
3
+ const VERSION = "0.142.5";
4
4
  const TASTY_VERSION = "2.6.4";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
package/docs/glaze/api.md CHANGED
@@ -25,8 +25,8 @@ Full reference for every public method, option, and type exported by `@tenphi/gl
25
25
 
26
26
  | Method | Description |
27
27
  |---|---|
28
- | `glaze(hue, saturation?)` | Create a theme from hue (0–360) and saturation (0–100). Default saturation: `100`. |
29
- | `glaze({ hue, saturation })` | Create a theme from an options object. |
28
+ | `glaze(hue, saturation?, config?)` | Create a theme from hue (0–360) and saturation (0–100). Optional `config` overrides the global config for this theme. |
29
+ | `glaze({ hue, saturation }, config?)` | Create a theme from an options object, with optional per-theme config override. |
30
30
  | `glaze.from(data)` | Create a theme from an exported configuration (`theme.export()` snapshot). |
31
31
  | `glaze.fromHex(hex)` | Create a theme from a hex color (`#rgb` or `#rrggbb`). Extracts hue and saturation. |
32
32
  | `glaze.fromRgb(r, g, b)` | Create a theme from RGB values (0–255). Extracts hue and saturation. |
@@ -37,8 +37,13 @@ const b = glaze({ hue: 280, saturation: 80 });
37
37
  const c = glaze.fromHex('#7a4dbf');
38
38
  const d = glaze.fromRgb(122, 77, 191);
39
39
  const e = glaze.from(a.export());
40
+
41
+ // Per-theme config override:
42
+ const rawTheme = glaze(280, 80, { lightLightness: false, darkLightness: false });
40
43
  ```
41
44
 
45
+ The optional `config` parameter is a `GlazeConfigOverride` — see [Per-instance config override](#per-instance-config-override).
46
+
42
47
  ---
43
48
 
44
49
  ## Theme methods
@@ -81,13 +86,16 @@ const def = theme.color('surface'); // get
81
86
 
82
87
  ### `theme.extend(options)`
83
88
 
84
- Creates a new theme inheriting all color definitions, optionally replacing the hue / saturation seed and merging in per-theme overrides:
89
+ Creates a new theme inheriting all color definitions, optionally replacing the hue / saturation seed, color overrides, and config:
85
90
 
86
91
  ```ts
87
92
  const danger = primary.extend({
88
93
  hue: 23,
89
94
  colors: { 'accent-fill': { lightness: 48, mode: 'fixed' } },
90
95
  });
96
+
97
+ // Inherit parent's config override and tighten the dark window further:
98
+ const highSat = base.extend({ config: { darkLightness: [10, 100] } });
91
99
  ```
92
100
 
93
101
  `GlazeExtendOptions`:
@@ -97,6 +105,7 @@ const danger = primary.extend({
97
105
  | `hue` | `number` | Replace the hue seed. Defaults to the parent's hue. |
98
106
  | `saturation` | `number` | Replace the saturation seed. Defaults to the parent's saturation. |
99
107
  | `colors` | `ColorMap` | Per-theme overrides (additive merge over the inherited map). |
108
+ | `config` | `GlazeConfigOverride` | Config override for the child. Shallow-merged with the parent's override — child fields win. |
100
109
 
101
110
  Colors marked with `inherit: false` on the parent are **not** copied into the child.
102
111
 
@@ -240,6 +249,8 @@ type MinContrast = number | 'AA' | 'AAA' | 'AA-large' | 'AAA-large';
240
249
 
241
250
  You can also pass any numeric ratio directly (e.g., `contrast: 4.5`, `contrast: 11`). The constraint is applied independently for each scheme — if the `lightness` already satisfies the floor it's kept, otherwise the solver adjusts lightness until the target is met.
242
251
 
252
+ By default, `autoFlip` lets the solver cross to the opposite side of the base color when the requested lightness direction cannot satisfy contrast. Set `glaze.configure({ autoFlip: false })` to keep strict directionality: unmet colors pin to that direction's 0 or 100 lightness extreme instead of falling back to the original requested value.
253
+
243
254
  **Full lightness spectrum in HC mode:** in high-contrast variants the `lightLightness` and `darkLightness` window constraints are bypassed entirely. Colors can reach the full 0–100 range, maximizing perceivable contrast.
244
255
 
245
256
  #### Per-color hue override
@@ -287,28 +298,39 @@ See [Mix colors](#mix-colors) below.
287
298
 
288
299
  ## Standalone color tokens
289
300
 
290
- `glaze.color()` creates a single color token without a full theme. Two overloads:
301
+ `glaze.color()` creates a single color token without a full theme.
291
302
 
292
303
  ```ts
293
- glaze.color(input: GlazeColorInput, scaling?: GlazeColorScaling): GlazeColorToken;
294
- glaze.color(value: GlazeColorValue, overrides?: GlazeColorOverrides, scaling?: GlazeColorScaling): GlazeColorToken;
304
+ // arg1: the color (four shapes see below)
305
+ // arg2: optional config override (GlazeConfigOverride — see below)
306
+ glaze.color(color: GlazeFromInput | GlazeColorInput | GlazeColorValue, config?: GlazeConfigOverride): GlazeColorToken;
295
307
  ```
296
308
 
297
309
  ### Input forms
298
310
 
299
- `GlazeColorValue` (the value-shorthand input) accepts:
311
+ `glaze.color()` accepts **four input shapes**, discriminated by structure:
312
+
313
+ | Shape | Example | Notes |
314
+ |---|---|---|
315
+ | **Bare string** | `'#26fcb2'` | Hex or CSS color function (`rgb()`, `hsl()`, `okhsl()`, `oklch()`). |
316
+ | **Value object** | `{ h: 152, s: 0.95, l: 0.74 }` | OKHSL, `{ r, g, b }` (sRGB 0–255), or `{ l, c, h }` (OKLCh). |
317
+ | **`{ from, ...overrides }`** | `{ from: '#1a1a2e', base: bg, contrast: 'AA' }` | Value + color overrides in one object. |
318
+ | **Structured** | `{ hue: 152, saturation: 95, lightness: 74 }` | Full theme-style token (hue/saturation/lightness all in 0–100). |
319
+
320
+ `GlazeColorValue` (bare string or value-object forms) accepts:
300
321
 
301
322
  | Form | Example | Notes |
302
323
  |---|---|---|
303
- | Hex | `'#26fcb2'`, `'#26fcb2ff'`, `'#abc'` | 3, 6, or 8 digits. Alpha components are dropped with a `console.warn` — use `opacity` instead. |
324
+ | Hex | `'#26fcb2'`, `'#26fcb2ff'`, `'#abc'` | 3, 6, or 8 digits. Alpha is dropped with a `console.warn` — use `opacity` instead. |
304
325
  | `rgb()` | `'rgb(38 252 178)'`, `'rgb(38 252 178 / 0.8)'` | Modern space syntax. Alpha dropped with warning. |
305
326
  | `hsl()` | `'hsl(152 97% 57%)'` | Modern space syntax. Alpha dropped with warning. |
306
327
  | `okhsl()` | `'okhsl(152 95% 74%)'` | Glaze's own emit format. Alpha dropped with warning. |
307
328
  | `oklch()` | `'oklch(0.85 0.18 152)'` | Glaze's own emit format. Alpha dropped with warning. |
308
329
  | `OkhslColor` object | `{ h: 152, s: 0.95, l: 0.74 }` | Glaze's native shape (h: 0–360, s/l: 0–1). Passing 0–100 for `s`/`l` throws with a hint to use the structured form. |
309
- | RGB tuple | `[38, 252, 178]` | 0–255, same range as `glaze.fromRgb`. |
330
+ | `RgbColor` object | `{ r: 38, g: 252, b: 178 }` | sRGB 0–255. RGB tuple `[r, g, b]` is not supported — use this object form. |
331
+ | `OklchColor` object | `{ l: 0.85, c: 0.18, h: 152 }` | OKLCh (L/C: 0–1, H: degrees), same semantics as `oklch()` strings. |
310
332
 
311
- `GlazeColorInput` (the structured input) is `{ hue, saturation, lightness, ... }`:
333
+ `GlazeColorInput` (structured form) is `{ hue, saturation, lightness, ... }`:
312
334
 
313
335
  | Field | Type | Description |
314
336
  |---|---|---|
@@ -319,63 +341,49 @@ glaze.color(value: GlazeColorValue, overrides?: GlazeColorOverrides, scaling?: G
319
341
  | `mode` | `AdaptationMode` | Default: `'auto'`. |
320
342
  | `opacity` | `number` | Fixed alpha 0–1. |
321
343
  | `base` | `GlazeColorToken \| GlazeColorValue` | Optional dependency. See [Pairing colors](#pairing-colors). |
322
- | `contrast` | `HCPair<MinContrast>` | WCAG floor against `base` (requires `base`). |
344
+ | `contrast` | `HCPair<MinContrast>` | WCAG floor against `base`. Without `base`, anchored to the literal seed. |
323
345
  | `name` | `string` | Debug label for warnings; doesn't change output keys. Reserved names (`'value'`, `'seed'`, `'externalBase'`) are rejected. |
324
346
 
325
- Named CSS colors (`'red'`, `'blueviolet'`) are not supported.
326
-
327
- ### Defaults
328
-
329
- Every input form defaults to `mode: 'auto'` so the resolved token adapts between light and dark like an ordinary theme color. The *scaling* snapshot taken at create time differs by input form:
330
-
331
- - **String value-shorthand** (`'#000'`, `'rgb(...)'`, etc.):
332
- - Light variant preserves the input lightness exactly (`lightLightness: false`).
333
- - Dark variant is Möbius-inverted into `[globalConfig.darkLightness[0], 100]`, so `glaze.color('#000')` renders as `#fff` in dark mode and `glaze.color('#fff')` falls to the dark `lo` floor (default `0.15`).
334
- - **Object / tuple / structured inputs**:
335
- - Both light and dark variants are mapped through `globalConfig.lightLightness` / `globalConfig.darkLightness` (defaults `[10, 100]` / `[15, 95]`) — the same windows a theme color uses.
336
- - All windows are **snapshotted at color-creation time** so later `glaze.configure()` calls don't retroactively change exported tokens. `token.export()` round-trips byte-for-byte.
337
-
338
- To opt back into the legacy fixed-linear default (no Möbius inversion), pass `{ mode: 'fixed' }` as the second arg, or supply an explicit `scaling` (see [`GlazeColorScaling`](#glazecolorscaling)).
339
-
340
- ### `GlazeColorOverrides`
347
+ `GlazeFromInput` (from form) is `{ from: GlazeColorValue, ...colorOverrides }`:
341
348
 
342
- Overrides for the value-shorthand overload's second argument:
343
-
344
- | Option | Notes |
349
+ | Field | Notes |
345
350
  |---|---|
346
- | `hue` | Number (absolute 0–360) or `'+N'`/`'-N'` (relative to seed never to `base`). |
351
+ | `from` | **Required.** The source color value same forms as `GlazeColorValue`. |
352
+ | `hue` | Number (absolute 0–360) or `'+N'`/`'-N'` (relative to seed, never to `base`). |
347
353
  | `saturation` | Override seed saturation (0–100). |
348
- | `lightness` | Number (absolute 0–100) or `'+N'`/`'-N'`. Without `base`, relative is anchored to the literal seed; with `base`, anchored to `base`'s lightness per scheme. Supports `[normal, hc]` pairs. |
349
- | `saturationFactor` | Multiplier on the seed (0–1). Default: `1`. |
350
- | `mode` | `'auto'` (default for every input form) / `'fixed'` / `'static'`. |
351
- | `contrast` | WCAG floor. Without `base`, anchored to the literal seed; with `base`, solved per scheme against `base`'s resolved variant. When the target can't be met, a `console.warn` is emitted and the closest passing variant is returned. |
352
- | `base` | `GlazeColorToken` **or** raw `GlazeColorValue`. Raw values are auto-wrapped via `glaze.color(value)`. When set, `contrast` and relative `lightness` anchor to it per scheme; relative `hue` still anchors to the seed. |
353
- | `opacity` | Fixed alpha 0–1 applied to every variant. Combining with `contrast` is not recommended — `console.warn` is emitted. |
354
- | `name` | Debug label only — surfaces in `console.warn` / Error messages. Does not change output keys. |
354
+ | `lightness` | Number (absolute 0–100) or `'+N'`/`'-N'`. Without `base`, relative anchors to the seed; with `base`, anchors to `base`'s lightness per scheme. |
355
+ | `saturationFactor` | Multiplier on the seed (0–1). |
356
+ | `mode` | `'auto'` (default) / `'fixed'` / `'static'`. |
357
+ | `contrast` | WCAG floor. Without `base`, anchored to the literal seed; with `base`, solved per scheme. |
358
+ | `base` | `GlazeColorToken` or raw `GlazeColorValue`. See [Pairing colors](#pairing-colors). |
359
+ | `opacity` | Fixed alpha 0–1. Combining with `contrast` is not recommended — `console.warn` is emitted. |
360
+ | `name` | Debug label only — surfaces in warnings/errors. Does not change output keys. |
355
361
 
356
- ### `GlazeColorScaling`
362
+ Named CSS colors (`'red'`, `'blueviolet'`) are not supported.
357
363
 
358
- Per-call lightness-window override. Mirrors `GlazeConfig`'s field names:
364
+ ### Defaults
359
365
 
360
- | Key | Default for string input | Default for object / tuple / structured input | Effect |
361
- |---|---|---|---|
362
- | `lightLightness` | `false` | `globalConfig.lightLightness` (snapshotted) | `false` = preserve input. Pass `[lo, hi]` to opt into a remap window. |
363
- | `darkLightness` | `[globalConfig.darkLightness[0], 100]` (snapshotted) | `globalConfig.darkLightness` (snapshotted) | `false` = preserve input in dark too. Pass `[lo, hi]` to override the window. |
366
+ Every input form defaults to `mode: 'auto'` so the resolved token adapts between light and dark like an ordinary theme color. The config snapshot taken at create time differs by input form:
364
367
 
365
- Passing `scaling` is **all-or-nothing** both fields are replaced. To keep one field's default while overriding the other, restate the default explicitly.
368
+ - **Value-shorthand** (bare strings, value objects, and `{ from, ...overrides }`):
369
+ - Light variant preserves the input lightness exactly (`lightLightness: false`).
370
+ - All other config fields (`darkLightness`, `darkDesaturation`, `darkCurve`, `autoFlip`) snapshot from `globalConfig` at create time.
371
+ - **Structured input** (`{ hue, saturation, lightness, ... }`):
372
+ - Both lightness windows snapshot from `globalConfig` at create time (same as a theme color).
373
+ - All fields are **snapshotted at color-creation time** — later `glaze.configure()` calls don't retroactively change existing tokens.
366
374
 
367
375
  ```ts
368
- // Preserve raw lightness in dark mode too
369
- glaze.color('#26fcb2', undefined, { darkLightness: false });
376
+ // Bare string adapts automatically
377
+ glaze.color('#26fcb2')
370
378
 
371
- // Opt back into a theme-style window
372
- glaze.color('#26fcb2', undefined, {
373
- lightLightness: [10, 100],
374
- darkLightness: [15, 95],
375
- });
379
+ // Value-object same behavior
380
+ glaze.color({ h: 152, s: 0.95, l: 0.74 })
376
381
 
377
- // Structured form takes scaling as the second positional arg
378
- glaze.color({ hue: 152, saturation: 95, lightness: 74 }, { darkLightness: false });
382
+ // From form value + color overrides
383
+ glaze.color({ from: '#1a1a2e', hue: '+20', contrast: 'AA' })
384
+
385
+ // Structured form — explicit hue/saturation/lightness (0–100)
386
+ glaze.color({ hue: 152, saturation: 95, lightness: 74 })
379
387
  ```
380
388
 
381
389
  ### Token methods
@@ -391,12 +399,71 @@ A `GlazeColorToken` exposes:
391
399
  | `token.css({ name, format?, suffix? })` | CSS custom property declarations grouped by scheme variant. `name` is **required** and becomes the variable identifier (`'brand'` → `--brand-color`). Defaults: `format: 'rgb'`, `suffix: '-color'` (matches `theme.css`). |
392
400
  | `token.export()` | JSON-safe snapshot — pass to `glaze.colorFrom(...)` to rehydrate. |
393
401
 
402
+ ### Per-instance config override
403
+
404
+ The optional `config` second argument (`GlazeConfigOverride`) overrides the resolve-relevant global config fields for a single token or theme. Fields that are omitted fall through to the live global config at create time (and are snapshotted). Pass `false` for a lightness window to disable clamping entirely — equivalent to `[0, 100]`.
405
+
406
+ `GlazeConfigOverride`:
407
+
408
+ | Field | Default (from global) | Description |
409
+ |---|---|---|
410
+ | `lightLightness` | `[10, 100]` | Light window `[lo, hi]` or `false` (disable clamping = `[0, 100]`). |
411
+ | `darkLightness` | `[15, 95]` | Dark window `[lo, hi]` or `false` (disable clamping). |
412
+ | `darkDesaturation` | `0.1` | Saturation reduction in dark scheme (0–1). |
413
+ | `darkCurve` | `0.5` | Möbius beta for dark `auto`-inversion (0–1). Accepts `[normal, hc]` pair. |
414
+ | `autoFlip` | `true` | When solving `contrast`, allow the solver to switch lightness direction if the requested side can't meet the target. |
415
+ | `shadowTuning` | `undefined` | Default shadow tuning (meaningful for themes; harmless on color tokens). |
416
+
417
+ Config overrides apply to both `glaze.color()` tokens and `glaze()` themes:
418
+
419
+ ```ts
420
+ // Standalone color — preserve raw lightness in both schemes
421
+ glaze.color('#26fcb2', { darkLightness: false })
422
+
423
+ // Restore the #000 → white dark flip (full dark range)
424
+ glaze.color('#000000', {
425
+ lightLightness: false,
426
+ darkLightness: [15, 100],
427
+ })
428
+
429
+ // Structured form with config override
430
+ glaze.color({ hue: 152, saturation: 95, lightness: 74 }, { darkLightness: false })
431
+
432
+ // Theme with config override
433
+ const rawTheme = glaze(280, 80, { lightLightness: false })
434
+ ```
435
+
436
+ The override is **snapshotted at create time** so later `glaze.configure()` calls don't change already-created tokens or themes (for non-overridden fields, the snapshot captured the global value at creation time; for themes, non-overridden fields are re-read from the live global at resolve time — see [Theme config override](#theme-config-override)).
437
+
438
+ ### Theme config override
439
+
440
+ When a theme is created with a `GlazeConfigOverride`, the override is **merged over the live global config at resolve time**. This means:
441
+
442
+ - Fields you overrode are fixed — `glaze.configure()` can't change them for this theme.
443
+ - Fields you didn't override still react to later `glaze.configure()` calls.
444
+
445
+ ```ts
446
+ const t = glaze(280, 80, { lightLightness: [0, 50] });
447
+ t.colors({ text: { lightness: 50, saturation: 1 } });
448
+ // text.light.l ≈ 0.25 — always, regardless of global lightLightness changes.
449
+ // text.dark.s reacts to glaze.configure({ darkDesaturation }) since it's not overridden.
450
+ ```
451
+
452
+ `extend` inherits the parent's override and shallow-merges the child's:
453
+
454
+ ```ts
455
+ const child = t.extend({ config: { darkLightness: false } });
456
+ // child: lightLightness: [0, 50] (inherited) + darkLightness: false (added)
457
+ ```
458
+
459
+ `theme.export()` includes `config`; `glaze.from(data)` restores it.
460
+
394
461
  ### `glaze.colorFrom(data)`
395
462
 
396
- Inverse of `token.export()`. Captures the original input value, all overrides (with any `base` token recursively serialized), and the effective `scaling` so later `glaze.configure()` calls don't change exported tokens.
463
+ Inverse of `token.export()`. The exported snapshot includes the original input, all overrides (with any `base` token recursively serialized), and the full effective config so later `glaze.configure()` calls don't change rehydrated tokens.
397
464
 
398
465
  ```ts
399
- const text = glaze.color('#1a1a1a', { contrast: 'AA' });
466
+ const text = glaze.color({ from: '#1a1a1a', contrast: 'AA' });
400
467
  const data = text.export();
401
468
  const restored = glaze.colorFrom(data);
402
469
  // restored.resolve() === text.resolve() byte-for-byte
@@ -412,17 +479,17 @@ Set `base` to anchor a standalone color to another standalone color or raw value
412
479
  const bg = glaze.color('#1a1a2e');
413
480
 
414
481
  // Text guaranteed AA against `bg` in every scheme.
415
- const text = glaze.color('#ffffff', { base: bg, contrast: 'AA' });
482
+ const text = glaze.color({ from: '#ffffff', base: bg, contrast: 'AA' });
416
483
 
417
484
  // Border 8 lightness units lighter than `bg` in each scheme.
418
- const border = glaze.color('#000000', {
485
+ const border = glaze.color({ from: '#000000',
419
486
  base: bg,
420
487
  lightness: '+8',
421
488
  mode: 'fixed',
422
489
  });
423
490
 
424
491
  // Raw-value base — Glaze auto-wraps it via `glaze.color(value)`.
425
- const text2 = glaze.color('#ffffff', { base: '#1a1a2e', contrast: 'AA' });
492
+ const text2 = glaze.color({ from: '#ffffff', base: '#1a1a2e', contrast: 'AA' });
426
493
  ```
427
494
 
428
495
  Behavior with `base`:
@@ -432,15 +499,15 @@ Behavior with `base`:
432
499
  - Relative `hue: '+N'` / `'-N'` still anchors to the **seed** (the value passed to `glaze.color()`), not the base.
433
500
  - `mode` works as a per-pair knob.
434
501
  - The base token's `.resolve()` is called lazily on the first resolve of the dependent and the result is captured by reference; later mutations to the base don't apply.
435
- - Raw-value bases inherit the same string-vs-object scaling defaults. To skip auto-invert on the base, wrap it yourself: `base: glaze.color(value, undefined, { darkLightness: false })`.
502
+ - **Structured bases are resolved at full range for linking math**: when a value/`from` color links to a base created via the structured form, the contrast/lightness anchor uses the raw input lightness (not the windowed output). This ensures the anchor matches what you intended, not what the light window remapped it to. The base's own `.resolve()` output is unaffected.
436
503
  - When the contrast target is physically unreachable, `glaze` emits a single `console.warn` per `(name, scheme, target)` triple and returns the closest passing variant. Use the `name` override to make the warning identifiable.
437
504
 
438
505
  Chains compose:
439
506
 
440
507
  ```ts
441
508
  const bg = glaze.color('#000000');
442
- const surface = glaze.color('#222222', { base: bg, contrast: 'AAA' });
443
- const text = glaze.color('#ffffff', { base: surface, contrast: 'AA' });
509
+ const surface = glaze.color({ from: '#222222', base: bg, contrast: 'AAA' });
510
+ const text = glaze.color({ from: '#ffffff', base: surface, contrast: 'AA' });
444
511
  ```
445
512
 
446
513
  ### `name` is a debug label
@@ -899,10 +966,10 @@ S_dark = S_light * (1 - darkDesaturation) // default: 0.1
899
966
 
900
967
  ```ts
901
968
  glaze.configure({
902
- lightLightness: [10, 100],
903
- darkLightness: [15, 95],
969
+ lightLightness: [10, 100], // or false to disable clamping
970
+ darkLightness: [15, 95], // or false to disable clamping
904
971
  darkDesaturation: 0.1,
905
- darkCurve: 0.5, // or [normal, hc] pair
972
+ darkCurve: 0.5, // or [normal, hc] pair
906
973
  states: {
907
974
  dark: '@dark',
908
975
  highContrast: '@high-contrast',
@@ -922,8 +989,8 @@ glaze.configure({
922
989
 
923
990
  | Field | Default | Description |
924
991
  |---|---|---|
925
- | `lightLightness` | `[10, 100]` | Light scheme lightness window `[lo, hi]`. Bypassed in HC. |
926
- | `darkLightness` | `[15, 95]` | Dark scheme lightness window. Bypassed in HC. |
992
+ | `lightLightness` | `[10, 100]` | Light scheme lightness window `[lo, hi]`, or `false` to disable clamping (equivalent to `[0, 100]`). Bypassed in HC. |
993
+ | `darkLightness` | `[15, 95]` | Dark scheme lightness window, or `false` to disable clamping. Bypassed in HC. |
927
994
  | `darkDesaturation` | `0.1` | Saturation reduction in dark scheme (0–1). |
928
995
  | `darkCurve` | `0.5` | Möbius beta for dark `auto`-inversion (0–1). Accepts `[normal, hc]` pair. |
929
996
  | `states.dark` | `'@dark'` | State alias for dark mode tokens (Tasty export). |
@@ -931,6 +998,7 @@ glaze.configure({
931
998
  | `modes.dark` | `true` | Include dark variants in exports. |
932
999
  | `modes.highContrast` | `false` | Include HC variants. |
933
1000
  | `shadowTuning` | `undefined` | Default tuning for all shadow colors. Per-color tuning merges field-by-field. |
1001
+ | `autoFlip` | `true` | When solving `contrast`, allow the solver to switch away from the requested lightness direction if that side can't meet the target. With `false`, only the requested direction is considered; unmet contrasts pin the lightness to that direction's extreme (and emit a warning). |
934
1002
 
935
1003
  | Method | Description |
936
1004
  |---|---|
@@ -938,7 +1006,7 @@ glaze.configure({
938
1006
  | `glaze.getConfig()` | Snapshot the current resolved config (shallow copy). |
939
1007
  | `glaze.resetConfig()` | Reset to defaults (also bumps the version counter). |
940
1008
 
941
- Standalone `glaze.color()` tokens snapshot the relevant fields at create time, so later `configure()` calls don't change already-created tokens.
1009
+ Standalone `glaze.color()` tokens snapshot the resolve-relevant fields at create time, so later `configure()` calls don't change already-created tokens. Themes merge the live global at resolve time for fields not overridden via `GlazeConfigOverride`.
942
1010
 
943
1011
  ---
944
1012
 
@@ -970,8 +1038,10 @@ Resolution priority (highest first):
970
1038
 
971
1039
  | Condition | Behavior |
972
1040
  |---|---|
973
- | `contrast` without `base` | Validation error |
974
- | Relative `lightness` without `base` | Validation error |
1041
+ | `contrast` without `base` in a **theme** color | Validation error |
1042
+ | Relative `lightness` without `base` in a **theme** color | Validation error |
1043
+ | `contrast` without `base` in `glaze.color()` | Anchors against the literal seed (no error) |
1044
+ | Relative `lightness` without `base` in `glaze.color()` | Anchors against the literal seed (no error) |
975
1045
  | `lightness` resolves outside 0–100 | Clamp silently |
976
1046
  | `saturation` outside 0–1 | Clamp silently |
977
1047
  | Circular `base` references | Validation error |
@@ -1070,5 +1140,7 @@ import {
1070
1140
  | `lightnessRange` | `[0, 1]` | Search bounds. |
1071
1141
  | `epsilon` | `1e-4` | Convergence threshold. |
1072
1142
  | `maxIterations` | `14` | Max binary-search iterations per branch. |
1143
+ | `initialDirection` | higher-contrast side | Direction to search first (`'lighter'` or `'darker'`). Theme resolution sets this from the requested lightness relative to the base color. |
1144
+ | `flip` | `false` | When `true`, try the opposite direction if the initial one doesn't meet the target. When `false`, only the initial direction is searched — unmet contrasts pin the result to that direction's extreme. |
1073
1145
 
1074
- Result: `{ lightness, contrast, met, branch: 'lighter' | 'darker' | 'preferred' }`.
1146
+ Result: `{ lightness, contrast, met, branch: 'lighter' | 'darker' | 'preferred', flipped? }`. `flipped: true` indicates the initial direction failed and the opposite direction satisfied the target.