@cube-dev/ui-kit 0.98.8 → 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 (676) hide show
  1. package/CHANGELOG.md +44 -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 +25 -20
  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 -10
  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 +12 -0
  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 -128
  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/ItemActionContext.d.ts +1 -1
  586. package/types/components/actions/Menu/styled.d.ts +4893 -4883
  587. package/types/components/actions/use-action.d.ts +1 -1
  588. package/types/components/content/List/SectionHeading.d.ts +251 -251
  589. package/types/components/content/Text.d.ts +1487 -1487
  590. package/types/components/fields/DatePicker/DatePickerElement.d.ts +251 -251
  591. package/types/components/fields/Select/Select.d.ts +828 -826
  592. package/types/components/fields/Slider/elements.d.ts +4968 -4956
  593. package/types/components/overlays/AlertDialog/AlertDialog.d.ts +1 -1
  594. package/types/components/status/Spin/Cube.d.ts +1 -1
  595. package/types/components/status/Spin/SpinsContainer.d.ts +6 -3
  596. package/types/icons/SemanticQueryIcon.d.ts +4 -0
  597. package/types/icons/index.d.ts +1 -0
  598. package/types/index.d.ts +1 -4
  599. package/types/provider.d.ts +1 -2
  600. package/types/stories/components/StyledButton.d.ts +1 -1
  601. package/types/stories/playground/PlaygroundEditor.d.ts +6 -0
  602. package/types/stories/playground/PlaygroundLayout.d.ts +8 -0
  603. package/types/stories/playground/PlaygroundOutput.d.ts +5 -0
  604. package/types/stories/playground/PlaygroundPreview.d.ts +6 -0
  605. package/types/stories/playground/components/Button.d.ts +11 -0
  606. package/types/stories/playground/components/Card.d.ts +7 -0
  607. package/types/stories/playground/components/ScrollProgress.d.ts +5 -0
  608. package/types/stories/playground/examples.d.ts +7 -0
  609. package/types/tasty/chunks/cacheKey.d.ts +26 -0
  610. package/types/tasty/chunks/definitions.d.ts +75 -0
  611. package/types/tasty/chunks/index.d.ts +4 -0
  612. package/types/tasty/chunks/renderChunk.d.ts +25 -0
  613. package/types/tasty/config.d.ts +171 -0
  614. package/types/tasty/debug.d.ts +35 -0
  615. package/types/tasty/hooks/index.d.ts +4 -0
  616. package/types/tasty/hooks/useGlobalStyles.d.ts +22 -0
  617. package/types/tasty/hooks/useRawCSS.d.ts +50 -0
  618. package/types/tasty/hooks/useStyles.d.ts +35 -0
  619. package/types/tasty/index.d.ts +14 -4
  620. package/types/tasty/injector/index.d.ts +30 -19
  621. package/types/tasty/injector/injector.d.ts +19 -13
  622. package/types/tasty/injector/sheet-manager.d.ts +25 -1
  623. package/types/tasty/injector/types.d.ts +23 -2
  624. package/types/tasty/keyframes/index.d.ts +49 -0
  625. package/types/tasty/parser/parser.d.ts +4 -0
  626. package/types/tasty/parser/types.d.ts +1 -0
  627. package/types/tasty/pipeline/conditions.d.ts +243 -0
  628. package/types/tasty/pipeline/exclusive.d.ts +103 -0
  629. package/types/tasty/pipeline/index.d.ts +67 -0
  630. package/types/tasty/pipeline/materialize.d.ts +162 -0
  631. package/types/tasty/pipeline/parseStateKey.d.ts +20 -0
  632. package/types/tasty/pipeline/simplify.d.ts +28 -0
  633. package/types/tasty/plugins/index.d.ts +17 -0
  634. package/types/tasty/plugins/okhsl-plugin.d.ts +45 -0
  635. package/types/tasty/plugins/types.d.ts +34 -0
  636. package/types/tasty/states/index.d.ts +101 -0
  637. package/types/tasty/static/index.d.ts +39 -0
  638. package/types/tasty/static/tastyStatic.d.ts +41 -0
  639. package/types/tasty/static/types.d.ts +44 -0
  640. package/types/tasty/styles/fill.d.ts +11 -1
  641. package/types/tasty/styles/margin.d.ts +3 -1
  642. package/types/tasty/styles/padding.d.ts +3 -1
  643. package/types/tasty/styles/radius.d.ts +2 -10
  644. package/types/tasty/styles/types.d.ts +24 -3
  645. package/types/tasty/tasty.d.ts +892 -840
  646. package/types/tasty/utils/styles.d.ts +50 -6
  647. package/types/tasty/utils/typography.d.ts +32 -0
  648. package/types/tasty/zero/babel.d.ts +63 -0
  649. package/types/tasty/zero/css-writer.d.ts +41 -0
  650. package/types/tasty/zero/extractor.d.ts +40 -0
  651. package/types/tasty/zero/index.d.ts +18 -0
  652. package/types/tasty/zero/next.d.ts +57 -0
  653. package/types/tokens/base.d.ts +8 -0
  654. package/types/tokens/colors.d.ts +6 -0
  655. package/types/tokens/index.d.ts +41 -0
  656. package/types/tokens/layout.d.ts +7 -0
  657. package/types/tokens/shadows.d.ts +12 -0
  658. package/types/tokens/sizes.d.ts +25 -0
  659. package/types/tokens/spacing.d.ts +8 -0
  660. package/types/tokens/typography.d.ts +30 -0
  661. package/es/components/navigation/LegacyTabs/LegacyTabs.js +0 -275
  662. package/es/components/other/Base64Upload/Base64Upload.js +0 -103
  663. package/es/icons/add-new-icon.js +0 -129
  664. package/es/tasty/providers/BreakpointsProvider.js +0 -16
  665. package/es/tasty/utils/getModCombinations.js +0 -38
  666. package/es/tasty/utils/renderStyles.js +0 -1050
  667. package/es/tasty/utils/responsive.js +0 -60
  668. package/es/tokens.js +0 -309
  669. package/types/components/navigation/LegacyTabs/LegacyTabs.d.ts +0 -43
  670. package/types/components/other/Base64Upload/Base64Upload.d.ts +0 -5
  671. package/types/icons/add-new-icon.d.ts +0 -2
  672. package/types/tasty/providers/BreakpointsProvider.d.ts +0 -8
  673. package/types/tasty/utils/getModCombinations.d.ts +0 -9
  674. package/types/tasty/utils/renderStyles.d.ts +0 -41
  675. package/types/tasty/utils/responsive.d.ts +0 -8
  676. package/types/tokens.d.ts +0 -221
@@ -0,0 +1,280 @@
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
+ /**
9
+ * Tasty Configuration Module
10
+ *
11
+ * Centralizes all tasty configuration, including:
12
+ * - Style injector settings (nonce, cleanup thresholds, etc.)
13
+ * - Global predefined states for advanced state mapping
14
+ * - stylesGenerated flag that locks configuration after first style generation
15
+ *
16
+ * Configuration must be done BEFORE any styles are generated.
17
+ * After the first `inject()` call, configuration is locked and attempts to
18
+ * reconfigure will emit a warning and be ignored.
19
+ */
20
+ import { StyleInjector } from './injector/injector.js';
21
+ import { setGlobalPredefinedStates } from './states/index.js';
22
+ import { isDevEnv } from './utils/isDevEnv.js';
23
+ import { CUSTOM_UNITS, getGlobalFuncs, getGlobalParser } from './utils/styles.js';
24
+ // Warnings tracking to avoid duplicates
25
+ const emittedWarnings = new Set();
26
+ const devMode = isDevEnv();
27
+ /**
28
+ * Emit a warning only once
29
+ */
30
+ function warnOnce(key, message) {
31
+ if (devMode && !emittedWarnings.has(key)) {
32
+ emittedWarnings.add(key);
33
+ console.warn(message);
34
+ }
35
+ }
36
+ // ============================================================================
37
+ // Configuration State
38
+ // ============================================================================
39
+ // Track whether styles have been generated (locks configuration)
40
+ let stylesGenerated = false;
41
+ // Current configuration (null until first configure() or auto-configured on first use)
42
+ let currentConfig = null;
43
+ // Global keyframes storage (null = no keyframes configured, empty object checked via hasGlobalKeyframes)
44
+ let globalKeyframes = null;
45
+ // Global injector instance key
46
+ const GLOBAL_INJECTOR_KEY = '__TASTY_GLOBAL_INJECTOR__';
47
+ /**
48
+ * Detect if we're running in a test environment
49
+ */
50
+ export function isTestEnvironment() {
51
+ // Check Node.js environment
52
+ if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {
53
+ return true;
54
+ }
55
+ // Check for Jest globals (safely)
56
+ if (typeof global !== 'undefined') {
57
+ const g = global;
58
+ if (g.jest || g.expect || g.describe || g.it) {
59
+ return true;
60
+ }
61
+ }
62
+ // Check for jsdom environment (common in tests)
63
+ if (typeof window !== 'undefined' &&
64
+ window.navigator?.userAgent?.includes('jsdom')) {
65
+ return true;
66
+ }
67
+ // Check for other test runners
68
+ if (typeof globalThis !== 'undefined') {
69
+ const gt = globalThis;
70
+ if (gt.vitest || gt.mocha) {
71
+ return true;
72
+ }
73
+ }
74
+ return false;
75
+ }
76
+ /**
77
+ * Create default configuration with optional test environment detection
78
+ */
79
+ function createDefaultConfig(isTest) {
80
+ return {
81
+ maxRulesPerSheet: 8192,
82
+ unusedStylesThreshold: 500,
83
+ bulkCleanupDelay: 5000,
84
+ idleCleanup: true,
85
+ forceTextInjection: isTest ?? false,
86
+ devMode: isDevEnv(),
87
+ bulkCleanupBatchRatio: 0.5,
88
+ unusedStylesMinAgeMs: 10000,
89
+ };
90
+ }
91
+ // ============================================================================
92
+ // stylesGenerated Flag Management
93
+ // ============================================================================
94
+ /**
95
+ * Mark that styles have been generated (called by injector on first inject)
96
+ * This locks the configuration - no further changes allowed.
97
+ */
98
+ export function markStylesGenerated() {
99
+ stylesGenerated = true;
100
+ }
101
+ /**
102
+ * Check if styles have been generated (configuration is locked)
103
+ */
104
+ export function hasStylesGenerated() {
105
+ return stylesGenerated;
106
+ }
107
+ /**
108
+ * Reset styles generated flag (for testing only)
109
+ */
110
+ export function resetStylesGenerated() {
111
+ stylesGenerated = false;
112
+ emittedWarnings.clear();
113
+ }
114
+ // ============================================================================
115
+ // Global Keyframes Management
116
+ // ============================================================================
117
+ /**
118
+ * Check if any global keyframes are configured.
119
+ * Fast path: returns false if no keyframes were ever set.
120
+ */
121
+ export function hasGlobalKeyframes() {
122
+ return globalKeyframes !== null && Object.keys(globalKeyframes).length > 0;
123
+ }
124
+ /**
125
+ * Get global keyframes configuration.
126
+ * Returns null if no keyframes configured (fast path for zero-overhead).
127
+ */
128
+ export function getGlobalKeyframes() {
129
+ return globalKeyframes;
130
+ }
131
+ /**
132
+ * Set global keyframes (called from configure).
133
+ * Internal use only.
134
+ */
135
+ function setGlobalKeyframes(keyframes) {
136
+ if (stylesGenerated) {
137
+ warnOnce('keyframes-after-styles', `[Tasty] Cannot update keyframes after styles have been generated.\n` +
138
+ `The new keyframes will be ignored.`);
139
+ return;
140
+ }
141
+ globalKeyframes = keyframes;
142
+ }
143
+ /**
144
+ * Check if configuration is locked (styles have been generated)
145
+ */
146
+ export function isConfigLocked() {
147
+ return stylesGenerated;
148
+ }
149
+ // ============================================================================
150
+ // Configuration API
151
+ // ============================================================================
152
+ /**
153
+ * Configure the Tasty style system.
154
+ *
155
+ * Must be called BEFORE any styles are generated (before first render that uses tasty).
156
+ * After styles are generated, configuration is locked and calls to configure() will
157
+ * emit a warning and be ignored.
158
+ *
159
+ * @example
160
+ * ```ts
161
+ * import { configure } from '@cube-dev/ui-kit';
162
+ *
163
+ * // Configure before app renders
164
+ * configure({
165
+ * nonce: 'abc123',
166
+ * states: {
167
+ * '@mobile': '@media(w < 768px)',
168
+ * '@dark': '@root(theme=dark)',
169
+ * },
170
+ * });
171
+ * ```
172
+ */
173
+ export function configure(config = {}) {
174
+ if (stylesGenerated) {
175
+ warnOnce('configure-after-styles', `[Tasty] Cannot call configure() after styles have been generated.\n` +
176
+ `Configuration must be done before the first render. The configuration will be ignored.`);
177
+ return;
178
+ }
179
+ // Collect merged values from plugins first, then override with direct config
180
+ let mergedStates = {};
181
+ let mergedUnits = {};
182
+ let mergedFuncs = {};
183
+ // Process plugins in order
184
+ if (config.plugins) {
185
+ for (const plugin of config.plugins) {
186
+ if (plugin.states) {
187
+ mergedStates = { ...mergedStates, ...plugin.states };
188
+ }
189
+ if (plugin.units) {
190
+ mergedUnits = { ...mergedUnits, ...plugin.units };
191
+ }
192
+ if (plugin.funcs) {
193
+ mergedFuncs = { ...mergedFuncs, ...plugin.funcs };
194
+ }
195
+ }
196
+ }
197
+ // Direct config overrides plugins
198
+ if (config.states) {
199
+ mergedStates = { ...mergedStates, ...config.states };
200
+ }
201
+ if (config.units) {
202
+ mergedUnits = { ...mergedUnits, ...config.units };
203
+ }
204
+ if (config.funcs) {
205
+ mergedFuncs = { ...mergedFuncs, ...config.funcs };
206
+ }
207
+ // Handle predefined states
208
+ if (Object.keys(mergedStates).length > 0) {
209
+ setGlobalPredefinedStates(mergedStates);
210
+ }
211
+ // Handle parser configuration (merge semantics - extend, not replace)
212
+ const parser = getGlobalParser();
213
+ if (config.parserCacheSize !== undefined) {
214
+ parser.updateOptions({ cacheSize: config.parserCacheSize });
215
+ }
216
+ if (Object.keys(mergedUnits).length > 0) {
217
+ // Merge with existing units
218
+ const currentUnits = parser.getUnits() ?? CUSTOM_UNITS;
219
+ parser.setUnits({ ...currentUnits, ...mergedUnits });
220
+ }
221
+ if (Object.keys(mergedFuncs).length > 0) {
222
+ // Merge with existing funcs
223
+ const currentFuncs = getGlobalFuncs();
224
+ const finalFuncs = { ...currentFuncs, ...mergedFuncs };
225
+ parser.setFuncs(finalFuncs);
226
+ // Also update the global registry so customFunc() continues to work
227
+ Object.assign(currentFuncs, mergedFuncs);
228
+ }
229
+ // Handle keyframes
230
+ if (config.keyframes) {
231
+ setGlobalKeyframes(config.keyframes);
232
+ }
233
+ // Create config without states, parser options, plugins, and keyframes (handled separately)
234
+ const { states: _states, parserCacheSize: _parserCacheSize, units: _units, funcs: _funcs, plugins: _plugins, keyframes: _keyframes, ...injectorConfig } = config;
235
+ const fullConfig = {
236
+ ...createDefaultConfig(),
237
+ ...currentConfig,
238
+ ...injectorConfig,
239
+ };
240
+ // Store the config
241
+ currentConfig = fullConfig;
242
+ // Create/replace the global injector
243
+ const storage = typeof window !== 'undefined' ? window : globalThis;
244
+ storage[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
245
+ }
246
+ /**
247
+ * Get the current configuration.
248
+ * If not configured, returns default configuration.
249
+ */
250
+ export function getConfig() {
251
+ if (!currentConfig) {
252
+ currentConfig = createDefaultConfig(isTestEnvironment());
253
+ }
254
+ return currentConfig;
255
+ }
256
+ /**
257
+ * Get the global injector instance.
258
+ * Auto-configures with defaults if not already configured.
259
+ */
260
+ export function getGlobalInjector() {
261
+ const storage = typeof window !== 'undefined' ? window : globalThis;
262
+ if (!storage[GLOBAL_INJECTOR_KEY]) {
263
+ configure();
264
+ }
265
+ return storage[GLOBAL_INJECTOR_KEY];
266
+ }
267
+ /**
268
+ * Reset configuration (for testing only).
269
+ * Clears the global injector and allows reconfiguration.
270
+ */
271
+ export function resetConfig() {
272
+ stylesGenerated = false;
273
+ currentConfig = null;
274
+ globalKeyframes = null;
275
+ emittedWarnings.clear();
276
+ const storage = typeof window !== 'undefined' ? window : globalThis;
277
+ delete storage[GLOBAL_INJECTOR_KEY];
278
+ }
279
+
280
+
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.8
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
+