@cube-dev/ui-kit 0.0.0-canary-ca2791e → 0.0.0-canary-20121c0

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 (634) hide show
  1. package/README.md +4 -7
  2. package/dist/CHANGELOG.md +15 -0
  3. package/dist/README.md +4 -7
  4. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  5. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  6. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  7. package/dist/_internal/hooks/use-event.js +1 -1
  8. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  9. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  10. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  11. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/dist/_internal/hooks/use-warn.js +1 -1
  13. package/dist/components/Block.js +1 -1
  14. package/dist/components/CollectionItem.js +1 -1
  15. package/dist/components/GlobalStyles.js +3 -3
  16. package/dist/components/GlobalStyles.js.map +1 -1
  17. package/dist/components/GridProvider.js +1 -1
  18. package/dist/components/HiddenInput.js +1 -1
  19. package/dist/components/Root.js +1 -2
  20. package/dist/components/Root.js.map +1 -1
  21. package/dist/components/actions/Action/Action.js +1 -1
  22. package/dist/components/actions/Banner/Banner.js +1 -1
  23. package/dist/components/actions/Button/Button.d.ts +1 -0
  24. package/dist/components/actions/Button/Button.js +1 -1
  25. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  26. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  27. package/dist/components/actions/ButtonSplit/context.js +1 -1
  28. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  29. package/dist/components/actions/CommandMenu/styled.js +1 -1
  30. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  31. package/dist/components/actions/ItemActionContext.js +1 -1
  32. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  33. package/dist/components/actions/Link/Link.js +1 -1
  34. package/dist/components/actions/Menu/Menu.js +1 -1
  35. package/dist/components/actions/Menu/MenuItem.js +1 -1
  36. package/dist/components/actions/Menu/MenuSection.js +1 -1
  37. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  38. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  39. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  40. package/dist/components/actions/Menu/context.js +1 -1
  41. package/dist/components/actions/Menu/styled.js +1 -1
  42. package/dist/components/actions/index.js +1 -1
  43. package/dist/components/actions/use-action.js +1 -1
  44. package/dist/components/actions/use-anchored-menu.js +1 -1
  45. package/dist/components/actions/use-context-menu.js +1 -1
  46. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  47. package/dist/components/content/Alert/Alert.js +1 -1
  48. package/dist/components/content/Alert/use-alert.js +1 -1
  49. package/dist/components/content/Avatar/Avatar.js +1 -1
  50. package/dist/components/content/Badge/Badge.js +1 -1
  51. package/dist/components/content/Card/Card.js +1 -1
  52. package/dist/components/content/Content.js +1 -1
  53. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  54. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  55. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  56. package/dist/components/content/Divider.js +1 -1
  57. package/dist/components/content/Footer.js +1 -1
  58. package/dist/components/content/Header.js +1 -1
  59. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  60. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  61. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  62. package/dist/components/content/Item/Item.js +1 -1
  63. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  64. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  65. package/dist/components/content/Layout/GridLayout.js +1 -1
  66. package/dist/components/content/Layout/Layout.js +1 -1
  67. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  68. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  69. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  70. package/dist/components/content/Layout/LayoutContent.js +1 -1
  71. package/dist/components/content/Layout/LayoutContext.js +1 -1
  72. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  73. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  74. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  75. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutPane.js +1 -1
  77. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  78. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  79. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  80. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  81. package/dist/components/content/Layout/index.js +1 -1
  82. package/dist/components/content/Layout/utils.js +1 -1
  83. package/dist/components/content/Paragraph.js +1 -1
  84. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  85. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  86. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  87. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  88. package/dist/components/content/Result/Result.js +1 -1
  89. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  90. package/dist/components/content/Tag/Tag.js +1 -1
  91. package/dist/components/content/Text.d.ts +14 -14
  92. package/dist/components/content/Text.js +1 -1
  93. package/dist/components/content/TextItem/TextItem.js +1 -1
  94. package/dist/components/content/Title.js +1 -1
  95. package/dist/components/content/Tree/Tree.js +1 -1
  96. package/dist/components/content/Tree/TreeNode.js +1 -1
  97. package/dist/components/content/Tree/styled.js +1 -1
  98. package/dist/components/content/Tree/tree-index.js +1 -1
  99. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  100. package/dist/components/content/Tree/use-load-data.js +1 -1
  101. package/dist/components/content/highlightText.js +1 -1
  102. package/dist/components/content/use-auto-tooltip.js +1 -1
  103. package/dist/components/data/DataTable/DataTable.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  106. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  108. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  109. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  110. package/dist/components/data/TableBase/RowCollection.js +1 -1
  111. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  112. package/dist/components/data/TableBase/TableRow.js +1 -1
  113. package/dist/components/data/TableBase/TableView.js +1 -1
  114. package/dist/components/data/TableBase/column-menu.js +1 -1
  115. package/dist/components/data/TableBase/column-tint.js +1 -1
  116. package/dist/components/data/TableBase/row-menu.js +1 -1
  117. package/dist/components/data/TableBase/styled.d.ts +2 -1
  118. package/dist/components/data/TableBase/styled.js +1 -1
  119. package/dist/components/data/TableBase/table-tree.js +1 -1
  120. package/dist/components/data/TableBase/types.js +1 -1
  121. package/dist/components/data/TableBase/use-cell-selection.d.ts +1 -0
  122. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  123. package/dist/components/data/TableBase/use-column-order.js +1 -1
  124. package/dist/components/data/TableBase/use-container-width.js +1 -1
  125. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  126. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  127. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  128. package/dist/components/data/TableBase/use-table-search.js +1 -1
  129. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  130. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  131. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  132. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  133. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  134. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  135. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  136. package/dist/components/fields/Checkbox/context.js +1 -1
  137. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  138. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  139. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  140. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  141. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  142. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  143. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  144. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  145. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  146. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  148. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  149. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  150. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  151. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  152. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  153. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  157. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  158. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  159. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  160. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  161. package/dist/components/fields/DatePicker/period.js +1 -1
  162. package/dist/components/fields/DatePicker/props.js +1 -1
  163. package/dist/components/fields/DatePicker/utils.js +1 -1
  164. package/dist/components/fields/FileInput/FileInput.js +1 -1
  165. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  166. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  167. package/dist/components/fields/Input/Input.js +1 -1
  168. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  169. package/dist/components/fields/ListBox/ListBox.js +1 -1
  170. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  171. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
  172. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  173. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  174. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  175. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  176. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  177. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  178. package/dist/components/fields/Picker/Picker.js +1 -1
  179. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  180. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  181. package/dist/components/fields/RadioGroup/context.js +1 -1
  182. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  183. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  184. package/dist/components/fields/Select/Select.js +1 -1
  185. package/dist/components/fields/Slider/Gradation.js +1 -1
  186. package/dist/components/fields/Slider/HueSlider.js +1 -1
  187. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  188. package/dist/components/fields/Slider/Slider.js +1 -1
  189. package/dist/components/fields/Slider/SliderBase.js +1 -1
  190. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  191. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  192. package/dist/components/fields/Slider/elements.js +1 -1
  193. package/dist/components/fields/Slider/index.js +1 -1
  194. package/dist/components/fields/Switch/Switch.js +1 -1
  195. package/dist/components/fields/TextArea/TextArea.js +1 -1
  196. package/dist/components/fields/TextInput/TextInput.js +1 -1
  197. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  198. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  199. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  200. package/dist/components/fields/color/ColorPanel.js +1 -1
  201. package/dist/components/fields/color/channels.js +1 -1
  202. package/dist/components/fields/color/color.js +1 -1
  203. package/dist/components/fields/color/context.js +1 -1
  204. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  205. package/dist/components/form/Form/Field.js +1 -1
  206. package/dist/components/form/Form/Form.js +1 -1
  207. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  208. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  209. package/dist/components/form/Form/SubmitError.js +1 -1
  210. package/dist/components/form/Form/index.js +1 -1
  211. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  212. package/dist/components/form/Form/use-field/use-field.js +1 -1
  213. package/dist/components/form/Form/use-form.js +1 -1
  214. package/dist/components/form/Form/validation.js +1 -1
  215. package/dist/components/form/Label.js +1 -1
  216. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  217. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  218. package/dist/components/form/validation/use-validation-props.js +1 -1
  219. package/dist/components/form/wrapper.js +1 -1
  220. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  221. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  222. package/dist/components/layout/Board/Board.js +1 -1
  223. package/dist/components/layout/Board/BoardProvider.js +1 -1
  224. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  225. package/dist/components/layout/Board/Widget.js +1 -1
  226. package/dist/components/layout/Board/WidgetHost.js +1 -1
  227. package/dist/components/layout/Board/board-context.js +1 -1
  228. package/dist/components/layout/Board/board-store.js +1 -1
  229. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  230. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  231. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  232. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  233. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  234. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  235. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  236. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  237. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  238. package/dist/components/layout/Board/index.js +1 -1
  239. package/dist/components/layout/Board/responsive-utils.js +1 -1
  240. package/dist/components/layout/Board/use-board-layout.js +1 -1
  241. package/dist/components/layout/Board/use-board-registry.js +1 -1
  242. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  243. package/dist/components/layout/Board/use-board-selection.js +1 -1
  244. package/dist/components/layout/Flex.js +1 -1
  245. package/dist/components/layout/Flow.js +1 -1
  246. package/dist/components/layout/Grid.js +1 -1
  247. package/dist/components/layout/Panel.js +1 -1
  248. package/dist/components/layout/Prefix.js +1 -1
  249. package/dist/components/layout/ResizablePanel.js +1 -1
  250. package/dist/components/layout/Space.js +1 -1
  251. package/dist/components/layout/Suffix.js +1 -1
  252. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  253. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  254. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  255. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  256. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  257. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  258. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  259. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  260. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  261. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  262. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  263. package/dist/components/navigation/Tabs/styled.js +1 -1
  264. package/dist/components/navigation/Tabs/types.js +1 -1
  265. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  266. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  267. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  268. package/dist/components/other/Calendar/Calendar.js +1 -1
  269. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  270. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  271. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  272. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  273. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  274. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  275. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  276. package/dist/components/other/Calendar/styled.js +1 -1
  277. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  278. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  279. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  280. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  281. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  282. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  283. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  284. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  285. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  286. package/dist/components/overlays/Dialog/context.js +1 -1
  287. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  288. package/dist/components/overlays/Modal/Modal.d.ts +2 -1
  289. package/dist/components/overlays/Modal/Modal.js +1 -1
  290. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  291. package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
  292. package/dist/components/overlays/Modal/Overlay.js +1 -1
  293. package/dist/components/overlays/Modal/Popover.js +1 -1
  294. package/dist/components/overlays/Modal/Tray.js +1 -1
  295. package/dist/components/overlays/Modal/Underlay.js +1 -1
  296. package/dist/components/overlays/Modal/types.d.ts +1 -0
  297. package/dist/components/overlays/Notifications/Notification.js +1 -1
  298. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  299. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  300. package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
  301. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  302. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  303. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  304. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  305. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  306. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  307. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  308. package/dist/components/overlays/Notifications/index.js +1 -1
  309. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  310. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  311. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  312. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  313. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  314. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  315. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  316. package/dist/components/overlays/Toast/index.js +1 -1
  317. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  318. package/dist/components/overlays/Toast/useToast.js +1 -1
  319. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  320. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  321. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  322. package/dist/components/overlays/Tooltip/context.js +1 -1
  323. package/dist/components/portal/Portal.js +1 -1
  324. package/dist/components/portal/PortalProvider.d.ts +2 -0
  325. package/dist/components/portal/PortalProvider.js +1 -1
  326. package/dist/components/portal/index.d.ts +1 -0
  327. package/dist/components/portal/usePortal.js +1 -1
  328. package/dist/components/shared/DraggableCollection.js +1 -1
  329. package/dist/components/shared/InvalidIcon.js +1 -1
  330. package/dist/components/shared/ValidIcon.js +1 -1
  331. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  332. package/dist/components/status/Spin/Cube.js +1 -1
  333. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  334. package/dist/components/status/Spin/Spin.js +1 -1
  335. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  336. package/dist/data/item-themes.js +1 -1
  337. package/dist/data/themes.js +1 -1
  338. package/dist/eslint-plugin/defaults.generated.js +13 -1
  339. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  340. package/dist/eslint-plugin/index.js +1 -1
  341. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  342. package/dist/i18n/I18nProvider.js +1 -1
  343. package/dist/i18n/createFormatter.js +1 -1
  344. package/dist/i18n/index.js +1 -1
  345. package/dist/i18n/instance.js +1 -1
  346. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  347. package/dist/i18n/locales/en-US/uikit.js +1 -1
  348. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  349. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  350. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  351. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  352. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  353. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  354. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  355. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  356. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  357. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  358. package/dist/i18n/locales.js +1 -1
  359. package/dist/i18n/useFormatter.js +1 -1
  360. package/dist/i18n/useI18n.js +1 -1
  361. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  362. package/dist/icons/AdjustmentsIcon.js +1 -1
  363. package/dist/icons/AiIcon.js +1 -1
  364. package/dist/icons/AreaChartIcon.js +1 -1
  365. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  366. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  367. package/dist/icons/BackwardIcon.js +1 -1
  368. package/dist/icons/BarChartIcon.js +1 -1
  369. package/dist/icons/BellFilledIcon.js +1 -1
  370. package/dist/icons/BellIcon.js +1 -1
  371. package/dist/icons/BooleanIcon.js +1 -1
  372. package/dist/icons/CalendarEditIcon.js +1 -1
  373. package/dist/icons/CalendarIcon.js +1 -1
  374. package/dist/icons/CaretDownIcon.js +1 -1
  375. package/dist/icons/CaretUpIcon.js +1 -1
  376. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  377. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  378. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  379. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  380. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  381. package/dist/icons/ChartBarLineIcon.js +1 -1
  382. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  383. package/dist/icons/ChartBarStackedIcon.js +1 -1
  384. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  385. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  386. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  387. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  388. package/dist/icons/ChartBubbleIcon.js +1 -1
  389. package/dist/icons/ChartDonut2Icon.js +1 -1
  390. package/dist/icons/ChartFunnelIcon.js +1 -1
  391. package/dist/icons/ChartHeatmapIcon.js +1 -1
  392. package/dist/icons/ChartKPIIcon.js +1 -1
  393. package/dist/icons/ChartPie2Icon.js +1 -1
  394. package/dist/icons/ChartScatterIcon.js +1 -1
  395. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  396. package/dist/icons/CheckCircleIcon.js +1 -1
  397. package/dist/icons/CheckIcon.js +1 -1
  398. package/dist/icons/CircleFilledIcon.js +1 -1
  399. package/dist/icons/ClearIcon.js +1 -1
  400. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  401. package/dist/icons/CloseCircleIcon.js +1 -1
  402. package/dist/icons/CloseIcon.js +1 -1
  403. package/dist/icons/CodeIcon.js +1 -1
  404. package/dist/icons/ColumnTotalIcon.js +1 -1
  405. package/dist/icons/CopyIcon.js +1 -1
  406. package/dist/icons/CountIcon.js +1 -1
  407. package/dist/icons/CubeIcon.js +1 -1
  408. package/dist/icons/CubePauseIcon.js +1 -1
  409. package/dist/icons/CubePlayIcon.js +1 -1
  410. package/dist/icons/CurrencyDollarIcon.js +1 -1
  411. package/dist/icons/DangerIcon.js +1 -1
  412. package/dist/icons/DashboardIcon.js +1 -1
  413. package/dist/icons/DatabaseIcon.js +1 -1
  414. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  415. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  416. package/dist/icons/DirectionIcon.js +1 -1
  417. package/dist/icons/DonutIcon.js +1 -1
  418. package/dist/icons/DownIcon.js +1 -1
  419. package/dist/icons/EditIcon.js +1 -1
  420. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  421. package/dist/icons/ExclamationCircleIcon.js +1 -1
  422. package/dist/icons/ExclamationIcon.js +1 -1
  423. package/dist/icons/EyeIcon.js +1 -1
  424. package/dist/icons/EyeInvisibleIcon.js +1 -1
  425. package/dist/icons/FilterIcon.js +1 -1
  426. package/dist/icons/FolderFilledIcon.js +1 -1
  427. package/dist/icons/FolderIcon.js +1 -1
  428. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  429. package/dist/icons/FolderOpenIcon.js +1 -1
  430. package/dist/icons/ForwardIcon.js +1 -1
  431. package/dist/icons/GripVerticalIcon.js +1 -1
  432. package/dist/icons/HierarchyIcon.js +1 -1
  433. package/dist/icons/HierarchyOpenIcon.js +1 -1
  434. package/dist/icons/Icon.js +1 -1
  435. package/dist/icons/InfoCircleIcon.js +1 -1
  436. package/dist/icons/InfoIcon.js +1 -1
  437. package/dist/icons/KeyIcon.js +1 -1
  438. package/dist/icons/LeftIcon.js +1 -1
  439. package/dist/icons/LineChartIcon.js +1 -1
  440. package/dist/icons/LoadingIcon.js +1 -1
  441. package/dist/icons/LockFilledIcon.js +1 -1
  442. package/dist/icons/LockIcon.js +1 -1
  443. package/dist/icons/MoreIcon.js +1 -1
  444. package/dist/icons/NotAllowedIcon.js +1 -1
  445. package/dist/icons/Number123Icon.js +1 -1
  446. package/dist/icons/NumberIcon.js +1 -1
  447. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  448. package/dist/icons/PauseCircleIcon.js +1 -1
  449. package/dist/icons/PauseIcon.js +1 -1
  450. package/dist/icons/PercentageIcon.js +1 -1
  451. package/dist/icons/PieChartIcon.js +1 -1
  452. package/dist/icons/PipetteIcon.js +1 -1
  453. package/dist/icons/PlayCircleIcon.js +1 -1
  454. package/dist/icons/PlayIcon.js +1 -1
  455. package/dist/icons/PlusIcon.js +1 -1
  456. package/dist/icons/ProgressBarIcon.js +1 -1
  457. package/dist/icons/ReloadIcon.js +1 -1
  458. package/dist/icons/ReportIcon.js +1 -1
  459. package/dist/icons/ReturnIcon.js +1 -1
  460. package/dist/icons/RightIcon.js +1 -1
  461. package/dist/icons/RowTotalsIcon.js +1 -1
  462. package/dist/icons/SchemeIcon.js +1 -1
  463. package/dist/icons/SearchIcon.js +1 -1
  464. package/dist/icons/SemanticQueryIcon.js +1 -1
  465. package/dist/icons/SettingsIcon.js +1 -1
  466. package/dist/icons/ShieldFilledIcon.js +1 -1
  467. package/dist/icons/ShieldIcon.js +1 -1
  468. package/dist/icons/SlashIcon.js +1 -1
  469. package/dist/icons/SparklesIcon.js +1 -1
  470. package/dist/icons/SqlIcon.js +1 -1
  471. package/dist/icons/StatsIcon.js +1 -1
  472. package/dist/icons/StopIcon.js +1 -1
  473. package/dist/icons/StringIcon.js +1 -1
  474. package/dist/icons/SubtotalsIcon.js +1 -1
  475. package/dist/icons/SwitchIcon.js +1 -1
  476. package/dist/icons/TableIcon.js +1 -1
  477. package/dist/icons/ThumbsDownIcon.js +1 -1
  478. package/dist/icons/ThumbsUpIcon.js +1 -1
  479. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  480. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  481. package/dist/icons/ThunderboltIcon.js +1 -1
  482. package/dist/icons/TimeIcon.js +1 -1
  483. package/dist/icons/TrashIcon.js +1 -1
  484. package/dist/icons/UnlockIcon.js +1 -1
  485. package/dist/icons/UpIcon.js +1 -1
  486. package/dist/icons/UserGroupIcon.js +1 -1
  487. package/dist/icons/UserIcon.js +1 -1
  488. package/dist/icons/UserLockIcon.js +1 -1
  489. package/dist/icons/ViewIcon.js +1 -1
  490. package/dist/icons/WarningFilledIcon.js +1 -1
  491. package/dist/icons/WarningIcon.js +1 -1
  492. package/dist/icons/wrap-icon.js +1 -1
  493. package/dist/index.js +1 -1
  494. package/dist/probe/canonicalize.js +1 -1
  495. package/dist/probe/css.js +1 -1
  496. package/dist/probe/index.js +1 -1
  497. package/dist/provider.js +1 -1
  498. package/dist/providers/TrackingProvider.js +1 -1
  499. package/dist/providers/navigationAdapter.default.js +1 -1
  500. package/dist/tokens/base.js +1 -1
  501. package/dist/tokens/color-seed.js +1 -1
  502. package/dist/tokens/color-theme.js +1 -1
  503. package/dist/tokens/colors.js +1 -1
  504. package/dist/tokens/index.js +3 -3
  505. package/dist/tokens/index.js.map +1 -1
  506. package/dist/tokens/layout.js +1 -1
  507. package/dist/tokens/lazy-styles.js +1 -1
  508. package/dist/tokens/palette-config.js +1 -1
  509. package/dist/tokens/palette.js +1 -1
  510. package/dist/tokens/shadows.js +1 -1
  511. package/dist/tokens/sizes.js +1 -1
  512. package/dist/tokens/spacing.js +1 -1
  513. package/dist/tokens/typography.js +1 -1
  514. package/dist/utils/ResizeSensor.js +1 -1
  515. package/dist/utils/is-dev-env.js +1 -1
  516. package/dist/utils/modules.js +1 -1
  517. package/dist/utils/promise.js +1 -1
  518. package/dist/utils/raf.js +1 -1
  519. package/dist/utils/random.js +1 -1
  520. package/dist/utils/range.js +1 -1
  521. package/dist/utils/react/RenderCache.js +1 -1
  522. package/dist/utils/react/Slots.js +1 -1
  523. package/dist/utils/react/chain.js +1 -1
  524. package/dist/utils/react/disabledProps.js +1 -1
  525. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  526. package/dist/utils/react/index.js +1 -1
  527. package/dist/utils/react/interactions.js +1 -1
  528. package/dist/utils/react/isTextOnly.js +1 -1
  529. package/dist/utils/react/mapProps.js +1 -1
  530. package/dist/utils/react/mergeProps.js +1 -1
  531. package/dist/utils/react/nullableValue.js +1 -1
  532. package/dist/utils/react/resolveIcon.js +1 -1
  533. package/dist/utils/react/sharedStore.js +1 -1
  534. package/dist/utils/react/useBufferedValue.js +1 -1
  535. package/dist/utils/react/useCombinedRefs.js +1 -1
  536. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  537. package/dist/utils/react/useEventBus.js +1 -1
  538. package/dist/utils/react/useId.js +1 -1
  539. package/dist/utils/react/useIsDarwin.js +1 -1
  540. package/dist/utils/react/useKeySymbols.js +1 -1
  541. package/dist/utils/react/useLayoutEffect.js +1 -1
  542. package/dist/utils/react/useLocalStorage.js +1 -1
  543. package/dist/utils/react/useMergeStyles.js +1 -1
  544. package/dist/utils/react/usePopoverSync.js +1 -1
  545. package/dist/utils/react/useQaProps.js +1 -1
  546. package/dist/utils/react/useViewportSize.js +1 -1
  547. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  548. package/dist/utils/selection.js +1 -1
  549. package/dist/utils/styles.js +1 -1
  550. package/dist/utils/tree.js +1 -1
  551. package/dist/utils/warnings.js +1 -1
  552. package/dist/version.js +3 -3
  553. package/docs/Colors.md +16 -40
  554. package/docs/ComplexLayout.md +8 -0
  555. package/docs/CreateComponent.md +15 -8
  556. package/docs/Introduction.md +15 -36
  557. package/docs/RenderCache.md +8 -6
  558. package/docs/Theming.md +164 -497
  559. package/docs/Usage.md +108 -138
  560. package/docs/Utilities.md +2 -2
  561. package/docs/components/CollectionItem.md +1 -0
  562. package/docs/components/actions/Banner.md +1 -0
  563. package/docs/components/actions/Button.md +8 -36
  564. package/docs/components/actions/ButtonSplit.md +2 -0
  565. package/docs/components/actions/CommandMenu.md +8 -8
  566. package/docs/components/actions/ItemButton.md +6 -20
  567. package/docs/components/actions/Link.md +10 -5
  568. package/docs/components/actions/Menu.md +24 -11
  569. package/docs/components/actions/MenuTrigger.md +3 -12
  570. package/docs/components/actions/use-anchored-menu.md +2 -2
  571. package/docs/components/actions/use-context-menu.md +5 -2
  572. package/docs/components/content/Badge.md +3 -0
  573. package/docs/components/content/HotKeys.md +21 -14
  574. package/docs/components/content/InlineInput.md +14 -14
  575. package/docs/components/content/Item.md +25 -17
  576. package/docs/components/content/ItemCard.md +1 -0
  577. package/docs/components/content/Layout.md +12 -1
  578. package/docs/components/content/PrismCode.md +13 -18
  579. package/docs/components/content/Tag.md +1 -1
  580. package/docs/components/content/TextItem.md +5 -3
  581. package/docs/components/content/Tree.md +69 -154
  582. package/docs/components/data/DataTable.md +56 -168
  583. package/docs/components/data/ItemTable.md +182 -485
  584. package/docs/components/fields/Checkbox.md +2 -0
  585. package/docs/components/fields/ColorInput.md +38 -79
  586. package/docs/components/fields/ColorPicker.md +17 -39
  587. package/docs/components/fields/ColorSwatch.md +11 -30
  588. package/docs/components/fields/ColorSwatchGroup.md +18 -42
  589. package/docs/components/fields/ComboBox.md +13 -1
  590. package/docs/components/fields/CommandTextArea.md +10 -37
  591. package/docs/components/fields/DatePicker.md +3 -0
  592. package/docs/components/fields/FileInput.md +3 -0
  593. package/docs/components/fields/FilterListBox.md +34 -14
  594. package/docs/components/fields/FilterPicker.md +33 -16
  595. package/docs/components/fields/HueSlider.md +5 -5
  596. package/docs/components/fields/ListBox.md +35 -9
  597. package/docs/components/fields/NumberInput.md +3 -0
  598. package/docs/components/fields/PasswordInput.md +3 -0
  599. package/docs/components/fields/PeriodPicker.md +7 -17
  600. package/docs/components/fields/Picker.md +54 -29
  601. package/docs/components/fields/RadioGroup.md +13 -5
  602. package/docs/components/fields/SearchComboBox.md +3 -0
  603. package/docs/components/fields/SearchInput.md +4 -2
  604. package/docs/components/fields/Select.md +23 -13
  605. package/docs/components/fields/Switch.md +3 -0
  606. package/docs/components/fields/TextInput.md +3 -0
  607. package/docs/components/fields/TextInputMapper.md +1 -2
  608. package/docs/components/form/Field.md +5 -2
  609. package/docs/components/form/Form.md +5 -0
  610. package/docs/components/form/FormInstance.md +1 -1
  611. package/docs/components/helpers/DisplayTransition.md +10 -6
  612. package/docs/components/helpers/IconSwitch.md +1 -0
  613. package/docs/components/layout/Board.md +55 -211
  614. package/docs/components/navigation/Pagination.md +36 -75
  615. package/docs/components/navigation/Tabs.md +3 -15
  616. package/docs/components/other/Calendar.md +22 -39
  617. package/docs/components/other/CubeLogo.md +1 -1
  618. package/docs/components/overlays/Dialog.md +3 -0
  619. package/docs/components/overlays/DialogContainer.md +2 -0
  620. package/docs/components/overlays/DialogForm.md +6 -2
  621. package/docs/components/overlays/DialogTrigger.md +4 -2
  622. package/docs/components/overlays/Notifications.md +7 -0
  623. package/docs/components/overlays/Toast.md +12 -8
  624. package/docs/components/overlays/Tooltip.md +7 -3
  625. package/docs/components/overlays/UseDialogContainer.md +16 -10
  626. package/docs/components/status/LoadingAnimation.md +3 -9
  627. package/docs/tasty/configuration.md +195 -15
  628. package/docs/tasty/dsl.md +40 -5
  629. package/docs/tasty/injector.md +11 -0
  630. package/docs/tasty/methodology.md +1 -1
  631. package/docs/tasty/pipeline.md +1 -4
  632. package/docs/tasty/react-api.md +1 -1
  633. package/docs/tasty/styles.md +8 -1
  634. package/package.json +4 -4
@@ -71,32 +71,212 @@ These docs use `data-schema="dark"` in examples. If your app already standardize
71
71
  | `globalStyles` | `Record<string, Styles>` | - | Global Tasty styles keyed by CSS selector |
72
72
  | `plugins` | `TastyPlugin[]` | - | Plugins that bundle any of the above (processed in order; later override earlier, and direct config wins over all). See [Plugins](plugins.md) |
73
73
  | `gc` | `GCConfig` | - | Garbage-collection tuning for unused styles (`{ touchInterval, capacity }`) |
74
- | `colorSpace` | `'rgb' \| 'hsl' \| 'oklch'` | `'oklch'` | Color space for decomposed color token companion variables |
74
+ | `batchInjection` | `boolean \| 'always'` | `false` | Defer stylesheet writes and apply them in one batch. See [Batched injection](#batched-injection) |
75
+ | `colorSpace` | `'rgb' \| 'hsl' \| 'oklch'` | - | **Deprecated** — no longer has any effect. See [Color space](#color-space) |
75
76
  | `namePrefix` | `string` | `'t'` (runtime) / `'ts'` (zero-runtime) | Prefix prepended to every generated identifier (class, keyframe, counter-style names). Must match `^[a-zA-Z_][a-zA-Z0-9_-]{0,31}$`. See [Name prefix](#name-prefix). |
76
77
 
77
78
  ---
78
79
 
80
+ ## Batched Injection
81
+
82
+ Every `insertRule()` on a live stylesheet invalidates style for that sheet's
83
+ scope. Components inject during React's render phase, and if anything else reads
84
+ layout in the same pass, the two interleave:
85
+
86
+ ```
87
+ inject -> read (forced style recalc) -> inject -> read (forced recalc) -> ...
88
+ ```
89
+
90
+ A UI kit that measures during render — popovers, autosizing inputs, virtualized
91
+ lists — can turn one mount into a dozen full-tree recalculations. `batchInjection`
92
+ queues the writes instead and applies them together, so the tree is invalidated
93
+ once per flush.
94
+
95
+ ```tsx
96
+ import { configure, TastyBatchProvider } from '@tenphi/tasty';
97
+
98
+ configure({ batchInjection: true });
99
+
100
+ createRoot(el).render(
101
+ <TastyBatchProvider>
102
+ <App />
103
+ </TastyBatchProvider>,
104
+ );
105
+ ```
106
+
107
+ ### Why the provider is required
108
+
109
+ Deferring a write past React's layout phase would let a `useLayoutEffect`
110
+ measure an element whose rules are not in the sheet yet and read its *unstyled*
111
+ box — a wrong number, not a stale one, so it never self-corrects.
112
+
113
+ `TastyBatchProvider` closes that hole. It opens a *batch window* during its
114
+ render and closes it — flushing — in `useInsertionEffect`, which React runs in
115
+ the mutation phase, before any layout effect:
116
+
117
+ ```
118
+ provider renders -> window OPEN
119
+ children render -> injections queued
120
+ provider insertionEffect -> FLUSH, window CLOSED
121
+ layout effects run -> rules are in the sheet
122
+ ```
123
+
124
+ With `batchInjection: true` a write is only ever queued inside such a window, so
125
+ turning the flag on can make injection cheaper but can never make a measurement
126
+ wrong. Injections outside a window are written straight through, exactly as with
127
+ batching off:
128
+
129
+ - a deep update that did not re-render the provider
130
+ - an injection from a layout effect, an event handler or an async callback
131
+ - SSR and RSC, where there is no live sheet at all
132
+
133
+ Mount the provider as high in the tree as you can: batching applies to the
134
+ commits it takes part in.
135
+
136
+ ### Modes
137
+
138
+ | Value | Behaviour |
139
+ |-------|-----------|
140
+ | `false` (default) | One `insertRule()` per component, synchronously. |
141
+ | `true` | Batch inside a provider window only. Cannot affect measurement. Without the provider nothing is batched, and dev mode says so once. |
142
+ | `'always'` | Batch every injection, flushing on a microtask when no window is open. Covers more commits; a `useLayoutEffect` measuring a freshly mounted element can read its unstyled box. Paint is unaffected — microtasks always drain before the browser paints. |
143
+
144
+ ### Ordering
145
+
146
+ All writes share one FIFO queue — component rules, global rules, raw CSS,
147
+ `@property`, `@keyframes`, `@font-face`, `@counter-style` and `@function`.
148
+ Draining it in insertion order keeps the sheet byte-identical to unbatched
149
+ output, which matters because equal-specificity rules resolve by document order.
150
+
151
+ ### SSR, RSC and zero-runtime
152
+
153
+ **Server render — nothing to batch, safe to leave enabled.** SSR and RSC collect
154
+ CSS as text through `ServerStyleCollector`; the runtime injector never runs
155
+ there, so `batchInjection` changes nothing either way. `<TastyBatchProvider>`
156
+ renders its children and does nothing else: the window it opens is a no-op
157
+ without a `document`, and the `useInsertionEffect` that would close it never
158
+ fires on the server. Configure the flag once in shared code — no environment
159
+ branching needed.
160
+
161
+ **Hydration — the better your SSR coverage, the less there is to batch.**
162
+ `hydrateTastyClasses()` (wired up for you by `@tenphi/tasty/ssr/next` and the
163
+ Astro integration) pre-populates the injector from `window.__TASTY__`, so
164
+ hydrating a server-rendered class is a cache hit that produces no sheet write at
165
+ all. Batching pays off on what SSR could not cover: client-only routes, styles
166
+ that first appear after hydration (a `styles` prop that changes on interaction, a
167
+ modal or popover mounting), and dynamic tokens.
168
+
169
+ **Astro islands — one provider per island, or `'always'`.** Every island is its
170
+ own React root, so a provider inside one island does not open a window for
171
+ another. With `batchInjection: true`, wrap each island root that renders enough
172
+ tasty components to be worth it. `'always'` needs no provider and covers every
173
+ island, at the cost of the measurement hazard above. Either way, an island that
174
+ only re-hydrates server-rendered classes has nothing to batch.
175
+
176
+ **Zero-runtime (`tastyStatic`) — unaffected.** Build-time extraction never
177
+ touches the injector: the babel plugin emits either a CSS file import or an
178
+ `injectCSS()` call from `@tenphi/tasty/static/inject`, which appends text to a
179
+ single `<style data-tasty-static>` element. `batchInjection` only defers CSSOM
180
+ writes made by the runtime injector, so extracted styles are unchanged. In an app
181
+ that mixes both, it still applies to the runtime half.
182
+
183
+ ### `flushStyles()`
184
+
185
+ Applies every pending write immediately. Every injector read API calls it for
186
+ you — `getCSSText`, `getCSSTextForClasses`, `getCSSTextForNode`,
187
+ `getRawCSSText`, `isPropertyDefined`, `getMetrics`, `cleanup`, `gc` and
188
+ `destroy` — so a read never observes a partial sheet.
189
+ Call it directly before measuring in code that runs outside a batch window under
190
+ `'always'`:
191
+
192
+ ```tsx
193
+ import { flushStyles } from '@tenphi/tasty';
194
+
195
+ useLayoutEffect(() => {
196
+ flushStyles();
197
+ const { width } = ref.current.getBoundingClientRect();
198
+ }, []);
199
+ ```
200
+
201
+ `hasPendingStyleWrites()` reports whether anything is queued, and
202
+ `resetStyleBatch()` drops the queue without applying it (tests only).
203
+
204
+ ---
205
+
79
206
  ## Color Space
80
207
 
81
- Controls the CSS color space used for decomposed color token companion variables. When you define `#name` color tokens, tasty generates both `--name-color` (the color) and `--name-color-{suffix}` (its channels, decomposed).
208
+ > **Deprecated.** `configure({ colorSpace })` no longer has any effect and will
209
+ > be removed in the next major. Setting it warns in development.
210
+
211
+ A `#name` token's value used to be rewritten into a configured color space, so
212
+ `#brand: '#ff8800'` declared `--brand-color: oklch(0.75 0.16 55)`. That existed
213
+ to serve the opacity suffix, which needed numeric channels to write an alpha
214
+ into. Opacity now uses CSS relative color syntax —
215
+ `oklch(from var(--brand-color) l c h / .5)` — which has the browser read the
216
+ channels, so there is nothing left for the setting to decide.
217
+
218
+ A color is emitted exactly as authored:
82
219
 
83
220
  ```jsx
84
- configure({
85
- colorSpace: 'oklch', // default
86
- });
221
+ configure({ tokens: { '#brand': '#ff8800' } });
222
+ // → --brand-color: #ff8800
87
223
  ```
88
224
 
89
- | Color Space | Suffix | Components Format | Channel Reference |
90
- |---|---|---|---|
91
- | `rgb` | `-rgb` | `255 128 0` | `rgb(var(--name-color-rgb))` |
92
- | `hsl` | `-hsl` | `300 100% 25%` | `hsl(var(--name-color-hsl))` |
93
- | `oklch` | `-oklch` | `0.42 0.16 328` | `oklch(var(--name-color-oklch))` |
225
+ That holds for every form: a hex literal, a native color function, a bare CSS
226
+ color name, a `color-mix()`, a `light-dark()`, a fallback chain. A `#token`
227
+ reference still resolves to its `var()` chain, and a plugin color function such
228
+ as `okhsl()` is still resolved by the parser to the color it denotes.
229
+
230
+ To address a token's channels, use relative color syntax against the token:
231
+
232
+ ```css
233
+ background: oklch(from var(--brand-color) calc(l * 1.2) c h);
234
+ ```
94
235
 
95
- The `oklch` color space is the default because it provides perceptually uniform color manipulation — reaching for a channel to shift lightness or hue produces more natural-looking results.
236
+ This works on any `<color>`, including the ones no build-time conversion could
237
+ have evaluated — and it is what the [opacity suffix](dsl.md#color-tokens--opacity)
238
+ itself uses. Its space is always `oklch`, which is unbounded, so a wide-gamut
239
+ color survives a round trip a narrower space would clamp.
96
240
 
97
- The companion is there so you can *address the channels*: shift a lightness, animate a hue, build a derived color. It is not how the [opacity suffix](dsl.md#color-tokens--opacity) works — that sets the alpha on `--name-color` itself with relative color syntax, so it needs nothing from the companion and works on any color.
241
+ ### Migrating off `colorSpace`
242
+
243
+ Drop the option. If you relied on the uniform output format, nothing in Tasty
244
+ needs it — author your tokens in the space you want them emitted in, since the
245
+ value now passes through untouched:
246
+
247
+ ```jsx
248
+ // before: any input, normalized to the configured space on the way out
249
+ configure({ colorSpace: 'oklch', tokens: { '#brand': '#ff8800' } });
250
+
251
+ // after: author it in the space you want
252
+ configure({ tokens: { '#brand': 'oklch(0.75 0.16 55)' } });
253
+ ```
254
+
255
+ ### Migrating off the channel companions
256
+
257
+ A `#name` token used to declare a second variable beside `--name-color` holding
258
+ its channels decomposed, suffixed with the configured space —
259
+ `--brand-color-oklch: 0.75 0.16 55` — and a `color` style emitted
260
+ `--current-color-{space}` beside `--current-color`. Both are gone, for the same
261
+ reason: they existed so an opacity suffix had channels to write an alpha into.
262
+
263
+ These were never part of the public API, but they were visible in the emitted
264
+ CSS, so hand-authored CSS may reference one. Address the token itself instead:
265
+
266
+ ```css
267
+ /* before */
268
+ color: oklch(var(--brand-color-oklch) / 0.5);
269
+ background: oklch(var(--brand-color-oklch));
270
+
271
+ /* after */
272
+ color: oklch(from var(--brand-color) l c h / 0.5);
273
+ background: var(--brand-color);
274
+ ```
98
275
 
99
- A color the engine cannot evaluate at build time — a `color-mix()`, a `light-dark()`, a `color()` in a space it has no conversion for — has no channels to decompose, so its companion is expressed *by reference* using CSS relative color syntax (`--name-color-oklch: from color-mix(…) l c h`). Reading a channel off it still works; the browser resolves them.
276
+ The replacement is strictly more capable — the companion could only be
277
+ decomposed for a color the engine could evaluate at build time, while relative
278
+ color syntax works on every `<color>`, including a `color-mix()`, a
279
+ `light-dark()`, and a variable Tasty never defined.
100
280
 
101
281
  ---
102
282
 
@@ -167,7 +347,7 @@ configure({
167
347
  ```
168
348
 
169
349
  - `$name` keys become `--name` CSS custom properties
170
- - `#name` keys become `--name-color` and `--name-color-{colorSpace}` properties (suffix depends on `colorSpace`, default `oklch`)
350
+ - `#name` keys become `--name-color` custom properties
171
351
  - Names keep their case, since CSS custom properties are case-sensitive: `$myVar` is `--myVar` and is referenced as `$myVar`. A leading capital is not supported and folds — `$Foo` and `#Purple` become `--foo` and `--purple-color` — so start names lowercase. Kebab-case (`$my-var`) remains the convention.
172
352
 
173
353
  Tokens are automatically emitted in all rendering modes: runtime (client), SSR, and zero-runtime (Babel plugin).
@@ -289,7 +469,7 @@ See [Functions (`@function`)](dsl.md#functions-function) for inline usage inside
289
469
 
290
470
  ### Custom color functions
291
471
 
292
- A parse function whose output is an already-supported color (`rgb`, `hsl`, `#…`, `oklch`, …) is treated as a **color function**: it works everywhere a color is accepted — style values, `#token.alpha` opacity injection, token decomposition into the configured color space, and `parseColor` — with no extra registration. This is the same mechanism the built-in `okhsl`/`okhst` plugins use; they are ordinary plugins registered by default.
472
+ A parse function whose output is an already-supported color (`rgb`, `hsl`, `#…`, `oklch`, …) is treated as a **color function**: it works everywhere a color is accepted — style values, `#token.alpha` opacity injection, and `parseColor` — with no extra registration. This is the same mechanism the built-in `okhsl`/`okhst` plugins use; they are ordinary plugins registered by default.
293
473
 
294
474
  ```ts
295
475
  import { configure, createColorFunc } from '@tenphi/tasty';
package/docs/tasty/dsl.md CHANGED
@@ -151,9 +151,9 @@ these:
151
151
 
152
152
  - a token holding a `color-mix()`, a `light-dark()`, or a `color()` in a space
153
153
  Tasty cannot convert — none of which have channels to decompose
154
- - `#current`, which resolves to `currentcolor`
154
+ - `#current`, which resolves to the color the element inherits
155
155
  - a `--name-color` variable declared in your own CSS, with no Tasty token
156
- definition and no companion variable behind it
156
+ definition behind it
157
157
 
158
158
  Two properties follow from writing the alpha slot rather than compositing:
159
159
 
@@ -163,6 +163,41 @@ Two properties follow from writing the alpha slot rather than compositing:
163
163
  `/ var(--fade)` unchanged, so it works whether `$fade` holds `.5` or `50%` —
164
164
  which is what `--*-opacity` properties are registered to accept.
165
165
 
166
+ ### `#current` is the keyword
167
+
168
+ `#current` emits the `currentcolor` keyword, so it resolves against the element
169
+ that reads it. That is what lets it follow a color an ancestor faded — a ramp
170
+ that expresses its disabled state once, in `color`, fades everything painted from
171
+ `#current` below it with no further declarations.
172
+
173
+ The `color` style also publishes `--current-color` beside every color it sets,
174
+ for anything that needs the inherited color *as a color* rather than as the
175
+ keyword — hand-authored CSS, or a place the keyword will not do. Read it as
176
+ `$current-color`. It is registered with `initial-value: currentcolor`, so where
177
+ nothing published it, it still resolves against each element's own color:
178
+
179
+ ```jsx
180
+ fill: '$current-color'; // → var(--current-color)
181
+ ```
182
+
183
+ A color that already reads the color it inherits — `#current`, a `#current` fade
184
+ — is not published into it: resolving such a value a second time at a descendant
185
+ would fade it twice.
186
+
187
+ One case needs the wider floor to be considered. A token *defined* as `#current`
188
+ and then faded gives relative color syntax a `currentcolor` origin, which Safari
189
+ supports only from 18:
190
+
191
+ ```jsx
192
+ { '#ink': '#current', fill: '#ink.5' }
193
+ // --ink-color: currentcolor
194
+ // fill: oklch(from currentcolor l c h / .5) → Chrome, Firefox, Safari 18+
195
+ ```
196
+
197
+ Put the fade in the token instead — `{ '#ink': '#current.5' }` — and it goes
198
+ through `color-mix()`, which works from Safari 16.2 and composes like every other
199
+ `#current` fade.
200
+
166
201
  ### `#current` composes instead
167
202
 
168
203
  `#current` is the one exception, and the difference is deliberate. A token *names*
@@ -182,9 +217,9 @@ step. Because a `color-mix()` percentage cannot be a `<number>`, an opacity
182
217
  custom property used as `#current.$fade` must hold a unitless number; a token
183
218
  accepts either form.
184
219
 
185
- The space is always `oklch`, whatever [`colorSpace`](configuration.md#color-space)
186
- is set to: it is unbounded, so a wide-gamut color survives a round trip that a
187
- gamut-limited space would clamp.
220
+ The space is always `oklch`: it is unbounded, so a wide-gamut color survives a
221
+ round trip that a gamut-limited space would clamp. Nothing configures this —
222
+ see [Color space](configuration.md#color-space).
188
223
 
189
224
  ---
190
225
 
@@ -300,6 +300,17 @@ const styleRule: StyleResult = {
300
300
  };
301
301
  ```
302
302
 
303
+ ### Batched Injection
304
+
305
+ `configure({ batchInjection: true })` queues every sheet write — component
306
+ rules, global rules, raw CSS and at-rules — into one FIFO and applies them
307
+ together, so the document is style-invalidated once per flush instead of once per
308
+ component. `<TastyBatchProvider>` flushes in `useInsertionEffect`, before any
309
+ layout effect, so a queued write can never be observed by a measurement. See
310
+ [Batched injection](configuration.md#batched-injection) for the modes and the
311
+ ordering guarantee. `flushStyles()` applies pending writes on demand; every read
312
+ API here calls it for you.
313
+
303
314
  ### Deduplication & Performance
304
315
 
305
316
  ```typescript
@@ -275,7 +275,7 @@ const ProgressBar = tasty({
275
275
 
276
276
  // Conversion:
277
277
  // 'progress' → $progress → --progress
278
- // 'accentColor' → #accent → --accent-color + --accent-color-oklch
278
+ // 'accentColor' → #accent → --accent-color
279
279
  ```
280
280
 
281
281
  #### Object form
@@ -683,7 +683,7 @@ The default entry's exclusive is `!hovered & !@media(dark)` — no top-level OR,
683
683
 
684
684
  ### Stages 4–5: Compute combinations and call handler
685
685
 
686
- Single style, three snapshots; the `color` handler emits `color` plus `--current-color*` variables.
686
+ Single style, three snapshots; the `color` handler emits `color` plus a `--current-color` variable.
687
687
 
688
688
  ### Stage 6: Merge by value
689
689
 
@@ -697,20 +697,17 @@ Using `renderStyles(styles, '.t1')` (the class is doubled — `.t1.t1` — so Ta
697
697
  .t1[data-hovered] {
698
698
  color: var(--highlight-color);
699
699
  --current-color: var(--highlight-color);
700
- --current-color-oklch: var(--highlight-color-oklch);
701
700
  }
702
701
  @media (prefers-color-scheme: dark) {
703
702
  .t1:not([data-hovered]) {
704
703
  color: var(--dark-color);
705
704
  --current-color: var(--dark-color);
706
- --current-color-oklch: var(--dark-color-oklch);
707
705
  }
708
706
  }
709
707
  @media (not (prefers-color-scheme: dark)) {
710
708
  .t1:not([data-hovered]) {
711
709
  color: var(--white-color);
712
710
  --current-color: var(--white-color);
713
- --current-color-oklch: var(--white-color-oklch);
714
711
  }
715
712
  }
716
713
  ```
@@ -224,7 +224,7 @@ const ProgressBar = tasty({
224
224
 
225
225
  <ProgressBar progress="75%" accentColor="#purple" />
226
226
  // 'progress' → $progress → --progress
227
- // 'accentColor' → #accent → --accent-color + --accent-color-oklch
227
+ // 'accentColor' → #accent → --accent-color
228
228
  ```
229
229
 
230
230
  ### Object form
@@ -290,7 +290,14 @@ Text color with design token support.
290
290
  | `"light-dark(#dark, #light)"` | CSS color function — see [CSS Color Functions](dsl.md#css-color-functions) |
291
291
  | `true` | `currentColor` |
292
292
 
293
- When set to a named color token, also sets `$current-color` and `$current-color-{colorSpace}` custom properties for downstream use (suffix depends on the configured `colorSpace`, default `oklch`). An opacity suffix does not move the companion: `color="#purple.5"` still reports `#purple`'s channels, since components carry no alpha.
293
+ Also sets `$current-color` to the same color, for anything that needs the
294
+ inherited color as a color rather than as the `currentcolor` keyword. Every color
295
+ publishes it, not just a named token, so a reader below always takes the nearest
296
+ `color` rather than the nearest *token* color. A value that already reads the
297
+ inherited color — `#current` itself, a `#current` fade, a bare `currentColor` —
298
+ is not republished: resolving it a second time one level down would fade it
299
+ twice, and the variable into itself is a self-reference. `#current` does not go
300
+ through it; it is the keyword.
294
301
 
295
302
  ### `svgFill`
296
303
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.0.0-canary-ca2791e",
3
+ "version": "0.0.0-canary-20121c0",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {
@@ -47,8 +47,8 @@
47
47
  "probe:browser": "PROBE_TIER=browser node scripts/probe.mjs",
48
48
  "test-cover": "vitest run --coverage",
49
49
  "test-watch": "vitest",
50
- "prettier": "prettier --check \"src/**/*.{js,jsx,ts,tsx}\"",
51
- "prettier:fix": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"",
50
+ "prettier": "prettier --check \"src/**/*.{js,jsx,ts,tsx}\" \"**/*.{md,mdx}\"",
51
+ "prettier:fix": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\" \"**/*.{md,mdx}\"",
52
52
  "oxlint": "oxlint src",
53
53
  "oxlint:fix": "oxlint --fix src",
54
54
  "lint": "npm-run-all -p oxlint prettier",
@@ -93,7 +93,7 @@
93
93
  "@tabler/icons-react": "^3.31.0",
94
94
  "@tanstack/react-virtual": "^3.13.12",
95
95
  "@tenphi/glaze": "2.0.0",
96
- "@tenphi/tasty": "^3.1.0",
96
+ "@tenphi/tasty": "^3.3.1",
97
97
  "clipboard-copy": "^4.0.1",
98
98
  "clsx": "^1.1.1",
99
99
  "diff": "^8.0.3",