@cube-dev/ui-kit 0.0.0-canary-8ca04ef → 0.0.0-canary-dae9b2f

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 (670) hide show
  1. package/es/_internal/hooks/index.js +10 -10
  2. package/es/_internal/hooks/use-chained-callback.js +2 -2
  3. package/es/_internal/hooks/use-debounced-value.js +1 -1
  4. package/es/_internal/hooks/use-deprecation-warning.js +2 -2
  5. package/es/_internal/hooks/use-effect-once.js +1 -1
  6. package/es/_internal/hooks/use-event.js +2 -2
  7. package/es/_internal/hooks/use-is-first-render.js +1 -1
  8. package/es/_internal/hooks/use-sync-ref.js +2 -2
  9. package/es/_internal/hooks/use-timer/index.js +3 -3
  10. package/es/_internal/hooks/use-timer/timer.js +1 -1
  11. package/es/_internal/hooks/use-timer/use-timer.js +3 -3
  12. package/es/_internal/hooks/use-update-effect.js +2 -2
  13. package/es/_internal/hooks/use-warn.js +3 -3
  14. package/es/_internal/index.js +2 -2
  15. package/es/components/Block.js +2 -2
  16. package/es/components/CollectionItem.js +3 -3
  17. package/es/components/GlobalStyles.js +65 -56
  18. package/es/components/GridProvider.js +4 -4
  19. package/es/components/HiddenInput.js +2 -2
  20. package/es/components/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +64 -22
  22. package/es/components/actions/Action/Action.js +3 -3
  23. package/es/components/actions/Button/Button.js +12 -12
  24. package/es/components/actions/Button/index.js +2 -2
  25. package/es/components/actions/ButtonGroup/ButtonGroup.js +4 -4
  26. package/es/components/actions/CommandMenu/CommandMenu.js +11 -11
  27. package/es/components/actions/CommandMenu/index.js +2 -2
  28. package/es/components/actions/CommandMenu/styled.js +2 -2
  29. package/es/components/actions/ItemAction/ItemAction.js +9 -9
  30. package/es/components/actions/ItemAction/index.js +2 -2
  31. package/es/components/actions/ItemActionContext.js +1 -1
  32. package/es/components/actions/ItemButton/ItemButton.js +9 -9
  33. package/es/components/actions/ItemButton/index.js +2 -2
  34. package/es/components/actions/Link/Link.js +2 -2
  35. package/es/components/actions/Menu/Menu.js +10 -10
  36. package/es/components/actions/Menu/MenuItem.js +7 -7
  37. package/es/components/actions/Menu/MenuSection.js +4 -4
  38. package/es/components/actions/Menu/MenuTrigger.js +6 -6
  39. package/es/components/actions/Menu/SubMenuTrigger.js +6 -6
  40. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  41. package/es/components/actions/Menu/context.js +1 -1
  42. package/es/components/actions/Menu/index.js +10 -10
  43. package/es/components/actions/Menu/styled.js +5 -5
  44. package/es/components/actions/index.js +13 -13
  45. package/es/components/actions/use-action.js +7 -7
  46. package/es/components/actions/use-anchored-menu.js +6 -6
  47. package/es/components/actions/use-context-menu.js +6 -6
  48. package/es/components/content/ActiveZone/ActiveZone.js +4 -4
  49. package/es/components/content/Alert/Alert.js +4 -4
  50. package/es/components/content/Alert/index.js +2 -2
  51. package/es/components/content/Alert/types.js +1 -1
  52. package/es/components/content/Alert/use-alert.js +3 -3
  53. package/es/components/content/Avatar/Avatar.js +2 -2
  54. package/es/components/content/Badge/Badge.js +4 -4
  55. package/es/components/content/Card/Card.js +2 -2
  56. package/es/components/content/Content.js +3 -3
  57. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +8 -8
  58. package/es/components/content/CopyPasteBlock/index.js +2 -2
  59. package/es/components/content/CopySnippet/CopySnippet.js +9 -9
  60. package/es/components/content/CopySnippet/index.js +2 -2
  61. package/es/components/content/Disclosure/Disclosure.js +6 -6
  62. package/es/components/content/Disclosure/index.js +2 -2
  63. package/es/components/content/Divider.js +3 -3
  64. package/es/components/content/Footer.js +3 -3
  65. package/es/components/content/Header.js +3 -3
  66. package/es/components/content/HotKeys/HotKeys.js +5 -5
  67. package/es/components/content/HotKeys/index.js +2 -2
  68. package/es/components/content/Item/Item.js +24 -20
  69. package/es/components/content/Item/index.js +3 -3
  70. package/es/components/content/ItemBadge/ItemBadge.js +8 -8
  71. package/es/components/content/ItemBadge/index.js +2 -2
  72. package/es/components/content/Layout/GridLayout.js +13 -13
  73. package/es/components/content/Layout/Layout.js +6 -7
  74. package/es/components/content/Layout/LayoutBlock.js +3 -4
  75. package/es/components/content/Layout/LayoutCenter.js +3 -3
  76. package/es/components/content/Layout/LayoutContainer.js +4 -4
  77. package/es/components/content/Layout/LayoutContent.js +5 -6
  78. package/es/components/content/Layout/LayoutContext.js +1 -1
  79. package/es/components/content/Layout/LayoutFlex.js +3 -4
  80. package/es/components/content/Layout/LayoutFooter.js +3 -4
  81. package/es/components/content/Layout/LayoutGrid.js +3 -4
  82. package/es/components/content/Layout/LayoutHeader.js +7 -8
  83. package/es/components/content/Layout/LayoutPane.js +7 -8
  84. package/es/components/content/Layout/LayoutPanel.js +9 -10
  85. package/es/components/content/Layout/LayoutPanelHeader.js +7 -7
  86. package/es/components/content/Layout/LayoutToolbar.js +3 -4
  87. package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  88. package/es/components/content/Layout/index.js +16 -16
  89. package/es/components/content/Layout/utils.js +1 -1
  90. package/es/components/content/List/SectionHeading.js +3 -3
  91. package/es/components/content/List/index.js +2 -2
  92. package/es/components/content/Paragraph.js +3 -3
  93. package/es/components/content/Placeholder/Placeholder.js +2 -2
  94. package/es/components/content/PrismCode/PrismCode.js +7 -7
  95. package/es/components/content/PrismCode/prismSetup.js +1 -1
  96. package/es/components/content/PrismDiffCode/PrismDiffCode.js +2 -2
  97. package/es/components/content/Result/Result.js +4 -4
  98. package/es/components/content/Skeleton/Skeleton.js +5 -5
  99. package/es/components/content/Tag/Tag.js +4 -4
  100. package/es/components/content/Text.js +3 -3
  101. package/es/components/content/TextItem/TextItem.js +5 -5
  102. package/es/components/content/TextItem/index.js +2 -2
  103. package/es/components/content/Title.js +4 -4
  104. package/es/components/content/highlightText.js +2 -2
  105. package/es/components/content/use-auto-tooltip.js +2 -2
  106. package/es/components/fields/Checkbox/Checkbox.js +12 -12
  107. package/es/components/fields/Checkbox/CheckboxGroup.js +7 -7
  108. package/es/components/fields/Checkbox/context.js +1 -1
  109. package/es/components/fields/Checkbox/index.js +3 -3
  110. package/es/components/fields/ComboBox/ComboBox.js +18 -18
  111. package/es/components/fields/ComboBox/index.js +2 -2
  112. package/es/components/fields/DatePicker/DateInput.js +10 -10
  113. package/es/components/fields/DatePicker/DateInputBase.js +6 -6
  114. package/es/components/fields/DatePicker/DatePicker.js +14 -14
  115. package/es/components/fields/DatePicker/DatePickerButton.js +4 -4
  116. package/es/components/fields/DatePicker/DatePickerElement.js +3 -3
  117. package/es/components/fields/DatePicker/DatePickerInput.js +5 -5
  118. package/es/components/fields/DatePicker/DatePickerSegment.js +2 -2
  119. package/es/components/fields/DatePicker/DateRangePicker.js +15 -15
  120. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +15 -15
  121. package/es/components/fields/DatePicker/TimeInput.js +9 -9
  122. package/es/components/fields/DatePicker/index.js +8 -8
  123. package/es/components/fields/DatePicker/intl.js +1 -1
  124. package/es/components/fields/DatePicker/parseDate.js +1 -1
  125. package/es/components/fields/DatePicker/props.js +1 -1
  126. package/es/components/fields/DatePicker/types.js +1 -1
  127. package/es/components/fields/DatePicker/utils.js +1 -1
  128. package/es/components/fields/FileInput/FileInput.js +6 -6
  129. package/es/components/fields/FilterListBox/FilterListBox.js +10 -10
  130. package/es/components/fields/FilterListBox/index.js +2 -2
  131. package/es/components/fields/FilterPicker/FilterPicker.js +14 -14
  132. package/es/components/fields/FilterPicker/index.js +2 -2
  133. package/es/components/fields/Input/Input.js +6 -6
  134. package/es/components/fields/Input/index.js +2 -2
  135. package/es/components/fields/ListBox/ListBox.js +14 -14
  136. package/es/components/fields/ListBox/index.js +2 -2
  137. package/es/components/fields/NumberInput/NumberInput.js +8 -8
  138. package/es/components/fields/NumberInput/StepButton.js +4 -4
  139. package/es/components/fields/PasswordInput/PasswordInput.js +8 -8
  140. package/es/components/fields/Picker/Picker.js +13 -13
  141. package/es/components/fields/Picker/index.js +2 -2
  142. package/es/components/fields/RadioGroup/Radio.js +10 -10
  143. package/es/components/fields/RadioGroup/RadioGroup.js +7 -7
  144. package/es/components/fields/RadioGroup/context.js +1 -1
  145. package/es/components/fields/RadioGroup/index.js +3 -3
  146. package/es/components/fields/SearchInput/SearchInput.js +8 -8
  147. package/es/components/fields/SearchInput/index.js +2 -2
  148. package/es/components/fields/Select/Select.js +20 -20
  149. package/es/components/fields/Select/index.js +2 -2
  150. package/es/components/fields/Slider/Gradation.js +2 -2
  151. package/es/components/fields/Slider/Header.js +1 -1
  152. package/es/components/fields/Slider/RangeSlider.js +5 -5
  153. package/es/components/fields/Slider/Slider.js +7 -7
  154. package/es/components/fields/Slider/SliderBase.js +6 -6
  155. package/es/components/fields/Slider/SliderInput.js +2 -2
  156. package/es/components/fields/Slider/SliderThumb.js +3 -3
  157. package/es/components/fields/Slider/SliderTrack.js +2 -2
  158. package/es/components/fields/Slider/elements.js +2 -2
  159. package/es/components/fields/Slider/index.js +4 -4
  160. package/es/components/fields/Slider/types.js +1 -1
  161. package/es/components/fields/Switch/Switch.js +11 -11
  162. package/es/components/fields/Switch/index.js +2 -2
  163. package/es/components/fields/TextArea/TextArea.js +7 -7
  164. package/es/components/fields/TextArea/index.js +2 -2
  165. package/es/components/fields/TextInput/TextInput.js +6 -6
  166. package/es/components/fields/TextInput/TextInputBase.js +9 -9
  167. package/es/components/fields/TextInput/index.js +3 -3
  168. package/es/components/fields/TextInputMapper/TextInputMapper.js +14 -14
  169. package/es/components/fields/TextInputMapper/index.js +2 -2
  170. package/es/components/fields/index.js +20 -20
  171. package/es/components/form/FieldWrapper/FieldWrapper.js +9 -9
  172. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  173. package/es/components/form/FieldWrapper/index.js +4 -4
  174. package/es/components/form/FieldWrapper/types.js +1 -1
  175. package/es/components/form/Form/Field.js +6 -6
  176. package/es/components/form/Form/Form.js +6 -6
  177. package/es/components/form/Form/ResetButton/ResetButton.js +6 -6
  178. package/es/components/form/Form/ResetButton/index.js +2 -2
  179. package/es/components/form/Form/SubmitButton/SubmitButton.js +4 -4
  180. package/es/components/form/Form/SubmitButton/index.js +2 -2
  181. package/es/components/form/Form/SubmitError.js +3 -3
  182. package/es/components/form/Form/index.js +11 -11
  183. package/es/components/form/Form/types.js +1 -1
  184. package/es/components/form/Form/use-field/index.js +4 -4
  185. package/es/components/form/Form/use-field/types.js +1 -1
  186. package/es/components/form/Form/use-field/use-field-props.js +6 -6
  187. package/es/components/form/Form/use-field/use-field.js +4 -4
  188. package/es/components/form/Form/use-form.js +3 -3
  189. package/es/components/form/Form/validation.js +1 -1
  190. package/es/components/form/Label.js +3 -3
  191. package/es/components/form/index.js +5 -5
  192. package/es/components/form/wrapper.js +3 -3
  193. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  194. package/es/components/helpers/DisplayTransition/index.js +2 -2
  195. package/es/components/helpers/IconSwitch/IconSwitch.js +3 -3
  196. package/es/components/helpers/index.js +3 -3
  197. package/es/components/layout/Flex.js +2 -2
  198. package/es/components/layout/Flow.js +2 -2
  199. package/es/components/layout/Grid.js +2 -2
  200. package/es/components/layout/Panel.js +2 -2
  201. package/es/components/layout/Prefix.js +3 -3
  202. package/es/components/layout/ResizablePanel.js +5 -5
  203. package/es/components/layout/Space.js +2 -2
  204. package/es/components/layout/Suffix.js +3 -3
  205. package/es/components/navigation/LegacyTabs/LegacyTabs.js +275 -0
  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/Base64Upload/Base64Upload.js +103 -0
  209. package/es/components/other/Calendar/Calendar.js +8 -8
  210. package/es/components/other/Calendar/CalendarCell.js +2 -2
  211. package/es/components/other/Calendar/CalendarGrid.js +3 -3
  212. package/es/components/other/Calendar/RangeCalendar.js +8 -8
  213. package/es/components/other/CloudLogo/CloudLogo.js +3 -3
  214. package/es/components/overlays/AlertDialog/AlertDialog.js +10 -10
  215. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +2 -2
  216. package/es/components/overlays/AlertDialog/AlertDialogZone.js +4 -4
  217. package/es/components/overlays/AlertDialog/index.js +4 -4
  218. package/es/components/overlays/AlertDialog/types.js +1 -1
  219. package/es/components/overlays/Dialog/Dialog.js +7 -7
  220. package/es/components/overlays/Dialog/DialogContainer.js +3 -3
  221. package/es/components/overlays/Dialog/DialogForm.js +8 -8
  222. package/es/components/overlays/Dialog/DialogTrigger.js +4 -4
  223. package/es/components/overlays/Dialog/context.js +1 -1
  224. package/es/components/overlays/Dialog/index.js +6 -6
  225. package/es/components/overlays/Dialog/use-dialog-container.js +4 -4
  226. package/es/components/overlays/Modal/Modal.js +5 -5
  227. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  228. package/es/components/overlays/Modal/Overlay.js +3 -3
  229. package/es/components/overlays/Modal/Popover.js +4 -4
  230. package/es/components/overlays/Modal/Tray.js +6 -6
  231. package/es/components/overlays/Modal/Underlay.js +2 -2
  232. package/es/components/overlays/Modal/index.js +7 -7
  233. package/es/components/overlays/Modal/types.js +1 -1
  234. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +5 -5
  235. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +7 -7
  236. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +34 -36
  237. package/es/components/overlays/NewNotifications/Bar/index.js +2 -2
  238. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  239. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +8 -8
  240. package/es/components/overlays/NewNotifications/Dialog/index.js +2 -2
  241. package/es/components/overlays/NewNotifications/Notification.js +4 -4
  242. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +5 -5
  243. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +4 -4
  244. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +4 -4
  245. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +3 -3
  246. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +3 -3
  247. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +4 -4
  248. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  249. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +12 -12
  250. package/es/components/overlays/NewNotifications/NotificationView/index.js +3 -3
  251. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  252. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  253. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +5 -5
  254. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +3 -3
  255. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +2 -2
  256. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +4 -4
  257. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +5 -5
  258. package/es/components/overlays/NewNotifications/NotificationsList/index.js +2 -2
  259. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  260. package/es/components/overlays/NewNotifications/hooks/index.js +6 -6
  261. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  262. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  263. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +2 -2
  264. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  265. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +3 -3
  266. package/es/components/overlays/NewNotifications/index.js +7 -7
  267. package/es/components/overlays/NewNotifications/types.js +1 -1
  268. package/es/components/overlays/Notification/Notification.js +7 -7
  269. package/es/components/overlays/OverlayWrapper.js +2 -2
  270. package/es/components/overlays/Toasts/Toast.js +4 -4
  271. package/es/components/overlays/Toasts/index.js +3 -3
  272. package/es/components/overlays/Toasts/types.js +1 -1
  273. package/es/components/overlays/Toasts/use-toasts-api.js +2 -2
  274. package/es/components/overlays/Tooltip/Tooltip.js +4 -4
  275. package/es/components/overlays/Tooltip/TooltipProvider.js +3 -3
  276. package/es/components/overlays/Tooltip/TooltipTrigger.js +6 -6
  277. package/es/components/overlays/Tooltip/context.js +1 -1
  278. package/es/components/overlays/Tooltip/index.js +4 -4
  279. package/es/components/portal/Portal.js +2 -2
  280. package/es/components/portal/PortalProvider.js +1 -1
  281. package/es/components/portal/index.js +3 -3
  282. package/es/components/portal/types.js +1 -1
  283. package/es/components/portal/usePortal.js +2 -2
  284. package/es/components/shared/InvalidIcon.js +2 -2
  285. package/es/components/shared/ValidIcon.js +2 -2
  286. package/es/components/status/LoadingAnimation/LoadingAnimation.js +114 -58
  287. package/es/components/status/LoadingAnimation/index.js +2 -2
  288. package/es/components/status/Spin/Cube.js +179 -95
  289. package/es/components/status/Spin/InternalSpinner.js +5 -5
  290. package/es/components/status/Spin/Spin.js +4 -4
  291. package/es/components/status/Spin/SpinsContainer.js +30 -28
  292. package/es/components/status/Spin/index.js +2 -2
  293. package/es/components/status/Spin/types.js +1 -1
  294. package/es/components/status/index.js +3 -3
  295. package/es/data/item-themes.js +1 -1
  296. package/es/data/themes.js +1 -1
  297. package/es/icons/AdjustmentsHorizontalIcon.js +2 -2
  298. package/es/icons/AdjustmentsIcon.js +2 -2
  299. package/es/icons/AiIcon.js +2 -2
  300. package/es/icons/AreaChartIcon.js +2 -2
  301. package/es/icons/BackwardIcon.js +2 -2
  302. package/es/icons/BarChartIcon.js +2 -2
  303. package/es/icons/BellFilledIcon.js +2 -2
  304. package/es/icons/BellIcon.js +2 -2
  305. package/es/icons/BooleanIcon.js +2 -2
  306. package/es/icons/CalendarEditIcon.js +2 -2
  307. package/es/icons/CalendarIcon.js +2 -2
  308. package/es/icons/CaretDownIcon.js +2 -2
  309. package/es/icons/CaretUpIcon.js +2 -2
  310. package/es/icons/ChartAreaStackedIcon.js +2 -2
  311. package/es/icons/ChartAreaStackedPercentageIcon.js +2 -2
  312. package/es/icons/ChartBarGroupedHorizontalIcon.js +2 -2
  313. package/es/icons/ChartBarGroupedIcon.js +2 -2
  314. package/es/icons/ChartBarHorizontalIcon.js +2 -2
  315. package/es/icons/ChartBarLineIcon.js +2 -2
  316. package/es/icons/ChartBarStackedHorizontalIcon.js +2 -2
  317. package/es/icons/ChartBarStackedIcon.js +2 -2
  318. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +2 -2
  319. package/es/icons/ChartBarStackedPercentageIcon.js +2 -2
  320. package/es/icons/ChartBoxPlot2Icon.js +2 -2
  321. package/es/icons/ChartBoxPlotIcon.js +2 -2
  322. package/es/icons/ChartBubbleIcon.js +2 -2
  323. package/es/icons/ChartDonut2Icon.js +2 -2
  324. package/es/icons/ChartFunnelIcon.js +2 -2
  325. package/es/icons/ChartHeatmapIcon.js +2 -2
  326. package/es/icons/ChartKPIIcon.js +2 -2
  327. package/es/icons/ChartPie2Icon.js +2 -2
  328. package/es/icons/ChartScatterIcon.js +2 -2
  329. package/es/icons/CheckCircleFilledIcon.js +2 -2
  330. package/es/icons/CheckCircleIcon.js +2 -2
  331. package/es/icons/CheckIcon.js +2 -2
  332. package/es/icons/CircleFilledIcon.js +2 -2
  333. package/es/icons/ClearIcon.js +2 -2
  334. package/es/icons/CloseCircleFilledIcon.js +2 -2
  335. package/es/icons/CloseCircleIcon.js +2 -2
  336. package/es/icons/CloseIcon.js +2 -2
  337. package/es/icons/CodeIcon.js +2 -2
  338. package/es/icons/ColumnTotalIcon.js +2 -2
  339. package/es/icons/CopyIcon.js +2 -2
  340. package/es/icons/CountIcon.js +2 -2
  341. package/es/icons/CubeIcon.js +2 -2
  342. package/es/icons/CubePauseIcon.js +2 -2
  343. package/es/icons/CubePlayIcon.js +2 -2
  344. package/es/icons/CurrencyDollarIcon.js +2 -2
  345. package/es/icons/DangerIcon.js +2 -2
  346. package/es/icons/DashboardIcon.js +2 -2
  347. package/es/icons/DatabaseIcon.js +2 -2
  348. package/es/icons/DecimalDecreaseIcon.js +2 -2
  349. package/es/icons/DecimalIncreaseIcon.js +2 -2
  350. package/es/icons/DirectionIcon.js +3 -3
  351. package/es/icons/DonutIcon.js +2 -2
  352. package/es/icons/DownIcon.js +2 -2
  353. package/es/icons/EditIcon.js +2 -2
  354. package/es/icons/ExclamationCircleFilledIcon.js +2 -2
  355. package/es/icons/ExclamationCircleIcon.js +2 -2
  356. package/es/icons/ExclamationIcon.js +2 -2
  357. package/es/icons/EyeIcon.js +2 -2
  358. package/es/icons/EyeInvisibleIcon.js +2 -2
  359. package/es/icons/FilterIcon.js +2 -2
  360. package/es/icons/FolderFilledIcon.js +2 -2
  361. package/es/icons/FolderIcon.js +2 -2
  362. package/es/icons/FolderOpenFilledIcon.js +2 -2
  363. package/es/icons/FolderOpenIcon.js +2 -2
  364. package/es/icons/ForwardIcon.js +2 -2
  365. package/es/icons/HierarchyIcon.js +2 -2
  366. package/es/icons/HierarchyOpenIcon.js +2 -2
  367. package/es/icons/Icon.js +2 -2
  368. package/es/icons/InfoCircleIcon.js +2 -2
  369. package/es/icons/InfoIcon.js +2 -2
  370. package/es/icons/KeyIcon.js +2 -2
  371. package/es/icons/LeftIcon.js +2 -2
  372. package/es/icons/LineChartIcon.js +2 -2
  373. package/es/icons/LoadingIcon.js +2 -2
  374. package/es/icons/LockFilledIcon.js +2 -2
  375. package/es/icons/LockIcon.js +2 -2
  376. package/es/icons/MoreIcon.js +2 -2
  377. package/es/icons/NotAllowedIcon.js +2 -2
  378. package/es/icons/Number123Icon.js +2 -2
  379. package/es/icons/NumberIcon.js +2 -2
  380. package/es/icons/PauseCircleFilledIcon.js +2 -2
  381. package/es/icons/PauseCircleIcon.js +2 -2
  382. package/es/icons/PauseIcon.js +2 -2
  383. package/es/icons/PercentageIcon.js +2 -2
  384. package/es/icons/PieChartIcon.js +2 -2
  385. package/es/icons/PlayCircleIcon.js +2 -2
  386. package/es/icons/PlayIcon.js +2 -2
  387. package/es/icons/PlusIcon.js +2 -2
  388. package/es/icons/ProgressBarIcon.js +2 -2
  389. package/es/icons/ReloadIcon.js +2 -2
  390. package/es/icons/ReportIcon.js +2 -2
  391. package/es/icons/ReturnIcon.js +2 -2
  392. package/es/icons/RightIcon.js +2 -2
  393. package/es/icons/RowTotalsIcon.js +2 -2
  394. package/es/icons/SchemeIcon.js +2 -2
  395. package/es/icons/SearchIcon.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/add-new-icon.js +129 -0
  424. package/es/icons/index.js +128 -128
  425. package/es/icons/wrap-icon.js +2 -2
  426. package/es/index.js +74 -73
  427. package/es/provider.js +10 -4
  428. package/es/providers/TrackingProvider.js +1 -1
  429. package/es/providers/navigation.types.js +1 -1
  430. package/es/providers/navigationAdapter.default.js +1 -1
  431. package/es/services/notification.js +2 -2
  432. package/es/shared/form.js +1 -1
  433. package/es/shared/index.js +2 -2
  434. package/es/stories/Form.legacy-stories.js +4 -4
  435. package/es/stories/FormFieldArgs.js +2 -2
  436. package/es/stories/SimpleLayout.stories.js +2 -2
  437. package/es/stories/Tasty.stories.js +2 -2
  438. package/es/stories/components/ConfirmDeletionDialogForm.js +2 -2
  439. package/es/stories/components/DialogFormApp.js +3 -3
  440. package/es/stories/components/StyledButton.js +15 -19
  441. package/es/stories/lists/baseProps.js +2 -2
  442. package/es/tasty/debug.js +9 -195
  443. package/es/tasty/index.js +17 -31
  444. package/es/tasty/injector/index.js +90 -34
  445. package/es/tasty/injector/injector.js +299 -81
  446. package/es/tasty/injector/sheet-manager.js +3 -138
  447. package/es/tasty/injector/types.js +1 -1
  448. package/es/tasty/parser/classify.js +6 -8
  449. package/es/tasty/parser/const.js +1 -1
  450. package/es/tasty/parser/lru.js +1 -1
  451. package/es/tasty/parser/parser.js +5 -18
  452. package/es/tasty/parser/tokenizer.js +1 -1
  453. package/es/tasty/parser/types.js +1 -2
  454. package/es/tasty/providers/BreakpointsProvider.js +16 -0
  455. package/es/tasty/styles/align.js +1 -1
  456. package/es/tasty/styles/border.js +2 -2
  457. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  458. package/es/tasty/styles/color.js +3 -3
  459. package/es/tasty/styles/createStyle.js +3 -3
  460. package/es/tasty/styles/dimension.js +2 -2
  461. package/es/tasty/styles/display.js +1 -1
  462. package/es/tasty/styles/fade.js +2 -2
  463. package/es/tasty/styles/fill.js +21 -11
  464. package/es/tasty/styles/flow.js +1 -1
  465. package/es/tasty/styles/font.js +1 -1
  466. package/es/tasty/styles/fontStyle.js +1 -1
  467. package/es/tasty/styles/gap.js +2 -2
  468. package/es/tasty/styles/groupRadius.js +2 -2
  469. package/es/tasty/styles/height.js +2 -2
  470. package/es/tasty/styles/index.js +3 -3
  471. package/es/tasty/styles/inset.js +2 -2
  472. package/es/tasty/styles/justify.js +1 -1
  473. package/es/tasty/styles/list.js +1 -1
  474. package/es/tasty/styles/margin.js +56 -76
  475. package/es/tasty/styles/outline.js +2 -2
  476. package/es/tasty/styles/padding.js +56 -76
  477. package/es/tasty/styles/place.js +1 -1
  478. package/es/tasty/styles/predefined.js +27 -28
  479. package/es/tasty/styles/preset.js +2 -2
  480. package/es/tasty/styles/radius.js +12 -5
  481. package/es/tasty/styles/reset.js +7 -3
  482. package/es/tasty/styles/scrollbar.js +2 -2
  483. package/es/tasty/styles/shadow.js +2 -2
  484. package/es/tasty/styles/styledScrollbar.js +1 -1
  485. package/es/tasty/styles/transition.js +3 -10
  486. package/es/tasty/styles/types.js +1 -1
  487. package/es/tasty/styles/width.js +2 -2
  488. package/es/tasty/tasty.js +122 -81
  489. package/es/tasty/types.js +1 -1
  490. package/es/tasty/utils/cache-wrapper.js +1 -1
  491. package/es/tasty/utils/case-converter.js +1 -1
  492. package/es/tasty/utils/colors.js +1 -1
  493. package/es/tasty/utils/dotize.js +1 -1
  494. package/es/tasty/utils/filterBaseProps.js +1 -1
  495. package/es/tasty/utils/getDisplayName.js +1 -1
  496. package/es/tasty/utils/getModCombinations.js +38 -0
  497. package/es/tasty/utils/isDevEnv.js +1 -1
  498. package/es/tasty/utils/mergeStyles.js +2 -2
  499. package/es/tasty/utils/modAttrs.js +3 -3
  500. package/es/tasty/utils/processTokens.js +2 -88
  501. package/es/tasty/utils/renderStyles.js +1050 -0
  502. package/es/tasty/utils/responsive.js +60 -0
  503. package/es/tasty/utils/string.js +1 -1
  504. package/es/tasty/utils/styles.js +22 -255
  505. package/es/tasty/utils/warnings.js +1 -1
  506. package/es/tokens.js +309 -0
  507. package/es/utils/ResizeSensor.js +1 -1
  508. package/es/utils/index.js +10 -10
  509. package/es/utils/modules.js +1 -1
  510. package/es/utils/promise.js +1 -1
  511. package/es/utils/raf.js +1 -1
  512. package/es/utils/random.js +1 -1
  513. package/es/utils/range.js +1 -1
  514. package/es/utils/react/RenderCache.js +1 -1
  515. package/es/utils/react/Slots.js +2 -2
  516. package/es/utils/react/chain.js +1 -1
  517. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  518. package/es/utils/react/index.js +17 -17
  519. package/es/utils/react/interactions.js +1 -1
  520. package/es/utils/react/isTextOnly.js +1 -1
  521. package/es/utils/react/mapProps.js +1 -1
  522. package/es/utils/react/mergeProps.js +4 -4
  523. package/es/utils/react/nullableValue.js +1 -1
  524. package/es/utils/react/resolveIcon.js +1 -1
  525. package/es/utils/react/sharedStore.js +2 -2
  526. package/es/utils/react/useCombinedRefs.js +1 -1
  527. package/es/utils/react/useControlledFocusVisible.js +2 -2
  528. package/es/utils/react/useEventBus.js +1 -1
  529. package/es/utils/react/useId.js +2 -2
  530. package/es/utils/react/useIsDarwin.js +1 -1
  531. package/es/utils/react/useKeySymbols.js +2 -2
  532. package/es/utils/react/useLayoutEffect.js +1 -1
  533. package/es/utils/react/useLocalStorage.js +2 -2
  534. package/es/utils/react/useQaProps.js +1 -1
  535. package/es/utils/react/useViewportSize.js +1 -1
  536. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  537. package/es/utils/tree.js +1 -1
  538. package/es/utils/warnings.js +1 -1
  539. package/es/version.js +2 -2
  540. package/package.json +4 -14
  541. package/types/components/GlobalStyles.d.ts +1 -2
  542. package/types/components/HiddenInput.d.ts +826 -828
  543. package/types/components/Root.d.ts +0 -1
  544. package/types/components/actions/Button/Button.d.ts +1645 -1649
  545. package/types/components/actions/CommandMenu/styled.d.ts +4130 -4140
  546. package/types/components/actions/Menu/styled.d.ts +4883 -4893
  547. package/types/components/actions/use-action.d.ts +1 -1
  548. package/types/components/content/List/SectionHeading.d.ts +251 -251
  549. package/types/components/content/Text.d.ts +1487 -1487
  550. package/types/components/fields/DatePicker/DatePickerElement.d.ts +251 -251
  551. package/types/components/fields/Select/Select.d.ts +826 -828
  552. package/types/components/fields/Slider/elements.d.ts +4956 -4968
  553. package/types/components/navigation/LegacyTabs/LegacyTabs.d.ts +43 -0
  554. package/types/components/other/Base64Upload/Base64Upload.d.ts +5 -0
  555. package/types/components/status/Spin/Cube.d.ts +1 -1
  556. package/types/components/status/Spin/SpinsContainer.d.ts +3 -6
  557. package/types/icons/add-new-icon.d.ts +2 -0
  558. package/types/index.d.ts +4 -1
  559. package/types/provider.d.ts +2 -1
  560. package/types/stories/components/StyledButton.d.ts +1 -1
  561. package/types/tasty/debug.d.ts +0 -35
  562. package/types/tasty/index.d.ts +4 -14
  563. package/types/tasty/injector/index.d.ts +19 -30
  564. package/types/tasty/injector/injector.d.ts +13 -19
  565. package/types/tasty/injector/sheet-manager.d.ts +1 -25
  566. package/types/tasty/injector/types.d.ts +2 -23
  567. package/types/tasty/parser/parser.d.ts +0 -4
  568. package/types/tasty/parser/types.d.ts +0 -1
  569. package/types/tasty/providers/BreakpointsProvider.d.ts +8 -0
  570. package/types/tasty/styles/fill.d.ts +1 -11
  571. package/types/tasty/styles/margin.d.ts +1 -3
  572. package/types/tasty/styles/padding.d.ts +1 -3
  573. package/types/tasty/styles/radius.d.ts +10 -2
  574. package/types/tasty/styles/types.d.ts +3 -24
  575. package/types/tasty/tasty.d.ts +840 -892
  576. package/types/tasty/utils/getModCombinations.d.ts +9 -0
  577. package/types/tasty/utils/renderStyles.d.ts +41 -0
  578. package/types/tasty/utils/responsive.d.ts +8 -0
  579. package/types/tasty/utils/styles.d.ts +6 -50
  580. package/types/tokens.d.ts +221 -0
  581. package/es/stories/playground/PlaygroundEditor.js +0 -89
  582. package/es/stories/playground/PlaygroundLayout.js +0 -16
  583. package/es/stories/playground/PlaygroundOutput.js +0 -92
  584. package/es/stories/playground/PlaygroundPreview.js +0 -91
  585. package/es/stories/playground/components/Button.js +0 -45
  586. package/es/stories/playground/components/Card.js +0 -20
  587. package/es/stories/playground/components/ScrollProgress.js +0 -17
  588. package/es/stories/playground/examples.js +0 -158
  589. package/es/tasty/chunks/cacheKey.js +0 -98
  590. package/es/tasty/chunks/definitions.js +0 -281
  591. package/es/tasty/chunks/index.js +0 -12
  592. package/es/tasty/chunks/renderChunk.js +0 -97
  593. package/es/tasty/config.js +0 -280
  594. package/es/tasty/hooks/index.js +0 -12
  595. package/es/tasty/hooks/useGlobalStyles.js +0 -67
  596. package/es/tasty/hooks/useRawCSS.js +0 -40
  597. package/es/tasty/hooks/useStyles.js +0 -206
  598. package/es/tasty/keyframes/index.js +0 -301
  599. package/es/tasty/pipeline/conditions.js +0 -426
  600. package/es/tasty/pipeline/exclusive.js +0 -311
  601. package/es/tasty/pipeline/index.js +0 -543
  602. package/es/tasty/pipeline/materialize.js +0 -1260
  603. package/es/tasty/pipeline/parseStateKey.js +0 -592
  604. package/es/tasty/pipeline/simplify.js +0 -898
  605. package/es/tasty/plugins/index.js +0 -26
  606. package/es/tasty/plugins/okhsl-plugin.js +0 -400
  607. package/es/tasty/plugins/types.js +0 -10
  608. package/es/tasty/states/index.js +0 -523
  609. package/es/tasty/static/index.js +0 -47
  610. package/es/tasty/static/tastyStatic.js +0 -55
  611. package/es/tasty/static/types.js +0 -34
  612. package/es/tasty/utils/typography.js +0 -67
  613. package/es/tasty/zero/babel.js +0 -453
  614. package/es/tasty/zero/css-writer.js +0 -94
  615. package/es/tasty/zero/extractor.js +0 -222
  616. package/es/tasty/zero/index.js +0 -28
  617. package/es/tasty/zero/next.js +0 -102
  618. package/es/tokens/base.js +0 -64
  619. package/es/tokens/colors.js +0 -68
  620. package/es/tokens/index.js +0 -63
  621. package/es/tokens/layout.js +0 -26
  622. package/es/tokens/shadows.js +0 -27
  623. package/es/tokens/sizes.js +0 -42
  624. package/es/tokens/spacing.js +0 -22
  625. package/es/tokens/typography.js +0 -237
  626. package/types/stories/playground/PlaygroundEditor.d.ts +0 -6
  627. package/types/stories/playground/PlaygroundLayout.d.ts +0 -8
  628. package/types/stories/playground/PlaygroundOutput.d.ts +0 -5
  629. package/types/stories/playground/PlaygroundPreview.d.ts +0 -6
  630. package/types/stories/playground/components/Button.d.ts +0 -11
  631. package/types/stories/playground/components/Card.d.ts +0 -7
  632. package/types/stories/playground/components/ScrollProgress.d.ts +0 -5
  633. package/types/stories/playground/examples.d.ts +0 -7
  634. package/types/tasty/chunks/cacheKey.d.ts +0 -26
  635. package/types/tasty/chunks/definitions.d.ts +0 -75
  636. package/types/tasty/chunks/index.d.ts +0 -4
  637. package/types/tasty/chunks/renderChunk.d.ts +0 -25
  638. package/types/tasty/config.d.ts +0 -171
  639. package/types/tasty/hooks/index.d.ts +0 -4
  640. package/types/tasty/hooks/useGlobalStyles.d.ts +0 -22
  641. package/types/tasty/hooks/useRawCSS.d.ts +0 -50
  642. package/types/tasty/hooks/useStyles.d.ts +0 -35
  643. package/types/tasty/keyframes/index.d.ts +0 -49
  644. package/types/tasty/pipeline/conditions.d.ts +0 -243
  645. package/types/tasty/pipeline/exclusive.d.ts +0 -103
  646. package/types/tasty/pipeline/index.d.ts +0 -67
  647. package/types/tasty/pipeline/materialize.d.ts +0 -162
  648. package/types/tasty/pipeline/parseStateKey.d.ts +0 -20
  649. package/types/tasty/pipeline/simplify.d.ts +0 -28
  650. package/types/tasty/plugins/index.d.ts +0 -17
  651. package/types/tasty/plugins/okhsl-plugin.d.ts +0 -45
  652. package/types/tasty/plugins/types.d.ts +0 -34
  653. package/types/tasty/states/index.d.ts +0 -101
  654. package/types/tasty/static/index.d.ts +0 -39
  655. package/types/tasty/static/tastyStatic.d.ts +0 -41
  656. package/types/tasty/static/types.d.ts +0 -44
  657. package/types/tasty/utils/typography.d.ts +0 -32
  658. package/types/tasty/zero/babel.d.ts +0 -63
  659. package/types/tasty/zero/css-writer.d.ts +0 -41
  660. package/types/tasty/zero/extractor.d.ts +0 -40
  661. package/types/tasty/zero/index.d.ts +0 -18
  662. package/types/tasty/zero/next.d.ts +0 -57
  663. package/types/tokens/base.d.ts +0 -8
  664. package/types/tokens/colors.d.ts +0 -6
  665. package/types/tokens/index.d.ts +0 -41
  666. package/types/tokens/layout.d.ts +0 -7
  667. package/types/tokens/shadows.d.ts +0 -12
  668. package/types/tokens/sizes.d.ts +0 -25
  669. package/types/tokens/spacing.d.ts +0 -8
  670. package/types/tokens/typography.d.ts +0 -30
@@ -1,12 +1,85 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-8ca04ef
4
+ * @cube-dev/ui-kit v0.0.0-canary-dae9b2f
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
- import { getConfig, getGlobalInjector, isTestEnvironment, markStylesGenerated, } from '../config.js';
9
- import { StyleInjector } from './injector.js';
8
+ import { isDevEnv } from '../utils/isDevEnv';
9
+ import { StyleInjector } from './injector';
10
+ // Use a more robust global singleton that survives React Strict Mode
11
+ const GLOBAL_INJECTOR_KEY = '__TASTY_GLOBAL_INJECTOR__';
12
+ /**
13
+ * Detect if we're running in a test environment
14
+ */
15
+ function isTestEnvironment() {
16
+ // Check Node.js environment
17
+ if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {
18
+ return true;
19
+ }
20
+ // Check for Jest globals (safely)
21
+ if (typeof global !== 'undefined') {
22
+ const g = global;
23
+ if (g.jest || g.expect || g.describe || g.it) {
24
+ return true;
25
+ }
26
+ }
27
+ // Check for jsdom environment (common in tests)
28
+ if (typeof window !== 'undefined' &&
29
+ window.navigator?.userAgent?.includes('jsdom')) {
30
+ return true;
31
+ }
32
+ // Check for other test runners
33
+ if (typeof globalThis !== 'undefined') {
34
+ const gt = globalThis;
35
+ if (gt.vitest || gt.mocha) {
36
+ return true;
37
+ }
38
+ }
39
+ return false;
40
+ }
41
+ /**
42
+ * Create default configuration with optional test environment detection
43
+ */
44
+ function createDefaultConfig(isTest) {
45
+ return {
46
+ maxRulesPerSheet: 8192, // safer default cap per sheet
47
+ unusedStylesThreshold: 500, // default threshold for bulk cleanup of unused styles
48
+ bulkCleanupDelay: 5000, // default delay before bulk cleanup (ignored if idleCleanup is true)
49
+ idleCleanup: true, // default to using requestIdleCallback instead of setTimeout
50
+ forceTextInjection: isTest ?? false, // auto-enable for test environments
51
+ devMode: isDevEnv(), // enable dev features: performance tracking and debug info
52
+ bulkCleanupBatchRatio: 0.5,
53
+ unusedStylesMinAgeMs: 10000,
54
+ };
55
+ }
56
+ /**
57
+ * Configure the global style injector
58
+ */
59
+ export function configure(config = {}) {
60
+ const fullConfig = {
61
+ ...createDefaultConfig(),
62
+ ...config,
63
+ };
64
+ // Store on window to survive React Strict Mode resets
65
+ if (typeof window !== 'undefined') {
66
+ window[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
67
+ }
68
+ else {
69
+ // Fallback for SSR
70
+ globalThis[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
71
+ }
72
+ }
73
+ /**
74
+ * Get or create the global injector instance
75
+ */
76
+ function getGlobalInjector() {
77
+ const storage = typeof window !== 'undefined' ? window : globalThis;
78
+ if (!storage[GLOBAL_INJECTOR_KEY]) {
79
+ configure();
80
+ }
81
+ return storage[GLOBAL_INJECTOR_KEY];
82
+ }
10
83
  /**
11
84
  * Allocate a className for a cacheKey without injecting styles yet
12
85
  */
@@ -17,8 +90,6 @@ export function allocateClassName(cacheKey, options) {
17
90
  * Inject styles and return className with dispose function
18
91
  */
19
92
  export function inject(rules, options) {
20
- // Mark that styles have been generated (prevents configuration changes)
21
- markStylesGenerated();
22
93
  return getGlobalInjector().inject(rules, options);
23
94
  }
24
95
  /**
@@ -28,30 +99,10 @@ export function injectGlobal(rules, options) {
28
99
  return getGlobalInjector().injectGlobal(rules, options);
29
100
  }
30
101
  /**
31
- * Inject raw CSS text directly without parsing
32
- * This is a low-overhead method for injecting raw CSS that doesn't need tasty processing.
33
- * The CSS is inserted into a separate style element to avoid conflicts with tasty's chunking.
34
- *
35
- * @example
36
- * ```tsx
37
- * // Inject raw CSS
38
- * const { dispose } = injectRawCSS(`
39
- * body { margin: 0; padding: 0; }
40
- * .my-class { color: red; }
41
- * `);
42
- *
43
- * // Later, remove the injected CSS
44
- * dispose();
45
- * ```
46
- */
47
- export function injectRawCSS(css, options) {
48
- return getGlobalInjector().injectRawCSS(css, options);
49
- }
50
- /**
51
- * Get raw CSS text for SSR
102
+ * Internal method for createGlobalStyle - not exported publicly
52
103
  */
53
- export function getRawCSSText(options) {
54
- return getGlobalInjector().getRawCSSText(options);
104
+ function injectCreateGlobalStyle(rules, options) {
105
+ return getGlobalInjector().injectCreateGlobalStyle(rules, options);
55
106
  }
56
107
  /**
57
108
  * Inject keyframes and return object with toString() and dispose()
@@ -122,16 +173,21 @@ export function destroy(root) {
122
173
  * Create a new isolated injector instance
123
174
  */
124
175
  export function createInjector(config = {}) {
125
- const defaultConfig = getConfig();
176
+ const isTest = isTestEnvironment();
126
177
  const fullConfig = {
127
- ...defaultConfig,
128
- // Auto-enable forceTextInjection in test environments
129
- forceTextInjection: config.forceTextInjection ?? isTestEnvironment(),
178
+ ...createDefaultConfig(isTest),
130
179
  ...config,
131
180
  };
132
181
  return new StyleInjector(fullConfig);
133
182
  }
134
- export { StyleInjector } from './injector.js';
135
- export { SheetManager } from './sheet-manager.js';
183
+ /**
184
+ * Create a global style component like styled-components createGlobalStyle
185
+ * Returns a React component that injects global styles when mounted and cleans up when unmounted
186
+ */
187
+ export function createGlobalStyle(strings, ...interpolations) {
188
+ return getGlobalInjector().createGlobalStyle(strings, ...interpolations);
189
+ }
190
+ export { StyleInjector } from './injector';
191
+ export { SheetManager } from './sheet-manager';
136
192
 
137
193
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-8ca04ef
4
+ * @cube-dev/ui-kit v0.0.0-canary-dae9b2f
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -9,8 +9,10 @@
9
9
  * Style injector that works with structured style objects
10
10
  * Eliminates CSS string parsing for better performance
11
11
  */
12
- import { parseStyle } from '../utils/styles.js';
13
- import { SheetManager } from './sheet-manager.js';
12
+ import { Component } from 'react';
13
+ import { parseStyle } from '../utils/styles';
14
+ // Simple CSS text to StyleResult converter for injectGlobal backward compatibility
15
+ import { SheetManager } from './sheet-manager';
14
16
  /**
15
17
  * Generate sequential class name with format t{number}
16
18
  */
@@ -104,25 +106,13 @@ export class StyleInjector {
104
106
  let newSelector = rule.selector;
105
107
  // If rule needs className prepended
106
108
  if (rule.needsClassName) {
107
- // Handle multiple selectors (separated by ||| for OR conditions)
108
- const selectorParts = newSelector ? newSelector.split('|||') : [''];
109
- const classPrefix = `.${className}.${className}`;
110
- newSelector = selectorParts
111
- .map((part) => {
112
- const classSelector = part ? `${classPrefix}${part}` : classPrefix;
113
- // If there's a root prefix, add it before the class selector
114
- if (rule.rootPrefix) {
115
- return `${rule.rootPrefix} ${classSelector}`;
116
- }
117
- return classSelector;
118
- })
119
- .join(', ');
109
+ // Simple concatenation: .className (double specificity) + selectorSuffix
110
+ newSelector = `.${className}.${className}${newSelector}`;
120
111
  }
121
112
  return {
122
113
  ...rule,
123
114
  selector: newSelector,
124
115
  needsClassName: undefined, // Remove the flag after processing
125
- rootPrefix: undefined, // Remove rootPrefix after processing
126
116
  };
127
117
  });
128
118
  // Before inserting, auto-register @property for any color custom properties being defined.
@@ -212,20 +202,26 @@ export class StyleInjector {
212
202
  };
213
203
  }
214
204
  /**
215
- * Inject raw CSS text directly without parsing
216
- * This is a low-overhead alternative to createGlobalStyle for raw CSS
217
- * The CSS is inserted into a separate style element to avoid conflicts with tasty's chunking
218
- */
219
- injectRawCSS(css, options) {
220
- const root = options?.root || document;
221
- return this.sheetManager.injectRawCSS(css, root);
222
- }
223
- /**
224
- * Get raw CSS text for SSR
205
+ * Inject styles from createGlobalStyle (separate from injectGlobal for tracking)
225
206
  */
226
- getRawCSSText(options) {
207
+ injectCreateGlobalStyle(rules, options) {
227
208
  const root = options?.root || document;
228
- return this.sheetManager.getRawCSSText(root);
209
+ const registry = this.sheetManager.getRegistry(root);
210
+ if (!rules || rules.length === 0) {
211
+ return { dispose: () => { } };
212
+ }
213
+ // Use a different prefix to distinguish from injectGlobal
214
+ const key = `raw:${this.globalRuleCounter++}`;
215
+ const info = this.sheetManager.insertGlobalRule(registry, rules, key, root);
216
+ if (registry.metrics) {
217
+ registry.metrics.totalInsertions++;
218
+ }
219
+ return {
220
+ dispose: () => {
221
+ if (info)
222
+ this.sheetManager.deleteGlobalRule(registry, key);
223
+ },
224
+ };
229
225
  }
230
226
  /**
231
227
  * Dispose of a className
@@ -334,9 +330,9 @@ export class StyleInjector {
334
330
  syntax = `"${syntax}"`;
335
331
  parts.push(`syntax: ${syntax};`);
336
332
  }
337
- // inherits is required by the CSS @property spec - default to true
338
- const inherits = options?.inherits ?? true;
339
- parts.push(`inherits: ${inherits ? 'true' : 'false'};`);
333
+ if (options?.inherits != null) {
334
+ parts.push(`inherits: ${options.inherits ? 'true' : 'false'};`);
335
+ }
340
336
  if (options?.initialValue != null) {
341
337
  let initialValueStr;
342
338
  if (typeof options.initialValue === 'number') {
@@ -368,12 +364,6 @@ export class StyleInjector {
368
364
  }
369
365
  /**
370
366
  * Inject keyframes and return object with toString() and dispose()
371
- *
372
- * Keyframes are cached by content (steps). If the same content is injected
373
- * multiple times with different provided names, the first injected name is reused.
374
- *
375
- * If the same name is provided with different content (collision), a unique
376
- * name is generated to avoid overwriting the existing keyframes.
377
367
  */
378
368
  keyframes(steps, nameOrOptions) {
379
369
  // Parse parameters
@@ -387,49 +377,32 @@ export class StyleInjector {
387
377
  dispose: () => { },
388
378
  };
389
379
  }
390
- // Generate content-based cache key (independent of provided name)
391
- const contentHash = JSON.stringify(steps);
392
- // Check if this exact content is already cached
393
- const existing = registry.keyframesCache.get(contentHash);
380
+ // Generate cache key from steps and name
381
+ const cacheKey = providedName
382
+ ? `${providedName}:${JSON.stringify(steps)}`
383
+ : JSON.stringify(steps);
384
+ // Check if already cached
385
+ const existing = registry.keyframesCache.get(cacheKey);
394
386
  if (existing) {
395
387
  existing.refCount++;
396
388
  return {
397
389
  toString: () => existing.name,
398
- dispose: () => this.disposeKeyframes(contentHash, registry),
390
+ dispose: () => this.disposeKeyframes(cacheKey, registry),
399
391
  };
400
392
  }
401
- // Determine the actual name to use
402
- let actualName;
403
- if (providedName) {
404
- // Check if this name is already used with different content
405
- const existingContentForName = registry.keyframesNameToContent.get(providedName);
406
- if (existingContentForName && existingContentForName !== contentHash) {
407
- // Name collision: same name, different content
408
- // Generate a unique name to avoid overwriting
409
- actualName = `${providedName}-k${registry.keyframesCounter++}`;
410
- }
411
- else {
412
- // Name is available or used with same content
413
- actualName = providedName;
414
- // Track this name -> content mapping
415
- registry.keyframesNameToContent.set(providedName, contentHash);
416
- }
417
- }
418
- else {
419
- // No name provided, generate one
420
- actualName = `k${registry.keyframesCounter++}`;
421
- }
393
+ // Use provided name or generate new one
394
+ const name = providedName || `k${registry.keyframesCounter++}`;
422
395
  // Insert keyframes
423
- const info = this.sheetManager.insertKeyframes(registry, steps, actualName, root);
396
+ const info = this.sheetManager.insertKeyframes(registry, steps, name, root);
424
397
  if (!info) {
425
398
  return {
426
399
  toString: () => '',
427
400
  dispose: () => { },
428
401
  };
429
402
  }
430
- // Cache the result by content hash
431
- registry.keyframesCache.set(contentHash, {
432
- name: actualName,
403
+ // Cache the result
404
+ registry.keyframesCache.set(cacheKey, {
405
+ name,
433
406
  refCount: 1,
434
407
  info,
435
408
  });
@@ -439,30 +412,22 @@ export class StyleInjector {
439
412
  registry.metrics.misses++;
440
413
  }
441
414
  return {
442
- toString: () => actualName,
443
- dispose: () => this.disposeKeyframes(contentHash, registry),
415
+ toString: () => name,
416
+ dispose: () => this.disposeKeyframes(cacheKey, registry),
444
417
  };
445
418
  }
446
419
  /**
447
420
  * Dispose keyframes
448
421
  */
449
- disposeKeyframes(contentHash, registry) {
450
- const entry = registry.keyframesCache.get(contentHash);
422
+ disposeKeyframes(cacheKey, registry) {
423
+ const entry = registry.keyframesCache.get(cacheKey);
451
424
  if (!entry)
452
425
  return;
453
426
  entry.refCount--;
454
427
  if (entry.refCount <= 0) {
455
428
  // Dispose immediately - keyframes are global and safe to clean up right away
456
429
  this.sheetManager.deleteKeyframes(registry, entry.info);
457
- registry.keyframesCache.delete(contentHash);
458
- // Clean up name-to-content mapping if this name was tracked
459
- // Find and remove the mapping for this content hash
460
- for (const [name, hash] of registry.keyframesNameToContent.entries()) {
461
- if (hash === contentHash) {
462
- registry.keyframesNameToContent.delete(name);
463
- break;
464
- }
465
- }
430
+ registry.keyframesCache.delete(cacheKey);
466
431
  // Update metrics
467
432
  if (registry.metrics) {
468
433
  registry.metrics.totalUnused++;
@@ -477,6 +442,259 @@ export class StyleInjector {
477
442
  const targetRoot = root || document;
478
443
  this.sheetManager.cleanup(targetRoot);
479
444
  }
445
+ /**
446
+ * Create a global style component like styled-components createGlobalStyle
447
+ * Returns a React component that injects global styles when mounted and cleans up when unmounted
448
+ */
449
+ createGlobalStyle(strings, ...interpolations) {
450
+ const injector = this; // Capture the injector instance
451
+ class GlobalStyleComponent extends Component {
452
+ disposeFunction = null;
453
+ componentDidMount() {
454
+ this.injectStyles();
455
+ }
456
+ componentDidUpdate() {
457
+ this.disposeStyles();
458
+ this.injectStyles();
459
+ }
460
+ componentWillUnmount() {
461
+ this.disposeStyles();
462
+ }
463
+ injectStyles = () => {
464
+ const css = this.interpolateTemplate();
465
+ if (css.trim()) {
466
+ const styleResults = this.parseCSSToStyleResults(css);
467
+ // Use a special method for createGlobalStyle to distinguish from injectGlobal
468
+ const result = injector.injectCreateGlobalStyle(styleResults, {
469
+ root: this.props.root,
470
+ });
471
+ this.disposeFunction = result.dispose;
472
+ }
473
+ };
474
+ disposeStyles = () => {
475
+ if (this.disposeFunction) {
476
+ this.disposeFunction();
477
+ this.disposeFunction = null;
478
+ }
479
+ };
480
+ interpolateTemplate = () => {
481
+ let result = strings[0];
482
+ for (let i = 0; i < interpolations.length; i++) {
483
+ const interpolation = interpolations[i];
484
+ const value = typeof interpolation === 'function'
485
+ ? interpolation(this.props)
486
+ : interpolation;
487
+ result += String(value) + strings[i + 1];
488
+ }
489
+ return result;
490
+ };
491
+ parseCSSToStyleResults = (css) => {
492
+ const rules = [];
493
+ // Enhanced CSS parser for global styles that handles nested rules
494
+ this.parseCSS(css, rules, [], '');
495
+ return rules;
496
+ };
497
+ parseCSS = (css, rules, atRuleStack, parentSelector = '') => {
498
+ // Remove both CSS and JavaScript-style comments
499
+ let cleanCSS = css.replace(/\/\*[\s\S]*?\*\//g, ''); // CSS comments
500
+ cleanCSS = cleanCSS.replace(/\/\/.*$/gm, ''); // JavaScript-style comments
501
+ let i = 0;
502
+ while (i < cleanCSS.length) {
503
+ // Skip whitespace
504
+ while (i < cleanCSS.length && /\s/.test(cleanCSS[i])) {
505
+ i++;
506
+ }
507
+ if (i >= cleanCSS.length)
508
+ break;
509
+ // Find the next selector or at-rule
510
+ let selectorStart = i;
511
+ let braceDepth = 0;
512
+ let inString = false;
513
+ let stringChar = '';
514
+ // Find the opening brace
515
+ while (i < cleanCSS.length) {
516
+ const char = cleanCSS[i];
517
+ if (inString) {
518
+ if (char === stringChar && cleanCSS[i - 1] !== '\\') {
519
+ inString = false;
520
+ }
521
+ }
522
+ else {
523
+ if (char === '"' || char === "'") {
524
+ inString = true;
525
+ stringChar = char;
526
+ }
527
+ else if (char === '{') {
528
+ braceDepth++;
529
+ if (braceDepth === 1) {
530
+ break; // Found the opening brace
531
+ }
532
+ }
533
+ else if (char === '}') {
534
+ braceDepth--;
535
+ }
536
+ }
537
+ i++;
538
+ }
539
+ if (i >= cleanCSS.length)
540
+ break;
541
+ const selectorPart = cleanCSS.substring(selectorStart, i).trim();
542
+ i++; // Skip the opening brace
543
+ // Find the matching closing brace
544
+ const contentStart = i;
545
+ braceDepth = 1;
546
+ inString = false;
547
+ while (i < cleanCSS.length && braceDepth > 0) {
548
+ const char = cleanCSS[i];
549
+ if (inString) {
550
+ if (char === stringChar && cleanCSS[i - 1] !== '\\') {
551
+ inString = false;
552
+ }
553
+ }
554
+ else {
555
+ if (char === '"' || char === "'") {
556
+ inString = true;
557
+ stringChar = char;
558
+ }
559
+ else if (char === '{') {
560
+ braceDepth++;
561
+ }
562
+ else if (char === '}') {
563
+ braceDepth--;
564
+ }
565
+ }
566
+ i++;
567
+ }
568
+ const content = cleanCSS.substring(contentStart, i - 1).trim();
569
+ // Check if this is an at-rule
570
+ if (selectorPart.startsWith('@')) {
571
+ const atSelector = selectorPart.trim();
572
+ // Leaf at-rules that contain declarations directly and should be emitted as-is
573
+ const leafAtRules = [
574
+ '@font-face',
575
+ '@property',
576
+ '@page',
577
+ '@counter-style',
578
+ '@font-feature-values',
579
+ '@font-palette-values',
580
+ '@color-profile',
581
+ ];
582
+ const isLeafAtRule = leafAtRules.some((prefix) => atSelector.startsWith(prefix));
583
+ if (isLeafAtRule) {
584
+ // Emit the at-rule with its declarations directly
585
+ if (content.trim()) {
586
+ rules.push({
587
+ selector: atSelector,
588
+ declarations: content,
589
+ atRules: atRuleStack.length > 0 ? [...atRuleStack] : undefined,
590
+ });
591
+ }
592
+ }
593
+ else {
594
+ // Wrapper at-rule (e.g., @media, @supports, @keyframes) — parse its content
595
+ const newAtRuleStack = [...atRuleStack, atSelector];
596
+ this.parseCSS(content, rules, newAtRuleStack, parentSelector);
597
+ }
598
+ }
599
+ else {
600
+ // Check if content contains nested rules (has { and })
601
+ if (content.includes('{') && content.includes('}')) {
602
+ // This selector has nested rules, parse them
603
+ const { declarations, nestedCSS } = this.separateDeclarationsAndNested(content);
604
+ // Process the selector (handle & syntax)
605
+ const processedSelector = this.processSelector(selectorPart, parentSelector);
606
+ // Add declarations if any
607
+ if (declarations.trim()) {
608
+ rules.push({
609
+ selector: processedSelector,
610
+ declarations: declarations.trim(),
611
+ atRules: atRuleStack.length > 0 ? [...atRuleStack] : undefined,
612
+ });
613
+ }
614
+ // Parse nested CSS with current selector as parent
615
+ if (nestedCSS.trim()) {
616
+ this.parseCSS(nestedCSS, rules, atRuleStack, processedSelector);
617
+ }
618
+ }
619
+ else {
620
+ // This is a regular selector with only declarations
621
+ const processedSelector = this.processSelector(selectorPart, parentSelector);
622
+ if (content && processedSelector) {
623
+ rules.push({
624
+ selector: processedSelector,
625
+ declarations: content,
626
+ atRules: atRuleStack.length > 0 ? [...atRuleStack] : undefined,
627
+ });
628
+ }
629
+ }
630
+ }
631
+ }
632
+ };
633
+ separateDeclarationsAndNested = (content) => {
634
+ const declarations = [];
635
+ const nestedRules = [];
636
+ let i = 0;
637
+ let currentDeclaration = '';
638
+ while (i < content.length) {
639
+ const char = content[i];
640
+ if (char === '{') {
641
+ // Found start of nested rule, find the selector before it
642
+ let selectorStart = currentDeclaration.lastIndexOf(';') + 1;
643
+ if (selectorStart === 0 && currentDeclaration.trim()) {
644
+ // No semicolon found, this might be the first rule
645
+ selectorStart = 0;
646
+ }
647
+ const beforeBrace = currentDeclaration.substring(0, selectorStart);
648
+ const selector = currentDeclaration.substring(selectorStart).trim();
649
+ if (beforeBrace.trim()) {
650
+ declarations.push(beforeBrace.trim());
651
+ }
652
+ // Find the matching closing brace
653
+ let braceDepth = 1;
654
+ let ruleStart = i + 1;
655
+ i++; // Skip opening brace
656
+ while (i < content.length && braceDepth > 0) {
657
+ if (content[i] === '{')
658
+ braceDepth++;
659
+ else if (content[i] === '}')
660
+ braceDepth--;
661
+ i++;
662
+ }
663
+ const ruleContent = content.substring(ruleStart, i - 1);
664
+ nestedRules.push(`${selector} { ${ruleContent} }`);
665
+ currentDeclaration = '';
666
+ }
667
+ else {
668
+ currentDeclaration += char;
669
+ i++;
670
+ }
671
+ }
672
+ // Add remaining declarations
673
+ if (currentDeclaration.trim()) {
674
+ declarations.push(currentDeclaration.trim());
675
+ }
676
+ return {
677
+ declarations: declarations.join(' '),
678
+ nestedCSS: nestedRules.join('\n'),
679
+ };
680
+ };
681
+ processSelector = (selector, parentSelector) => {
682
+ if (!parentSelector) {
683
+ return selector;
684
+ }
685
+ // Handle & syntax - replace & with parent selector
686
+ if (selector.includes('&')) {
687
+ return selector.replace(/&/g, parentSelector);
688
+ }
689
+ // If no &, treat as descendant selector
690
+ return `${parentSelector} ${selector}`;
691
+ };
692
+ render() {
693
+ return null;
694
+ }
695
+ }
696
+ return GlobalStyleComponent;
697
+ }
480
698
  }
481
699
 
482
700