@cube-dev/ui-kit 0.98.9 → 0.99.0

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 (672) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/es/_internal/hooks/index.js +10 -10
  3. package/es/_internal/hooks/use-chained-callback.js +2 -2
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +2 -2
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +2 -2
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +2 -2
  10. package/es/_internal/hooks/use-timer/index.js +3 -3
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +3 -3
  13. package/es/_internal/hooks/use-update-effect.js +2 -2
  14. package/es/_internal/hooks/use-warn.js +3 -3
  15. package/es/_internal/index.js +2 -2
  16. package/es/components/Block.js +2 -2
  17. package/es/components/CollectionItem.js +3 -3
  18. package/es/components/GlobalStyles.js +56 -65
  19. package/es/components/GridProvider.js +4 -4
  20. package/es/components/HiddenInput.js +2 -2
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +22 -64
  23. package/es/components/actions/Action/Action.js +3 -3
  24. package/es/components/actions/Button/Button.js +12 -12
  25. package/es/components/actions/Button/index.js +2 -2
  26. package/es/components/actions/ButtonGroup/ButtonGroup.js +4 -4
  27. package/es/components/actions/CommandMenu/CommandMenu.js +11 -11
  28. package/es/components/actions/CommandMenu/index.js +2 -2
  29. package/es/components/actions/CommandMenu/styled.js +2 -2
  30. package/es/components/actions/ItemAction/ItemAction.js +9 -9
  31. package/es/components/actions/ItemAction/index.js +2 -2
  32. package/es/components/actions/ItemActionContext.js +1 -1
  33. package/es/components/actions/ItemButton/ItemButton.js +9 -9
  34. package/es/components/actions/ItemButton/index.js +2 -2
  35. package/es/components/actions/Link/Link.js +2 -2
  36. package/es/components/actions/Menu/Menu.js +10 -10
  37. package/es/components/actions/Menu/MenuItem.js +7 -7
  38. package/es/components/actions/Menu/MenuSection.js +4 -4
  39. package/es/components/actions/Menu/MenuTrigger.js +6 -6
  40. package/es/components/actions/Menu/SubMenuTrigger.js +6 -6
  41. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  42. package/es/components/actions/Menu/context.js +1 -1
  43. package/es/components/actions/Menu/index.js +10 -10
  44. package/es/components/actions/Menu/styled.js +5 -5
  45. package/es/components/actions/index.js +13 -13
  46. package/es/components/actions/use-action.js +7 -7
  47. package/es/components/actions/use-anchored-menu.js +6 -6
  48. package/es/components/actions/use-context-menu.js +6 -6
  49. package/es/components/content/ActiveZone/ActiveZone.js +4 -4
  50. package/es/components/content/Alert/Alert.js +4 -4
  51. package/es/components/content/Alert/index.js +2 -2
  52. package/es/components/content/Alert/types.js +1 -1
  53. package/es/components/content/Alert/use-alert.js +3 -3
  54. package/es/components/content/Avatar/Avatar.js +2 -2
  55. package/es/components/content/Badge/Badge.js +4 -4
  56. package/es/components/content/Card/Card.js +2 -2
  57. package/es/components/content/Content.js +3 -3
  58. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +8 -8
  59. package/es/components/content/CopyPasteBlock/index.js +2 -2
  60. package/es/components/content/CopySnippet/CopySnippet.js +9 -9
  61. package/es/components/content/CopySnippet/index.js +2 -2
  62. package/es/components/content/Disclosure/Disclosure.js +6 -6
  63. package/es/components/content/Disclosure/index.js +2 -2
  64. package/es/components/content/Divider.js +3 -3
  65. package/es/components/content/Footer.js +3 -3
  66. package/es/components/content/Header.js +3 -3
  67. package/es/components/content/HotKeys/HotKeys.js +5 -5
  68. package/es/components/content/HotKeys/index.js +2 -2
  69. package/es/components/content/Item/Item.js +15 -15
  70. package/es/components/content/Item/index.js +3 -3
  71. package/es/components/content/ItemBadge/ItemBadge.js +8 -8
  72. package/es/components/content/ItemBadge/index.js +2 -2
  73. package/es/components/content/Layout/GridLayout.js +13 -13
  74. package/es/components/content/Layout/Layout.js +7 -6
  75. package/es/components/content/Layout/LayoutBlock.js +4 -3
  76. package/es/components/content/Layout/LayoutCenter.js +3 -3
  77. package/es/components/content/Layout/LayoutContainer.js +4 -4
  78. package/es/components/content/Layout/LayoutContent.js +6 -5
  79. package/es/components/content/Layout/LayoutContext.js +1 -1
  80. package/es/components/content/Layout/LayoutFlex.js +4 -3
  81. package/es/components/content/Layout/LayoutFooter.js +4 -3
  82. package/es/components/content/Layout/LayoutGrid.js +4 -3
  83. package/es/components/content/Layout/LayoutHeader.js +8 -7
  84. package/es/components/content/Layout/LayoutPane.js +8 -7
  85. package/es/components/content/Layout/LayoutPanel.js +10 -9
  86. package/es/components/content/Layout/LayoutPanelHeader.js +7 -7
  87. package/es/components/content/Layout/LayoutToolbar.js +4 -3
  88. package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  89. package/es/components/content/Layout/index.js +16 -16
  90. package/es/components/content/Layout/utils.js +1 -1
  91. package/es/components/content/List/SectionHeading.js +3 -3
  92. package/es/components/content/List/index.js +2 -2
  93. package/es/components/content/Paragraph.js +3 -3
  94. package/es/components/content/Placeholder/Placeholder.js +2 -2
  95. package/es/components/content/PrismCode/PrismCode.js +7 -7
  96. package/es/components/content/PrismCode/prismSetup.js +1 -1
  97. package/es/components/content/PrismDiffCode/PrismDiffCode.js +2 -2
  98. package/es/components/content/Result/Result.js +4 -4
  99. package/es/components/content/Skeleton/Skeleton.js +5 -5
  100. package/es/components/content/Tag/Tag.js +4 -4
  101. package/es/components/content/Text.js +3 -3
  102. package/es/components/content/TextItem/TextItem.js +5 -5
  103. package/es/components/content/TextItem/index.js +2 -2
  104. package/es/components/content/Title.js +4 -4
  105. package/es/components/content/highlightText.js +2 -2
  106. package/es/components/content/use-auto-tooltip.js +2 -2
  107. package/es/components/fields/Checkbox/Checkbox.js +12 -12
  108. package/es/components/fields/Checkbox/CheckboxGroup.js +7 -7
  109. package/es/components/fields/Checkbox/context.js +1 -1
  110. package/es/components/fields/Checkbox/index.js +3 -3
  111. package/es/components/fields/ComboBox/ComboBox.js +18 -18
  112. package/es/components/fields/ComboBox/index.js +2 -2
  113. package/es/components/fields/DatePicker/DateInput.js +10 -10
  114. package/es/components/fields/DatePicker/DateInputBase.js +6 -6
  115. package/es/components/fields/DatePicker/DatePicker.js +14 -14
  116. package/es/components/fields/DatePicker/DatePickerButton.js +4 -4
  117. package/es/components/fields/DatePicker/DatePickerElement.js +3 -3
  118. package/es/components/fields/DatePicker/DatePickerInput.js +5 -5
  119. package/es/components/fields/DatePicker/DatePickerSegment.js +2 -2
  120. package/es/components/fields/DatePicker/DateRangePicker.js +15 -15
  121. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +15 -15
  122. package/es/components/fields/DatePicker/TimeInput.js +9 -9
  123. package/es/components/fields/DatePicker/index.js +8 -8
  124. package/es/components/fields/DatePicker/intl.js +1 -1
  125. package/es/components/fields/DatePicker/parseDate.js +1 -1
  126. package/es/components/fields/DatePicker/props.js +1 -1
  127. package/es/components/fields/DatePicker/types.js +1 -1
  128. package/es/components/fields/DatePicker/utils.js +1 -1
  129. package/es/components/fields/FileInput/FileInput.js +6 -6
  130. package/es/components/fields/FilterListBox/FilterListBox.js +10 -10
  131. package/es/components/fields/FilterListBox/index.js +2 -2
  132. package/es/components/fields/FilterPicker/FilterPicker.js +14 -14
  133. package/es/components/fields/FilterPicker/index.js +2 -2
  134. package/es/components/fields/Input/Input.js +6 -6
  135. package/es/components/fields/Input/index.js +2 -2
  136. package/es/components/fields/ListBox/ListBox.js +14 -14
  137. package/es/components/fields/ListBox/index.js +2 -2
  138. package/es/components/fields/NumberInput/NumberInput.js +8 -8
  139. package/es/components/fields/NumberInput/StepButton.js +4 -4
  140. package/es/components/fields/PasswordInput/PasswordInput.js +8 -8
  141. package/es/components/fields/Picker/Picker.js +13 -13
  142. package/es/components/fields/Picker/index.js +2 -2
  143. package/es/components/fields/RadioGroup/Radio.js +10 -10
  144. package/es/components/fields/RadioGroup/RadioGroup.js +7 -7
  145. package/es/components/fields/RadioGroup/context.js +1 -1
  146. package/es/components/fields/RadioGroup/index.js +3 -3
  147. package/es/components/fields/SearchInput/SearchInput.js +8 -8
  148. package/es/components/fields/SearchInput/index.js +2 -2
  149. package/es/components/fields/Select/Select.js +20 -20
  150. package/es/components/fields/Select/index.js +2 -2
  151. package/es/components/fields/Slider/Gradation.js +2 -2
  152. package/es/components/fields/Slider/Header.js +1 -1
  153. package/es/components/fields/Slider/RangeSlider.js +5 -5
  154. package/es/components/fields/Slider/Slider.js +7 -7
  155. package/es/components/fields/Slider/SliderBase.js +6 -6
  156. package/es/components/fields/Slider/SliderInput.js +2 -2
  157. package/es/components/fields/Slider/SliderThumb.js +3 -3
  158. package/es/components/fields/Slider/SliderTrack.js +2 -2
  159. package/es/components/fields/Slider/elements.js +2 -2
  160. package/es/components/fields/Slider/index.js +4 -4
  161. package/es/components/fields/Slider/types.js +1 -1
  162. package/es/components/fields/Switch/Switch.js +11 -11
  163. package/es/components/fields/Switch/index.js +2 -2
  164. package/es/components/fields/TextArea/TextArea.js +7 -7
  165. package/es/components/fields/TextArea/index.js +2 -2
  166. package/es/components/fields/TextInput/TextInput.js +6 -6
  167. package/es/components/fields/TextInput/TextInputBase.js +9 -9
  168. package/es/components/fields/TextInput/index.js +3 -3
  169. package/es/components/fields/TextInputMapper/TextInputMapper.js +14 -14
  170. package/es/components/fields/TextInputMapper/index.js +2 -2
  171. package/es/components/fields/index.js +20 -20
  172. package/es/components/form/FieldWrapper/FieldWrapper.js +9 -9
  173. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  174. package/es/components/form/FieldWrapper/index.js +4 -4
  175. package/es/components/form/FieldWrapper/types.js +1 -1
  176. package/es/components/form/Form/Field.js +6 -6
  177. package/es/components/form/Form/Form.js +6 -6
  178. package/es/components/form/Form/ResetButton/ResetButton.js +6 -6
  179. package/es/components/form/Form/ResetButton/index.js +2 -2
  180. package/es/components/form/Form/SubmitButton/SubmitButton.js +4 -4
  181. package/es/components/form/Form/SubmitButton/index.js +2 -2
  182. package/es/components/form/Form/SubmitError.js +3 -3
  183. package/es/components/form/Form/index.js +11 -11
  184. package/es/components/form/Form/types.js +1 -1
  185. package/es/components/form/Form/use-field/index.js +4 -4
  186. package/es/components/form/Form/use-field/types.js +1 -1
  187. package/es/components/form/Form/use-field/use-field-props.js +6 -6
  188. package/es/components/form/Form/use-field/use-field.js +4 -4
  189. package/es/components/form/Form/use-form.js +3 -3
  190. package/es/components/form/Form/validation.js +1 -1
  191. package/es/components/form/Label.js +3 -3
  192. package/es/components/form/index.js +5 -5
  193. package/es/components/form/wrapper.js +3 -3
  194. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  195. package/es/components/helpers/DisplayTransition/index.js +2 -2
  196. package/es/components/helpers/IconSwitch/IconSwitch.js +3 -3
  197. package/es/components/helpers/index.js +3 -3
  198. package/es/components/layout/Flex.js +2 -2
  199. package/es/components/layout/Flow.js +2 -2
  200. package/es/components/layout/Grid.js +2 -2
  201. package/es/components/layout/Panel.js +2 -2
  202. package/es/components/layout/Prefix.js +3 -3
  203. package/es/components/layout/ResizablePanel.js +5 -5
  204. package/es/components/layout/Space.js +2 -2
  205. package/es/components/layout/Suffix.js +3 -3
  206. package/es/components/organisms/FileTabs/FileTabs.js +8 -8
  207. package/es/components/organisms/StatsCard/StatsCard.js +4 -4
  208. package/es/components/other/Calendar/Calendar.js +8 -8
  209. package/es/components/other/Calendar/CalendarCell.js +2 -2
  210. package/es/components/other/Calendar/CalendarGrid.js +3 -3
  211. package/es/components/other/Calendar/RangeCalendar.js +8 -8
  212. package/es/components/other/CloudLogo/CloudLogo.js +3 -3
  213. package/es/components/overlays/AlertDialog/AlertDialog.js +11 -11
  214. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +2 -2
  215. package/es/components/overlays/AlertDialog/AlertDialogZone.js +4 -4
  216. package/es/components/overlays/AlertDialog/index.js +4 -4
  217. package/es/components/overlays/AlertDialog/types.js +1 -1
  218. package/es/components/overlays/Dialog/Dialog.js +7 -7
  219. package/es/components/overlays/Dialog/DialogContainer.js +3 -3
  220. package/es/components/overlays/Dialog/DialogForm.js +8 -8
  221. package/es/components/overlays/Dialog/DialogTrigger.js +4 -4
  222. package/es/components/overlays/Dialog/context.js +1 -1
  223. package/es/components/overlays/Dialog/index.js +6 -6
  224. package/es/components/overlays/Dialog/use-dialog-container.js +4 -4
  225. package/es/components/overlays/Modal/Modal.js +5 -5
  226. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  227. package/es/components/overlays/Modal/Overlay.js +3 -3
  228. package/es/components/overlays/Modal/Popover.js +4 -4
  229. package/es/components/overlays/Modal/Tray.js +6 -6
  230. package/es/components/overlays/Modal/Underlay.js +2 -2
  231. package/es/components/overlays/Modal/index.js +7 -7
  232. package/es/components/overlays/Modal/types.js +1 -1
  233. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +5 -5
  234. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +7 -7
  235. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +36 -34
  236. package/es/components/overlays/NewNotifications/Bar/index.js +2 -2
  237. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  238. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +8 -8
  239. package/es/components/overlays/NewNotifications/Dialog/index.js +2 -2
  240. package/es/components/overlays/NewNotifications/Notification.js +4 -4
  241. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +5 -5
  242. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +4 -4
  243. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +4 -4
  244. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +3 -3
  245. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +3 -3
  246. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +4 -4
  247. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  248. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +12 -12
  249. package/es/components/overlays/NewNotifications/NotificationView/index.js +3 -3
  250. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  251. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  252. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +5 -5
  253. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +3 -3
  254. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +2 -2
  255. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +4 -4
  256. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +5 -5
  257. package/es/components/overlays/NewNotifications/NotificationsList/index.js +2 -2
  258. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  259. package/es/components/overlays/NewNotifications/hooks/index.js +6 -6
  260. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  261. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  262. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +2 -2
  263. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  264. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +3 -3
  265. package/es/components/overlays/NewNotifications/index.js +7 -7
  266. package/es/components/overlays/NewNotifications/types.js +1 -1
  267. package/es/components/overlays/Notification/Notification.js +7 -7
  268. package/es/components/overlays/OverlayWrapper.js +2 -2
  269. package/es/components/overlays/Toasts/Toast.js +4 -4
  270. package/es/components/overlays/Toasts/index.js +3 -3
  271. package/es/components/overlays/Toasts/types.js +1 -1
  272. package/es/components/overlays/Toasts/use-toasts-api.js +2 -2
  273. package/es/components/overlays/Tooltip/Tooltip.js +4 -4
  274. package/es/components/overlays/Tooltip/TooltipProvider.js +3 -3
  275. package/es/components/overlays/Tooltip/TooltipTrigger.js +6 -6
  276. package/es/components/overlays/Tooltip/context.js +1 -1
  277. package/es/components/overlays/Tooltip/index.js +4 -4
  278. package/es/components/portal/Portal.js +2 -2
  279. package/es/components/portal/PortalProvider.js +1 -1
  280. package/es/components/portal/index.js +3 -3
  281. package/es/components/portal/types.js +1 -1
  282. package/es/components/portal/usePortal.js +2 -2
  283. package/es/components/shared/InvalidIcon.js +2 -2
  284. package/es/components/shared/ValidIcon.js +2 -2
  285. package/es/components/status/LoadingAnimation/LoadingAnimation.js +58 -114
  286. package/es/components/status/LoadingAnimation/index.js +2 -2
  287. package/es/components/status/Spin/Cube.js +95 -179
  288. package/es/components/status/Spin/InternalSpinner.js +5 -5
  289. package/es/components/status/Spin/Spin.js +4 -4
  290. package/es/components/status/Spin/SpinsContainer.js +28 -30
  291. package/es/components/status/Spin/index.js +2 -2
  292. package/es/components/status/Spin/types.js +1 -1
  293. package/es/components/status/index.js +3 -3
  294. package/es/data/item-themes.js +1 -1
  295. package/es/data/themes.js +1 -1
  296. package/es/icons/AdjustmentsHorizontalIcon.js +2 -2
  297. package/es/icons/AdjustmentsIcon.js +2 -2
  298. package/es/icons/AiIcon.js +2 -2
  299. package/es/icons/AreaChartIcon.js +2 -2
  300. package/es/icons/BackwardIcon.js +2 -2
  301. package/es/icons/BarChartIcon.js +2 -2
  302. package/es/icons/BellFilledIcon.js +2 -2
  303. package/es/icons/BellIcon.js +2 -2
  304. package/es/icons/BooleanIcon.js +2 -2
  305. package/es/icons/CalendarEditIcon.js +2 -2
  306. package/es/icons/CalendarIcon.js +2 -2
  307. package/es/icons/CaretDownIcon.js +2 -2
  308. package/es/icons/CaretUpIcon.js +2 -2
  309. package/es/icons/ChartAreaStackedIcon.js +2 -2
  310. package/es/icons/ChartAreaStackedPercentageIcon.js +2 -2
  311. package/es/icons/ChartBarGroupedHorizontalIcon.js +2 -2
  312. package/es/icons/ChartBarGroupedIcon.js +2 -2
  313. package/es/icons/ChartBarHorizontalIcon.js +2 -2
  314. package/es/icons/ChartBarLineIcon.js +2 -2
  315. package/es/icons/ChartBarStackedHorizontalIcon.js +2 -2
  316. package/es/icons/ChartBarStackedIcon.js +2 -2
  317. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +2 -2
  318. package/es/icons/ChartBarStackedPercentageIcon.js +2 -2
  319. package/es/icons/ChartBoxPlot2Icon.js +2 -2
  320. package/es/icons/ChartBoxPlotIcon.js +2 -2
  321. package/es/icons/ChartBubbleIcon.js +2 -2
  322. package/es/icons/ChartDonut2Icon.js +2 -2
  323. package/es/icons/ChartFunnelIcon.js +2 -2
  324. package/es/icons/ChartHeatmapIcon.js +2 -2
  325. package/es/icons/ChartKPIIcon.js +2 -2
  326. package/es/icons/ChartPie2Icon.js +2 -2
  327. package/es/icons/ChartScatterIcon.js +2 -2
  328. package/es/icons/CheckCircleFilledIcon.js +2 -2
  329. package/es/icons/CheckCircleIcon.js +2 -2
  330. package/es/icons/CheckIcon.js +2 -2
  331. package/es/icons/CircleFilledIcon.js +2 -2
  332. package/es/icons/ClearIcon.js +2 -2
  333. package/es/icons/CloseCircleFilledIcon.js +2 -2
  334. package/es/icons/CloseCircleIcon.js +2 -2
  335. package/es/icons/CloseIcon.js +2 -2
  336. package/es/icons/CodeIcon.js +2 -2
  337. package/es/icons/ColumnTotalIcon.js +2 -2
  338. package/es/icons/CopyIcon.js +2 -2
  339. package/es/icons/CountIcon.js +2 -2
  340. package/es/icons/CubeIcon.js +2 -2
  341. package/es/icons/CubePauseIcon.js +2 -2
  342. package/es/icons/CubePlayIcon.js +2 -2
  343. package/es/icons/CurrencyDollarIcon.js +2 -2
  344. package/es/icons/DangerIcon.js +2 -2
  345. package/es/icons/DashboardIcon.js +2 -2
  346. package/es/icons/DatabaseIcon.js +2 -2
  347. package/es/icons/DecimalDecreaseIcon.js +2 -2
  348. package/es/icons/DecimalIncreaseIcon.js +2 -2
  349. package/es/icons/DirectionIcon.js +3 -3
  350. package/es/icons/DonutIcon.js +2 -2
  351. package/es/icons/DownIcon.js +2 -2
  352. package/es/icons/EditIcon.js +2 -2
  353. package/es/icons/ExclamationCircleFilledIcon.js +2 -2
  354. package/es/icons/ExclamationCircleIcon.js +2 -2
  355. package/es/icons/ExclamationIcon.js +2 -2
  356. package/es/icons/EyeIcon.js +2 -2
  357. package/es/icons/EyeInvisibleIcon.js +2 -2
  358. package/es/icons/FilterIcon.js +2 -2
  359. package/es/icons/FolderFilledIcon.js +2 -2
  360. package/es/icons/FolderIcon.js +2 -2
  361. package/es/icons/FolderOpenFilledIcon.js +2 -2
  362. package/es/icons/FolderOpenIcon.js +2 -2
  363. package/es/icons/ForwardIcon.js +2 -2
  364. package/es/icons/HierarchyIcon.js +2 -2
  365. package/es/icons/HierarchyOpenIcon.js +2 -2
  366. package/es/icons/Icon.js +2 -2
  367. package/es/icons/InfoCircleIcon.js +2 -2
  368. package/es/icons/InfoIcon.js +2 -2
  369. package/es/icons/KeyIcon.js +2 -2
  370. package/es/icons/LeftIcon.js +2 -2
  371. package/es/icons/LineChartIcon.js +2 -2
  372. package/es/icons/LoadingIcon.js +2 -2
  373. package/es/icons/LockFilledIcon.js +2 -2
  374. package/es/icons/LockIcon.js +2 -2
  375. package/es/icons/MoreIcon.js +2 -2
  376. package/es/icons/NotAllowedIcon.js +2 -2
  377. package/es/icons/Number123Icon.js +2 -2
  378. package/es/icons/NumberIcon.js +2 -2
  379. package/es/icons/PauseCircleFilledIcon.js +2 -2
  380. package/es/icons/PauseCircleIcon.js +2 -2
  381. package/es/icons/PauseIcon.js +2 -2
  382. package/es/icons/PercentageIcon.js +2 -2
  383. package/es/icons/PieChartIcon.js +2 -2
  384. package/es/icons/PlayCircleIcon.js +2 -2
  385. package/es/icons/PlayIcon.js +2 -2
  386. package/es/icons/PlusIcon.js +2 -2
  387. package/es/icons/ProgressBarIcon.js +2 -2
  388. package/es/icons/ReloadIcon.js +2 -2
  389. package/es/icons/ReportIcon.js +2 -2
  390. package/es/icons/ReturnIcon.js +2 -2
  391. package/es/icons/RightIcon.js +2 -2
  392. package/es/icons/RowTotalsIcon.js +2 -2
  393. package/es/icons/SchemeIcon.js +2 -2
  394. package/es/icons/SearchIcon.js +2 -2
  395. package/es/icons/SemanticQueryIcon.js +2 -2
  396. package/es/icons/SettingsIcon.js +2 -2
  397. package/es/icons/ShieldFilledIcon.js +2 -2
  398. package/es/icons/ShieldIcon.js +2 -2
  399. package/es/icons/SlashIcon.js +2 -2
  400. package/es/icons/SparklesIcon.js +2 -2
  401. package/es/icons/SqlIcon.js +2 -2
  402. package/es/icons/StatsIcon.js +2 -2
  403. package/es/icons/StopIcon.js +2 -2
  404. package/es/icons/StringIcon.js +2 -2
  405. package/es/icons/SubtotalsIcon.js +2 -2
  406. package/es/icons/SwitchIcon.js +2 -2
  407. package/es/icons/TableIcon.js +2 -2
  408. package/es/icons/ThumbsDownIcon.js +2 -2
  409. package/es/icons/ThumbsUpIcon.js +2 -2
  410. package/es/icons/ThunderboltCrossedIcon.js +2 -2
  411. package/es/icons/ThunderboltFilledIcon.js +2 -2
  412. package/es/icons/ThunderboltIcon.js +2 -2
  413. package/es/icons/TimeIcon.js +2 -2
  414. package/es/icons/TrashIcon.js +2 -2
  415. package/es/icons/UnlockIcon.js +2 -2
  416. package/es/icons/UpIcon.js +2 -2
  417. package/es/icons/UserGroupIcon.js +2 -2
  418. package/es/icons/UserIcon.js +2 -2
  419. package/es/icons/UserLockIcon.js +2 -2
  420. package/es/icons/ViewIcon.js +2 -2
  421. package/es/icons/WarningFilledIcon.js +2 -2
  422. package/es/icons/WarningIcon.js +2 -2
  423. package/es/icons/index.js +129 -129
  424. package/es/icons/wrap-icon.js +2 -2
  425. package/es/index.js +73 -74
  426. package/es/provider.js +4 -10
  427. package/es/providers/TrackingProvider.js +1 -1
  428. package/es/providers/navigation.types.js +1 -1
  429. package/es/providers/navigationAdapter.default.js +1 -1
  430. package/es/services/notification.js +2 -2
  431. package/es/shared/form.js +1 -1
  432. package/es/shared/index.js +2 -2
  433. package/es/stories/Form.legacy-stories.js +4 -4
  434. package/es/stories/FormFieldArgs.js +2 -2
  435. package/es/stories/SimpleLayout.stories.js +2 -2
  436. package/es/stories/Tasty.stories.js +2 -2
  437. package/es/stories/components/ConfirmDeletionDialogForm.js +2 -2
  438. package/es/stories/components/DialogFormApp.js +3 -3
  439. package/es/stories/components/StyledButton.js +19 -15
  440. package/es/stories/lists/baseProps.js +2 -2
  441. package/es/stories/playground/PlaygroundEditor.js +89 -0
  442. package/es/stories/playground/PlaygroundLayout.js +16 -0
  443. package/es/stories/playground/PlaygroundOutput.js +92 -0
  444. package/es/stories/playground/PlaygroundPreview.js +91 -0
  445. package/es/stories/playground/components/Button.js +45 -0
  446. package/es/stories/playground/components/Card.js +20 -0
  447. package/es/stories/playground/components/ScrollProgress.js +17 -0
  448. package/es/stories/playground/examples.js +158 -0
  449. package/es/tasty/chunks/cacheKey.js +98 -0
  450. package/es/tasty/chunks/definitions.js +281 -0
  451. package/es/tasty/chunks/index.js +12 -0
  452. package/es/tasty/chunks/renderChunk.js +97 -0
  453. package/es/tasty/config.js +280 -0
  454. package/es/tasty/debug.js +195 -9
  455. package/es/tasty/hooks/index.js +12 -0
  456. package/es/tasty/hooks/useGlobalStyles.js +67 -0
  457. package/es/tasty/hooks/useRawCSS.js +40 -0
  458. package/es/tasty/hooks/useStyles.js +206 -0
  459. package/es/tasty/index.js +31 -17
  460. package/es/tasty/injector/index.js +34 -90
  461. package/es/tasty/injector/injector.js +81 -299
  462. package/es/tasty/injector/sheet-manager.js +138 -3
  463. package/es/tasty/injector/types.js +1 -1
  464. package/es/tasty/keyframes/index.js +301 -0
  465. package/es/tasty/parser/classify.js +8 -6
  466. package/es/tasty/parser/const.js +1 -1
  467. package/es/tasty/parser/lru.js +1 -1
  468. package/es/tasty/parser/parser.js +18 -5
  469. package/es/tasty/parser/tokenizer.js +1 -1
  470. package/es/tasty/parser/types.js +2 -1
  471. package/es/tasty/pipeline/conditions.js +426 -0
  472. package/es/tasty/pipeline/exclusive.js +311 -0
  473. package/es/tasty/pipeline/index.js +543 -0
  474. package/es/tasty/pipeline/materialize.js +1260 -0
  475. package/es/tasty/pipeline/parseStateKey.js +592 -0
  476. package/es/tasty/pipeline/simplify.js +898 -0
  477. package/es/tasty/plugins/index.js +26 -0
  478. package/es/tasty/plugins/okhsl-plugin.js +400 -0
  479. package/es/tasty/plugins/types.js +10 -0
  480. package/es/tasty/states/index.js +523 -0
  481. package/es/tasty/static/index.js +47 -0
  482. package/es/tasty/static/tastyStatic.js +55 -0
  483. package/es/tasty/static/types.js +34 -0
  484. package/es/tasty/styles/align.js +1 -1
  485. package/es/tasty/styles/border.js +2 -2
  486. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  487. package/es/tasty/styles/color.js +3 -3
  488. package/es/tasty/styles/createStyle.js +3 -3
  489. package/es/tasty/styles/dimension.js +2 -2
  490. package/es/tasty/styles/display.js +1 -1
  491. package/es/tasty/styles/fade.js +2 -2
  492. package/es/tasty/styles/fill.js +11 -21
  493. package/es/tasty/styles/flow.js +1 -1
  494. package/es/tasty/styles/font.js +1 -1
  495. package/es/tasty/styles/fontStyle.js +1 -1
  496. package/es/tasty/styles/gap.js +2 -2
  497. package/es/tasty/styles/groupRadius.js +2 -2
  498. package/es/tasty/styles/height.js +2 -2
  499. package/es/tasty/styles/index.js +3 -3
  500. package/es/tasty/styles/inset.js +2 -2
  501. package/es/tasty/styles/justify.js +1 -1
  502. package/es/tasty/styles/list.js +1 -1
  503. package/es/tasty/styles/margin.js +76 -56
  504. package/es/tasty/styles/outline.js +2 -2
  505. package/es/tasty/styles/padding.js +76 -56
  506. package/es/tasty/styles/place.js +1 -1
  507. package/es/tasty/styles/predefined.js +28 -27
  508. package/es/tasty/styles/preset.js +2 -2
  509. package/es/tasty/styles/radius.js +5 -12
  510. package/es/tasty/styles/reset.js +3 -7
  511. package/es/tasty/styles/scrollbar.js +2 -2
  512. package/es/tasty/styles/shadow.js +2 -2
  513. package/es/tasty/styles/styledScrollbar.js +1 -1
  514. package/es/tasty/styles/transition.js +10 -3
  515. package/es/tasty/styles/types.js +1 -1
  516. package/es/tasty/styles/width.js +2 -2
  517. package/es/tasty/tasty.js +81 -122
  518. package/es/tasty/types.js +1 -1
  519. package/es/tasty/utils/cache-wrapper.js +1 -1
  520. package/es/tasty/utils/case-converter.js +1 -1
  521. package/es/tasty/utils/colors.js +1 -1
  522. package/es/tasty/utils/dotize.js +1 -1
  523. package/es/tasty/utils/filterBaseProps.js +1 -1
  524. package/es/tasty/utils/getDisplayName.js +1 -1
  525. package/es/tasty/utils/isDevEnv.js +1 -1
  526. package/es/tasty/utils/mergeStyles.js +2 -2
  527. package/es/tasty/utils/modAttrs.js +3 -3
  528. package/es/tasty/utils/processTokens.js +88 -2
  529. package/es/tasty/utils/string.js +1 -1
  530. package/es/tasty/utils/styles.js +255 -22
  531. package/es/tasty/utils/typography.js +67 -0
  532. package/es/tasty/utils/warnings.js +1 -1
  533. package/es/tasty/zero/babel.js +453 -0
  534. package/es/tasty/zero/css-writer.js +94 -0
  535. package/es/tasty/zero/extractor.js +222 -0
  536. package/es/tasty/zero/index.js +28 -0
  537. package/es/tasty/zero/next.js +102 -0
  538. package/es/tokens/base.js +64 -0
  539. package/es/tokens/colors.js +68 -0
  540. package/es/tokens/index.js +63 -0
  541. package/es/tokens/layout.js +26 -0
  542. package/es/tokens/shadows.js +27 -0
  543. package/es/tokens/sizes.js +42 -0
  544. package/es/tokens/spacing.js +22 -0
  545. package/es/tokens/typography.js +237 -0
  546. package/es/utils/ResizeSensor.js +1 -1
  547. package/es/utils/index.js +10 -10
  548. package/es/utils/modules.js +1 -1
  549. package/es/utils/promise.js +1 -1
  550. package/es/utils/raf.js +1 -1
  551. package/es/utils/random.js +1 -1
  552. package/es/utils/range.js +1 -1
  553. package/es/utils/react/RenderCache.js +1 -1
  554. package/es/utils/react/Slots.js +2 -2
  555. package/es/utils/react/chain.js +1 -1
  556. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  557. package/es/utils/react/index.js +17 -17
  558. package/es/utils/react/interactions.js +1 -1
  559. package/es/utils/react/isTextOnly.js +1 -1
  560. package/es/utils/react/mapProps.js +1 -1
  561. package/es/utils/react/mergeProps.js +4 -4
  562. package/es/utils/react/nullableValue.js +1 -1
  563. package/es/utils/react/resolveIcon.js +1 -1
  564. package/es/utils/react/sharedStore.js +2 -2
  565. package/es/utils/react/useCombinedRefs.js +1 -1
  566. package/es/utils/react/useControlledFocusVisible.js +2 -2
  567. package/es/utils/react/useEventBus.js +1 -1
  568. package/es/utils/react/useId.js +2 -2
  569. package/es/utils/react/useIsDarwin.js +1 -1
  570. package/es/utils/react/useKeySymbols.js +2 -2
  571. package/es/utils/react/useLayoutEffect.js +1 -1
  572. package/es/utils/react/useLocalStorage.js +2 -2
  573. package/es/utils/react/useQaProps.js +1 -1
  574. package/es/utils/react/useViewportSize.js +1 -1
  575. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  576. package/es/utils/tree.js +1 -1
  577. package/es/utils/warnings.js +1 -1
  578. package/es/version.js +2 -2
  579. package/package.json +14 -4
  580. package/types/components/GlobalStyles.d.ts +2 -1
  581. package/types/components/HiddenInput.d.ts +828 -826
  582. package/types/components/Root.d.ts +1 -0
  583. package/types/components/actions/Button/Button.d.ts +1649 -1645
  584. package/types/components/actions/CommandMenu/styled.d.ts +4140 -4130
  585. package/types/components/actions/Menu/styled.d.ts +4893 -4883
  586. package/types/components/actions/use-action.d.ts +1 -1
  587. package/types/components/content/List/SectionHeading.d.ts +251 -251
  588. package/types/components/content/Text.d.ts +1487 -1487
  589. package/types/components/fields/DatePicker/DatePickerElement.d.ts +251 -251
  590. package/types/components/fields/Select/Select.d.ts +828 -826
  591. package/types/components/fields/Slider/elements.d.ts +4968 -4956
  592. package/types/components/status/Spin/Cube.d.ts +1 -1
  593. package/types/components/status/Spin/SpinsContainer.d.ts +6 -3
  594. package/types/index.d.ts +1 -4
  595. package/types/provider.d.ts +1 -2
  596. package/types/stories/components/StyledButton.d.ts +1 -1
  597. package/types/stories/playground/PlaygroundEditor.d.ts +6 -0
  598. package/types/stories/playground/PlaygroundLayout.d.ts +8 -0
  599. package/types/stories/playground/PlaygroundOutput.d.ts +5 -0
  600. package/types/stories/playground/PlaygroundPreview.d.ts +6 -0
  601. package/types/stories/playground/components/Button.d.ts +11 -0
  602. package/types/stories/playground/components/Card.d.ts +7 -0
  603. package/types/stories/playground/components/ScrollProgress.d.ts +5 -0
  604. package/types/stories/playground/examples.d.ts +7 -0
  605. package/types/tasty/chunks/cacheKey.d.ts +26 -0
  606. package/types/tasty/chunks/definitions.d.ts +75 -0
  607. package/types/tasty/chunks/index.d.ts +4 -0
  608. package/types/tasty/chunks/renderChunk.d.ts +25 -0
  609. package/types/tasty/config.d.ts +171 -0
  610. package/types/tasty/debug.d.ts +35 -0
  611. package/types/tasty/hooks/index.d.ts +4 -0
  612. package/types/tasty/hooks/useGlobalStyles.d.ts +22 -0
  613. package/types/tasty/hooks/useRawCSS.d.ts +50 -0
  614. package/types/tasty/hooks/useStyles.d.ts +35 -0
  615. package/types/tasty/index.d.ts +14 -4
  616. package/types/tasty/injector/index.d.ts +30 -19
  617. package/types/tasty/injector/injector.d.ts +19 -13
  618. package/types/tasty/injector/sheet-manager.d.ts +25 -1
  619. package/types/tasty/injector/types.d.ts +23 -2
  620. package/types/tasty/keyframes/index.d.ts +49 -0
  621. package/types/tasty/parser/parser.d.ts +4 -0
  622. package/types/tasty/parser/types.d.ts +1 -0
  623. package/types/tasty/pipeline/conditions.d.ts +243 -0
  624. package/types/tasty/pipeline/exclusive.d.ts +103 -0
  625. package/types/tasty/pipeline/index.d.ts +67 -0
  626. package/types/tasty/pipeline/materialize.d.ts +162 -0
  627. package/types/tasty/pipeline/parseStateKey.d.ts +20 -0
  628. package/types/tasty/pipeline/simplify.d.ts +28 -0
  629. package/types/tasty/plugins/index.d.ts +17 -0
  630. package/types/tasty/plugins/okhsl-plugin.d.ts +45 -0
  631. package/types/tasty/plugins/types.d.ts +34 -0
  632. package/types/tasty/states/index.d.ts +101 -0
  633. package/types/tasty/static/index.d.ts +39 -0
  634. package/types/tasty/static/tastyStatic.d.ts +41 -0
  635. package/types/tasty/static/types.d.ts +44 -0
  636. package/types/tasty/styles/fill.d.ts +11 -1
  637. package/types/tasty/styles/margin.d.ts +3 -1
  638. package/types/tasty/styles/padding.d.ts +3 -1
  639. package/types/tasty/styles/radius.d.ts +2 -10
  640. package/types/tasty/styles/types.d.ts +24 -3
  641. package/types/tasty/tasty.d.ts +892 -840
  642. package/types/tasty/utils/styles.d.ts +50 -6
  643. package/types/tasty/utils/typography.d.ts +32 -0
  644. package/types/tasty/zero/babel.d.ts +63 -0
  645. package/types/tasty/zero/css-writer.d.ts +41 -0
  646. package/types/tasty/zero/extractor.d.ts +40 -0
  647. package/types/tasty/zero/index.d.ts +18 -0
  648. package/types/tasty/zero/next.d.ts +57 -0
  649. package/types/tokens/base.d.ts +8 -0
  650. package/types/tokens/colors.d.ts +6 -0
  651. package/types/tokens/index.d.ts +41 -0
  652. package/types/tokens/layout.d.ts +7 -0
  653. package/types/tokens/shadows.d.ts +12 -0
  654. package/types/tokens/sizes.d.ts +25 -0
  655. package/types/tokens/spacing.d.ts +8 -0
  656. package/types/tokens/typography.d.ts +30 -0
  657. package/es/components/navigation/LegacyTabs/LegacyTabs.js +0 -275
  658. package/es/components/other/Base64Upload/Base64Upload.js +0 -103
  659. package/es/icons/add-new-icon.js +0 -129
  660. package/es/tasty/providers/BreakpointsProvider.js +0 -16
  661. package/es/tasty/utils/getModCombinations.js +0 -38
  662. package/es/tasty/utils/renderStyles.js +0 -1050
  663. package/es/tasty/utils/responsive.js +0 -60
  664. package/es/tokens.js +0 -309
  665. package/types/components/navigation/LegacyTabs/LegacyTabs.d.ts +0 -43
  666. package/types/components/other/Base64Upload/Base64Upload.d.ts +0 -5
  667. package/types/icons/add-new-icon.d.ts +0 -2
  668. package/types/tasty/providers/BreakpointsProvider.d.ts +0 -8
  669. package/types/tasty/utils/getModCombinations.d.ts +0 -9
  670. package/types/tasty/utils/renderStyles.d.ts +0 -41
  671. package/types/tasty/utils/responsive.d.ts +0 -8
  672. package/types/tokens.d.ts +0 -221
package/es/tasty/debug.js CHANGED
@@ -1,15 +1,16 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.98.9
4
+ * @cube-dev/ui-kit v0.99.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  /**
9
9
  * Debug utilities for inspecting tasty-generated CSS at runtime
10
10
  */
11
- import { getCssTextForNode, injector } from './injector';
12
- import { isDevEnv } from './utils/isDevEnv';
11
+ import { CHUNK_NAMES } from './chunks/definitions.js';
12
+ import { getCssTextForNode, injector } from './injector/index.js';
13
+ import { isDevEnv } from './utils/isDevEnv.js';
13
14
  /**
14
15
  * Pretty-print CSS with proper indentation and formatting
15
16
  */
@@ -246,6 +247,95 @@ function getPageStats(options) {
246
247
  }
247
248
  return { cssSize, ruleCount, stylesheetCount, skippedStylesheets };
248
249
  }
250
+ // ============================================================================
251
+ // Chunk-aware helpers (for style chunking optimization)
252
+ // ============================================================================
253
+ /**
254
+ * Extract chunk name from a cache key.
255
+ *
256
+ * Cache keys have the format: "chunkName\0key:value\0key:value..."
257
+ * or "[states:...]\0chunkName\0..." for predefined states.
258
+ *
259
+ * @param cacheKey - The cache key to parse
260
+ * @returns The chunk name, or null if not found
261
+ */
262
+ function extractChunkNameFromCacheKey(cacheKey) {
263
+ // Cache keys are separated by \0 (null character)
264
+ const parts = cacheKey.split('\0');
265
+ for (const part of parts) {
266
+ // Skip predefined states prefix
267
+ if (part.startsWith('[states:'))
268
+ continue;
269
+ // First non-states part that doesn't contain : is the chunk name
270
+ if (!part.includes(':') && part.length > 0) {
271
+ return part;
272
+ }
273
+ }
274
+ return null;
275
+ }
276
+ /**
277
+ * Get chunk info for a className by reverse-looking up its cache key.
278
+ *
279
+ * @param className - The tasty class name (e.g., "t0", "t123")
280
+ * @param root - The document or shadow root to search in
281
+ * @returns Object with chunk name and cache key, or nulls if not found
282
+ */
283
+ function getChunkForClassName(className, root = document) {
284
+ const registry = injector.instance['sheetManager']?.getRegistry(root);
285
+ if (!registry) {
286
+ return { chunkName: null, cacheKey: null };
287
+ }
288
+ // Reverse lookup: find the cache key for this className
289
+ for (const [cacheKey, cn] of registry.cacheKeyToClassName) {
290
+ if (cn === className) {
291
+ return {
292
+ chunkName: extractChunkNameFromCacheKey(cacheKey),
293
+ cacheKey,
294
+ };
295
+ }
296
+ }
297
+ return { chunkName: null, cacheKey: null };
298
+ }
299
+ /**
300
+ * Get chunk breakdown statistics for all styles.
301
+ *
302
+ * @param root - The document or shadow root to search in
303
+ * @returns Object with breakdown by chunk type and totals
304
+ */
305
+ function getChunkBreakdown(root = document) {
306
+ const registry = injector.instance['sheetManager']?.getRegistry(root);
307
+ if (!registry) {
308
+ return {
309
+ byChunk: {},
310
+ totalChunkTypes: 0,
311
+ };
312
+ }
313
+ const byChunk = {};
314
+ // Group classes by chunk
315
+ for (const [cacheKey, className] of registry.cacheKeyToClassName) {
316
+ const chunkName = extractChunkNameFromCacheKey(cacheKey) || 'unknown';
317
+ if (!byChunk[chunkName]) {
318
+ byChunk[chunkName] = { classes: [], cssSize: 0, ruleCount: 0 };
319
+ }
320
+ byChunk[chunkName].classes.push(className);
321
+ // Get CSS for this class
322
+ const css = injector.instance.getCssTextForClasses([className], { root });
323
+ byChunk[chunkName].cssSize += css.length;
324
+ byChunk[chunkName].ruleCount += (css.match(/\{[^}]*\}/g) || []).length;
325
+ }
326
+ // Sort classes within each chunk for consistency
327
+ for (const entry of Object.values(byChunk)) {
328
+ entry.classes.sort((a, b) => {
329
+ const aNum = parseInt(a.slice(1));
330
+ const bNum = parseInt(b.slice(1));
331
+ return aNum - bNum;
332
+ });
333
+ }
334
+ return {
335
+ byChunk,
336
+ totalChunkTypes: Object.keys(byChunk).length,
337
+ };
338
+ }
249
339
  /**
250
340
  * Concise tastyDebug API for inspecting styles at runtime
251
341
  */
@@ -316,6 +406,7 @@ export const tastyDebug = {
316
406
  return {
317
407
  element: null,
318
408
  classes: [],
409
+ chunks: [],
319
410
  css: '',
320
411
  size: 0,
321
412
  rules: 0,
@@ -325,12 +416,18 @@ export const tastyDebug = {
325
416
  const tastyClasses = classList
326
417
  .split(/\s+/)
327
418
  .filter((cls) => /^t\d+$/.test(cls));
419
+ // Get chunk info for each tasty class
420
+ const chunks = tastyClasses.map((className) => ({
421
+ className,
422
+ chunkName: getChunkForClassName(className, root).chunkName,
423
+ }));
328
424
  const css = getCssTextForNode(element, { root });
329
425
  const prettifiedCSS = prettifyCSS(css);
330
426
  const ruleCount = (css.match(/\{[^}]*\}/g) || []).length;
331
427
  return {
332
428
  element,
333
429
  classes: tastyClasses,
430
+ chunks,
334
431
  css: prettifiedCSS,
335
432
  size: css.length,
336
433
  rules: ruleCount,
@@ -370,7 +467,63 @@ export const tastyDebug = {
370
467
  const { root } = opts || {};
371
468
  injector.instance.resetMetrics({ root });
372
469
  },
373
- // 5) Get CSS for specific global types
470
+ // 5) Chunk breakdown (style chunking optimization)
471
+ /**
472
+ * Get breakdown of styles by chunk type.
473
+ *
474
+ * With style chunking enabled, styles are split into logical chunks
475
+ * (appearance, font, dimension, container, etc.) for better caching
476
+ * and CSS reuse.
477
+ *
478
+ * @param opts - Options including root document/shadow root
479
+ * @returns Breakdown by chunk type with class counts and CSS sizes
480
+ */
481
+ chunks(opts) {
482
+ const { root = document, log = false } = opts || {};
483
+ const breakdown = getChunkBreakdown(root);
484
+ const totalClasses = Object.values(breakdown.byChunk).reduce((sum, entry) => sum + entry.classes.length, 0);
485
+ if (log) {
486
+ console.group('🧩 Style Chunk Breakdown');
487
+ // Define display order matching CHUNK_NAMES
488
+ const displayOrder = [
489
+ CHUNK_NAMES.COMBINED, // non-chunked styles (e.g., @starting-style)
490
+ CHUNK_NAMES.APPEARANCE,
491
+ CHUNK_NAMES.FONT,
492
+ CHUNK_NAMES.DIMENSION,
493
+ CHUNK_NAMES.CONTAINER,
494
+ CHUNK_NAMES.SCROLLBAR,
495
+ CHUNK_NAMES.POSITION,
496
+ CHUNK_NAMES.MISC,
497
+ CHUNK_NAMES.SUBCOMPONENTS,
498
+ ];
499
+ // Show chunks in order
500
+ for (const chunkName of displayOrder) {
501
+ const data = breakdown.byChunk[chunkName];
502
+ if (data) {
503
+ const sizeStr = data.cssSize > 1024
504
+ ? `${(data.cssSize / 1024).toFixed(1)}KB`
505
+ : `${data.cssSize}B`;
506
+ console.log(` • ${chunkName}: ${data.classes.length} classes, ${sizeStr}, ${data.ruleCount} rules`);
507
+ }
508
+ }
509
+ // Show any unknown chunks
510
+ for (const [chunkName, data] of Object.entries(breakdown.byChunk)) {
511
+ if (!displayOrder.includes(chunkName)) {
512
+ const sizeStr = data.cssSize > 1024
513
+ ? `${(data.cssSize / 1024).toFixed(1)}KB`
514
+ : `${data.cssSize}B`;
515
+ console.log(` • ${chunkName}: ${data.classes.length} classes, ${sizeStr}, ${data.ruleCount} rules`);
516
+ }
517
+ }
518
+ console.log(`📊 Total: ${totalClasses} classes across ${breakdown.totalChunkTypes} chunk types`);
519
+ console.groupEnd();
520
+ }
521
+ return {
522
+ ...breakdown,
523
+ totalClasses,
524
+ };
525
+ },
526
+ // 6) Get CSS for specific global types
374
527
  getGlobalTypeCSS(type, opts) {
375
528
  const { root = document } = opts || {};
376
529
  const registry = injector.instance['sheetManager']?.getRegistry(root);
@@ -565,6 +718,8 @@ export const tastyDebug = {
565
718
  propertyCSSSize: Math.round(propertyData.size * scaleFactor),
566
719
  };
567
720
  }
721
+ // Get chunk breakdown
722
+ const chunkBreakdown = getChunkBreakdown(root);
568
723
  const summary = {
569
724
  activeClasses: cacheStatus.classes.active,
570
725
  unusedClasses: cacheStatus.classes.unused,
@@ -591,6 +746,7 @@ export const tastyDebug = {
591
746
  propertyCount: definitions.properties.length,
592
747
  keyframeCount: definitions.keyframes.length,
593
748
  cleanupSummary,
749
+ chunkBreakdown,
594
750
  };
595
751
  if (log) {
596
752
  console.group('🎨 Comprehensive Tasty Debug Summary');
@@ -602,7 +758,7 @@ export const tastyDebug = {
602
758
  console.log(` • Active CSS: ${summary.activeCSSSize} characters`);
603
759
  console.log(` • Unused CSS: ${summary.unusedCSSSize} characters`);
604
760
  console.log(` • Global CSS (injectGlobal): ${summary.globalCSSSize} characters (${summary.globalRuleCount} rules)`);
605
- console.log(` • Raw CSS (createGlobalStyle): ${summary.rawCSSSize} characters (${summary.rawRuleCount} rules)`);
761
+ console.log(` • Raw CSS (injectRawCSS/useRawCSS): ${summary.rawCSSSize} characters (${summary.rawRuleCount} rules)`);
606
762
  console.log(` • Keyframes CSS: ${summary.keyframesCSSSize} characters (${summary.keyframesRuleCount} rules)`);
607
763
  console.log(` • Property CSS: ${summary.propertyCSSSize} characters (${summary.propertyRuleCount} rules)`);
608
764
  // Show breakdown calculation
@@ -652,6 +808,30 @@ export const tastyDebug = {
652
808
  : '0';
653
809
  console.log(` • Overall cache hit rate: ${hitRate}%`);
654
810
  }
811
+ // Show chunk breakdown
812
+ if (summary.chunkBreakdown.totalChunkTypes > 0) {
813
+ console.log('🧩 Style Chunk Breakdown:');
814
+ const displayOrder = [
815
+ CHUNK_NAMES.COMBINED, // non-chunked styles (e.g., @starting-style)
816
+ CHUNK_NAMES.APPEARANCE,
817
+ CHUNK_NAMES.FONT,
818
+ CHUNK_NAMES.DIMENSION,
819
+ CHUNK_NAMES.CONTAINER,
820
+ CHUNK_NAMES.SCROLLBAR,
821
+ CHUNK_NAMES.POSITION,
822
+ CHUNK_NAMES.MISC,
823
+ CHUNK_NAMES.SUBCOMPONENTS,
824
+ ];
825
+ for (const chunkName of displayOrder) {
826
+ const data = summary.chunkBreakdown.byChunk[chunkName];
827
+ if (data) {
828
+ const sizeStr = data.cssSize > 1024
829
+ ? `${(data.cssSize / 1024).toFixed(1)}KB`
830
+ : `${data.cssSize}B`;
831
+ console.log(` • ${chunkName}: ${data.classes.length} classes, ${sizeStr}, ${data.ruleCount} rules`);
832
+ }
833
+ }
834
+ }
655
835
  console.log('🔍 Details:');
656
836
  console.log(' • Active classes:', summary.activeClasses);
657
837
  console.log(' • Unused classes:', summary.unusedClasses);
@@ -735,15 +915,15 @@ export const tastyDebug = {
735
915
  console.groupEnd();
736
916
  console.groupEnd();
737
917
  },
738
- // 11) Show help and usage examples
918
+ // 12) Show help and usage examples
739
919
  help() {
740
920
  console.group('🎨 tastyDebug - Quick Start Guide');
741
921
  console.log('💡 Essential commands:');
742
922
  console.log(' • tastyDebug.summary({ log: true }) - comprehensive overview');
923
+ console.log(' • tastyDebug.chunks({ log: true }) - style chunk breakdown');
743
924
  console.log(' • tastyDebug.log("active") - beautiful CSS display');
744
925
  console.log(' • tastyDebug.css("active") - get active CSS');
745
- console.log(' • tastyDebug.inspect(".my-element") - detailed element inspection');
746
- console.log(' • tastyDebug.global({ log: true }) - global CSS analysis');
926
+ console.log(' • tastyDebug.inspect(".my-element") - element inspection with chunk info');
747
927
  console.log(' • tastyDebug.cache() - cache status');
748
928
  console.log(' • tastyDebug.defs() - defined properties & keyframes');
749
929
  console.log(' • tastyDebug.pageCSS({ log: true }) - all page CSS');
@@ -752,7 +932,7 @@ export const tastyDebug = {
752
932
  console.log(' • "all" - all tasty CSS + global CSS');
753
933
  console.log(' • "active" - CSS for classes in DOM');
754
934
  console.log(' • "unused" - CSS for classes with refCount = 0');
755
- console.log(' • "global" - only global CSS (createGlobalStyle)');
935
+ console.log(' • "global" - only global CSS (injectGlobal)');
756
936
  console.log(' • "page" - ALL page CSS (including non-tasty)');
757
937
  console.log(' • "t123" - specific tasty class');
758
938
  console.log(' • [".my-selector"] - CSS selector');
@@ -762,6 +942,12 @@ export const tastyDebug = {
762
942
  console.log(' • { title: "Custom" } - custom title for log()');
763
943
  console.log(' • { root: shadowRoot } - target Shadow DOM');
764
944
  console.log(' • { prettify: false } - skip CSS formatting');
945
+ console.log('');
946
+ console.log('🧩 Style Chunking:');
947
+ console.log(' Elements have multiple classes (one per chunk: appearance, font, dimension, etc.)');
948
+ console.log(' • tastyDebug.chunks({ log: true }) - breakdown by chunk type');
949
+ console.log(' • tastyDebug.inspect() - shows which chunk each class belongs to');
950
+ console.log(' Chunk types: combined (non-chunked), appearance, font, dimension, container, scrollbar, position, misc, subcomponents');
765
951
  console.groupEnd();
766
952
  },
767
953
  };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ export { useStyles } from './useStyles.js';
9
+ export { useGlobalStyles } from './useGlobalStyles.js';
10
+ export { useRawCSS } from './useRawCSS.js';
11
+
12
+
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { useInsertionEffect, useMemo, useRef } from 'react';
9
+ import { injectGlobal } from '../injector/index.js';
10
+ import { renderStyles } from '../pipeline/index.js';
11
+ /**
12
+ * Hook to inject global styles for a given selector.
13
+ * Useful for styling elements by selector without generating classNames.
14
+ *
15
+ * @param selector - CSS selector to apply styles to (e.g., '.my-class', ':root', 'body')
16
+ * @param styles - Tasty styles object
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * function MyComponent() {
21
+ * useGlobalStyles('.card', {
22
+ * padding: '2x',
23
+ * radius: '1r',
24
+ * fill: '#white',
25
+ * });
26
+ *
27
+ * return <div className="card">Content</div>;
28
+ * }
29
+ * ```
30
+ */
31
+ export function useGlobalStyles(selector, styles) {
32
+ const disposeRef = useRef(null);
33
+ // Render styles with the provided selector
34
+ // Note: renderStyles overload with selector string returns StyleResult[] directly
35
+ const styleResults = useMemo(() => {
36
+ if (!styles)
37
+ return [];
38
+ // Validate selector - empty string would cause renderStyles to return RenderResult instead of StyleResult[]
39
+ if (!selector) {
40
+ if (process.env.NODE_ENV !== 'production') {
41
+ console.warn('[Tasty] useGlobalStyles: selector is required and cannot be empty. ' +
42
+ 'Styles will not be injected.');
43
+ }
44
+ return [];
45
+ }
46
+ const result = renderStyles(styles, selector);
47
+ // When a non-empty selector is provided, renderStyles returns StyleResult[]
48
+ return result;
49
+ }, [styles, selector]);
50
+ // Inject as global styles
51
+ useInsertionEffect(() => {
52
+ disposeRef.current?.();
53
+ if (styleResults.length > 0) {
54
+ const { dispose } = injectGlobal(styleResults);
55
+ disposeRef.current = dispose;
56
+ }
57
+ else {
58
+ disposeRef.current = null;
59
+ }
60
+ return () => {
61
+ disposeRef.current?.();
62
+ disposeRef.current = null;
63
+ };
64
+ }, [styleResults]);
65
+ }
66
+
67
+
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { useInsertionEffect, useMemo, useRef } from 'react';
9
+ import { injectRawCSS } from '../injector/index.js';
10
+ // Implementation
11
+ export function useRawCSS(cssOrFactory, depsOrOptions, options) {
12
+ // Detect which overload is being used
13
+ const isFactory = typeof cssOrFactory === 'function';
14
+ // Parse arguments based on overload
15
+ const deps = isFactory && Array.isArray(depsOrOptions) ? depsOrOptions : undefined;
16
+ const opts = isFactory
17
+ ? options
18
+ : depsOrOptions;
19
+ // Memoize CSS - for factory functions, use provided deps; for strings, use the string itself
20
+ const css = useMemo(() => isFactory ? cssOrFactory() : cssOrFactory, isFactory ? deps ?? [] : [cssOrFactory]);
21
+ const disposeRef = useRef(null);
22
+ useInsertionEffect(() => {
23
+ // Dispose previous injection if any
24
+ disposeRef.current?.();
25
+ if (!css.trim()) {
26
+ disposeRef.current = null;
27
+ return;
28
+ }
29
+ // Inject new CSS
30
+ const { dispose } = injectRawCSS(css, opts);
31
+ disposeRef.current = dispose;
32
+ // Cleanup on unmount or when css changes
33
+ return () => {
34
+ disposeRef.current?.();
35
+ disposeRef.current = null;
36
+ };
37
+ }, [css, opts?.root]);
38
+ }
39
+
40
+
@@ -0,0 +1,206 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { useInsertionEffect, useMemo, useRef } from 'react';
9
+ import { categorizeStyleKeys, CHUNK_NAMES, generateChunkCacheKey, renderStylesForChunk, } from '../chunks/index.js';
10
+ import { getGlobalKeyframes, hasGlobalKeyframes } from '../config.js';
11
+ import { allocateClassName, inject, keyframes } from '../injector/index.js';
12
+ import { extractAnimationNamesFromStyles, extractLocalKeyframes, filterUsedKeyframes, hasLocalKeyframes, mergeKeyframes, replaceAnimationNames, } from '../keyframes/index.js';
13
+ import { renderStyles } from '../pipeline/index.js';
14
+ import { stringifyStyles } from '../utils/styles.js';
15
+ /**
16
+ * Check if styles contain @starting-style rules.
17
+ *
18
+ * @starting-style CSS cannot be applied via multiple class names because
19
+ * of cascade - later rules override earlier ones. When @starting is detected,
20
+ * we disable chunking and use a single class name for all styles.
21
+ */
22
+ function containsStartingStyle(styleKey) {
23
+ return styleKey.includes('@starting');
24
+ }
25
+ /**
26
+ * Get keyframes that are actually used in styles.
27
+ * Returns null if no keyframes are used (fast path for zero overhead).
28
+ *
29
+ * Optimization order:
30
+ * 1. Check if any keyframes are defined (local or global) - if not, return null
31
+ * 2. Extract animation names from styles - if none, return null
32
+ * 3. Merge and filter keyframes to only used ones
33
+ */
34
+ function getUsedKeyframes(styles) {
35
+ // Fast path: no keyframes defined anywhere
36
+ const hasLocal = hasLocalKeyframes(styles);
37
+ const hasGlobal = hasGlobalKeyframes();
38
+ if (!hasLocal && !hasGlobal)
39
+ return null;
40
+ // Extract animation names from styles (not from rendered CSS - faster)
41
+ const usedNames = extractAnimationNamesFromStyles(styles);
42
+ if (usedNames.size === 0)
43
+ return null;
44
+ // Merge local and global keyframes
45
+ const local = hasLocal ? extractLocalKeyframes(styles) : null;
46
+ const global = hasGlobal ? getGlobalKeyframes() : null;
47
+ const allKeyframes = mergeKeyframes(local, global);
48
+ // Filter to only used keyframes
49
+ return filterUsedKeyframes(allKeyframes, usedNames);
50
+ }
51
+ /**
52
+ * Hook to generate CSS classes from Tasty styles.
53
+ * Handles style rendering, className allocation, and CSS injection.
54
+ *
55
+ * Uses chunking to split styles into logical groups for better caching
56
+ * and CSS reuse across components.
57
+ *
58
+ * @example
59
+ * ```tsx
60
+ * function MyComponent() {
61
+ * const { className } = useStyles({
62
+ * padding: '2x',
63
+ * fill: '#purple',
64
+ * radius: '1r',
65
+ * });
66
+ *
67
+ * return <div className={className}>Styled content</div>;
68
+ * }
69
+ * ```
70
+ */
71
+ export function useStyles(styles) {
72
+ // Array of dispose functions for each chunk
73
+ const disposeRef = useRef([]);
74
+ // Store styles by their stringified key to avoid recomputing when only reference changes
75
+ const stylesRef = useRef({
76
+ key: '',
77
+ styles: undefined,
78
+ });
79
+ // Compute style key - this is a primitive string that captures style content
80
+ const styleKey = useMemo(() => {
81
+ if (!styles || Object.keys(styles).length === 0) {
82
+ return '';
83
+ }
84
+ return stringifyStyles(styles);
85
+ }, [styles]);
86
+ // Update ref when styleKey changes (content actually changed)
87
+ if (stylesRef.current.key !== styleKey) {
88
+ stylesRef.current = { key: styleKey, styles };
89
+ }
90
+ // Process chunks: categorize, generate cache keys, render, and allocate classNames
91
+ // Only depends on styleKey (primitive), not styles object reference
92
+ const processedChunks = useMemo(() => {
93
+ const currentStyles = stylesRef.current.styles;
94
+ if (!styleKey || !currentStyles) {
95
+ return [];
96
+ }
97
+ // Disable chunking for styles containing @starting-style rules.
98
+ // @starting-style CSS cannot work with multiple class names due to cascade -
99
+ // the rules would override each other instead of combining properly.
100
+ if (containsStartingStyle(styleKey)) {
101
+ const renderResult = renderStyles(currentStyles);
102
+ if (renderResult.rules.length === 0) {
103
+ return [];
104
+ }
105
+ const { className } = allocateClassName(styleKey);
106
+ return [
107
+ {
108
+ name: CHUNK_NAMES.COMBINED,
109
+ styleKeys: Object.keys(currentStyles),
110
+ cacheKey: styleKey,
111
+ renderResult,
112
+ className,
113
+ },
114
+ ];
115
+ }
116
+ // Categorize style keys into chunks
117
+ const chunkMap = categorizeStyleKeys(currentStyles);
118
+ const chunks = [];
119
+ for (const [chunkName, chunkStyleKeys] of chunkMap) {
120
+ // Skip empty chunks
121
+ if (chunkStyleKeys.length === 0) {
122
+ continue;
123
+ }
124
+ // Generate cache key for this chunk
125
+ const cacheKey = generateChunkCacheKey(currentStyles, chunkName, chunkStyleKeys);
126
+ // Render styles for this chunk
127
+ const renderResult = renderStylesForChunk(currentStyles, chunkName, chunkStyleKeys);
128
+ // Skip chunks with no rules
129
+ if (renderResult.rules.length === 0) {
130
+ continue;
131
+ }
132
+ // Allocate className for this chunk (safe in render phase)
133
+ const { className } = allocateClassName(cacheKey);
134
+ chunks.push({
135
+ name: chunkName,
136
+ styleKeys: chunkStyleKeys,
137
+ cacheKey,
138
+ renderResult,
139
+ className,
140
+ });
141
+ }
142
+ return chunks;
143
+ }, [styleKey]);
144
+ // Inject styles in insertion effect (avoids render phase side effects)
145
+ useInsertionEffect(() => {
146
+ // Cleanup all previous disposals
147
+ disposeRef.current.forEach((dispose) => dispose?.());
148
+ disposeRef.current = [];
149
+ // Fast path: no chunks to inject
150
+ if (processedChunks.length === 0) {
151
+ return;
152
+ }
153
+ const currentStyles = stylesRef.current.styles;
154
+ // Get keyframes that are actually used (returns null if none - zero overhead)
155
+ const usedKeyframes = currentStyles
156
+ ? getUsedKeyframes(currentStyles)
157
+ : null;
158
+ // Inject keyframes and build name map (only if we have keyframes)
159
+ let nameMap = null;
160
+ if (usedKeyframes) {
161
+ nameMap = new Map();
162
+ for (const [name, steps] of Object.entries(usedKeyframes)) {
163
+ const result = keyframes(steps, { name });
164
+ const injectedName = result.toString();
165
+ // Only add to map if name differs (optimization for replacement check)
166
+ if (injectedName !== name) {
167
+ nameMap.set(name, injectedName);
168
+ }
169
+ disposeRef.current.push(result.dispose);
170
+ }
171
+ // Clear map if no replacements needed
172
+ if (nameMap.size === 0) {
173
+ nameMap = null;
174
+ }
175
+ }
176
+ // Inject each chunk
177
+ for (const chunk of processedChunks) {
178
+ if (chunk.renderResult.rules.length > 0) {
179
+ // Replace animation names only if needed
180
+ const rulesToInject = nameMap
181
+ ? chunk.renderResult.rules.map((rule) => ({
182
+ ...rule,
183
+ declarations: replaceAnimationNames(rule.declarations, nameMap),
184
+ }))
185
+ : chunk.renderResult.rules;
186
+ const { dispose } = inject(rulesToInject, {
187
+ cacheKey: chunk.cacheKey,
188
+ });
189
+ disposeRef.current.push(dispose);
190
+ }
191
+ }
192
+ return () => {
193
+ disposeRef.current.forEach((dispose) => dispose?.());
194
+ disposeRef.current = [];
195
+ };
196
+ }, [processedChunks]);
197
+ // Combine all chunk classNames
198
+ const className = useMemo(() => {
199
+ return processedChunks.map((chunk) => chunk.className).join(' ');
200
+ }, [processedChunks]);
201
+ return {
202
+ className,
203
+ };
204
+ }
205
+
206
+