@cube-dev/ui-kit 0.0.0-canary-69f25fb → 0.0.0-canary-bafd63a

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 (558) hide show
  1. package/dist/CHANGELOG.md +6 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +3 -5
  17. package/dist/components/Root.js.map +1 -1
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.d.ts +0 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  58. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  59. package/dist/components/content/Item/Item.js +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.d.ts +14 -14
  89. package/dist/components/content/Text.js +1 -1
  90. package/dist/components/content/TextItem/TextItem.js +1 -1
  91. package/dist/components/content/Title.js +1 -1
  92. package/dist/components/content/Tree/Tree.js +1 -1
  93. package/dist/components/content/Tree/TreeNode.js +1 -1
  94. package/dist/components/content/Tree/styled.js +1 -1
  95. package/dist/components/content/Tree/tree-index.js +1 -1
  96. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  97. package/dist/components/content/Tree/use-load-data.js +1 -1
  98. package/dist/components/content/highlightText.js +1 -1
  99. package/dist/components/content/use-auto-tooltip.js +1 -1
  100. package/dist/components/data/DataTable/DataTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  106. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  107. package/dist/components/data/TableBase/RowCollection.js +1 -1
  108. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  109. package/dist/components/data/TableBase/TableRow.js +1 -1
  110. package/dist/components/data/TableBase/TableView.js +1 -1
  111. package/dist/components/data/TableBase/column-menu.js +1 -1
  112. package/dist/components/data/TableBase/column-tint.js +1 -1
  113. package/dist/components/data/TableBase/row-menu.js +1 -1
  114. package/dist/components/data/TableBase/styled.d.ts +1 -2
  115. package/dist/components/data/TableBase/styled.js +1 -1
  116. package/dist/components/data/TableBase/table-tree.js +1 -1
  117. package/dist/components/data/TableBase/types.js +1 -1
  118. package/dist/components/data/TableBase/use-cell-selection.d.ts +0 -1
  119. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  120. package/dist/components/data/TableBase/use-column-order.js +1 -1
  121. package/dist/components/data/TableBase/use-container-width.js +1 -1
  122. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  123. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  124. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  125. package/dist/components/data/TableBase/use-table-search.js +1 -1
  126. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  127. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  128. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  129. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  130. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  131. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  132. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  133. package/dist/components/fields/Checkbox/context.js +1 -1
  134. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  135. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  136. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  137. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  138. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  139. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  140. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  141. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  142. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  143. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  148. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  149. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  150. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  152. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  155. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  157. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  158. package/dist/components/fields/DatePicker/period.js +1 -1
  159. package/dist/components/fields/DatePicker/props.js +1 -1
  160. package/dist/components/fields/DatePicker/utils.js +1 -1
  161. package/dist/components/fields/FileInput/FileInput.js +1 -1
  162. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  163. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  164. package/dist/components/fields/Input/Input.js +1 -1
  165. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  166. package/dist/components/fields/ListBox/ListBox.js +1 -1
  167. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  168. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -1
  169. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  170. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  171. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  172. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  173. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  174. package/dist/components/fields/Picker/Picker.js +1 -1
  175. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  176. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  177. package/dist/components/fields/RadioGroup/context.js +1 -1
  178. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  179. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  180. package/dist/components/fields/Select/Select.js +1 -1
  181. package/dist/components/fields/Slider/Gradation.js +1 -1
  182. package/dist/components/fields/Slider/HueSlider.js +1 -1
  183. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  184. package/dist/components/fields/Slider/Slider.js +1 -1
  185. package/dist/components/fields/Slider/SliderBase.js +1 -1
  186. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  187. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  188. package/dist/components/fields/Slider/elements.js +1 -1
  189. package/dist/components/fields/Slider/index.js +1 -1
  190. package/dist/components/fields/Switch/Switch.js +1 -1
  191. package/dist/components/fields/TextArea/TextArea.js +1 -1
  192. package/dist/components/fields/TextInput/TextInput.js +1 -1
  193. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  194. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  195. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  196. package/dist/components/fields/color/ColorPanel.js +1 -1
  197. package/dist/components/fields/color/channels.js +1 -1
  198. package/dist/components/fields/color/color.js +1 -1
  199. package/dist/components/fields/color/context.js +1 -1
  200. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  201. package/dist/components/form/Form/Field.js +1 -1
  202. package/dist/components/form/Form/Form.js +1 -1
  203. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  204. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  205. package/dist/components/form/Form/SubmitError.js +1 -1
  206. package/dist/components/form/Form/index.js +1 -1
  207. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  208. package/dist/components/form/Form/use-field/use-field.js +1 -1
  209. package/dist/components/form/Form/use-form.js +1 -1
  210. package/dist/components/form/Form/validation.js +1 -1
  211. package/dist/components/form/Label.js +1 -1
  212. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  213. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  214. package/dist/components/form/validation/use-validation-props.js +1 -1
  215. package/dist/components/form/wrapper.js +1 -1
  216. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  217. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  218. package/dist/components/layout/Board/Board.js +1 -1
  219. package/dist/components/layout/Board/BoardProvider.js +1 -1
  220. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  221. package/dist/components/layout/Board/Widget.js +1 -1
  222. package/dist/components/layout/Board/WidgetHost.js +1 -1
  223. package/dist/components/layout/Board/board-context.js +1 -1
  224. package/dist/components/layout/Board/board-store.js +1 -1
  225. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  226. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  227. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  228. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  229. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  230. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  231. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  232. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  233. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  234. package/dist/components/layout/Board/index.js +1 -1
  235. package/dist/components/layout/Board/responsive-utils.js +1 -1
  236. package/dist/components/layout/Board/use-board-layout.js +1 -1
  237. package/dist/components/layout/Board/use-board-registry.js +1 -1
  238. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  239. package/dist/components/layout/Board/use-board-selection.js +1 -1
  240. package/dist/components/layout/Flex.js +1 -1
  241. package/dist/components/layout/Flow.js +1 -1
  242. package/dist/components/layout/Grid.js +1 -1
  243. package/dist/components/layout/Panel.js +1 -1
  244. package/dist/components/layout/Prefix.js +1 -1
  245. package/dist/components/layout/ResizablePanel.js +1 -1
  246. package/dist/components/layout/Space.js +1 -1
  247. package/dist/components/layout/Suffix.js +1 -1
  248. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  249. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  250. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  251. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  252. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  253. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  254. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  255. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  256. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  257. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  258. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  259. package/dist/components/navigation/Tabs/styled.js +1 -1
  260. package/dist/components/navigation/Tabs/types.js +1 -1
  261. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  262. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  263. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  264. package/dist/components/other/Calendar/Calendar.js +1 -1
  265. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  266. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  267. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  268. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  269. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  270. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  271. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  272. package/dist/components/other/Calendar/styled.js +1 -1
  273. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  274. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  275. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  276. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  277. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  278. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  279. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  280. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  281. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  282. package/dist/components/overlays/Dialog/context.js +1 -1
  283. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  284. package/dist/components/overlays/Modal/Modal.d.ts +1 -2
  285. package/dist/components/overlays/Modal/Modal.js +1 -1
  286. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  287. package/dist/components/overlays/Modal/Overlay.d.ts +0 -1
  288. package/dist/components/overlays/Modal/Overlay.js +1 -1
  289. package/dist/components/overlays/Modal/Popover.js +1 -1
  290. package/dist/components/overlays/Modal/Tray.js +1 -1
  291. package/dist/components/overlays/Modal/Underlay.js +1 -1
  292. package/dist/components/overlays/Modal/types.d.ts +0 -1
  293. package/dist/components/overlays/Notifications/Notification.js +1 -1
  294. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  295. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  296. package/dist/components/overlays/Notifications/NotificationContext.d.ts +0 -2
  297. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  298. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  299. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  300. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  301. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  302. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  303. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  304. package/dist/components/overlays/Notifications/index.js +1 -1
  305. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  306. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  307. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  308. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  309. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  310. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  311. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  312. package/dist/components/overlays/Toast/index.js +1 -1
  313. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  314. package/dist/components/overlays/Toast/useToast.js +1 -1
  315. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  316. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  317. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  318. package/dist/components/overlays/Tooltip/context.js +1 -1
  319. package/dist/components/portal/Portal.js +1 -1
  320. package/dist/components/portal/PortalProvider.js +1 -1
  321. package/dist/components/portal/index.d.ts +0 -1
  322. package/dist/components/portal/usePortal.js +1 -1
  323. package/dist/components/shared/DraggableCollection.js +1 -1
  324. package/dist/components/shared/InvalidIcon.js +1 -1
  325. package/dist/components/shared/ValidIcon.js +1 -1
  326. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  327. package/dist/components/status/Spin/Cube.js +1 -1
  328. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  329. package/dist/components/status/Spin/Spin.js +1 -1
  330. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  331. package/dist/data/item-themes.js +1 -1
  332. package/dist/data/themes.js +1 -1
  333. package/dist/eslint-plugin/defaults.generated.js +1 -1
  334. package/dist/eslint-plugin/index.js +1 -1
  335. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  336. package/dist/i18n/I18nProvider.js +1 -1
  337. package/dist/i18n/createFormatter.js +1 -1
  338. package/dist/i18n/index.js +1 -1
  339. package/dist/i18n/instance.js +1 -1
  340. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  341. package/dist/i18n/locales/en-US/uikit.js +1 -1
  342. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  343. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  344. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  345. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  346. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  347. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  348. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  349. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  350. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  351. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  352. package/dist/i18n/locales.js +1 -1
  353. package/dist/i18n/useFormatter.js +1 -1
  354. package/dist/i18n/useI18n.js +1 -1
  355. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  356. package/dist/icons/AdjustmentsIcon.js +1 -1
  357. package/dist/icons/AiIcon.js +1 -1
  358. package/dist/icons/AreaChartIcon.js +1 -1
  359. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  360. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  361. package/dist/icons/BackwardIcon.js +1 -1
  362. package/dist/icons/BarChartIcon.js +1 -1
  363. package/dist/icons/BellFilledIcon.js +1 -1
  364. package/dist/icons/BellIcon.js +1 -1
  365. package/dist/icons/BooleanIcon.js +1 -1
  366. package/dist/icons/CalendarEditIcon.js +1 -1
  367. package/dist/icons/CalendarIcon.js +1 -1
  368. package/dist/icons/CaretDownIcon.js +1 -1
  369. package/dist/icons/CaretUpIcon.js +1 -1
  370. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  371. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  372. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  373. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  374. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  375. package/dist/icons/ChartBarLineIcon.js +1 -1
  376. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  377. package/dist/icons/ChartBarStackedIcon.js +1 -1
  378. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  379. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  380. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  381. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  382. package/dist/icons/ChartBubbleIcon.js +1 -1
  383. package/dist/icons/ChartDonut2Icon.js +1 -1
  384. package/dist/icons/ChartFunnelIcon.js +1 -1
  385. package/dist/icons/ChartHeatmapIcon.js +1 -1
  386. package/dist/icons/ChartKPIIcon.js +1 -1
  387. package/dist/icons/ChartPie2Icon.js +1 -1
  388. package/dist/icons/ChartScatterIcon.js +1 -1
  389. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  390. package/dist/icons/CheckCircleIcon.js +1 -1
  391. package/dist/icons/CheckIcon.js +1 -1
  392. package/dist/icons/CircleFilledIcon.js +1 -1
  393. package/dist/icons/ClearIcon.js +1 -1
  394. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  395. package/dist/icons/CloseCircleIcon.js +1 -1
  396. package/dist/icons/CloseIcon.js +1 -1
  397. package/dist/icons/CodeIcon.js +1 -1
  398. package/dist/icons/ColumnTotalIcon.js +1 -1
  399. package/dist/icons/CopyIcon.js +1 -1
  400. package/dist/icons/CountIcon.js +1 -1
  401. package/dist/icons/CubeIcon.js +1 -1
  402. package/dist/icons/CubePauseIcon.js +1 -1
  403. package/dist/icons/CubePlayIcon.js +1 -1
  404. package/dist/icons/CurrencyDollarIcon.js +1 -1
  405. package/dist/icons/DangerIcon.js +1 -1
  406. package/dist/icons/DashboardIcon.js +1 -1
  407. package/dist/icons/DatabaseIcon.js +1 -1
  408. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  409. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  410. package/dist/icons/DirectionIcon.js +1 -1
  411. package/dist/icons/DonutIcon.js +1 -1
  412. package/dist/icons/DownIcon.js +1 -1
  413. package/dist/icons/EditIcon.js +1 -1
  414. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  415. package/dist/icons/ExclamationCircleIcon.js +1 -1
  416. package/dist/icons/ExclamationIcon.js +1 -1
  417. package/dist/icons/EyeIcon.js +1 -1
  418. package/dist/icons/EyeInvisibleIcon.js +1 -1
  419. package/dist/icons/FilterIcon.js +1 -1
  420. package/dist/icons/FolderFilledIcon.js +1 -1
  421. package/dist/icons/FolderIcon.js +1 -1
  422. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  423. package/dist/icons/FolderOpenIcon.js +1 -1
  424. package/dist/icons/ForwardIcon.js +1 -1
  425. package/dist/icons/GripVerticalIcon.js +1 -1
  426. package/dist/icons/HierarchyIcon.js +1 -1
  427. package/dist/icons/HierarchyOpenIcon.js +1 -1
  428. package/dist/icons/Icon.js +1 -1
  429. package/dist/icons/InfoCircleIcon.js +1 -1
  430. package/dist/icons/InfoIcon.js +1 -1
  431. package/dist/icons/KeyIcon.js +1 -1
  432. package/dist/icons/LeftIcon.js +1 -1
  433. package/dist/icons/LineChartIcon.js +1 -1
  434. package/dist/icons/LoadingIcon.js +1 -1
  435. package/dist/icons/LockFilledIcon.js +1 -1
  436. package/dist/icons/LockIcon.js +1 -1
  437. package/dist/icons/MoreIcon.js +1 -1
  438. package/dist/icons/NotAllowedIcon.js +1 -1
  439. package/dist/icons/Number123Icon.js +1 -1
  440. package/dist/icons/NumberIcon.js +1 -1
  441. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  442. package/dist/icons/PauseCircleIcon.js +1 -1
  443. package/dist/icons/PauseIcon.js +1 -1
  444. package/dist/icons/PercentageIcon.js +1 -1
  445. package/dist/icons/PieChartIcon.js +1 -1
  446. package/dist/icons/PipetteIcon.js +1 -1
  447. package/dist/icons/PlayCircleIcon.js +1 -1
  448. package/dist/icons/PlayIcon.js +1 -1
  449. package/dist/icons/PlusIcon.js +1 -1
  450. package/dist/icons/ProgressBarIcon.js +1 -1
  451. package/dist/icons/ReloadIcon.js +1 -1
  452. package/dist/icons/ReportIcon.js +1 -1
  453. package/dist/icons/ReturnIcon.js +1 -1
  454. package/dist/icons/RightIcon.js +1 -1
  455. package/dist/icons/RowTotalsIcon.js +1 -1
  456. package/dist/icons/SchemeIcon.js +1 -1
  457. package/dist/icons/SearchIcon.js +1 -1
  458. package/dist/icons/SemanticQueryIcon.js +1 -1
  459. package/dist/icons/SettingsIcon.js +1 -1
  460. package/dist/icons/ShieldFilledIcon.js +1 -1
  461. package/dist/icons/ShieldIcon.js +1 -1
  462. package/dist/icons/SlashIcon.js +1 -1
  463. package/dist/icons/SparklesIcon.js +1 -1
  464. package/dist/icons/SqlIcon.js +1 -1
  465. package/dist/icons/StatsIcon.js +1 -1
  466. package/dist/icons/StopIcon.js +1 -1
  467. package/dist/icons/StringIcon.js +1 -1
  468. package/dist/icons/SubtotalsIcon.js +1 -1
  469. package/dist/icons/SwitchIcon.js +1 -1
  470. package/dist/icons/TableIcon.js +1 -1
  471. package/dist/icons/ThumbsDownIcon.js +1 -1
  472. package/dist/icons/ThumbsUpIcon.js +1 -1
  473. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  474. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  475. package/dist/icons/ThunderboltIcon.js +1 -1
  476. package/dist/icons/TimeIcon.js +1 -1
  477. package/dist/icons/TrashIcon.js +1 -1
  478. package/dist/icons/UnlockIcon.js +1 -1
  479. package/dist/icons/UpIcon.js +1 -1
  480. package/dist/icons/UserGroupIcon.js +1 -1
  481. package/dist/icons/UserIcon.js +1 -1
  482. package/dist/icons/UserLockIcon.js +1 -1
  483. package/dist/icons/ViewIcon.js +1 -1
  484. package/dist/icons/WarningFilledIcon.js +1 -1
  485. package/dist/icons/WarningIcon.js +1 -1
  486. package/dist/icons/wrap-icon.js +1 -1
  487. package/dist/index.d.ts +2 -1
  488. package/dist/index.js +3 -2
  489. package/dist/index.js.map +1 -1
  490. package/dist/probe/canonicalize.js +1 -1
  491. package/dist/probe/css.js +1 -1
  492. package/dist/probe/index.js +1 -1
  493. package/dist/provider.js +1 -1
  494. package/dist/providers/TrackingProvider.js +1 -1
  495. package/dist/providers/navigationAdapter.default.js +1 -1
  496. package/dist/tokens/all-tokens.js +1 -1
  497. package/dist/tokens/base.js +1 -1
  498. package/dist/tokens/color-seed.js +1 -1
  499. package/dist/tokens/color-theme.js +1 -1
  500. package/dist/tokens/colors.js +1 -1
  501. package/dist/tokens/layout.js +1 -1
  502. package/dist/tokens/lazy-styles.js +1 -1
  503. package/dist/tokens/palette-config.js +1 -1
  504. package/dist/tokens/palette.js +1 -1
  505. package/dist/tokens/resolve.js +1 -1
  506. package/dist/tokens/shadows.js +1 -1
  507. package/dist/tokens/sizes.js +1 -1
  508. package/dist/tokens/spacing.js +1 -1
  509. package/dist/tokens/typography.js +1 -1
  510. package/dist/utils/ResizeSensor.js +1 -1
  511. package/dist/utils/index.d.ts +1 -0
  512. package/dist/utils/is-dev-env.js +1 -1
  513. package/dist/utils/modules.js +1 -1
  514. package/dist/utils/promise.js +1 -1
  515. package/dist/utils/raf.js +1 -1
  516. package/dist/utils/random.js +1 -1
  517. package/dist/utils/range.js +1 -1
  518. package/dist/utils/react/RenderCache.js +1 -1
  519. package/dist/utils/react/Slots.js +1 -1
  520. package/dist/utils/react/chain.js +1 -1
  521. package/dist/utils/react/disabledProps.js +1 -1
  522. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  523. package/dist/utils/react/index.d.ts +1 -0
  524. package/dist/utils/react/index.js +2 -1
  525. package/dist/utils/react/interactions.js +1 -1
  526. package/dist/utils/react/isTextOnly.js +1 -1
  527. package/dist/utils/react/mapProps.js +1 -1
  528. package/dist/utils/react/mergeProps.js +1 -1
  529. package/dist/utils/react/nullableValue.js +1 -1
  530. package/dist/utils/react/resolveIcon.js +1 -1
  531. package/dist/utils/react/sharedStore.js +1 -1
  532. package/dist/utils/react/useBufferedValue.js +1 -1
  533. package/dist/utils/react/useCombinedRefs.js +1 -1
  534. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  535. package/dist/utils/react/useEventBus.js +1 -1
  536. package/dist/utils/react/useId.js +1 -1
  537. package/dist/utils/react/useIsDarwin.js +1 -1
  538. package/dist/utils/react/useKeySymbols.js +1 -1
  539. package/dist/utils/react/useLayoutEffect.js +1 -1
  540. package/dist/utils/react/useLocalStorage.js +1 -1
  541. package/dist/utils/react/useMergeStyles.js +1 -1
  542. package/dist/utils/react/usePopoverSync.js +1 -1
  543. package/dist/utils/react/useQaProps.js +1 -1
  544. package/dist/utils/react/useSchema.d.ts +58 -0
  545. package/dist/utils/react/useSchema.js +176 -0
  546. package/dist/utils/react/useSchema.js.map +1 -0
  547. package/dist/utils/react/useViewportSize.js +1 -1
  548. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  549. package/dist/utils/selection.js +1 -1
  550. package/dist/utils/styles.js +1 -1
  551. package/dist/utils/tree.js +1 -1
  552. package/dist/utils/warnings.js +1 -1
  553. package/dist/version.js +2 -2
  554. package/docs/Theming.md +32 -0
  555. package/docs/Usage.md +15 -0
  556. package/package.json +1 -1
  557. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
  558. package/dist/components/portal/PortalProvider.d.ts +0 -2
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  import * as React$1 from "react";
3
3
 
4
4
  //#region src/utils/react/useLayoutEffect.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useCallback, useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  import { mergeStyles } from "@tenphi/tasty";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  import { EventBusContext, useEventBus } from "./useEventBus.js";
3
3
  import { useCallback, useContext, useEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  //#region src/utils/react/useQaProps.ts
3
3
  /**
4
4
  * Processes QA props.
@@ -0,0 +1,58 @@
1
+
2
+ //#region src/utils/react/useSchema.d.ts
3
+ /** The color schema the document resolves to — the two arms of the `@dark` state. */
4
+ type ColorSchema = 'light' | 'dark';
5
+ /**
6
+ * The document's current color schema, read once — the JS answer to `@dark`.
7
+ *
8
+ * Outside React (a chart spec built in a module, an editor theme registered at
9
+ * import time). In React use {@link useSchema}, which also re-renders on change.
10
+ * Returns `'light'` with no DOM.
11
+ */
12
+ declare function resolveSchema(): ColorSchema;
13
+ /**
14
+ * Whether the document is showing the high-contrast tier, read once — the JS
15
+ * answer to `@hc`.
16
+ *
17
+ * Note this is an *ambient* condition, not the theme's `contrastLevel`: the
18
+ * level is a `PaletteConfig` seed the app supplies (read it with
19
+ * `getPaletteConfig()`), while this is the tier the viewer asked for.
20
+ * Returns `false` with no DOM.
21
+ */
22
+ declare function resolveHighContrast(): boolean;
23
+ /**
24
+ * Subscribe to ambient condition changes — either the schema or the contrast
25
+ * tier. Returns an unsubscribe function.
26
+ *
27
+ * The listener takes no argument: re-read with {@link resolveSchema} /
28
+ * {@link resolveHighContrast}, which is what the hooks below do. For non-React
29
+ * consumers that own a surface the stylesheet cannot reach — re-theming a Monaco
30
+ * instance, re-rendering a chart.
31
+ */
32
+ declare function subscribeSchema(listener: () => void): () => void;
33
+ /**
34
+ * The document's color schema, kept live — `'light'` or `'dark'`.
35
+ *
36
+ * ```tsx
37
+ * const schema = useSchema();
38
+ *
39
+ * <VegaChart spec={useMemo(() => buildSpec(schema), [schema])} />;
40
+ * ```
41
+ *
42
+ * Follows both the `<html data-schema>` opt-in and `prefers-color-scheme`,
43
+ * exactly as the `@dark` state does. Under SSR it renders `'light'` and
44
+ * re-renders with the real value after hydration.
45
+ */
46
+ declare function useSchema(): ColorSchema;
47
+ /**
48
+ * Whether the document is showing the high-contrast tier, kept live — the hook
49
+ * form of {@link resolveHighContrast}, following `<html data-contrast>` and
50
+ * `prefers-contrast` exactly as the `@hc` state does.
51
+ *
52
+ * Under SSR it renders `false` and re-renders with the real value after
53
+ * hydration.
54
+ */
55
+ declare function useHighContrast(): boolean;
56
+ //#endregion
57
+ export { ColorSchema, resolveHighContrast, resolveSchema, subscribeSchema, useHighContrast, useSchema };
58
+ //# sourceMappingURL=useSchema.d.ts.map
@@ -0,0 +1,176 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
+ import { useSyncExternalStore } from "react";
3
+
4
+ //#region src/utils/react/useSchema.ts
5
+ /**
6
+ * The ambient viewing conditions — the color schema and the contrast tier the
7
+ * document is showing right now.
8
+ *
9
+ * This module is the single owner of the definition: it builds the `@dark` /
10
+ * `@hc` predefined states that `src/components/Root.tsx` registers with tasty,
11
+ * *and* it answers the same question in JS. One definition, two readers, so the
12
+ * CSS and the JS answers cannot drift apart.
13
+ *
14
+ * **For styling, do not use this.** `{ '': light, '@dark': dark, '@hc': hc }` is
15
+ * the answer, and branching styles in JS gives up the conditionality that lets a
16
+ * schema flip repaint without a re-render. Two cases the state map cannot serve:
17
+ *
18
+ * 1. **Surfaces the stylesheet does not reach** — a Vega spec, a CodeMirror or
19
+ * Monaco theme, a third-party iframe. They take values, not CSS, so `@dark`
20
+ * never applies and the branch has to happen in JS.
21
+ * 2. **Control state that is not styling** — seeding or labelling a control from
22
+ * the ambient condition, e.g. a Light/Dark or Normal/High-contrast preview
23
+ * selector that starts on whatever the page is already showing.
24
+ *
25
+ * Root-level only, and deliberately not a generic state reader: tasty's state
26
+ * vocabulary mixes element-local states (`hovered`, `pressed`, `disabled`) with
27
+ * ambient ones (`@media(…)`, `@root(…)`), and only the ambient half is
28
+ * answerable without an element. Evaluating the state language in JS would mean
29
+ * a second implementation of the state algebra to keep in agreement with the CSS
30
+ * one, for a question almost every caller asks about the root anyway.
31
+ */
32
+ /**
33
+ * The `data-*` attribute names the opt-in uses, and the media queries it falls
34
+ * back to. `@root(schema=dark)` compiles to `:root[data-schema="dark"]`, hence
35
+ * the `data-` prefix on the DOM side and the bare key on the tasty side.
36
+ */
37
+ const SCHEMA_KEY = "schema";
38
+ const CONTRAST_KEY = "contrast";
39
+ const SCHEMA_ATTR = `data-${SCHEMA_KEY}`;
40
+ const CONTRAST_ATTR = `data-${CONTRAST_KEY}`;
41
+ const DARK_QUERY = "(prefers-color-scheme: dark)";
42
+ const HIGH_CONTRAST_QUERY = "(prefers-contrast: more)";
43
+ /**
44
+ * The `@dark` / `@hc` state aliases, in tasty's DSL — registered globally by
45
+ * `<Root>` via `setGlobalPredefinedStates()`.
46
+ *
47
+ * The attribute opt-in wins over the system preference, and the fallback is
48
+ * gated on the attribute being *absent* (`!@root(schema)`) rather than on it
49
+ * being some other value — so `<html data-schema="light">` stays light inside a
50
+ * dark OS, which is the whole point of an opt-in. {@link resolveSchema} and
51
+ * {@link resolveHighContrast} read the same way.
52
+ */
53
+ const AMBIENT_PREDEFINED_STATES = {
54
+ "@dark": `@root(${SCHEMA_KEY}=dark) | (!@root(${SCHEMA_KEY}) & @media${DARK_QUERY})`,
55
+ "@hc": `@root(${CONTRAST_KEY}=high) | (!@root(${CONTRAST_KEY}) & @media${HIGH_CONTRAST_QUERY})`
56
+ };
57
+ /**
58
+ * `matchMedia` is called per read rather than cached, so a test that stubs it
59
+ * takes effect immediately. Missing (older jsdom, non-DOM runtimes) reads as
60
+ * "no preference", which lands on the light / normal-contrast defaults.
61
+ */
62
+ function mediaMatches(query) {
63
+ return typeof window !== "undefined" && typeof window.matchMedia === "function" ? window.matchMedia(query).matches : false;
64
+ }
65
+ function rootAttribute(name) {
66
+ return typeof document === "undefined" ? null : document.documentElement.getAttribute(name);
67
+ }
68
+ /**
69
+ * The document's current color schema, read once — the JS answer to `@dark`.
70
+ *
71
+ * Outside React (a chart spec built in a module, an editor theme registered at
72
+ * import time). In React use {@link useSchema}, which also re-renders on change.
73
+ * Returns `'light'` with no DOM.
74
+ */
75
+ function resolveSchema() {
76
+ const attribute = rootAttribute(SCHEMA_ATTR);
77
+ if (attribute !== null) return attribute === "dark" ? "dark" : "light";
78
+ return mediaMatches(DARK_QUERY) ? "dark" : "light";
79
+ }
80
+ /**
81
+ * Whether the document is showing the high-contrast tier, read once — the JS
82
+ * answer to `@hc`.
83
+ *
84
+ * Note this is an *ambient* condition, not the theme's `contrastLevel`: the
85
+ * level is a `PaletteConfig` seed the app supplies (read it with
86
+ * `getPaletteConfig()`), while this is the tier the viewer asked for.
87
+ * Returns `false` with no DOM.
88
+ */
89
+ function resolveHighContrast() {
90
+ const attribute = rootAttribute(CONTRAST_ATTR);
91
+ if (attribute !== null) return attribute === "high";
92
+ return mediaMatches(HIGH_CONTRAST_QUERY);
93
+ }
94
+ const listeners = /* @__PURE__ */ new Set();
95
+ let stopWatching = null;
96
+ function notify() {
97
+ listeners.forEach((listener) => listener());
98
+ }
99
+ /**
100
+ * Both inputs have to be watched, because either can decide the answer: the
101
+ * attribute when the opt-in is set, the media query otherwise. One observer and
102
+ * one pair of query listeners are shared by every subscriber, and torn down when
103
+ * the last one leaves.
104
+ */
105
+ function startWatching() {
106
+ if (typeof document === "undefined") return () => {};
107
+ const observer = new MutationObserver(notify);
108
+ observer.observe(document.documentElement, {
109
+ attributes: true,
110
+ attributeFilter: [SCHEMA_ATTR, CONTRAST_ATTR]
111
+ });
112
+ const queries = typeof window !== "undefined" && typeof window.matchMedia === "function" ? [window.matchMedia(DARK_QUERY), window.matchMedia(HIGH_CONTRAST_QUERY)] : [];
113
+ queries.forEach((query) => query.addEventListener("change", notify));
114
+ return () => {
115
+ observer.disconnect();
116
+ queries.forEach((query) => query.removeEventListener("change", notify));
117
+ };
118
+ }
119
+ /**
120
+ * Subscribe to ambient condition changes — either the schema or the contrast
121
+ * tier. Returns an unsubscribe function.
122
+ *
123
+ * The listener takes no argument: re-read with {@link resolveSchema} /
124
+ * {@link resolveHighContrast}, which is what the hooks below do. For non-React
125
+ * consumers that own a surface the stylesheet cannot reach — re-theming a Monaco
126
+ * instance, re-rendering a chart.
127
+ */
128
+ function subscribeSchema(listener) {
129
+ listeners.add(listener);
130
+ if (!stopWatching) stopWatching = startWatching();
131
+ return () => {
132
+ listeners.delete(listener);
133
+ if (!listeners.size && stopWatching) {
134
+ stopWatching();
135
+ stopWatching = null;
136
+ }
137
+ };
138
+ }
139
+ /**
140
+ * Snapshots are primitives, so React bails out on an unchanged value and no
141
+ * memoization is needed — a contrast change re-runs a `useSchema()` reader's
142
+ * `getSnapshot` and stops there.
143
+ */
144
+ const getServerSchema = () => "light";
145
+ const getServerHighContrast = () => false;
146
+ /**
147
+ * The document's color schema, kept live — `'light'` or `'dark'`.
148
+ *
149
+ * ```tsx
150
+ * const schema = useSchema();
151
+ *
152
+ * <VegaChart spec={useMemo(() => buildSpec(schema), [schema])} />;
153
+ * ```
154
+ *
155
+ * Follows both the `<html data-schema>` opt-in and `prefers-color-scheme`,
156
+ * exactly as the `@dark` state does. Under SSR it renders `'light'` and
157
+ * re-renders with the real value after hydration.
158
+ */
159
+ function useSchema() {
160
+ return useSyncExternalStore(subscribeSchema, resolveSchema, getServerSchema);
161
+ }
162
+ /**
163
+ * Whether the document is showing the high-contrast tier, kept live — the hook
164
+ * form of {@link resolveHighContrast}, following `<html data-contrast>` and
165
+ * `prefers-contrast` exactly as the `@hc` state does.
166
+ *
167
+ * Under SSR it renders `false` and re-renders with the real value after
168
+ * hydration.
169
+ */
170
+ function useHighContrast() {
171
+ return useSyncExternalStore(subscribeSchema, resolveHighContrast, getServerHighContrast);
172
+ }
173
+
174
+ //#endregion
175
+ export { AMBIENT_PREDEFINED_STATES, resolveHighContrast, resolveSchema, subscribeSchema, useHighContrast, useSchema };
176
+ //# sourceMappingURL=useSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSchema.js","names":[],"sources":["../../../src/utils/react/useSchema.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\n/**\n * The ambient viewing conditions — the color schema and the contrast tier the\n * document is showing right now.\n *\n * This module is the single owner of the definition: it builds the `@dark` /\n * `@hc` predefined states that `src/components/Root.tsx` registers with tasty,\n * *and* it answers the same question in JS. One definition, two readers, so the\n * CSS and the JS answers cannot drift apart.\n *\n * **For styling, do not use this.** `{ '': light, '@dark': dark, '@hc': hc }` is\n * the answer, and branching styles in JS gives up the conditionality that lets a\n * schema flip repaint without a re-render. Two cases the state map cannot serve:\n *\n * 1. **Surfaces the stylesheet does not reach** — a Vega spec, a CodeMirror or\n * Monaco theme, a third-party iframe. They take values, not CSS, so `@dark`\n * never applies and the branch has to happen in JS.\n * 2. **Control state that is not styling** — seeding or labelling a control from\n * the ambient condition, e.g. a Light/Dark or Normal/High-contrast preview\n * selector that starts on whatever the page is already showing.\n *\n * Root-level only, and deliberately not a generic state reader: tasty's state\n * vocabulary mixes element-local states (`hovered`, `pressed`, `disabled`) with\n * ambient ones (`@media(…)`, `@root(…)`), and only the ambient half is\n * answerable without an element. Evaluating the state language in JS would mean\n * a second implementation of the state algebra to keep in agreement with the CSS\n * one, for a question almost every caller asks about the root anyway.\n */\n\n// ============================================================================\n// The definition\n// ============================================================================\n\n/**\n * The `data-*` attribute names the opt-in uses, and the media queries it falls\n * back to. `@root(schema=dark)` compiles to `:root[data-schema=\"dark\"]`, hence\n * the `data-` prefix on the DOM side and the bare key on the tasty side.\n */\nconst SCHEMA_KEY = 'schema';\nconst CONTRAST_KEY = 'contrast';\nconst SCHEMA_ATTR = `data-${SCHEMA_KEY}`;\nconst CONTRAST_ATTR = `data-${CONTRAST_KEY}`;\nconst DARK_QUERY = '(prefers-color-scheme: dark)';\nconst HIGH_CONTRAST_QUERY = '(prefers-contrast: more)';\n\n/**\n * The `@dark` / `@hc` state aliases, in tasty's DSL — registered globally by\n * `<Root>` via `setGlobalPredefinedStates()`.\n *\n * The attribute opt-in wins over the system preference, and the fallback is\n * gated on the attribute being *absent* (`!@root(schema)`) rather than on it\n * being some other value — so `<html data-schema=\"light\">` stays light inside a\n * dark OS, which is the whole point of an opt-in. {@link resolveSchema} and\n * {@link resolveHighContrast} read the same way.\n */\nexport const AMBIENT_PREDEFINED_STATES = {\n '@dark': `@root(${SCHEMA_KEY}=dark) | (!@root(${SCHEMA_KEY}) & @media${DARK_QUERY})`,\n '@hc': `@root(${CONTRAST_KEY}=high) | (!@root(${CONTRAST_KEY}) & @media${HIGH_CONTRAST_QUERY})`,\n} as const;\n\n/** The color schema the document resolves to — the two arms of the `@dark` state. */\nexport type ColorSchema = 'light' | 'dark';\n\n// ============================================================================\n// Reading\n// ============================================================================\n\n/**\n * `matchMedia` is called per read rather than cached, so a test that stubs it\n * takes effect immediately. Missing (older jsdom, non-DOM runtimes) reads as\n * \"no preference\", which lands on the light / normal-contrast defaults.\n */\nfunction mediaMatches(query: string): boolean {\n return typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function'\n ? window.matchMedia(query).matches\n : false;\n}\n\nfunction rootAttribute(name: string): string | null {\n return typeof document === 'undefined'\n ? null\n : document.documentElement.getAttribute(name);\n}\n\n/**\n * The document's current color schema, read once — the JS answer to `@dark`.\n *\n * Outside React (a chart spec built in a module, an editor theme registered at\n * import time). In React use {@link useSchema}, which also re-renders on change.\n * Returns `'light'` with no DOM.\n */\nexport function resolveSchema(): ColorSchema {\n const attribute = rootAttribute(SCHEMA_ATTR);\n\n if (attribute !== null) {\n return attribute === 'dark' ? 'dark' : 'light';\n }\n\n return mediaMatches(DARK_QUERY) ? 'dark' : 'light';\n}\n\n/**\n * Whether the document is showing the high-contrast tier, read once — the JS\n * answer to `@hc`.\n *\n * Note this is an *ambient* condition, not the theme's `contrastLevel`: the\n * level is a `PaletteConfig` seed the app supplies (read it with\n * `getPaletteConfig()`), while this is the tier the viewer asked for.\n * Returns `false` with no DOM.\n */\nexport function resolveHighContrast(): boolean {\n const attribute = rootAttribute(CONTRAST_ATTR);\n\n if (attribute !== null) {\n return attribute === 'high';\n }\n\n return mediaMatches(HIGH_CONTRAST_QUERY);\n}\n\n// ============================================================================\n// Watching\n// ============================================================================\n\nconst listeners = new Set<() => void>();\n\nlet stopWatching: (() => void) | null = null;\n\nfunction notify() {\n listeners.forEach((listener) => listener());\n}\n\n/**\n * Both inputs have to be watched, because either can decide the answer: the\n * attribute when the opt-in is set, the media query otherwise. One observer and\n * one pair of query listeners are shared by every subscriber, and torn down when\n * the last one leaves.\n */\nfunction startWatching(): () => void {\n if (typeof document === 'undefined') {\n return () => {};\n }\n\n const observer = new MutationObserver(notify);\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [SCHEMA_ATTR, CONTRAST_ATTR],\n });\n\n const queries =\n typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n ? [window.matchMedia(DARK_QUERY), window.matchMedia(HIGH_CONTRAST_QUERY)]\n : [];\n\n queries.forEach((query) => query.addEventListener('change', notify));\n\n return () => {\n observer.disconnect();\n queries.forEach((query) => query.removeEventListener('change', notify));\n };\n}\n\n/**\n * Subscribe to ambient condition changes — either the schema or the contrast\n * tier. Returns an unsubscribe function.\n *\n * The listener takes no argument: re-read with {@link resolveSchema} /\n * {@link resolveHighContrast}, which is what the hooks below do. For non-React\n * consumers that own a surface the stylesheet cannot reach — re-theming a Monaco\n * instance, re-rendering a chart.\n */\nexport function subscribeSchema(listener: () => void): () => void {\n listeners.add(listener);\n\n if (!stopWatching) {\n stopWatching = startWatching();\n }\n\n return () => {\n listeners.delete(listener);\n\n if (!listeners.size && stopWatching) {\n stopWatching();\n stopWatching = null;\n }\n };\n}\n\n// ============================================================================\n// React bindings\n// ============================================================================\n\n/**\n * Snapshots are primitives, so React bails out on an unchanged value and no\n * memoization is needed — a contrast change re-runs a `useSchema()` reader's\n * `getSnapshot` and stops there.\n */\nconst getServerSchema = (): ColorSchema => 'light';\nconst getServerHighContrast = () => false;\n\n/**\n * The document's color schema, kept live — `'light'` or `'dark'`.\n *\n * ```tsx\n * const schema = useSchema();\n *\n * <VegaChart spec={useMemo(() => buildSpec(schema), [schema])} />;\n * ```\n *\n * Follows both the `<html data-schema>` opt-in and `prefers-color-scheme`,\n * exactly as the `@dark` state does. Under SSR it renders `'light'` and\n * re-renders with the real value after hydration.\n */\nexport function useSchema(): ColorSchema {\n return useSyncExternalStore(subscribeSchema, resolveSchema, getServerSchema);\n}\n\n/**\n * Whether the document is showing the high-contrast tier, kept live — the hook\n * form of {@link resolveHighContrast}, following `<html data-contrast>` and\n * `prefers-contrast` exactly as the `@hc` state does.\n *\n * Under SSR it renders `false` and re-renders with the real value after\n * hydration.\n */\nexport function useHighContrast(): boolean {\n return useSyncExternalStore(\n subscribeSchema,\n resolveHighContrast,\n getServerHighContrast,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,cAAc,QAAQ;AAC5B,MAAM,gBAAgB,QAAQ;AAC9B,MAAM,aAAa;AACnB,MAAM,sBAAsB;;;;;;;;;;;AAY5B,MAAa,4BAA4B;CACvC,SAAS,SAAS,WAAW,mBAAmB,WAAW,YAAY,WAAW;CAClF,OAAO,SAAS,aAAa,mBAAmB,aAAa,YAAY,oBAAoB;CAC9F;;;;;;AAcD,SAAS,aAAa,OAAwB;AAC5C,QAAO,OAAO,WAAW,eACvB,OAAO,OAAO,eAAe,aAC3B,OAAO,WAAW,MAAM,CAAC,UACzB;;AAGN,SAAS,cAAc,MAA6B;AAClD,QAAO,OAAO,aAAa,cACvB,OACA,SAAS,gBAAgB,aAAa,KAAK;;;;;;;;;AAUjD,SAAgB,gBAA6B;CAC3C,MAAM,YAAY,cAAc,YAAY;AAE5C,KAAI,cAAc,KAChB,QAAO,cAAc,SAAS,SAAS;AAGzC,QAAO,aAAa,WAAW,GAAG,SAAS;;;;;;;;;;;AAY7C,SAAgB,sBAA+B;CAC7C,MAAM,YAAY,cAAc,cAAc;AAE9C,KAAI,cAAc,KAChB,QAAO,cAAc;AAGvB,QAAO,aAAa,oBAAoB;;AAO1C,MAAM,4BAAY,IAAI,KAAiB;AAEvC,IAAI,eAAoC;AAExC,SAAS,SAAS;AAChB,WAAU,SAAS,aAAa,UAAU,CAAC;;;;;;;;AAS7C,SAAS,gBAA4B;AACnC,KAAI,OAAO,aAAa,YACtB,cAAa;CAGf,MAAM,WAAW,IAAI,iBAAiB,OAAO;AAE7C,UAAS,QAAQ,SAAS,iBAAiB;EACzC,YAAY;EACZ,iBAAiB,CAAC,aAAa,cAAc;EAC9C,CAAC;CAEF,MAAM,UACJ,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,aAC1D,CAAC,OAAO,WAAW,WAAW,EAAE,OAAO,WAAW,oBAAoB,CAAC,GACvE,EAAE;AAER,SAAQ,SAAS,UAAU,MAAM,iBAAiB,UAAU,OAAO,CAAC;AAEpE,cAAa;AACX,WAAS,YAAY;AACrB,UAAQ,SAAS,UAAU,MAAM,oBAAoB,UAAU,OAAO,CAAC;;;;;;;;;;;;AAa3E,SAAgB,gBAAgB,UAAkC;AAChE,WAAU,IAAI,SAAS;AAEvB,KAAI,CAAC,aACH,gBAAe,eAAe;AAGhC,cAAa;AACX,YAAU,OAAO,SAAS;AAE1B,MAAI,CAAC,UAAU,QAAQ,cAAc;AACnC,iBAAc;AACd,kBAAe;;;;;;;;;AAcrB,MAAM,wBAAqC;AAC3C,MAAM,8BAA8B;;;;;;;;;;;;;;AAepC,SAAgB,YAAyB;AACvC,QAAO,qBAAqB,iBAAiB,eAAe,gBAAgB;;;;;;;;;;AAW9E,SAAgB,kBAA2B;AACzC,QAAO,qBACL,iBACA,qBACA,sBACD"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useViewportSize.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  import { isValidElement } from "react";
3
3
  import { isFragment } from "react-is";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  //#region src/utils/selection.ts
3
3
  /**
4
4
  * Deduplicate/toggle keys in a selection: if a key appears twice it is
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  //#region src/utils/styles.ts
3
3
  /**
4
4
  * Split properties into style and non-style properties.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  //#region src/utils/tree.ts
3
3
  function toFlatTree(tree, includingFolders) {
4
4
  return tree.reduce((result, node) => {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  //#region src/utils/warnings.ts
3
3
  const SUGGESTED_PROP_MAP = {
4
4
  disabled: "isDisabled",
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-69f25fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bafd63a | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.0.0-canary-69f25fb";
3
+ const VERSION = "0.0.0-canary-bafd63a";
4
4
  const TASTY_VERSION = "3.3.1";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
package/docs/Theming.md CHANGED
@@ -395,6 +395,38 @@ subscribePaletteConfig(() => {
395
395
 
396
396
  `getPaletteConfig()` always returns the fully resolved form, so `getPaletteConfig().themes.danger.saturation` is a number even if nobody ever set it. `DEFAULT_PALETTE_CONFIG` is the shipped baseline in the same shape.
397
397
 
398
+ ## Reading the ambient schema
399
+
400
+ The palette config is what the app *asked for*; the schema and contrast tier are
401
+ what the viewer is *seeing* — `<html data-schema>` / `prefers-color-scheme`, and
402
+ `<html data-contrast>` / `prefers-contrast`. They are not part of the config,
403
+ so `getPaletteConfig()` says nothing about them:
404
+
405
+ ```tsx
406
+ import { useHighContrast, useSchema } from '@cube-dev/ui-kit';
407
+
408
+ const schema = useSchema(); // 'light' | 'dark'
409
+ const isHighContrast = useHighContrast(); // boolean
410
+ ```
411
+
412
+ Both resolve exactly as the `@dark` / `@hc` states do — attribute opt-in first,
413
+ media query only when the attribute is absent — and re-render when either input
414
+ changes. Outside React: `resolveSchema()`, `resolveHighContrast()` and
415
+ `subscribeSchema(listener)`, which fires on a change to either condition.
416
+
417
+ Reach for these only where CSS cannot go. Styling belongs in a state map
418
+ (`{ '': …, '@dark': …, '@hc': … }`), which repaints on a schema flip with no
419
+ re-render at all. What the states cannot reach is a surface that takes values
420
+ rather than CSS — a Vega spec, a CodeMirror or Monaco theme, an iframe — or a
421
+ control whose value *is* the condition, like the Light/Dark and
422
+ Normal/High-contrast selectors over the [theme builder](#theme-builder).
423
+
424
+ Note the distinction from `contrastLevel`: the level is a config seed the app
425
+ supplies and can read back, while high contrast is a viewing condition the
426
+ document is in. They also pair up — `renderColorTokens({ scheme, highContrast })`
427
+ takes both, so a region can be previewed in the conditions the page is actually
428
+ showing.
429
+
398
430
  ## `<Root palette>`
399
431
 
400
432
  `<Root>` accepts the same config as a prop, applied during render so the first paint is already correct:
package/docs/Usage.md CHANGED
@@ -113,6 +113,21 @@ The `@dark` and `@hc` predefined states are wired up in `src/components/Root.tsx
113
113
 
114
114
  When the attribute is absent, the scheme falls back to `@media (prefers-color-scheme: dark)` and `@media (prefers-contrast: more)`.
115
115
 
116
+ #### Reading the schema from JS
117
+
118
+ For styling, use the state map — `{ '': light, '@dark': dark, '@hc': hc }`. Two cases it cannot serve: a surface the stylesheet never reaches (a Vega spec, a CodeMirror / Monaco theme, an iframe), and a control whose value *is* the ambient condition (a Light/Dark preview selector). For those, read the same two conditions from JS:
119
+
120
+ ```tsx
121
+ import { useHighContrast, useSchema } from '@cube-dev/ui-kit';
122
+
123
+ const schema = useSchema(); // 'light' | 'dark' — the JS answer to `@dark`
124
+ const isHighContrast = useHighContrast(); // boolean — the JS answer to `@hc`
125
+ ```
126
+
127
+ Both follow the attribute opt-in first and the media query second, exactly as the states do, and re-render when either changes. Outside React: `resolveSchema()`, `resolveHighContrast()`, and `subscribeSchema(listener)` (fires on either condition; re-read in the listener).
128
+
129
+ Root-level only — there is no element-scoped or generic state reader, on purpose. Tasty's state vocabulary mixes element-local states (`hovered`, `pressed`, `disabled`) with ambient ones (`@media(…)`, `@root(…)`), and only the ambient half is answerable without an element.
130
+
116
131
  ### Surface & Text Vocabulary
117
132
 
118
133
  The neutral palette uses a `surface` / `surface-text` model. Each surface depth has its own AAA text color, plus a soft (AA) variant for secondary copy:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.0.0-canary-69f25fb",
3
+ "version": "0.0.0-canary-bafd63a",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {
@@ -1,2 +0,0 @@
1
-
2
- import React, { RefObject } from "react";
@@ -1,2 +0,0 @@
1
-
2
- import { RefObject } from "react";