@cube-dev/ui-kit 0.0.0-canary-b4ff7b4 → 0.0.0-canary-3235a6e

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 (551) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.d.ts +0 -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/InfoBadge/InfoBadge.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  57. package/dist/components/content/Item/Item.js +1 -1
  58. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  59. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  60. package/dist/components/content/Layout/GridLayout.js +1 -1
  61. package/dist/components/content/Layout/Layout.js +1 -1
  62. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  63. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  64. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  65. package/dist/components/content/Layout/LayoutContent.js +1 -1
  66. package/dist/components/content/Layout/LayoutContext.js +1 -1
  67. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  68. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  69. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  70. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutPane.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  75. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  76. package/dist/components/content/Layout/index.js +1 -1
  77. package/dist/components/content/Layout/utils.js +1 -1
  78. package/dist/components/content/Paragraph.js +1 -1
  79. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  80. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  81. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  82. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  83. package/dist/components/content/Result/Result.js +1 -1
  84. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  85. package/dist/components/content/Tag/Tag.js +1 -1
  86. package/dist/components/content/Text.d.ts +14 -14
  87. package/dist/components/content/Text.js +1 -1
  88. package/dist/components/content/TextItem/TextItem.js +1 -1
  89. package/dist/components/content/Title.js +1 -1
  90. package/dist/components/content/Tree/Tree.js +1 -1
  91. package/dist/components/content/Tree/TreeNode.js +1 -1
  92. package/dist/components/content/Tree/styled.js +1 -1
  93. package/dist/components/content/Tree/tree-index.js +1 -1
  94. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  95. package/dist/components/content/Tree/use-load-data.js +1 -1
  96. package/dist/components/content/highlightText.js +1 -1
  97. package/dist/components/content/use-auto-tooltip.js +1 -1
  98. package/dist/components/data/DataTable/DataTable.js +1 -1
  99. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  104. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  105. package/dist/components/data/TableBase/RowCollection.js +1 -1
  106. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  107. package/dist/components/data/TableBase/TableRow.js +1 -1
  108. package/dist/components/data/TableBase/TableView.js +1 -1
  109. package/dist/components/data/TableBase/column-menu.js +1 -1
  110. package/dist/components/data/TableBase/column-tint.js +1 -1
  111. package/dist/components/data/TableBase/row-menu.js +1 -1
  112. package/dist/components/data/TableBase/styled.d.ts +1 -2
  113. package/dist/components/data/TableBase/styled.js +1 -1
  114. package/dist/components/data/TableBase/table-tree.js +1 -1
  115. package/dist/components/data/TableBase/types.js +1 -1
  116. package/dist/components/data/TableBase/use-cell-selection.d.ts +0 -1
  117. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  118. package/dist/components/data/TableBase/use-column-order.js +1 -1
  119. package/dist/components/data/TableBase/use-container-width.js +1 -1
  120. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  121. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  122. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  123. package/dist/components/data/TableBase/use-table-search.js +1 -1
  124. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  125. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  126. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  127. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  128. package/dist/components/data/TableBase/use-table-tree-state.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 +1 -1
  133. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  134. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  135. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  136. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  137. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  138. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  139. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  140. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  141. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  142. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  147. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  148. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  149. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  152. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  153. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  156. package/dist/components/fields/DatePicker/period.js +1 -1
  157. package/dist/components/fields/DatePicker/props.js +1 -1
  158. package/dist/components/fields/DatePicker/utils.js +1 -1
  159. package/dist/components/fields/FileInput/FileInput.js +1 -1
  160. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  161. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  162. package/dist/components/fields/Input/Input.js +1 -1
  163. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  164. package/dist/components/fields/ListBox/ListBox.js +1 -1
  165. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  166. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -1
  167. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  168. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  169. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  170. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  171. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  172. package/dist/components/fields/Picker/Picker.js +1 -1
  173. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  174. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  175. package/dist/components/fields/RadioGroup/context.js +1 -1
  176. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  177. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  178. package/dist/components/fields/Select/Select.js +1 -1
  179. package/dist/components/fields/Slider/Gradation.js +1 -1
  180. package/dist/components/fields/Slider/HueSlider.js +1 -1
  181. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  182. package/dist/components/fields/Slider/Slider.js +1 -1
  183. package/dist/components/fields/Slider/SliderBase.js +1 -1
  184. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  185. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  186. package/dist/components/fields/Slider/elements.js +1 -1
  187. package/dist/components/fields/Slider/index.js +1 -1
  188. package/dist/components/fields/Switch/Switch.js +1 -1
  189. package/dist/components/fields/TextArea/TextArea.js +1 -1
  190. package/dist/components/fields/TextInput/TextInput.js +1 -1
  191. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  192. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  193. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  194. package/dist/components/fields/color/ColorPanel.js +1 -1
  195. package/dist/components/fields/color/channels.js +1 -1
  196. package/dist/components/fields/color/color.js +1 -1
  197. package/dist/components/fields/color/context.js +1 -1
  198. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  199. package/dist/components/form/Form/Field.js +1 -1
  200. package/dist/components/form/Form/Form.js +1 -1
  201. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  202. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  203. package/dist/components/form/Form/SubmitError.js +1 -1
  204. package/dist/components/form/Form/index.js +1 -1
  205. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  206. package/dist/components/form/Form/use-field/use-field.js +1 -1
  207. package/dist/components/form/Form/use-form.js +1 -1
  208. package/dist/components/form/Form/validation.js +1 -1
  209. package/dist/components/form/Label.js +1 -1
  210. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  211. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  212. package/dist/components/form/validation/use-validation-props.js +1 -1
  213. package/dist/components/form/wrapper.js +1 -1
  214. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  215. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  216. package/dist/components/layout/Board/Board.js +1 -1
  217. package/dist/components/layout/Board/BoardProvider.js +1 -1
  218. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  219. package/dist/components/layout/Board/Widget.js +1 -1
  220. package/dist/components/layout/Board/WidgetHost.js +1 -1
  221. package/dist/components/layout/Board/board-context.js +1 -1
  222. package/dist/components/layout/Board/board-store.js +1 -1
  223. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  224. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  225. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  226. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  227. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  228. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  229. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  230. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  231. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  232. package/dist/components/layout/Board/index.js +1 -1
  233. package/dist/components/layout/Board/responsive-utils.js +1 -1
  234. package/dist/components/layout/Board/use-board-layout.js +1 -1
  235. package/dist/components/layout/Board/use-board-registry.js +1 -1
  236. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  237. package/dist/components/layout/Board/use-board-selection.js +1 -1
  238. package/dist/components/layout/Flex.js +1 -1
  239. package/dist/components/layout/Flow.js +1 -1
  240. package/dist/components/layout/Grid.js +1 -1
  241. package/dist/components/layout/Panel.js +1 -1
  242. package/dist/components/layout/Prefix.js +1 -1
  243. package/dist/components/layout/ResizablePanel.js +1 -1
  244. package/dist/components/layout/Space.js +1 -1
  245. package/dist/components/layout/Suffix.js +1 -1
  246. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  247. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  248. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  249. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  250. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  251. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  252. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  253. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  254. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  255. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  256. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  257. package/dist/components/navigation/Tabs/styled.js +1 -1
  258. package/dist/components/navigation/Tabs/types.js +1 -1
  259. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  260. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  261. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  262. package/dist/components/other/Calendar/Calendar.js +1 -1
  263. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  264. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  265. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  266. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  267. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  268. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  269. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  270. package/dist/components/other/Calendar/styled.js +1 -1
  271. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  272. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  273. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  274. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  275. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  276. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  277. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  278. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  279. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  280. package/dist/components/overlays/Dialog/context.js +1 -1
  281. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  282. package/dist/components/overlays/Modal/Modal.d.ts +1 -2
  283. package/dist/components/overlays/Modal/Modal.js +1 -1
  284. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  285. package/dist/components/overlays/Modal/Overlay.d.ts +0 -1
  286. package/dist/components/overlays/Modal/Overlay.js +1 -1
  287. package/dist/components/overlays/Modal/Popover.js +1 -1
  288. package/dist/components/overlays/Modal/Tray.js +1 -1
  289. package/dist/components/overlays/Modal/Underlay.js +1 -1
  290. package/dist/components/overlays/Modal/types.d.ts +0 -1
  291. package/dist/components/overlays/Notifications/Notification.js +1 -1
  292. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  293. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  294. package/dist/components/overlays/Notifications/NotificationContext.d.ts +0 -2
  295. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  296. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  297. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  298. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  299. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  300. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  301. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  302. package/dist/components/overlays/Notifications/index.js +1 -1
  303. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  304. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  305. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  306. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  307. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  308. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  309. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  310. package/dist/components/overlays/Toast/index.js +1 -1
  311. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  312. package/dist/components/overlays/Toast/useToast.js +1 -1
  313. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  314. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  315. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  316. package/dist/components/overlays/Tooltip/context.js +1 -1
  317. package/dist/components/portal/Portal.js +1 -1
  318. package/dist/components/portal/PortalProvider.js +1 -1
  319. package/dist/components/portal/index.d.ts +0 -1
  320. package/dist/components/portal/usePortal.js +1 -1
  321. package/dist/components/shared/DraggableCollection.js +1 -1
  322. package/dist/components/shared/InvalidIcon.js +1 -1
  323. package/dist/components/shared/ValidIcon.js +1 -1
  324. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  325. package/dist/components/status/Spin/Cube.js +1 -1
  326. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  327. package/dist/components/status/Spin/Spin.js +1 -1
  328. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  329. package/dist/data/item-themes.js +1 -1
  330. package/dist/data/themes.js +1 -1
  331. package/dist/eslint-plugin/defaults.generated.js +1 -1
  332. package/dist/eslint-plugin/index.js +1 -1
  333. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  334. package/dist/i18n/I18nProvider.js +1 -1
  335. package/dist/i18n/createFormatter.js +1 -1
  336. package/dist/i18n/index.js +1 -1
  337. package/dist/i18n/instance.js +1 -1
  338. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  339. package/dist/i18n/locales/en-US/uikit.js +1 -1
  340. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  341. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  342. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  343. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  344. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  345. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  346. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  347. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  348. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  349. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  350. package/dist/i18n/locales.js +1 -1
  351. package/dist/i18n/useFormatter.js +1 -1
  352. package/dist/i18n/useI18n.js +1 -1
  353. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  354. package/dist/icons/AdjustmentsIcon.js +1 -1
  355. package/dist/icons/AiIcon.js +1 -1
  356. package/dist/icons/AreaChartIcon.js +1 -1
  357. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  358. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  359. package/dist/icons/BackwardIcon.js +1 -1
  360. package/dist/icons/BarChartIcon.js +1 -1
  361. package/dist/icons/BellFilledIcon.js +1 -1
  362. package/dist/icons/BellIcon.js +1 -1
  363. package/dist/icons/BooleanIcon.js +1 -1
  364. package/dist/icons/CalendarEditIcon.js +1 -1
  365. package/dist/icons/CalendarIcon.js +1 -1
  366. package/dist/icons/CaretDownIcon.js +1 -1
  367. package/dist/icons/CaretUpIcon.js +1 -1
  368. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  369. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  370. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  371. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  372. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  373. package/dist/icons/ChartBarLineIcon.js +1 -1
  374. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  375. package/dist/icons/ChartBarStackedIcon.js +1 -1
  376. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  377. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  378. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  379. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  380. package/dist/icons/ChartBubbleIcon.js +1 -1
  381. package/dist/icons/ChartDonut2Icon.js +1 -1
  382. package/dist/icons/ChartFunnelIcon.js +1 -1
  383. package/dist/icons/ChartHeatmapIcon.js +1 -1
  384. package/dist/icons/ChartKPIIcon.js +1 -1
  385. package/dist/icons/ChartPie2Icon.js +1 -1
  386. package/dist/icons/ChartScatterIcon.js +1 -1
  387. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  388. package/dist/icons/CheckCircleIcon.js +1 -1
  389. package/dist/icons/CheckIcon.js +1 -1
  390. package/dist/icons/CircleFilledIcon.js +1 -1
  391. package/dist/icons/ClearIcon.js +1 -1
  392. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  393. package/dist/icons/CloseCircleIcon.js +1 -1
  394. package/dist/icons/CloseIcon.js +1 -1
  395. package/dist/icons/CodeIcon.js +1 -1
  396. package/dist/icons/ColumnTotalIcon.js +1 -1
  397. package/dist/icons/CopyIcon.js +1 -1
  398. package/dist/icons/CountIcon.js +1 -1
  399. package/dist/icons/CubeIcon.js +1 -1
  400. package/dist/icons/CubePauseIcon.js +1 -1
  401. package/dist/icons/CubePlayIcon.js +1 -1
  402. package/dist/icons/CurrencyDollarIcon.js +1 -1
  403. package/dist/icons/DangerIcon.js +1 -1
  404. package/dist/icons/DashboardIcon.js +1 -1
  405. package/dist/icons/DatabaseIcon.js +1 -1
  406. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  407. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  408. package/dist/icons/DirectionIcon.js +1 -1
  409. package/dist/icons/DonutIcon.js +1 -1
  410. package/dist/icons/DownIcon.js +1 -1
  411. package/dist/icons/EditIcon.js +1 -1
  412. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  413. package/dist/icons/ExclamationCircleIcon.js +1 -1
  414. package/dist/icons/ExclamationIcon.js +1 -1
  415. package/dist/icons/EyeIcon.js +1 -1
  416. package/dist/icons/EyeInvisibleIcon.js +1 -1
  417. package/dist/icons/FilterIcon.js +1 -1
  418. package/dist/icons/FolderFilledIcon.js +1 -1
  419. package/dist/icons/FolderIcon.js +1 -1
  420. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  421. package/dist/icons/FolderOpenIcon.js +1 -1
  422. package/dist/icons/ForwardIcon.js +1 -1
  423. package/dist/icons/GripVerticalIcon.js +1 -1
  424. package/dist/icons/HierarchyIcon.js +1 -1
  425. package/dist/icons/HierarchyOpenIcon.js +1 -1
  426. package/dist/icons/Icon.js +1 -1
  427. package/dist/icons/InfoCircleIcon.js +1 -1
  428. package/dist/icons/InfoIcon.js +1 -1
  429. package/dist/icons/KeyIcon.js +1 -1
  430. package/dist/icons/LeftIcon.js +1 -1
  431. package/dist/icons/LineChartIcon.js +1 -1
  432. package/dist/icons/LoadingIcon.js +1 -1
  433. package/dist/icons/LockFilledIcon.js +1 -1
  434. package/dist/icons/LockIcon.js +1 -1
  435. package/dist/icons/MoreIcon.js +1 -1
  436. package/dist/icons/NotAllowedIcon.js +1 -1
  437. package/dist/icons/Number123Icon.js +1 -1
  438. package/dist/icons/NumberIcon.js +1 -1
  439. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  440. package/dist/icons/PauseCircleIcon.js +1 -1
  441. package/dist/icons/PauseIcon.js +1 -1
  442. package/dist/icons/PercentageIcon.js +1 -1
  443. package/dist/icons/PieChartIcon.js +1 -1
  444. package/dist/icons/PipetteIcon.js +1 -1
  445. package/dist/icons/PlayCircleIcon.js +1 -1
  446. package/dist/icons/PlayIcon.js +1 -1
  447. package/dist/icons/PlusIcon.js +1 -1
  448. package/dist/icons/ProgressBarIcon.js +1 -1
  449. package/dist/icons/ReloadIcon.js +1 -1
  450. package/dist/icons/ReportIcon.js +1 -1
  451. package/dist/icons/ReturnIcon.js +1 -1
  452. package/dist/icons/RightIcon.js +1 -1
  453. package/dist/icons/RowTotalsIcon.js +1 -1
  454. package/dist/icons/SchemeIcon.js +1 -1
  455. package/dist/icons/SearchIcon.js +1 -1
  456. package/dist/icons/SemanticQueryIcon.js +1 -1
  457. package/dist/icons/SettingsIcon.js +1 -1
  458. package/dist/icons/ShieldFilledIcon.js +1 -1
  459. package/dist/icons/ShieldIcon.js +1 -1
  460. package/dist/icons/SlashIcon.js +1 -1
  461. package/dist/icons/SparklesIcon.js +1 -1
  462. package/dist/icons/SqlIcon.js +1 -1
  463. package/dist/icons/StatsIcon.js +1 -1
  464. package/dist/icons/StopIcon.js +1 -1
  465. package/dist/icons/StringIcon.js +1 -1
  466. package/dist/icons/SubtotalsIcon.js +1 -1
  467. package/dist/icons/SwitchIcon.js +1 -1
  468. package/dist/icons/TableIcon.js +1 -1
  469. package/dist/icons/ThumbsDownIcon.js +1 -1
  470. package/dist/icons/ThumbsUpIcon.js +1 -1
  471. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  472. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  473. package/dist/icons/ThunderboltIcon.js +1 -1
  474. package/dist/icons/TimeIcon.js +1 -1
  475. package/dist/icons/TrashIcon.js +1 -1
  476. package/dist/icons/UnlockIcon.js +1 -1
  477. package/dist/icons/UpIcon.js +1 -1
  478. package/dist/icons/UserGroupIcon.js +1 -1
  479. package/dist/icons/UserIcon.js +1 -1
  480. package/dist/icons/UserLockIcon.js +1 -1
  481. package/dist/icons/ViewIcon.js +1 -1
  482. package/dist/icons/WarningFilledIcon.js +1 -1
  483. package/dist/icons/WarningIcon.js +1 -1
  484. package/dist/icons/wrap-icon.js +1 -1
  485. package/dist/index.js +1 -1
  486. package/dist/probe/canonicalize.js +1 -1
  487. package/dist/probe/css.js +1 -1
  488. package/dist/probe/index.js +1 -1
  489. package/dist/provider.js +1 -1
  490. package/dist/providers/TrackingProvider.js +1 -1
  491. package/dist/providers/navigationAdapter.default.js +1 -1
  492. package/dist/tokens/all-tokens.js +1 -1
  493. package/dist/tokens/base.js +2 -1
  494. package/dist/tokens/base.js.map +1 -1
  495. package/dist/tokens/color-seed.js +1 -1
  496. package/dist/tokens/color-theme.js +1 -1
  497. package/dist/tokens/colors.js +1 -1
  498. package/dist/tokens/layout.js +1 -1
  499. package/dist/tokens/lazy-styles.js +1 -1
  500. package/dist/tokens/palette-config.js +1 -1
  501. package/dist/tokens/palette.js +1 -1
  502. package/dist/tokens/resolve.js +83 -36
  503. package/dist/tokens/resolve.js.map +1 -1
  504. package/dist/tokens/shadows.js +1 -1
  505. package/dist/tokens/sizes.js +1 -1
  506. package/dist/tokens/spacing.js +1 -1
  507. package/dist/tokens/typography.js +1 -1
  508. package/dist/utils/ResizeSensor.js +1 -1
  509. package/dist/utils/is-dev-env.js +1 -1
  510. package/dist/utils/modules.js +1 -1
  511. package/dist/utils/promise.js +1 -1
  512. package/dist/utils/raf.js +1 -1
  513. package/dist/utils/random.js +1 -1
  514. package/dist/utils/range.js +1 -1
  515. package/dist/utils/react/RenderCache.js +1 -1
  516. package/dist/utils/react/Slots.js +1 -1
  517. package/dist/utils/react/chain.js +1 -1
  518. package/dist/utils/react/disabledProps.js +1 -1
  519. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  520. package/dist/utils/react/index.js +1 -1
  521. package/dist/utils/react/interactions.js +1 -1
  522. package/dist/utils/react/isTextOnly.js +1 -1
  523. package/dist/utils/react/mapProps.js +1 -1
  524. package/dist/utils/react/mergeProps.js +1 -1
  525. package/dist/utils/react/nullableValue.js +1 -1
  526. package/dist/utils/react/resolveIcon.js +1 -1
  527. package/dist/utils/react/sharedStore.js +1 -1
  528. package/dist/utils/react/useBufferedValue.js +1 -1
  529. package/dist/utils/react/useCombinedRefs.js +1 -1
  530. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  531. package/dist/utils/react/useEventBus.js +1 -1
  532. package/dist/utils/react/useId.js +1 -1
  533. package/dist/utils/react/useIsDarwin.js +1 -1
  534. package/dist/utils/react/useKeySymbols.js +1 -1
  535. package/dist/utils/react/useLayoutEffect.d.ts +1 -1
  536. package/dist/utils/react/useLayoutEffect.js +1 -1
  537. package/dist/utils/react/useLocalStorage.js +1 -1
  538. package/dist/utils/react/useMergeStyles.js +1 -1
  539. package/dist/utils/react/usePopoverSync.js +1 -1
  540. package/dist/utils/react/useQaProps.js +1 -1
  541. package/dist/utils/react/useViewportSize.js +1 -1
  542. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  543. package/dist/utils/selection.js +1 -1
  544. package/dist/utils/styles.js +1 -1
  545. package/dist/utils/tree.js +1 -1
  546. package/dist/utils/warnings.js +1 -1
  547. package/dist/version.js +2 -2
  548. package/docs/Usage.md +3 -1
  549. package/package.json +1 -1
  550. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
  551. package/dist/components/portal/PortalProvider.d.ts +0 -2
package/dist/probe/css.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { getCSSTextForNode } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/probe/css.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { canonicalize, canonicalizeClassNames, canonicalizeIds } from "./canonicalize.js";
3
3
  import { captureCss, diffRules, splitRules } from "./css.js";
4
4
 
package/dist/provider.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { EventBusProvider } from "./utils/react/useEventBus.js";
3
3
  import { defaultNavigationAdapter } from "./providers/navigationAdapter.default.js";
4
4
  import { createContext, useContext, useMemo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { createContext, useContext, useMemo } from "react";
3
3
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/providers/navigationAdapter.default.ts
3
3
  /**
4
4
  * Converts a Path object to a string URL
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { getPaletteVersion } from "./palette-config.js";
3
3
  import { BASE_TOKENS } from "./base.js";
4
4
  import { lazyStyles } from "./lazy-styles.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/tokens/base.ts
3
3
  /**
4
4
  * Base design system tokens.
@@ -26,6 +26,7 @@ const BASE_TOKENS = {
26
26
  "$disclosure-transition": "120ms",
27
27
  "$tab-transition": "120ms",
28
28
  "$fade-transition": "200ms",
29
+ "$tokens-applied": "1",
29
30
  "$scrollbar-width": "1.5x",
30
31
  "$scrollbar-outline-width": "1ow",
31
32
  "$scrollbar-radius": "1.5r",
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":[],"sources":["../../src/tokens/base.ts"],"sourcesContent":["import type { Styles } from '@tenphi/tasty';\n\n/**\n * Base design system tokens.\n * These define the fundamental units and values used throughout the system.\n *\n * Keys use $ prefix for CSS custom properties.\n */\nexport const BASE_TOKENS: Styles = {\n // Typography base\n /** @deprecated Use preset tokens instead */\n '$font-size': '14px',\n /** @deprecated Use preset tokens instead */\n '$line-height': '20px',\n\n // Input typography\n '$input-font-size': '14px',\n '$input-line-height': '20px',\n '$input-letter-spacing': '0.02em',\n\n // Opacity & dimensions\n /** Opacity for disabled elements */\n '$disabled-opacity': '.4',\n /** Base gap unit for spacing (used with `.5x`, `1x`, `2x` etc.) */\n $gap: '8px',\n /** Stroke width for icons */\n '$stroke-width': 1.5,\n /** Focus outline width */\n '$outline-width': 'calc(1rem / 16 * 3)',\n /** Border width for bordered elements */\n '$border-width': '1px',\n\n // Border radius\n /** Base border radius (used with `1r`, `2r` etc.) */\n $radius: '6px',\n /** Larger radius using tasty calc: 1r + 0.5x */\n '$large-radius': '(1r + .5x)',\n /** Card border radius */\n '$card-radius': '(1r + .5x)',\n /** Sharp corner for leaf shapes */\n '$sharp-radius': '0px',\n\n // Misc dimensions\n /** Minimum dialog width (responsive) */\n '$min-dialog-size': 'min(288px, calc(100vw - (2 * var(--gap))))',\n\n // Transitions\n /** Default transition duration */\n $transition: '80ms',\n /** Transition for disclosure animations */\n '$disclosure-transition': '120ms',\n /** Transition for tab animations */\n '$tab-transition': '120ms',\n /** Transition for fade animations */\n '$fade-transition': '200ms',\n\n // Scrollbar tokens\n '$scrollbar-width': '1.5x',\n '$scrollbar-outline-width': '1ow',\n '$scrollbar-radius': '1.5r',\n '#scrollbar-thumb': '#text.5',\n '#scrollbar-outline': '#clear',\n '#scrollbar-bg': '#surface-2',\n '#scrollbar-corner': '#clear',\n};\n"],"mappings":";;;;;;;;AAQA,MAAa,cAAsB;CAGjC,cAAc;CAEd,gBAAgB;CAGhB,oBAAoB;CACpB,sBAAsB;CACtB,yBAAyB;CAIzB,qBAAqB;CAErB,MAAM;CAEN,iBAAiB;CAEjB,kBAAkB;CAElB,iBAAiB;CAIjB,SAAS;CAET,iBAAiB;CAEjB,gBAAgB;CAEhB,iBAAiB;CAIjB,oBAAoB;CAIpB,aAAa;CAEb,0BAA0B;CAE1B,mBAAmB;CAEnB,oBAAoB;CAGpB,oBAAoB;CACpB,4BAA4B;CAC5B,qBAAqB;CACrB,oBAAoB;CACpB,sBAAsB;CACtB,iBAAiB;CACjB,qBAAqB;CACtB"}
1
+ {"version":3,"file":"base.js","names":[],"sources":["../../src/tokens/base.ts"],"sourcesContent":["import type { Styles } from '@tenphi/tasty';\n\n/**\n * Base design system tokens.\n * These define the fundamental units and values used throughout the system.\n *\n * Keys use $ prefix for CSS custom properties.\n */\nexport const BASE_TOKENS: Styles = {\n // Typography base\n /** @deprecated Use preset tokens instead */\n '$font-size': '14px',\n /** @deprecated Use preset tokens instead */\n '$line-height': '20px',\n\n // Input typography\n '$input-font-size': '14px',\n '$input-line-height': '20px',\n '$input-letter-spacing': '0.02em',\n\n // Opacity & dimensions\n /** Opacity for disabled elements */\n '$disabled-opacity': '.4',\n /** Base gap unit for spacing (used with `.5x`, `1x`, `2x` etc.) */\n $gap: '8px',\n /** Stroke width for icons */\n '$stroke-width': 1.5,\n /** Focus outline width */\n '$outline-width': 'calc(1rem / 16 * 3)',\n /** Border width for bordered elements */\n '$border-width': '1px',\n\n // Border radius\n /** Base border radius (used with `1r`, `2r` etc.) */\n $radius: '6px',\n /** Larger radius using tasty calc: 1r + 0.5x */\n '$large-radius': '(1r + .5x)',\n /** Card border radius */\n '$card-radius': '(1r + .5x)',\n /** Sharp corner for leaf shapes */\n '$sharp-radius': '0px',\n\n // Misc dimensions\n /** Minimum dialog width (responsive) */\n '$min-dialog-size': 'min(288px, calc(100vw - (2 * var(--gap))))',\n\n // Transitions\n /** Default transition duration */\n $transition: '80ms',\n /** Transition for disclosure animations */\n '$disclosure-transition': '120ms',\n /** Transition for tab animations */\n '$tab-transition': '120ms',\n /** Transition for fade animations */\n '$fade-transition': '200ms',\n\n /**\n * Marks an element as carrying the token block. Not a design value — nothing\n * styles against it.\n *\n * `resolveTokenValue()` reads it to answer the one question a computed value\n * cannot: \"are the kit's tokens in effect here?\" Tasty registers `@property`\n * defaults with real initial values — `--gap` is `4px` off the block, not\n * `0px` — so a token read from outside `<Root>` comes back plausible and\n * wrong, and no amount of inspecting the value would reveal it. This is\n * declared alongside the tokens, so it is present exactly where they are.\n */\n '$tokens-applied': '1',\n\n // Scrollbar tokens\n '$scrollbar-width': '1.5x',\n '$scrollbar-outline-width': '1ow',\n '$scrollbar-radius': '1.5r',\n '#scrollbar-thumb': '#text.5',\n '#scrollbar-outline': '#clear',\n '#scrollbar-bg': '#surface-2',\n '#scrollbar-corner': '#clear',\n};\n"],"mappings":";;;;;;;;AAQA,MAAa,cAAsB;CAGjC,cAAc;CAEd,gBAAgB;CAGhB,oBAAoB;CACpB,sBAAsB;CACtB,yBAAyB;CAIzB,qBAAqB;CAErB,MAAM;CAEN,iBAAiB;CAEjB,kBAAkB;CAElB,iBAAiB;CAIjB,SAAS;CAET,iBAAiB;CAEjB,gBAAgB;CAEhB,iBAAiB;CAIjB,oBAAoB;CAIpB,aAAa;CAEb,0BAA0B;CAE1B,mBAAmB;CAEnB,oBAAoB;CAapB,mBAAmB;CAGnB,oBAAoB;CACpB,4BAA4B;CAC5B,qBAAqB;CACrB,oBAAoB;CACpB,sBAAsB;CACtB,iBAAiB;CACjB,qBAAqB;CACtB"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { glaze } from "@tenphi/glaze";
3
3
 
4
4
  //#region src/tokens/color-seed.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { colorSeed } from "./color-seed.js";
3
3
  import { DEFAULT_HUE, DEFAULT_SATURATION, getPaletteConfig, getPaletteVersion, usePaletteVersion } from "./palette-config.js";
4
4
  import { tintRecipe } from "./palette.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { getPaletteVersion } from "./palette-config.js";
3
3
  import { BASE_TOKENS } from "./base.js";
4
4
  import { lazyStyles } from "./lazy-styles.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/tokens/layout.ts
3
3
  /**
4
4
  * Layout-related tokens for common UI dimensions.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/tokens/lazy-styles.ts
3
3
  /**
4
4
  * Proxy that defers to `factory()` on every property / enumeration access.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { colorSeed } from "./color-seed.js";
3
3
  import { useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { SURFACE_SATURATION_SHARE, getPaletteConfig, getPaletteVersion, resolvePaletteConfig } from "./palette-config.js";
3
3
  import { lazyStyles } from "./lazy-styles.js";
4
4
  import { apcaContrast, glaze, okhslToLinearSrgb, variantToOkhsl } from "@tenphi/glaze";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../utils/react/useLayoutEffect.js";
3
3
  import { warn } from "../utils/warnings.js";
4
4
  import { getPaletteVersion, usePaletteVersion } from "./palette-config.js";
@@ -12,26 +12,44 @@ import { useState, useSyncExternalStore } from "react";
12
12
  * a CodeMirror / Monaco theme object, a Vega spec. Those take colors, lengths and
13
13
  * font descriptors as values; `var(--purple-color)` means nothing to them.
14
14
  *
15
- * There are two ways to get this wrong by hand, and both fail silently:
15
+ * Doing it by hand fails silently, because a token read from the wrong element
16
+ * does not come back empty. Tasty registers `@property` rules — its own defaults
17
+ * plus one for every custom property whose type it can infer — and an undeclared
18
+ * token reads back as that rule's `initial-value`. Some of those are obvious
19
+ * duds (`rgba(0, 0, 0, 0)` for a `<color>`, `0px` for a `<length>`), but many are
20
+ * ordinary-looking values: off the token block `--gap` reads `4px` rather than
21
+ * the kit's `8px`, `--transition` reads `80ms`, `--radius` reads `6px`. So
22
+ * inspecting the value cannot tell a real token from a miss, in either
23
+ * direction — `#clear` really is `transparent` and `$h2-letter-spacing` really
24
+ * is `0px`.
16
25
  *
17
- * 1. **Reading from the wrong element.** `<Root>` declares the token block on
18
- * `<body>` (see `src/components/GlobalStyles.tsx`), so `<html>` — and any
19
- * detached node — is outside it.
20
- * 2. **Trusting what comes back.** Tasty registers an `@property` rule for every
21
- * custom property it can infer a type for, which means an *undeclared* token
22
- * does not read back as `''`. It reads back as that rule's `initial-value`:
23
- * `rgba(0, 0, 0, 0)` for `<color>`, `0px` for `<length>`, `0deg`, `0s`, `0`.
24
- * A placeholder is a plausible-looking value, so it propagates into an
25
- * invisible chart series or a zero-height font instead of throwing.
26
+ * The question that CAN be answered is "are the kit's tokens in effect on this
27
+ * element?", and `$tokens-applied` (see `src/tokens/base.ts`) answers it: it is
28
+ * declared alongside the tokens, so it is present exactly where they are. Off
29
+ * that surface every read is reported as unresolved; on it, the computed value
30
+ * is the truth.
31
+ */
32
+ /**
33
+ * Declared by the token block and nothing else — see `src/tokens/base.ts`.
26
34
  *
27
- * The helpers below read from the declaration site by default and return `null`
28
- * (or an explicit `fallback`) rather than a placeholder.
35
+ * Matched by VALUE rather than by presence, because presence is not the signal
36
+ * it looks like: tasty infers a type for the marker as readily as for any other
37
+ * token, registers `@property --tokens-applied` with `initial-value: 0`, and so
38
+ * hands back `0` off the block instead of an empty string. Comparing against the
39
+ * declared value is right either way, and cannot drift from `base.ts`.
29
40
  */
41
+ const SURFACE_MARKER = "$tokens-applied";
42
+ function isTokenSurface(computed) {
43
+ const declared = getTokens()[SURFACE_MARKER];
44
+ const name = tokenToProperty(SURFACE_MARKER);
45
+ if (typeof declared !== "string" || !name) return false;
46
+ return normalizeValue(computed.getPropertyValue(name)) === normalizeValue(declared);
47
+ }
30
48
  /**
31
- * The `initial-value`s tasty auto-registers, whitespace-stripped for comparison.
32
- * A token that reads back as one of these is almost always undeclared where it
33
- * was read — `resolve.browser.test.tsx` is what keeps this set honest against
34
- * the tasty version we ship with.
49
+ * Values that mean "this property was never declared" once we already know the
50
+ * token block IS in effect. Only used to catch a token the kit does not declare
51
+ * at all — a typo, or a name from another design system — since for those there
52
+ * is no marker to lean on.
35
53
  */
36
54
  const PLACEHOLDER_VALUES = new Set([
37
55
  "transparent",
@@ -76,30 +94,27 @@ function normalizeValue(value) {
76
94
  return value.replace(/\s+/g, "").toLowerCase();
77
95
  }
78
96
  /**
79
- * Tokens whose *declared* value is itself placeholder-shaped, keyed by custom
80
- * property name — `--clear-color` is `transparent` on purpose, `--sharp-radius`
81
- * is `0px` on purpose, and every `--*-letter-spacing` that reads `0` is a real
82
- * `0`. Without this the guard below would report them as unset.
97
+ * Every custom property the kit declares, by name. Membership only — the value
98
+ * is deliberately not consulted, because a token's declared value tells you
99
+ * nothing about whether it is in effect where you read it.
83
100
  *
84
101
  * Memoized against the palette version, like {@link getTokens} itself.
85
102
  */
86
- let literalsCache = null;
87
- function getPlaceholderShapedTokens() {
103
+ let knownNamesCache = null;
104
+ function getKnownTokenNames() {
88
105
  const version = getPaletteVersion();
89
- if (!literalsCache || literalsCache.version !== version) {
106
+ if (!knownNamesCache || knownNamesCache.version !== version) {
90
107
  const names = /* @__PURE__ */ new Set();
91
- for (const [key, value] of Object.entries(getTokens())) {
92
- if (typeof value !== "string") continue;
93
- if (!PLACEHOLDER_VALUES.has(normalizeValue(value))) continue;
108
+ for (const key of Object.keys(getTokens())) {
94
109
  const name = tokenToProperty(key);
95
110
  if (name) names.add(name);
96
111
  }
97
- literalsCache = {
112
+ knownNamesCache = {
98
113
  version,
99
114
  names
100
115
  };
101
116
  }
102
- return literalsCache.names;
117
+ return knownNamesCache.names;
103
118
  }
104
119
  /** These fire per token, per page — once each, not once per render. */
105
120
  const warnedTokens = /* @__PURE__ */ new Set();
@@ -114,16 +129,20 @@ function resolveTarget(element) {
114
129
  if (typeof document === "undefined") return null;
115
130
  return document.body ?? document.documentElement ?? null;
116
131
  }
117
- function readValue(computed, token, fallback, silent) {
132
+ function readValue(computed, token, fallback, silent, onTokenSurface) {
118
133
  const name = tokenToProperty(token);
119
134
  if (!name) {
120
135
  warnOnce(`name:${token}`, `"${token}" is not a valid design token name.`);
121
136
  return fallback;
122
137
  }
138
+ if (!onTokenSurface) {
139
+ if (!silent) warnOnce(`surface:${name}`, `Token "${token}" (${name}) was read from an element the design tokens are not in effect on, so any value there is tasty's @property default rather than the kit's. <Root> declares the token block on <body>, so <html>, a detached node, and a tree that has not mounted <Root> yet are all outside it. Pass \`element\` to read from a specific subtree, or \`fallback\` for a value to use instead.`);
140
+ return fallback;
141
+ }
123
142
  const value = computed.getPropertyValue(name).trim();
124
143
  if (!value) return fallback;
125
- if (PLACEHOLDER_VALUES.has(normalizeValue(value)) && !getPlaceholderShapedTokens().has(name)) {
126
- if (!silent) warnOnce(`placeholder:${name}`, `Token "${token}" (${name}) read back as an @property placeholder, meaning it is not declared on the element it was read from. <Root> declares tokens on <body>, so <html>, a detached node, and a tree that has not mounted <Root> yet all return placeholders. Pass \`element\` to read from a specific subtree, or \`fallback\` for a value to use instead.`);
144
+ if (PLACEHOLDER_VALUES.has(normalizeValue(value)) && !getKnownTokenNames().has(name)) {
145
+ if (!silent) warnOnce(`unknown:${name}`, `Token "${token}" (${name}) is not declared by the kit, and read back as an unset custom property. Check the name, or pass \`fallback\`.`);
127
146
  return fallback;
128
147
  }
129
148
  return value;
@@ -170,7 +189,8 @@ function readTokens(tokens, options, silent) {
170
189
  return result;
171
190
  }
172
191
  const computed = view.getComputedStyle(target);
173
- for (const token of tokens) result[token] = readValue(computed, token, fallback, silent);
192
+ const onTokenSurface = isTokenSurface(computed);
193
+ for (const token of tokens) result[token] = readValue(computed, token, fallback, silent, onTokenSurface);
174
194
  return result;
175
195
  }
176
196
  /**
@@ -249,8 +269,18 @@ function subscribeAppearance(listener) {
249
269
  function getAppearanceVersion() {
250
270
  return appearanceVersion;
251
271
  }
272
+ /**
273
+ * A version React only ever hands out while rendering on the server or
274
+ * hydrating: `useSyncExternalStore` reads `getServerSnapshot` in exactly those
275
+ * two cases and `getSnapshot` in every other. That makes it a reliable "this
276
+ * render has to match the server's markup" flag — see {@link useResolvedTokens}.
277
+ *
278
+ * A plain client render (`createRoot`) never sees it, so a CSR app still
279
+ * resolves on its first render rather than paying an extra pass.
280
+ */
281
+ const HYDRATING = -1;
252
282
  function getServerAppearanceVersion() {
253
- return 0;
283
+ return HYDRATING;
254
284
  }
255
285
  /**
256
286
  * Re-render on a scheme / contrast change. Returns the version rather than the
@@ -270,7 +300,7 @@ function useResolvedTokens(tokens, key, options) {
270
300
  const { element, fallback } = options;
271
301
  const paletteVersion = usePaletteVersion();
272
302
  const appearance = useAppearanceVersion();
273
- const [values, setValues] = useState(() => resolveTokenValues(tokens, options));
303
+ const [values, setValues] = useState(() => appearance === HYDRATING ? unresolved(tokens, fallback) : resolveTokenValues(tokens, options));
274
304
  useLayoutEffect$1(() => {
275
305
  setValues((previous) => {
276
306
  const next = resolveTokenValues(tokens, {
@@ -288,6 +318,17 @@ function useResolvedTokens(tokens, key, options) {
288
318
  ]);
289
319
  return values;
290
320
  }
321
+ /**
322
+ * What the server rendered: no DOM, so every token is the fallback. The first
323
+ * client render has to agree with it or hydration reports a mismatch for any
324
+ * consumer that renders the value; the layout effect above replaces it with the
325
+ * resolved values before the browser paints.
326
+ */
327
+ function unresolved(tokens, fallback) {
328
+ const result = {};
329
+ for (const token of tokens) result[token] = fallback ?? null;
330
+ return result;
331
+ }
291
332
  /** Keeps the previous object when nothing moved, so it stays usable as a dep. */
292
333
  function isSameRecord(a, b) {
293
334
  const keys = Object.keys(b);
@@ -332,7 +373,7 @@ function usePresetValues(preset, options = {}) {
332
373
  const { element, fallback } = options;
333
374
  const paletteVersion = usePaletteVersion();
334
375
  const appearance = useAppearanceVersion();
335
- const [values, setValues] = useState(() => resolvePresetValues(preset, options));
376
+ const [values, setValues] = useState(() => appearance === HYDRATING ? unresolvedPreset(fallback) : resolvePresetValues(preset, options));
336
377
  useLayoutEffect$1(() => {
337
378
  setValues((previous) => {
338
379
  const next = resolvePresetValues(preset, {
@@ -350,6 +391,12 @@ function usePresetValues(preset, options = {}) {
350
391
  ]);
351
392
  return values;
352
393
  }
394
+ /** {@link unresolved} for the fixed shape {@link resolvePresetValues} returns. */
395
+ function unresolvedPreset(fallback) {
396
+ const resolved = {};
397
+ for (const field of PRESET_FIELDS) resolved[field] = fallback ?? null;
398
+ return resolved;
399
+ }
353
400
 
354
401
  //#endregion
355
402
  export { resolvePresetValues, resolveTokenValue, resolveTokenValues, usePresetValues, useTokenValue, useTokenValues };
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","names":[],"sources":["../../src/tokens/resolve.ts"],"sourcesContent":["import { useState, useSyncExternalStore } from 'react';\n\nimport { useLayoutEffect } from '../utils/react/useLayoutEffect';\nimport { warn } from '../utils/warnings';\n\nimport { getTokens } from './all-tokens';\nimport { getPaletteVersion, usePaletteVersion } from './palette-config';\n\n/**\n * Resolving a design token to a literal value, for consumers that render into a\n * surface our stylesheets do not reach — a third-party iframe (Stripe Elements),\n * a CodeMirror / Monaco theme object, a Vega spec. Those take colors, lengths and\n * font descriptors as values; `var(--purple-color)` means nothing to them.\n *\n * There are two ways to get this wrong by hand, and both fail silently:\n *\n * 1. **Reading from the wrong element.** `<Root>` declares the token block on\n * `<body>` (see `src/components/GlobalStyles.tsx`), so `<html>` — and any\n * detached node — is outside it.\n * 2. **Trusting what comes back.** Tasty registers an `@property` rule for every\n * custom property it can infer a type for, which means an *undeclared* token\n * does not read back as `''`. It reads back as that rule's `initial-value`:\n * `rgba(0, 0, 0, 0)` for `<color>`, `0px` for `<length>`, `0deg`, `0s`, `0`.\n * A placeholder is a plausible-looking value, so it propagates into an\n * invisible chart series or a zero-height font instead of throwing.\n *\n * The helpers below read from the declaration site by default and return `null`\n * (or an explicit `fallback`) rather than a placeholder.\n */\n\n/**\n * The `initial-value`s tasty auto-registers, whitespace-stripped for comparison.\n * A token that reads back as one of these is almost always undeclared where it\n * was read — `resolve.browser.test.tsx` is what keeps this set honest against\n * the tasty version we ship with.\n */\nconst PLACEHOLDER_VALUES = new Set([\n 'transparent',\n 'rgba(0,0,0,0)',\n '0',\n '0px',\n '0deg',\n '0s',\n]);\n\n/** Custom property names are CSS identifiers: a letter or `_`, then word chars or `-`. */\nconst PROPERTY_NAME_RE = /^[a-zA-Z_][\\w-]*$/;\n\nexport interface ResolveTokenOptions {\n /**\n * Element to read the tokens off. Defaults to the document `<body>`, which is\n * where `<Root>` declares them.\n *\n * Pass an element when the value has to reflect a *local* override — a subtree\n * carrying its own `tokens` prop (`renderColorTokens()`), or one under a\n * `data-schema` / `data-contrast` attribute that differs from the document's.\n * The element's own document and view are used, so a node inside a same-origin\n * iframe resolves against that iframe.\n */\n element?: Element | null;\n /**\n * Returned in place of `null` when a token is unset, unresolvable, or reads\n * back as an `@property` placeholder — including on the server, where there is\n * no DOM to read.\n */\n fallback?: string;\n}\n\n/**\n * Fields mirror {@link TypographyPreset}. A field the preset does not define is\n * `null`, except `fontFamily`, which falls back to the document's `--font-sans`\n * so the common case (`t1`–`t4`, `h1`–`h6`, which inherit the sans stack rather\n * than naming it) still hands back a usable stack.\n */\nexport type ResolvedPreset = {\n fontFamily: string | null;\n fontSize: string | null;\n fontStyle: string | null;\n fontWeight: string | null;\n lineHeight: string | null;\n letterSpacing: string | null;\n textTransform: string | null;\n boldFontWeight: string | null;\n iconSize: string | null;\n};\n\nconst PRESET_FIELD_SUFFIXES: Record<keyof ResolvedPreset, string> = {\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontWeight: 'font-weight',\n lineHeight: 'line-height',\n letterSpacing: 'letter-spacing',\n textTransform: 'text-transform',\n boldFontWeight: 'bold-font-weight',\n iconSize: 'icon-size',\n};\n\nconst PRESET_FIELDS = Object.keys(\n PRESET_FIELD_SUFFIXES,\n) as (keyof ResolvedPreset)[];\n\n/**\n * Map a token to its CSS custom property name, using the same convention tasty's\n * style DSL does: `#name` is a color (`--name-color`), `$name` is everything else\n * (`--name`). A raw `--name` or a bare `name` is taken as written.\n *\n * Returns `null` for anything that would not be a valid custom property.\n */\nfunction tokenToProperty(token: string): string | null {\n const trimmed = token.trim();\n\n let name: string;\n\n if (trimmed.startsWith('--')) {\n name = trimmed.slice(2);\n } else if (trimmed.startsWith('#')) {\n name = `${trimmed.slice(1)}-color`;\n } else if (trimmed.startsWith('$')) {\n name = trimmed.slice(1);\n } else {\n name = trimmed;\n }\n\n return PROPERTY_NAME_RE.test(name) ? `--${name}` : null;\n}\n\n/** Whitespace and case are not meaningful in the values we compare against. */\nfunction normalizeValue(value: string): string {\n return value.replace(/\\s+/g, '').toLowerCase();\n}\n\n/**\n * Tokens whose *declared* value is itself placeholder-shaped, keyed by custom\n * property name — `--clear-color` is `transparent` on purpose, `--sharp-radius`\n * is `0px` on purpose, and every `--*-letter-spacing` that reads `0` is a real\n * `0`. Without this the guard below would report them as unset.\n *\n * Memoized against the palette version, like {@link getTokens} itself.\n */\nlet literalsCache: { version: number; names: Set<string> } | null = null;\n\nfunction getPlaceholderShapedTokens(): Set<string> {\n const version = getPaletteVersion();\n\n if (!literalsCache || literalsCache.version !== version) {\n const names = new Set<string>();\n\n for (const [key, value] of Object.entries(getTokens())) {\n // Glaze color tokens are per-scheme state maps, not literals — they never\n // declare a placeholder, so only strings are worth indexing.\n if (typeof value !== 'string') continue;\n if (!PLACEHOLDER_VALUES.has(normalizeValue(value))) continue;\n\n const name = tokenToProperty(key);\n\n if (name) names.add(name);\n }\n\n literalsCache = { version, names };\n }\n\n return literalsCache.names;\n}\n\n/** These fire per token, per page — once each, not once per render. */\nconst warnedTokens = new Set<string>();\n\nfunction warnOnce(key: string, message: string) {\n if (warnedTokens.has(key)) return;\n\n warnedTokens.add(key);\n\n warn(message);\n}\n\n/** The document `<body>` is where `<Root>` declares the token block. */\nfunction resolveTarget(element?: Element | null): Element | null {\n if (element) return element;\n if (typeof document === 'undefined') return null;\n\n return document.body ?? document.documentElement ?? null;\n}\n\nfunction readValue(\n computed: CSSStyleDeclaration,\n token: string,\n fallback: string | null,\n silent: boolean,\n): string | null {\n const name = tokenToProperty(token);\n\n if (!name) {\n warnOnce(`name:${token}`, `\"${token}\" is not a valid design token name.`);\n\n return fallback;\n }\n\n const value = computed.getPropertyValue(name).trim();\n\n if (!value) return fallback;\n\n if (\n PLACEHOLDER_VALUES.has(normalizeValue(value)) &&\n !getPlaceholderShapedTokens().has(name)\n ) {\n if (!silent) {\n warnOnce(\n `placeholder:${name}`,\n `Token \"${token}\" (${name}) read back as an @property placeholder, meaning it is not declared on the element it was read from. <Root> declares tokens on <body>, so <html>, a detached node, and a tree that has not mounted <Root> yet all return placeholders. Pass \\`element\\` to read from a specific subtree, or \\`fallback\\` for a value to use instead.`,\n );\n }\n\n return fallback;\n }\n\n return value;\n}\n\n/**\n * Read the resolved value of one design token — a color, a length, a font\n * descriptor — as a literal string.\n *\n * ```ts\n * resolveTokenValue('#purple'); // 'oklch(0.52 0.24 285)'\n * resolveTokenValue('$space-md'); // '8px'\n * resolveTokenValue('$t3-font-size'); // '14px'\n * ```\n *\n * Returns `options.fallback ?? null` when the token is not declared on the\n * element it was read from — see {@link ResolveTokenOptions}.\n */\nexport function resolveTokenValue(\n token: string,\n options: ResolveTokenOptions = {},\n): string | null {\n return resolveTokenValues([token], options)[token];\n}\n\n/**\n * {@link resolveTokenValue} for several tokens at once, through a single\n * `getComputedStyle` call. Prefer this when building a theme object — a Stripe\n * `Appearance`, a CodeMirror theme — which needs a dozen values at a time.\n *\n * ```ts\n * const { '#surface': background, '#surface-text': color } = resolveTokenValues([\n * '#surface',\n * '#surface-text',\n * ]);\n * ```\n */\nexport function resolveTokenValues<T extends string>(\n tokens: readonly T[],\n options: ResolveTokenOptions = {},\n): Record<T, string | null> {\n return readTokens(tokens, options, false);\n}\n\n/** Shared by the public reader and the preset reader, which suppresses warnings. */\nfunction readTokens<T extends string>(\n tokens: readonly T[],\n options: ResolveTokenOptions,\n silent: boolean,\n): Record<T, string | null> {\n const { element, fallback = null } = options;\n const result = {} as Record<T, string | null>;\n const target = resolveTarget(element);\n const view = target?.ownerDocument?.defaultView;\n\n if (!target || !view) {\n for (const token of tokens) result[token] = fallback;\n\n return result;\n }\n\n const computed = view.getComputedStyle(target);\n\n for (const token of tokens) {\n result[token] = readValue(computed, token, fallback, silent);\n }\n\n return result;\n}\n\n/**\n * Resolve a typography preset — `'t3'`, `'h2'`, `'s3'` — to the literal font\n * descriptors behind it, for a surface that takes a font as values rather than\n * as a `preset` style.\n *\n * ```ts\n * const { fontFamily, fontSize, lineHeight } = resolvePresetValues('t3');\n * ```\n *\n * A preset legitimately leaves most of these unset — only headings carry an\n * `iconSize`, only the `s*` family names a `fontFamily` — so unlike\n * {@link resolveTokenValues} a miss here is expected and never warns.\n */\nexport function resolvePresetValues(\n preset: string,\n options: ResolveTokenOptions = {},\n): ResolvedPreset {\n const { fallback = null } = options;\n const names = PRESET_FIELDS.map(\n (field) => `$${preset}-${PRESET_FIELD_SUFFIXES[field]}`,\n );\n const values = readTokens(\n [...names, '--font-sans'],\n { element: options.element },\n true,\n );\n const resolved = {} as ResolvedPreset;\n\n PRESET_FIELDS.forEach((field, index) => {\n resolved[field] = values[names[index]] ?? fallback;\n });\n\n // Every preset but the `s*` family inherits the sans stack rather than naming\n // it, so the token is absent by design and `--font-sans` is the real answer.\n resolved.fontFamily =\n values[names[PRESET_FIELDS.indexOf('fontFamily')]] ??\n values['--font-sans'] ??\n fallback;\n\n return resolved;\n}\n\n// ============================================================================\n// Appearance subscription\n// ============================================================================\n\n/**\n * A token's resolved value changes for two reasons: the palette was re-seeded\n * (`setPaletteConfig()`, covered by `usePaletteVersion`), or the scheme /\n * contrast tier flipped. This store covers the second.\n *\n * Both axes are the ones `@dark` and `@hc` resolve against (see\n * `src/components/Root.tsx`): the `data-schema` / `data-contrast` attributes on\n * `<html>`, and the `prefers-color-scheme` / `prefers-contrast` media queries\n * they fall back to. An attribute flip is invisible to `matchMedia` and a system\n * flip is invisible to a `MutationObserver`, so both are watched.\n */\nconst APPEARANCE_QUERIES = [\n '(prefers-color-scheme: dark)',\n '(prefers-contrast: more)',\n];\nconst APPEARANCE_ATTRIBUTES = ['data-schema', 'data-contrast'];\n\nlet appearanceVersion = 0;\nlet stopWatchingAppearance: (() => void) | null = null;\n\nconst appearanceListeners = new Set<() => void>();\n\nfunction onAppearanceChange() {\n appearanceVersion++;\n\n appearanceListeners.forEach((listener) => listener());\n}\n\nfunction watchAppearance(): () => void {\n const teardowns: (() => void)[] = [];\n\n // Guarded rather than assumed: jsdom ships neither `matchMedia` nor a\n // `MediaQueryList` in every version, and a consumer's unit tests are exactly\n // where a hook like this gets mounted. Losing one source of change is a stale\n // value; throwing is a broken render.\n if (typeof window.matchMedia === 'function') {\n for (const query of APPEARANCE_QUERIES) {\n const list = window.matchMedia(query);\n\n if (typeof list?.addEventListener !== 'function') continue;\n\n list.addEventListener('change', onAppearanceChange);\n teardowns.push(() =>\n list.removeEventListener('change', onAppearanceChange),\n );\n }\n }\n\n if (typeof MutationObserver === 'function' && document.documentElement) {\n const observer = new MutationObserver(onAppearanceChange);\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: APPEARANCE_ATTRIBUTES,\n });\n\n teardowns.push(() => observer.disconnect());\n }\n\n return () => teardowns.forEach((teardown) => teardown());\n}\n\nfunction subscribeAppearance(listener: () => void): () => void {\n appearanceListeners.add(listener);\n\n if (appearanceListeners.size === 1 && typeof window !== 'undefined') {\n stopWatchingAppearance = watchAppearance();\n }\n\n return () => {\n appearanceListeners.delete(listener);\n\n if (!appearanceListeners.size) {\n stopWatchingAppearance?.();\n stopWatchingAppearance = null;\n }\n };\n}\n\nfunction getAppearanceVersion(): number {\n return appearanceVersion;\n}\n\nfunction getServerAppearanceVersion(): number {\n return 0;\n}\n\n/**\n * Re-render on a scheme / contrast change. Returns the version rather than the\n * state so the snapshot is a primitive — the same reason `usePaletteVersion`\n * does, see `src/tokens/palette-config.ts`.\n */\nfunction useAppearanceVersion(): number {\n return useSyncExternalStore(\n subscribeAppearance,\n getAppearanceVersion,\n getServerAppearanceVersion,\n );\n}\n\n// ============================================================================\n// React bindings\n// ============================================================================\n\n/**\n * The value is read out of the DOM, so it re-resolves whenever the palette is\n * re-seeded or the scheme / contrast tier flips, and it is `fallback ?? null`\n * during SSR. The layout effect is what covers the first commit: a consumer\n * rendered in the same pass as `<Root>` reads before the token block lands.\n */\nfunction useResolvedTokens<T extends string>(\n tokens: readonly T[],\n key: string,\n options: ResolveTokenOptions,\n): Record<T, string | null> {\n const { element, fallback } = options;\n const paletteVersion = usePaletteVersion();\n const appearance = useAppearanceVersion();\n\n const [values, setValues] = useState(() =>\n resolveTokenValues(tokens, options),\n );\n\n useLayoutEffect(() => {\n setValues((previous) => {\n const next = resolveTokenValues(tokens, { element, fallback });\n\n return isSameRecord(previous, next) ? previous : next;\n });\n // `tokens` is a fresh array on all but the first render, so `key` — its\n // joined identity — is what belongs in the dependency list.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [key, element, fallback, paletteVersion, appearance]);\n\n return values;\n}\n\n/** Keeps the previous object when nothing moved, so it stays usable as a dep. */\nfunction isSameRecord<T extends Record<string, string | null>>(\n a: T,\n b: T,\n): boolean {\n const keys = Object.keys(b);\n\n if (Object.keys(a).length !== keys.length) return false;\n\n return keys.every((key) => a[key] === b[key]);\n}\n\n/**\n * {@link resolveTokenValue} as a hook: re-renders when the palette is re-seeded\n * or the scheme / contrast tier flips.\n *\n * ```tsx\n * const accent = useTokenValue('#purple');\n *\n * return <Chart series={{ color: accent ?? '#000' }} />;\n * ```\n */\nexport function useTokenValue(\n token: string,\n options: ResolveTokenOptions = {},\n): string | null {\n return useResolvedTokens([token], token, options)[token];\n}\n\n/**\n * {@link resolveTokenValues} as a hook. The returned object keeps its identity\n * while the values are unchanged, so it is safe as a dependency of the theme\n * object built from it — and the token list may be an inline literal.\n *\n * ```tsx\n * const colors = useTokenValues(['#surface', '#surface-text', '#border']);\n *\n * const appearance = useMemo(() => toStripeAppearance(colors), [colors]);\n * ```\n */\nexport function useTokenValues<T extends string>(\n tokens: readonly T[],\n options: ResolveTokenOptions = {},\n): Record<T, string | null> {\n return useResolvedTokens(tokens, tokens.join(' '), options);\n}\n\n/**\n * {@link resolvePresetValues} as a hook.\n *\n * ```tsx\n * const { fontFamily, fontSize } = usePresetValues('s3');\n * ```\n */\nexport function usePresetValues(\n preset: string,\n options: ResolveTokenOptions = {},\n): ResolvedPreset {\n const { element, fallback } = options;\n const paletteVersion = usePaletteVersion();\n const appearance = useAppearanceVersion();\n\n const [values, setValues] = useState(() =>\n resolvePresetValues(preset, options),\n );\n\n useLayoutEffect(() => {\n setValues((previous) => {\n const next = resolvePresetValues(preset, { element, fallback });\n\n return isSameRecord(previous, next) ? previous : next;\n });\n }, [preset, element, fallback, paletteVersion, appearance]);\n\n return values;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","names":[],"sources":["../../src/tokens/resolve.ts"],"sourcesContent":["import { useState, useSyncExternalStore } from 'react';\n\nimport { useLayoutEffect } from '../utils/react/useLayoutEffect';\nimport { warn } from '../utils/warnings';\n\nimport { getTokens } from './all-tokens';\nimport { getPaletteVersion, usePaletteVersion } from './palette-config';\n\n/**\n * Resolving a design token to a literal value, for consumers that render into a\n * surface our stylesheets do not reach — a third-party iframe (Stripe Elements),\n * a CodeMirror / Monaco theme object, a Vega spec. Those take colors, lengths and\n * font descriptors as values; `var(--purple-color)` means nothing to them.\n *\n * Doing it by hand fails silently, because a token read from the wrong element\n * does not come back empty. Tasty registers `@property` rules — its own defaults\n * plus one for every custom property whose type it can infer — and an undeclared\n * token reads back as that rule's `initial-value`. Some of those are obvious\n * duds (`rgba(0, 0, 0, 0)` for a `<color>`, `0px` for a `<length>`), but many are\n * ordinary-looking values: off the token block `--gap` reads `4px` rather than\n * the kit's `8px`, `--transition` reads `80ms`, `--radius` reads `6px`. So\n * inspecting the value cannot tell a real token from a miss, in either\n * direction — `#clear` really is `transparent` and `$h2-letter-spacing` really\n * is `0px`.\n *\n * The question that CAN be answered is \"are the kit's tokens in effect on this\n * element?\", and `$tokens-applied` (see `src/tokens/base.ts`) answers it: it is\n * declared alongside the tokens, so it is present exactly where they are. Off\n * that surface every read is reported as unresolved; on it, the computed value\n * is the truth.\n */\n\n/**\n * Declared by the token block and nothing else — see `src/tokens/base.ts`.\n *\n * Matched by VALUE rather than by presence, because presence is not the signal\n * it looks like: tasty infers a type for the marker as readily as for any other\n * token, registers `@property --tokens-applied` with `initial-value: 0`, and so\n * hands back `0` off the block instead of an empty string. Comparing against the\n * declared value is right either way, and cannot drift from `base.ts`.\n */\nconst SURFACE_MARKER = '$tokens-applied';\n\nfunction isTokenSurface(computed: CSSStyleDeclaration): boolean {\n const declared = getTokens()[SURFACE_MARKER];\n const name = tokenToProperty(SURFACE_MARKER);\n\n if (typeof declared !== 'string' || !name) return false;\n\n return (\n normalizeValue(computed.getPropertyValue(name)) === normalizeValue(declared)\n );\n}\n\n/**\n * Values that mean \"this property was never declared\" once we already know the\n * token block IS in effect. Only used to catch a token the kit does not declare\n * at all — a typo, or a name from another design system — since for those there\n * is no marker to lean on.\n */\nconst PLACEHOLDER_VALUES = new Set([\n 'transparent',\n 'rgba(0,0,0,0)',\n '0',\n '0px',\n '0deg',\n '0s',\n]);\n\n/** Custom property names are CSS identifiers: a letter or `_`, then word chars or `-`. */\nconst PROPERTY_NAME_RE = /^[a-zA-Z_][\\w-]*$/;\n\nexport interface ResolveTokenOptions {\n /**\n * Element to read the tokens off. Defaults to the document `<body>`, which is\n * where `<Root>` declares them.\n *\n * Pass an element when the value has to reflect a *local* override — a subtree\n * carrying its own `tokens` prop (`renderColorTokens()`), or one under a\n * `data-schema` / `data-contrast` attribute that differs from the document's.\n * The element's own document and view are used, so a node inside a same-origin\n * iframe resolves against that iframe.\n */\n element?: Element | null;\n /**\n * Returned in place of `null` when a token is unset, unresolvable, or reads\n * back as an `@property` placeholder — including on the server, where there is\n * no DOM to read.\n */\n fallback?: string;\n}\n\n/**\n * Fields mirror {@link TypographyPreset}. A field the preset does not define is\n * `null`, except `fontFamily`, which falls back to the document's `--font-sans`\n * so the common case (`t1`–`t4`, `h1`–`h6`, which inherit the sans stack rather\n * than naming it) still hands back a usable stack.\n */\nexport type ResolvedPreset = {\n fontFamily: string | null;\n fontSize: string | null;\n fontStyle: string | null;\n fontWeight: string | null;\n lineHeight: string | null;\n letterSpacing: string | null;\n textTransform: string | null;\n boldFontWeight: string | null;\n iconSize: string | null;\n};\n\nconst PRESET_FIELD_SUFFIXES: Record<keyof ResolvedPreset, string> = {\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontWeight: 'font-weight',\n lineHeight: 'line-height',\n letterSpacing: 'letter-spacing',\n textTransform: 'text-transform',\n boldFontWeight: 'bold-font-weight',\n iconSize: 'icon-size',\n};\n\nconst PRESET_FIELDS = Object.keys(\n PRESET_FIELD_SUFFIXES,\n) as (keyof ResolvedPreset)[];\n\n/**\n * Map a token to its CSS custom property name, using the same convention tasty's\n * style DSL does: `#name` is a color (`--name-color`), `$name` is everything else\n * (`--name`). A raw `--name` or a bare `name` is taken as written.\n *\n * Returns `null` for anything that would not be a valid custom property.\n */\nfunction tokenToProperty(token: string): string | null {\n const trimmed = token.trim();\n\n let name: string;\n\n if (trimmed.startsWith('--')) {\n name = trimmed.slice(2);\n } else if (trimmed.startsWith('#')) {\n name = `${trimmed.slice(1)}-color`;\n } else if (trimmed.startsWith('$')) {\n name = trimmed.slice(1);\n } else {\n name = trimmed;\n }\n\n return PROPERTY_NAME_RE.test(name) ? `--${name}` : null;\n}\n\n/** Whitespace and case are not meaningful in the values we compare against. */\nfunction normalizeValue(value: string): string {\n return value.replace(/\\s+/g, '').toLowerCase();\n}\n\n/**\n * Every custom property the kit declares, by name. Membership only — the value\n * is deliberately not consulted, because a token's declared value tells you\n * nothing about whether it is in effect where you read it.\n *\n * Memoized against the palette version, like {@link getTokens} itself.\n */\nlet knownNamesCache: { version: number; names: Set<string> } | null = null;\n\nfunction getKnownTokenNames(): Set<string> {\n const version = getPaletteVersion();\n\n if (!knownNamesCache || knownNamesCache.version !== version) {\n const names = new Set<string>();\n\n for (const key of Object.keys(getTokens())) {\n const name = tokenToProperty(key);\n\n if (name) names.add(name);\n }\n\n knownNamesCache = { version, names };\n }\n\n return knownNamesCache.names;\n}\n\n/** These fire per token, per page — once each, not once per render. */\nconst warnedTokens = new Set<string>();\n\nfunction warnOnce(key: string, message: string) {\n if (warnedTokens.has(key)) return;\n\n warnedTokens.add(key);\n\n warn(message);\n}\n\n/** The document `<body>` is where `<Root>` declares the token block. */\nfunction resolveTarget(element?: Element | null): Element | null {\n if (element) return element;\n if (typeof document === 'undefined') return null;\n\n return document.body ?? document.documentElement ?? null;\n}\n\nfunction readValue(\n computed: CSSStyleDeclaration,\n token: string,\n fallback: string | null,\n silent: boolean,\n onTokenSurface: boolean,\n): string | null {\n const name = tokenToProperty(token);\n\n if (!name) {\n warnOnce(`name:${token}`, `\"${token}\" is not a valid design token name.`);\n\n return fallback;\n }\n\n if (!onTokenSurface) {\n if (!silent) {\n warnOnce(\n `surface:${name}`,\n `Token \"${token}\" (${name}) was read from an element the design tokens are not in effect on, so any value there is tasty's @property default rather than the kit's. <Root> declares the token block on <body>, so <html>, a detached node, and a tree that has not mounted <Root> yet are all outside it. Pass \\`element\\` to read from a specific subtree, or \\`fallback\\` for a value to use instead.`,\n );\n }\n\n return fallback;\n }\n\n const value = computed.getPropertyValue(name).trim();\n\n if (!value) return fallback;\n\n // On a token surface the computed value is the truth, including a genuinely\n // transparent color or a real `0px`. The only thing left to catch is a name\n // the kit never declares, where an @property default is all there is to read.\n if (\n PLACEHOLDER_VALUES.has(normalizeValue(value)) &&\n !getKnownTokenNames().has(name)\n ) {\n if (!silent) {\n warnOnce(\n `unknown:${name}`,\n `Token \"${token}\" (${name}) is not declared by the kit, and read back as an unset custom property. Check the name, or pass \\`fallback\\`.`,\n );\n }\n\n return fallback;\n }\n\n return value;\n}\n\n/**\n * Read the resolved value of one design token — a color, a length, a font\n * descriptor — as a literal string.\n *\n * ```ts\n * resolveTokenValue('#purple'); // 'oklch(0.52 0.24 285)'\n * resolveTokenValue('$space-md'); // '8px'\n * resolveTokenValue('$t3-font-size'); // '14px'\n * ```\n *\n * Returns `options.fallback ?? null` when the token is not declared on the\n * element it was read from — see {@link ResolveTokenOptions}.\n */\nexport function resolveTokenValue(\n token: string,\n options: ResolveTokenOptions = {},\n): string | null {\n return resolveTokenValues([token], options)[token];\n}\n\n/**\n * {@link resolveTokenValue} for several tokens at once, through a single\n * `getComputedStyle` call. Prefer this when building a theme object — a Stripe\n * `Appearance`, a CodeMirror theme — which needs a dozen values at a time.\n *\n * ```ts\n * const { '#surface': background, '#surface-text': color } = resolveTokenValues([\n * '#surface',\n * '#surface-text',\n * ]);\n * ```\n */\nexport function resolveTokenValues<T extends string>(\n tokens: readonly T[],\n options: ResolveTokenOptions = {},\n): Record<T, string | null> {\n return readTokens(tokens, options, false);\n}\n\n/** Shared by the public reader and the preset reader, which suppresses warnings. */\nfunction readTokens<T extends string>(\n tokens: readonly T[],\n options: ResolveTokenOptions,\n silent: boolean,\n): Record<T, string | null> {\n const { element, fallback = null } = options;\n const result = {} as Record<T, string | null>;\n const target = resolveTarget(element);\n const view = target?.ownerDocument?.defaultView;\n\n if (!target || !view) {\n for (const token of tokens) result[token] = fallback;\n\n return result;\n }\n\n const computed = view.getComputedStyle(target);\n // One read for the whole batch: the marker is a property of the element, not\n // of any individual token.\n const onTokenSurface = isTokenSurface(computed);\n\n for (const token of tokens) {\n result[token] = readValue(\n computed,\n token,\n fallback,\n silent,\n onTokenSurface,\n );\n }\n\n return result;\n}\n\n/**\n * Resolve a typography preset — `'t3'`, `'h2'`, `'s3'` — to the literal font\n * descriptors behind it, for a surface that takes a font as values rather than\n * as a `preset` style.\n *\n * ```ts\n * const { fontFamily, fontSize, lineHeight } = resolvePresetValues('t3');\n * ```\n *\n * A preset legitimately leaves most of these unset — only headings carry an\n * `iconSize`, only the `s*` family names a `fontFamily` — so unlike\n * {@link resolveTokenValues} a miss here is expected and never warns.\n */\nexport function resolvePresetValues(\n preset: string,\n options: ResolveTokenOptions = {},\n): ResolvedPreset {\n const { fallback = null } = options;\n const names = PRESET_FIELDS.map(\n (field) => `$${preset}-${PRESET_FIELD_SUFFIXES[field]}`,\n );\n const values = readTokens(\n [...names, '--font-sans'],\n { element: options.element },\n true,\n );\n const resolved = {} as ResolvedPreset;\n\n PRESET_FIELDS.forEach((field, index) => {\n resolved[field] = values[names[index]] ?? fallback;\n });\n\n // Every preset but the `s*` family inherits the sans stack rather than naming\n // it, so the token is absent by design and `--font-sans` is the real answer.\n resolved.fontFamily =\n values[names[PRESET_FIELDS.indexOf('fontFamily')]] ??\n values['--font-sans'] ??\n fallback;\n\n return resolved;\n}\n\n// ============================================================================\n// Appearance subscription\n// ============================================================================\n\n/**\n * A token's resolved value changes for two reasons: the palette was re-seeded\n * (`setPaletteConfig()`, covered by `usePaletteVersion`), or the scheme /\n * contrast tier flipped. This store covers the second.\n *\n * Both axes are the ones `@dark` and `@hc` resolve against (see\n * `src/components/Root.tsx`): the `data-schema` / `data-contrast` attributes on\n * `<html>`, and the `prefers-color-scheme` / `prefers-contrast` media queries\n * they fall back to. An attribute flip is invisible to `matchMedia` and a system\n * flip is invisible to a `MutationObserver`, so both are watched.\n */\nconst APPEARANCE_QUERIES = [\n '(prefers-color-scheme: dark)',\n '(prefers-contrast: more)',\n];\nconst APPEARANCE_ATTRIBUTES = ['data-schema', 'data-contrast'];\n\nlet appearanceVersion = 0;\nlet stopWatchingAppearance: (() => void) | null = null;\n\nconst appearanceListeners = new Set<() => void>();\n\nfunction onAppearanceChange() {\n appearanceVersion++;\n\n appearanceListeners.forEach((listener) => listener());\n}\n\nfunction watchAppearance(): () => void {\n const teardowns: (() => void)[] = [];\n\n // Guarded rather than assumed: jsdom ships neither `matchMedia` nor a\n // `MediaQueryList` in every version, and a consumer's unit tests are exactly\n // where a hook like this gets mounted. Losing one source of change is a stale\n // value; throwing is a broken render.\n if (typeof window.matchMedia === 'function') {\n for (const query of APPEARANCE_QUERIES) {\n const list = window.matchMedia(query);\n\n if (typeof list?.addEventListener !== 'function') continue;\n\n list.addEventListener('change', onAppearanceChange);\n teardowns.push(() =>\n list.removeEventListener('change', onAppearanceChange),\n );\n }\n }\n\n if (typeof MutationObserver === 'function' && document.documentElement) {\n const observer = new MutationObserver(onAppearanceChange);\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: APPEARANCE_ATTRIBUTES,\n });\n\n teardowns.push(() => observer.disconnect());\n }\n\n return () => teardowns.forEach((teardown) => teardown());\n}\n\nfunction subscribeAppearance(listener: () => void): () => void {\n appearanceListeners.add(listener);\n\n if (appearanceListeners.size === 1 && typeof window !== 'undefined') {\n stopWatchingAppearance = watchAppearance();\n }\n\n return () => {\n appearanceListeners.delete(listener);\n\n if (!appearanceListeners.size) {\n stopWatchingAppearance?.();\n stopWatchingAppearance = null;\n }\n };\n}\n\nfunction getAppearanceVersion(): number {\n return appearanceVersion;\n}\n\n/**\n * A version React only ever hands out while rendering on the server or\n * hydrating: `useSyncExternalStore` reads `getServerSnapshot` in exactly those\n * two cases and `getSnapshot` in every other. That makes it a reliable \"this\n * render has to match the server's markup\" flag — see {@link useResolvedTokens}.\n *\n * A plain client render (`createRoot`) never sees it, so a CSR app still\n * resolves on its first render rather than paying an extra pass.\n */\nconst HYDRATING = -1;\n\nfunction getServerAppearanceVersion(): number {\n return HYDRATING;\n}\n\n/**\n * Re-render on a scheme / contrast change. Returns the version rather than the\n * state so the snapshot is a primitive — the same reason `usePaletteVersion`\n * does, see `src/tokens/palette-config.ts`.\n */\nfunction useAppearanceVersion(): number {\n return useSyncExternalStore(\n subscribeAppearance,\n getAppearanceVersion,\n getServerAppearanceVersion,\n );\n}\n\n// ============================================================================\n// React bindings\n// ============================================================================\n\n/**\n * The value is read out of the DOM, so it re-resolves whenever the palette is\n * re-seeded or the scheme / contrast tier flips, and it is `fallback ?? null`\n * during SSR. The layout effect is what covers the first commit: a consumer\n * rendered in the same pass as `<Root>` reads before the token block lands.\n */\nfunction useResolvedTokens<T extends string>(\n tokens: readonly T[],\n key: string,\n options: ResolveTokenOptions,\n): Record<T, string | null> {\n const { element, fallback } = options;\n const paletteVersion = usePaletteVersion();\n const appearance = useAppearanceVersion();\n\n const [values, setValues] = useState(() =>\n appearance === HYDRATING\n ? unresolved(tokens, fallback)\n : resolveTokenValues(tokens, options),\n );\n\n useLayoutEffect(() => {\n setValues((previous) => {\n const next = resolveTokenValues(tokens, { element, fallback });\n\n return isSameRecord(previous, next) ? previous : next;\n });\n // `tokens` is a fresh array on all but the first render, so `key` — its\n // joined identity — is what belongs in the dependency list.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [key, element, fallback, paletteVersion, appearance]);\n\n return values;\n}\n\n/**\n * What the server rendered: no DOM, so every token is the fallback. The first\n * client render has to agree with it or hydration reports a mismatch for any\n * consumer that renders the value; the layout effect above replaces it with the\n * resolved values before the browser paints.\n */\nfunction unresolved<T extends string>(\n tokens: readonly T[],\n fallback: string | undefined,\n): Record<T, string | null> {\n const result = {} as Record<T, string | null>;\n\n for (const token of tokens) result[token] = fallback ?? null;\n\n return result;\n}\n\n/** Keeps the previous object when nothing moved, so it stays usable as a dep. */\nfunction isSameRecord<T extends Record<string, string | null>>(\n a: T,\n b: T,\n): boolean {\n const keys = Object.keys(b);\n\n if (Object.keys(a).length !== keys.length) return false;\n\n return keys.every((key) => a[key] === b[key]);\n}\n\n/**\n * {@link resolveTokenValue} as a hook: re-renders when the palette is re-seeded\n * or the scheme / contrast tier flips.\n *\n * ```tsx\n * const accent = useTokenValue('#purple');\n *\n * return <Chart series={{ color: accent ?? '#000' }} />;\n * ```\n */\nexport function useTokenValue(\n token: string,\n options: ResolveTokenOptions = {},\n): string | null {\n return useResolvedTokens([token], token, options)[token];\n}\n\n/**\n * {@link resolveTokenValues} as a hook. The returned object keeps its identity\n * while the values are unchanged, so it is safe as a dependency of the theme\n * object built from it — and the token list may be an inline literal.\n *\n * ```tsx\n * const colors = useTokenValues(['#surface', '#surface-text', '#border']);\n *\n * const appearance = useMemo(() => toStripeAppearance(colors), [colors]);\n * ```\n */\nexport function useTokenValues<T extends string>(\n tokens: readonly T[],\n options: ResolveTokenOptions = {},\n): Record<T, string | null> {\n return useResolvedTokens(tokens, tokens.join(' '), options);\n}\n\n/**\n * {@link resolvePresetValues} as a hook.\n *\n * ```tsx\n * const { fontFamily, fontSize } = usePresetValues('s3');\n * ```\n */\nexport function usePresetValues(\n preset: string,\n options: ResolveTokenOptions = {},\n): ResolvedPreset {\n const { element, fallback } = options;\n const paletteVersion = usePaletteVersion();\n const appearance = useAppearanceVersion();\n\n const [values, setValues] = useState(() =>\n appearance === HYDRATING\n ? unresolvedPreset(fallback)\n : resolvePresetValues(preset, options),\n );\n\n useLayoutEffect(() => {\n setValues((previous) => {\n const next = resolvePresetValues(preset, { element, fallback });\n\n return isSameRecord(previous, next) ? previous : next;\n });\n }, [preset, element, fallback, paletteVersion, appearance]);\n\n return values;\n}\n\n/** {@link unresolved} for the fixed shape {@link resolvePresetValues} returns. */\nfunction unresolvedPreset(fallback: string | undefined): ResolvedPreset {\n const resolved = {} as ResolvedPreset;\n\n for (const field of PRESET_FIELDS) resolved[field] = fallback ?? null;\n\n return resolved;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/tokens/shadows.ts
3
3
  /**
4
4
  * Shadow tokens using tasty shorthand syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/tokens/sizes.ts
3
3
  /**
4
4
  * Component size values in pixels.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/tokens/spacing.ts
3
3
  /**
4
4
  * Spacing tokens using tasty multiplier syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/tokens/typography.ts
3
3
  /**
4
4
  * Typography presets for headings, text, and special styles.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/ResizeSensor.ts
3
3
  /**
4
4
  * Iterate over each of the provided element(s).
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/is-dev-env.ts
3
3
  function isDevEnv() {
4
4
  if (typeof window !== "undefined" && window.localStorage) try {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/modules.ts
3
3
  function extractModule(promise) {
4
4
  return promise.then((module) => module.default || module);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/promise.ts
3
3
  function timeout(ms = 30) {
4
4
  return new Promise((resolve) => {
package/dist/utils/raf.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/raf.ts
3
3
  /**
4
4
  * Chains N requestAnimationFrame calls and returns a cancel function.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/random.ts
3
3
  function random(min, max) {
4
4
  const realMin = min < max ? min : max;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/range.ts
3
3
  function range(count) {
4
4
  return Array.from({ length: count }, (_, i) => i);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { mergeProps } from "./mergeProps.js";
3
3
  import { Children, cloneElement, createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/react/chain.ts
3
3
  /**
4
4
  * Calls all functions in the order they were chained with the same arguments.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/react/disabledProps.ts
3
3
  /**
4
4
  * Tags where `disabled` is a real HTML attribute. Browsers refuse to dispatch
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | 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.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { getDisabledElementProps, omitActivationEventProps } from "./disabledProps.js";
4
4
  import { forwardRefWithGenerics } from "./forwardRefWithGenerics.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | 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.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | 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.0.0-canary-b4ff7b4 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3235a6e | Cube Dev Team */
2
2
  //#region src/utils/react/mapProps.ts
3
3
  /** Converts AriaButtonProps to CubeButtonProps */
4
4
  function ariaToCubeButtonProps(props) {