@cube-dev/ui-kit 0.0.0-canary-1d46daa → 0.0.0-canary-736d057

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 (509) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/GlobalStyles.js +1 -1
  18. package/es/components/GridProvider.js +1 -1
  19. package/es/components/HiddenInput.js +1 -1
  20. package/es/components/Item.js +1 -1
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +2 -2
  23. package/es/components/actions/Action/Action.js +14 -18
  24. package/es/components/actions/Button/Button.js +2 -1
  25. package/es/components/actions/Button/index.js +1 -1
  26. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  27. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/es/components/actions/CommandMenu/index.js +1 -1
  29. package/es/components/actions/CommandMenu/styled.js +1 -1
  30. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  31. package/es/components/actions/ItemButton/index.js +1 -1
  32. package/es/components/actions/Menu/Menu.js +1 -1
  33. package/es/components/actions/Menu/MenuItem.js +3 -8
  34. package/es/components/actions/Menu/MenuSection.js +1 -1
  35. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  36. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  37. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  38. package/es/components/actions/Menu/context.js +1 -1
  39. package/es/components/actions/Menu/index.js +1 -1
  40. package/es/components/actions/Menu/styled.js +1 -1
  41. package/es/components/actions/index.js +1 -1
  42. package/es/components/actions/use-action.js +1 -1
  43. package/es/components/actions/use-anchored-menu.js +1 -1
  44. package/es/components/actions/use-context-menu.js +1 -1
  45. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  46. package/es/components/content/Alert/Alert.js +1 -1
  47. package/es/components/content/Alert/index.js +1 -1
  48. package/es/components/content/Alert/types.js +1 -1
  49. package/es/components/content/Alert/use-alert.js +1 -1
  50. package/es/components/content/Avatar/Avatar.js +1 -1
  51. package/es/components/content/Badge/Badge.js +1 -1
  52. package/es/components/content/Card/Card.js +1 -1
  53. package/es/components/content/Content.js +1 -1
  54. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  55. package/es/components/content/CopyPasteBlock/index.js +1 -1
  56. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  57. package/es/components/content/CopySnippet/index.js +1 -1
  58. package/es/components/content/Divider.js +1 -1
  59. package/es/components/content/Footer.js +1 -1
  60. package/es/components/content/Header.js +1 -1
  61. package/es/components/content/HotKeys/HotKeys.js +1 -1
  62. package/es/components/content/HotKeys/index.js +1 -1
  63. package/es/components/content/ItemBase/ItemBase.js +8 -2
  64. package/es/components/content/ItemBase/index.js +1 -1
  65. package/es/components/content/List/SectionHeading.js +1 -1
  66. package/es/components/content/List/index.js +1 -1
  67. package/es/components/content/Paragraph.js +1 -1
  68. package/es/components/content/Placeholder/Placeholder.js +1 -1
  69. package/es/components/content/PrismCode/PrismCode.js +1 -1
  70. package/es/components/content/PrismCode/prismSetup.js +1 -1
  71. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  72. package/es/components/content/Result/Result.js +1 -1
  73. package/es/components/content/Skeleton/Skeleton.js +1 -1
  74. package/es/components/content/Tag/Tag.js +1 -1
  75. package/es/components/content/Text.js +3 -3
  76. package/es/components/content/Title.js +3 -3
  77. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  78. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  79. package/es/components/fields/Checkbox/context.js +1 -1
  80. package/es/components/fields/Checkbox/index.js +1 -1
  81. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  82. package/es/components/fields/ComboBox/index.js +1 -1
  83. package/es/components/fields/DatePicker/DateInput.js +1 -1
  84. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  85. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  86. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  87. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  88. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  89. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  90. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  91. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  92. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  93. package/es/components/fields/DatePicker/index.js +1 -1
  94. package/es/components/fields/DatePicker/intl.js +1 -1
  95. package/es/components/fields/DatePicker/parseDate.js +1 -1
  96. package/es/components/fields/DatePicker/props.js +1 -1
  97. package/es/components/fields/DatePicker/types.js +1 -1
  98. package/es/components/fields/DatePicker/utils.js +1 -1
  99. package/es/components/fields/FileInput/FileInput.js +1 -1
  100. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  101. package/es/components/fields/FilterListBox/index.js +1 -1
  102. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  103. package/es/components/fields/FilterPicker/index.js +1 -1
  104. package/es/components/fields/Input/Input.js +1 -1
  105. package/es/components/fields/Input/index.js +1 -1
  106. package/es/components/fields/ListBox/ListBox.js +1 -1
  107. package/es/components/fields/ListBox/index.js +1 -1
  108. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  109. package/es/components/fields/NumberInput/StepButton.js +1 -1
  110. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  111. package/es/components/fields/RadioGroup/Radio.js +1 -1
  112. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  113. package/es/components/fields/RadioGroup/context.js +1 -1
  114. package/es/components/fields/RadioGroup/index.js +1 -1
  115. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  116. package/es/components/fields/SearchInput/index.js +1 -1
  117. package/es/components/fields/Select/Select.js +1 -1
  118. package/es/components/fields/Select/index.js +1 -1
  119. package/es/components/fields/Slider/Gradation.js +1 -1
  120. package/es/components/fields/Slider/Header.js +1 -1
  121. package/es/components/fields/Slider/RangeSlider.js +1 -1
  122. package/es/components/fields/Slider/Slider.js +1 -1
  123. package/es/components/fields/Slider/SliderBase.js +1 -1
  124. package/es/components/fields/Slider/SliderInput.js +1 -1
  125. package/es/components/fields/Slider/SliderThumb.js +1 -1
  126. package/es/components/fields/Slider/SliderTrack.js +1 -1
  127. package/es/components/fields/Slider/elements.js +1 -1
  128. package/es/components/fields/Slider/index.js +1 -1
  129. package/es/components/fields/Slider/types.js +1 -1
  130. package/es/components/fields/Switch/Switch.js +1 -1
  131. package/es/components/fields/Switch/index.js +1 -1
  132. package/es/components/fields/TextArea/TextArea.js +1 -1
  133. package/es/components/fields/TextArea/index.js +1 -1
  134. package/es/components/fields/TextInput/TextInput.js +1 -1
  135. package/es/components/fields/TextInput/TextInputBase.js +3 -2
  136. package/es/components/fields/TextInput/index.js +1 -1
  137. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  138. package/es/components/fields/TextInputMapper/index.js +1 -1
  139. package/es/components/fields/index.js +1 -1
  140. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  141. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  142. package/es/components/form/FieldWrapper/index.js +1 -1
  143. package/es/components/form/FieldWrapper/types.js +1 -1
  144. package/es/components/form/Form/Field.js +1 -1
  145. package/es/components/form/Form/Form.js +1 -1
  146. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  147. package/es/components/form/Form/ResetButton/index.js +1 -1
  148. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  149. package/es/components/form/Form/SubmitButton/index.js +1 -1
  150. package/es/components/form/Form/SubmitError.js +1 -1
  151. package/es/components/form/Form/index.js +1 -1
  152. package/es/components/form/Form/types.js +1 -1
  153. package/es/components/form/Form/use-field/index.js +1 -1
  154. package/es/components/form/Form/use-field/types.js +1 -1
  155. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  156. package/es/components/form/Form/use-field/use-field.js +1 -1
  157. package/es/components/form/Form/use-form.js +1 -1
  158. package/es/components/form/Form/validation.js +1 -1
  159. package/es/components/form/Label.js +1 -1
  160. package/es/components/form/index.js +1 -1
  161. package/es/components/form/wrapper.js +1 -1
  162. package/es/components/layout/Flex.js +1 -1
  163. package/es/components/layout/Flow.js +1 -1
  164. package/es/components/layout/Grid.js +1 -1
  165. package/es/components/layout/Panel.js +1 -1
  166. package/es/components/layout/Prefix.js +1 -1
  167. package/es/components/layout/ResizablePanel.js +1 -1
  168. package/es/components/layout/Space.js +1 -1
  169. package/es/components/layout/Suffix.js +1 -1
  170. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  171. package/es/components/navigation/Link/Link.js +1 -1
  172. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  173. package/es/components/organisms/Modal/Modal.js +1 -1
  174. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  175. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  176. package/es/components/other/Calendar/Calendar.js +1 -1
  177. package/es/components/other/Calendar/CalendarCell.js +1 -1
  178. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  179. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  180. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  181. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  182. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  183. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  184. package/es/components/overlays/AlertDialog/index.js +1 -1
  185. package/es/components/overlays/AlertDialog/types.js +1 -1
  186. package/es/components/overlays/Dialog/Dialog.js +1 -1
  187. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  188. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  189. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  190. package/es/components/overlays/Dialog/context.js +1 -1
  191. package/es/components/overlays/Dialog/index.js +1 -1
  192. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  193. package/es/components/overlays/Modal/Modal.js +1 -1
  194. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  195. package/es/components/overlays/Modal/Overlay.js +1 -1
  196. package/es/components/overlays/Modal/Popover.js +1 -1
  197. package/es/components/overlays/Modal/Tray.js +1 -1
  198. package/es/components/overlays/Modal/Underlay.js +1 -1
  199. package/es/components/overlays/Modal/index.js +1 -1
  200. package/es/components/overlays/Modal/types.js +1 -1
  201. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  202. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  203. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  204. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  205. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  206. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  207. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  208. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  209. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  210. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  211. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  212. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  213. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  214. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  215. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  219. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  220. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  221. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  222. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  223. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  224. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  225. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  226. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  227. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  228. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  229. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  230. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  231. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  232. package/es/components/overlays/NewNotifications/index.js +1 -1
  233. package/es/components/overlays/NewNotifications/types.js +1 -1
  234. package/es/components/overlays/Notification/Notification.js +1 -1
  235. package/es/components/overlays/OverlayWrapper.js +1 -1
  236. package/es/components/overlays/Toasts/Toast.js +1 -1
  237. package/es/components/overlays/Toasts/index.js +1 -1
  238. package/es/components/overlays/Toasts/types.js +1 -1
  239. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  240. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  241. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  242. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  243. package/es/components/overlays/Tooltip/context.js +1 -1
  244. package/es/components/overlays/Tooltip/index.js +1 -1
  245. package/es/components/portal/Portal.js +1 -1
  246. package/es/components/portal/PortalProvider.js +1 -1
  247. package/es/components/portal/index.js +1 -1
  248. package/es/components/portal/types.js +1 -1
  249. package/es/components/portal/usePortal.js +1 -1
  250. package/es/components/shared/InvalidIcon.js +1 -1
  251. package/es/components/shared/ValidIcon.js +1 -1
  252. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  253. package/es/components/status/LoadingAnimation/index.js +1 -1
  254. package/es/components/status/Spin/Cube.js +1 -1
  255. package/es/components/status/Spin/InternalSpinner.js +1 -1
  256. package/es/components/status/Spin/Spin.js +1 -1
  257. package/es/components/status/Spin/SpinsContainer.js +1 -1
  258. package/es/components/status/Spin/index.js +1 -1
  259. package/es/components/status/Spin/types.js +1 -1
  260. package/es/components/status/index.js +1 -1
  261. package/es/data/item-themes.js +1 -1
  262. package/es/data/themes.js +1 -1
  263. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  264. package/es/icons/AdjustmentsIcon.js +1 -1
  265. package/es/icons/AiIcon.js +1 -1
  266. package/es/icons/AreaChartIcon.js +1 -1
  267. package/es/icons/BackwardIcon.js +1 -1
  268. package/es/icons/BarChartIcon.js +1 -1
  269. package/es/icons/BellFilledIcon.js +1 -1
  270. package/es/icons/BellIcon.js +1 -1
  271. package/es/icons/BooleanIcon.js +1 -1
  272. package/es/icons/CalendarEditIcon.js +1 -1
  273. package/es/icons/CalendarIcon.js +1 -1
  274. package/es/icons/CaretDownIcon.js +1 -1
  275. package/es/icons/CaretUpIcon.js +1 -1
  276. package/es/icons/ChartAreaStackedIcon.js +1 -1
  277. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  278. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  279. package/es/icons/ChartBarGroupedIcon.js +1 -1
  280. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  281. package/es/icons/ChartBarLineIcon.js +1 -1
  282. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  283. package/es/icons/ChartBarStackedIcon.js +1 -1
  284. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  285. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  286. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  287. package/es/icons/ChartBoxPlotIcon.js +1 -1
  288. package/es/icons/ChartBubbleIcon.js +1 -1
  289. package/es/icons/ChartDonut2Icon.js +1 -1
  290. package/es/icons/ChartFunnelIcon.js +1 -1
  291. package/es/icons/ChartKPIIcon.js +1 -1
  292. package/es/icons/ChartPie2Icon.js +1 -1
  293. package/es/icons/ChartScatterIcon.js +1 -1
  294. package/es/icons/CheckCircleFilledIcon.js +1 -1
  295. package/es/icons/CheckCircleIcon.js +1 -1
  296. package/es/icons/CheckIcon.js +1 -1
  297. package/es/icons/CircleFilledIcon.js +1 -1
  298. package/es/icons/ClearIcon.js +1 -1
  299. package/es/icons/CloseCircleFilledIcon.js +1 -1
  300. package/es/icons/CloseCircleIcon.js +1 -1
  301. package/es/icons/CloseIcon.js +1 -1
  302. package/es/icons/CodeIcon.js +1 -1
  303. package/es/icons/CopyIcon.js +1 -1
  304. package/es/icons/CountIcon.js +1 -1
  305. package/es/icons/CubeIcon.js +1 -1
  306. package/es/icons/DangerIcon.js +1 -1
  307. package/es/icons/DashboardIcon.js +1 -1
  308. package/es/icons/DatabaseIcon.js +1 -1
  309. package/es/icons/DirectionIcon.js +1 -1
  310. package/es/icons/DonutIcon.js +1 -1
  311. package/es/icons/DownIcon.js +1 -1
  312. package/es/icons/EditIcon.js +1 -1
  313. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  314. package/es/icons/ExclamationCircleIcon.js +1 -1
  315. package/es/icons/ExclamationIcon.js +1 -1
  316. package/es/icons/EyeIcon.js +1 -1
  317. package/es/icons/EyeInvisibleIcon.js +1 -1
  318. package/es/icons/FilterIcon.js +1 -1
  319. package/es/icons/FolderFilledIcon.js +1 -1
  320. package/es/icons/FolderIcon.js +1 -1
  321. package/es/icons/FolderOpenFilledIcon.js +1 -1
  322. package/es/icons/FolderOpenIcon.js +1 -1
  323. package/es/icons/ForwardIcon.js +1 -1
  324. package/es/icons/HierarchyIcon.js +1 -1
  325. package/es/icons/Icon.js +1 -1
  326. package/es/icons/InfoCircleIcon.js +1 -1
  327. package/es/icons/InfoIcon.js +1 -1
  328. package/es/icons/KeyIcon.js +1 -1
  329. package/es/icons/LeftIcon.js +1 -1
  330. package/es/icons/LineChartIcon.js +1 -1
  331. package/es/icons/LoadingIcon.js +1 -1
  332. package/es/icons/LockFilledIcon.js +1 -1
  333. package/es/icons/LockIcon.js +1 -1
  334. package/es/icons/MoreIcon.js +1 -1
  335. package/es/icons/NotAllowedIcon.js +1 -1
  336. package/es/icons/NumberIcon.js +1 -1
  337. package/es/icons/PauseCircleFilledIcon.js +1 -1
  338. package/es/icons/PauseCircleIcon.js +1 -1
  339. package/es/icons/PauseIcon.js +1 -1
  340. package/es/icons/PieChartIcon.js +1 -1
  341. package/es/icons/PlayCircleIcon.js +1 -1
  342. package/es/icons/PlayIcon.js +1 -1
  343. package/es/icons/PlusIcon.js +1 -1
  344. package/es/icons/ReloadIcon.js +1 -1
  345. package/es/icons/ReportIcon.js +1 -1
  346. package/es/icons/ReturnIcon.js +1 -1
  347. package/es/icons/RightIcon.js +1 -1
  348. package/es/icons/SchemeIcon.js +1 -1
  349. package/es/icons/SearchIcon.js +1 -1
  350. package/es/icons/SettingsIcon.js +1 -1
  351. package/es/icons/ShieldFilledIcon.js +1 -1
  352. package/es/icons/ShieldIcon.js +1 -1
  353. package/es/icons/SlashIcon.js +1 -1
  354. package/es/icons/SparklesIcon.js +1 -1
  355. package/es/icons/SqlIcon.js +1 -1
  356. package/es/icons/StatsIcon.js +1 -1
  357. package/es/icons/StopIcon.js +1 -1
  358. package/es/icons/StringIcon.js +1 -1
  359. package/es/icons/SwitchIcon.js +1 -1
  360. package/es/icons/TableIcon.js +1 -1
  361. package/es/icons/ThumbsDownIcon.js +1 -1
  362. package/es/icons/ThumbsUpIcon.js +1 -1
  363. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  364. package/es/icons/ThunderboltFilledIcon.js +1 -1
  365. package/es/icons/ThunderboltIcon.js +1 -1
  366. package/es/icons/TimeIcon.js +1 -1
  367. package/es/icons/UnlockIcon.js +1 -1
  368. package/es/icons/UpIcon.js +1 -1
  369. package/es/icons/UserGroupIcon.js +1 -1
  370. package/es/icons/UserIcon.js +1 -1
  371. package/es/icons/UserLockIcon.js +1 -1
  372. package/es/icons/ViewIcon.js +1 -1
  373. package/es/icons/WarningFilledIcon.js +1 -1
  374. package/es/icons/WarningIcon.js +1 -1
  375. package/es/icons/add-new-icon.js +1 -1
  376. package/es/icons/index.js +1 -1
  377. package/es/icons/wrap-icon.js +1 -1
  378. package/es/index.js +1 -1
  379. package/es/provider.js +1 -1
  380. package/es/providers/TrackingProvider.js +1 -1
  381. package/es/services/notification.js +1 -1
  382. package/es/shared/form.js +1 -1
  383. package/es/shared/index.js +1 -1
  384. package/es/stories/Form.legacy-stories.js +1 -1
  385. package/es/stories/FormFieldArgs.js +1 -1
  386. package/es/stories/Layout.stories.js +1 -1
  387. package/es/stories/Tasty.stories.js +1 -1
  388. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  389. package/es/stories/components/DialogFormApp.js +1 -1
  390. package/es/stories/components/StyledButton.js +1 -1
  391. package/es/stories/lists/baseProps.js +1 -2
  392. package/es/tasty/debug.js +431 -0
  393. package/es/tasty/index.js +3 -1
  394. package/es/tasty/injector/flatten.js +350 -0
  395. package/es/tasty/injector/index.js +165 -0
  396. package/es/tasty/injector/injector.js +293 -0
  397. package/es/tasty/injector/sheet-manager.js +492 -0
  398. package/es/tasty/injector/types.js +10 -0
  399. package/es/tasty/parser/classify.js +1 -1
  400. package/es/tasty/parser/const.js +1 -1
  401. package/es/tasty/parser/lru.js +38 -2
  402. package/es/tasty/parser/parser.js +1 -1
  403. package/es/tasty/parser/tokenizer.js +1 -1
  404. package/es/tasty/parser/types.js +1 -1
  405. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  406. package/es/tasty/styles/align.js +1 -1
  407. package/es/tasty/styles/border.js +1 -1
  408. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  409. package/es/tasty/styles/color.js +8 -12
  410. package/es/tasty/styles/createStyle.js +3 -3
  411. package/es/tasty/styles/dimension.js +1 -1
  412. package/es/tasty/styles/display.js +1 -1
  413. package/es/tasty/styles/fade.js +1 -1
  414. package/es/tasty/styles/fill.js +6 -8
  415. package/es/tasty/styles/flow.js +1 -1
  416. package/es/tasty/styles/font.js +1 -1
  417. package/es/tasty/styles/fontStyle.js +1 -1
  418. package/es/tasty/styles/gap.js +1 -1
  419. package/es/tasty/styles/groupRadius.js +1 -1
  420. package/es/tasty/styles/height.js +1 -1
  421. package/es/tasty/styles/index.js +1 -1
  422. package/es/tasty/styles/inset.js +1 -1
  423. package/es/tasty/styles/justify.js +1 -1
  424. package/es/tasty/styles/list.js +1 -1
  425. package/es/tasty/styles/margin.js +1 -1
  426. package/es/tasty/styles/marginBlock.js +1 -1
  427. package/es/tasty/styles/marginInline.js +1 -1
  428. package/es/tasty/styles/outline.js +1 -1
  429. package/es/tasty/styles/padding.js +1 -1
  430. package/es/tasty/styles/paddingBlock.js +1 -1
  431. package/es/tasty/styles/paddingInline.js +1 -1
  432. package/es/tasty/styles/place.js +1 -1
  433. package/es/tasty/styles/predefined.js +1 -3
  434. package/es/tasty/styles/preset.js +1 -1
  435. package/es/tasty/styles/radius.js +1 -1
  436. package/es/tasty/styles/reset.js +40 -44
  437. package/es/tasty/styles/scrollbar.js +1 -1
  438. package/es/tasty/styles/shadow.js +1 -1
  439. package/es/tasty/styles/styledScrollbar.js +1 -1
  440. package/es/tasty/styles/transition.js +1 -1
  441. package/es/tasty/styles/types.js +1 -1
  442. package/es/tasty/styles/width.js +1 -1
  443. package/es/tasty/tasty.js +92 -19
  444. package/es/tasty/types.js +1 -1
  445. package/es/tasty/utils/cache-wrapper.js +1 -1
  446. package/es/tasty/utils/case-converter.js +1 -1
  447. package/es/tasty/utils/colors.js +1 -1
  448. package/es/tasty/utils/dotize.js +1 -1
  449. package/es/tasty/utils/filterBaseProps.js +1 -1
  450. package/es/tasty/utils/getDisplayName.js +1 -1
  451. package/es/tasty/utils/getModCombinations.js +26 -30
  452. package/es/tasty/utils/mergeStyles.js +1 -1
  453. package/es/tasty/utils/modAttrs.js +1 -1
  454. package/es/tasty/utils/renderStyles.js +846 -57
  455. package/es/tasty/utils/responsive.js +1 -1
  456. package/es/tasty/utils/string.js +1 -1
  457. package/es/tasty/utils/styles.js +2 -218
  458. package/es/tasty/utils/warnings.js +1 -1
  459. package/es/tokens.js +1 -1
  460. package/es/type-checks.js +1 -1
  461. package/es/utils/ResizeSensor.js +1 -1
  462. package/es/utils/modules.js +1 -1
  463. package/es/utils/promise.js +1 -1
  464. package/es/utils/random.js +1 -1
  465. package/es/utils/range.js +1 -1
  466. package/es/utils/react/Slots.js +1 -1
  467. package/es/utils/react/chain.js +1 -1
  468. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  469. package/es/utils/react/index.js +1 -1
  470. package/es/utils/react/interactions.js +1 -1
  471. package/es/utils/react/isTextOnly.js +1 -1
  472. package/es/utils/react/mapProps.js +1 -1
  473. package/es/utils/react/mergeProps.js +1 -1
  474. package/es/utils/react/nullableValue.js +1 -1
  475. package/es/utils/react/sharedStore.js +1 -1
  476. package/es/utils/react/useCombinedRefs.js +1 -1
  477. package/es/utils/react/useControlledFocusVisible.js +1 -1
  478. package/es/utils/react/useEventBus.js +1 -1
  479. package/es/utils/react/useId.js +1 -1
  480. package/es/utils/react/useIsDarwin.js +1 -1
  481. package/es/utils/react/useKeySymbols.js +1 -1
  482. package/es/utils/react/useLayoutEffect.js +1 -1
  483. package/es/utils/react/useQaProps.js +1 -1
  484. package/es/utils/react/useViewportSize.js +1 -1
  485. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  486. package/es/utils/transitions.js +1 -1
  487. package/es/utils/tree.js +1 -1
  488. package/es/utils/warnings.js +1 -1
  489. package/es/version.js +2 -2
  490. package/package.json +1 -1
  491. package/types/components/actions/Button/Button.d.ts +1 -0
  492. package/types/components/actions/Menu/styled.d.ts +699 -702
  493. package/types/components/actions/use-action.d.ts +1 -1
  494. package/types/components/content/List/SectionHeading.d.ts +233 -234
  495. package/types/components/fields/DatePicker/DatePickerElement.d.ts +233 -234
  496. package/types/tasty/debug.d.ts +108 -0
  497. package/types/tasty/index.d.ts +2 -0
  498. package/types/tasty/injector/flatten.d.ts +16 -0
  499. package/types/tasty/injector/index.d.ts +64 -0
  500. package/types/tasty/injector/injector.d.ts +82 -0
  501. package/types/tasty/injector/sheet-manager.d.ts +78 -0
  502. package/types/tasty/injector/types.d.ts +68 -0
  503. package/types/tasty/parser/lru.d.ts +5 -1
  504. package/types/tasty/styles/color.d.ts +3 -1
  505. package/types/tasty/styles/reset.d.ts +1 -2
  506. package/types/tasty/types.d.ts +0 -2
  507. package/types/tasty/utils/getModCombinations.d.ts +9 -1
  508. package/types/tasty/utils/renderStyles.d.ts +25 -7
  509. package/types/tasty/utils/styles.d.ts +2 -87
@@ -0,0 +1,350 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.0.0-canary-736d057
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ /**
9
+ * Parse and flatten nested CSS
10
+ * Handles &, .Class, SubElement patterns from renderStyles output
11
+ * Preserves at-rule context (media queries, supports, etc.)
12
+ */
13
+ export function flattenNestedCss(cssText, baseClassName, atRuleStack = []) {
14
+ const rules = [];
15
+ if (!cssText.trim()) {
16
+ return rules;
17
+ }
18
+ // Parse the CSS text into rules
19
+ const parsedRules = parseCssRules(cssText, atRuleStack);
20
+ for (const rule of parsedRules) {
21
+ const flattenedRules = flattenRule(rule, baseClassName);
22
+ rules.push(...flattenedRules);
23
+ }
24
+ return rules;
25
+ }
26
+ /**
27
+ * Parse CSS text into a tree structure
28
+ * Handles at-rules and preserves context
29
+ */
30
+ function parseCssRules(cssText, atRuleStack = []) {
31
+ const rules = [];
32
+ // Enhanced regex to handle at-rules - improved to handle simple cases better
33
+ const rulePattern = /([^{]+)\s*\{\s*([^{}]*(?:\{[^}]*\}[^{}]*)*)\s*\}/g;
34
+ let match;
35
+ while ((match = rulePattern.exec(cssText)) !== null) {
36
+ const selector = match[1].trim();
37
+ const content = match[2].trim();
38
+ // Skip empty rules
39
+ if (!selector || (!content && !content.includes('{'))) {
40
+ continue;
41
+ }
42
+ // Check if this is an at-rule
43
+ if (selector.startsWith('@')) {
44
+ // This is an at-rule, parse its content with updated stack
45
+ const newAtRuleStack = [...atRuleStack, selector];
46
+ const nestedRules = parseCssRules(content, newAtRuleStack);
47
+ rules.push(...nestedRules); // Flatten at-rule contents
48
+ }
49
+ else {
50
+ // Regular selector rule
51
+ if (content.includes('{')) {
52
+ // Has nested rules - need to separate declarations from nested rules
53
+ const { declarations, nestedContent } = separateDeclarationsFromNested(content);
54
+ // Add the rule for the selector if it has declarations
55
+ if (declarations && declarations.trim()) {
56
+ rules.push({
57
+ selector,
58
+ declarations: declarations.trim(),
59
+ atRules: atRuleStack.length > 0 ? [...atRuleStack] : undefined,
60
+ });
61
+ }
62
+ // Parse nested rules
63
+ if (nestedContent.trim()) {
64
+ const nestedRules = parseCssRules(nestedContent, atRuleStack);
65
+ rules.push(...nestedRules);
66
+ }
67
+ }
68
+ else {
69
+ // Only declarations - this handles simple cases like &{display: block;}
70
+ if (content && content.trim()) {
71
+ rules.push({
72
+ selector,
73
+ declarations: content.trim(),
74
+ atRules: atRuleStack.length > 0 ? [...atRuleStack] : undefined,
75
+ });
76
+ }
77
+ }
78
+ }
79
+ }
80
+ return rules;
81
+ }
82
+ /**
83
+ * Separate declarations from nested rules in CSS content
84
+ */
85
+ function separateDeclarationsFromNested(content) {
86
+ const declarations = [];
87
+ const nestedRules = [];
88
+ let i = 0;
89
+ let currentDeclaration = '';
90
+ while (i < content.length) {
91
+ const char = content[i];
92
+ if (char === '{') {
93
+ // Found start of nested rule - extract the entire nested rule
94
+ const ruleStart = i;
95
+ let braceDepth = 1;
96
+ i++; // Move past opening brace
97
+ // Find the matching closing brace
98
+ while (i < content.length && braceDepth > 0) {
99
+ if (content[i] === '{') {
100
+ braceDepth++;
101
+ }
102
+ else if (content[i] === '}') {
103
+ braceDepth--;
104
+ }
105
+ i++;
106
+ }
107
+ // Extract the complete nested rule (including selector before '{')
108
+ let selectorStart = ruleStart;
109
+ while (selectorStart > 0 &&
110
+ content[selectorStart - 1] !== ';' &&
111
+ content[selectorStart - 1] !== '\n') {
112
+ selectorStart--;
113
+ }
114
+ // Skip whitespace at start of selector
115
+ while (selectorStart < ruleStart && /\s/.test(content[selectorStart])) {
116
+ selectorStart++;
117
+ }
118
+ const nestedRule = content.slice(selectorStart, i);
119
+ nestedRules.push(nestedRule);
120
+ // Save any pending declaration
121
+ if (currentDeclaration.trim()) {
122
+ const decl = currentDeclaration.trim();
123
+ if (decl.includes(':') && !decl.includes('{') && !decl.includes('}')) {
124
+ declarations.push(decl);
125
+ }
126
+ currentDeclaration = '';
127
+ }
128
+ continue;
129
+ }
130
+ else if (char === ';') {
131
+ // End of declaration
132
+ const decl = currentDeclaration.trim();
133
+ if (decl &&
134
+ decl.includes(':') &&
135
+ !decl.includes('{') &&
136
+ !decl.includes('}')) {
137
+ declarations.push(decl);
138
+ }
139
+ currentDeclaration = '';
140
+ }
141
+ else if (char !== '\n' || currentDeclaration.trim()) {
142
+ // Add character to current declaration (skip leading newlines)
143
+ currentDeclaration += char;
144
+ }
145
+ i++;
146
+ }
147
+ // Handle final declaration if no trailing semicolon
148
+ if (currentDeclaration.trim()) {
149
+ const decl = currentDeclaration.trim();
150
+ if (decl.includes(':') && !decl.includes('{') && !decl.includes('}')) {
151
+ declarations.push(decl);
152
+ }
153
+ }
154
+ return {
155
+ declarations: declarations.join('; '),
156
+ nestedContent: nestedRules.join('\n'),
157
+ };
158
+ }
159
+ /**
160
+ * Extract CSS declarations (non-nested rules) from content
161
+ */
162
+ function extractDeclarations(content) {
163
+ const declarations = [];
164
+ let braceDepth = 0;
165
+ let currentDeclaration = '';
166
+ for (let i = 0; i < content.length; i++) {
167
+ const char = content[i];
168
+ if (char === '{') {
169
+ braceDepth++;
170
+ // If we're entering a nested rule, save any current declaration
171
+ if (braceDepth === 1 && currentDeclaration.trim()) {
172
+ const decl = currentDeclaration.trim();
173
+ if (decl.includes(':') && !decl.includes('{') && !decl.includes('}')) {
174
+ declarations.push(decl);
175
+ }
176
+ currentDeclaration = '';
177
+ }
178
+ }
179
+ else if (char === '}') {
180
+ braceDepth--;
181
+ currentDeclaration = ''; // Reset on closing brace
182
+ }
183
+ else if (braceDepth === 0) {
184
+ // Only collect content when we're not inside nested rules
185
+ if (char === ';') {
186
+ const decl = currentDeclaration.trim();
187
+ if (decl &&
188
+ decl.includes(':') &&
189
+ !decl.includes('{') &&
190
+ !decl.includes('}')) {
191
+ declarations.push(decl);
192
+ }
193
+ currentDeclaration = '';
194
+ }
195
+ else if (char !== '\n' || currentDeclaration.trim()) {
196
+ // Add character to current declaration (skip leading newlines)
197
+ currentDeclaration += char;
198
+ }
199
+ }
200
+ // Ignore content inside nested rules (braceDepth > 0)
201
+ }
202
+ // Handle final declaration if no trailing semicolon
203
+ if (braceDepth === 0 && currentDeclaration.trim()) {
204
+ const decl = currentDeclaration.trim();
205
+ if (decl.includes(':') && !decl.includes('{') && !decl.includes('}')) {
206
+ declarations.push(decl);
207
+ }
208
+ }
209
+ return declarations.join('; ');
210
+ }
211
+ /**
212
+ * Flatten a parsed rule against a base class name
213
+ */
214
+ function flattenRule(rule, baseClassName) {
215
+ const results = [];
216
+ // Process the main rule
217
+ const flatSelector = flattenSelector(rule.selector, baseClassName);
218
+ // Always process the main rule if it has declarations
219
+ if (rule.declarations && rule.declarations.trim()) {
220
+ results.push({
221
+ selector: flatSelector,
222
+ declarations: rule.declarations.trim(),
223
+ atRules: rule.atRules,
224
+ });
225
+ }
226
+ // Process nested rules
227
+ if (rule.nested) {
228
+ for (const nestedRule of rule.nested) {
229
+ const nestedResults = flattenRule(nestedRule, baseClassName);
230
+ results.push(...nestedResults);
231
+ }
232
+ }
233
+ return results;
234
+ }
235
+ /**
236
+ * Flatten a selector against a base class name
237
+ * Handles &, .Class, SubElement patterns
238
+ * Uses doubled class name for increased specificity (.t0 -> .t0.t0)
239
+ */
240
+ function flattenSelector(selector, baseClassName) {
241
+ // Handle media queries - pass through as-is
242
+ if (selector.startsWith('@media')) {
243
+ return selector;
244
+ }
245
+ // Create doubled class selector for increased specificity
246
+ const doubledClass = `.${baseClassName}.${baseClassName}`;
247
+ // Handle & replacement
248
+ if (selector.includes('&')) {
249
+ return selector.replace(/&/g, doubledClass);
250
+ }
251
+ // Handle .Class pattern -> descendant selector
252
+ if (selector.startsWith('.')) {
253
+ return `${doubledClass} ${selector}`;
254
+ }
255
+ // Handle SubElement pattern (uppercase start) -> data-element selector
256
+ if (/^[A-Z]/.test(selector)) {
257
+ return `${doubledClass} [data-element="${selector}"]`;
258
+ }
259
+ // Handle other selectors (pseudo-classes, attributes, etc.)
260
+ if (selector.startsWith(':') || selector.startsWith('[')) {
261
+ return `${doubledClass}${selector}`;
262
+ }
263
+ // Default: treat as descendant
264
+ return `${doubledClass} ${selector}`;
265
+ }
266
+ /**
267
+ * Global-aware selector flattener that uses an arbitrary base selector (e.g. ".myButton"),
268
+ * not a class name. It replaces "&" with the full selector and maps nested selectors
269
+ * relative to that base without introducing extra dots.
270
+ */
271
+ function flattenSelectorWithBase(selector, baseSelector) {
272
+ // Pass-through media queries
273
+ if (selector.startsWith('@media')) {
274
+ return selector;
275
+ }
276
+ // Replace all ampersands with the provided base selector directly
277
+ if (selector.includes('&')) {
278
+ return selector.replace(/&/g, baseSelector);
279
+ }
280
+ // Pseudo-classes/attributes attach directly
281
+ if (selector.startsWith(':') || selector.startsWith('[')) {
282
+ return `${baseSelector}${selector}`;
283
+ }
284
+ // Class or id selectors become descendants
285
+ if (selector.startsWith('.') || selector.startsWith('#')) {
286
+ return `${baseSelector} ${selector}`;
287
+ }
288
+ // SubElement pattern (uppercase start) -> data-element selector as descendant
289
+ if (/^[A-Z]/.test(selector)) {
290
+ return `${baseSelector} [data-element="${selector}"]`;
291
+ }
292
+ // Default: descendant
293
+ return `${baseSelector} ${selector}`;
294
+ }
295
+ /**
296
+ * Flatten nested CSS for a concrete selector (global styles).
297
+ * Unlike the className-based variant, this preserves the provided selector string as-is.
298
+ */
299
+ export function flattenNestedCssForSelector(cssText, baseSelector, atRuleStack = []) {
300
+ const rules = [];
301
+ if (!cssText.trim()) {
302
+ return rules;
303
+ }
304
+ // If there are no blocks, treat it as a declaration list for the base selector
305
+ if (!cssText.includes('{')) {
306
+ const declarations = extractDeclarations(cssText);
307
+ if (declarations.trim()) {
308
+ rules.push({
309
+ selector: baseSelector,
310
+ declarations,
311
+ atRules: atRuleStack.length ? [...atRuleStack] : undefined,
312
+ });
313
+ }
314
+ return rules;
315
+ }
316
+ // Reuse the same parser to get structured rules
317
+ const parsedRules = parseCssRules(cssText, atRuleStack);
318
+ function flattenRuleWithBase(rule, baseSel) {
319
+ const results = [];
320
+ const flatSelector = flattenSelectorWithBase(rule.selector, baseSel);
321
+ if (rule.declarations && rule.declarations.trim()) {
322
+ results.push({
323
+ selector: flatSelector,
324
+ declarations: rule.declarations.trim(),
325
+ atRules: rule.atRules,
326
+ });
327
+ }
328
+ if (rule.nested) {
329
+ for (const nestedRule of rule.nested) {
330
+ results.push(...flattenRuleWithBase(nestedRule, baseSel));
331
+ }
332
+ }
333
+ return results;
334
+ }
335
+ for (const rule of parsedRules) {
336
+ rules.push(...flattenRuleWithBase(rule, baseSelector));
337
+ }
338
+ return rules;
339
+ }
340
+ /**
341
+ * Wrap a CSS rule with at-rules (media queries, supports, etc.)
342
+ */
343
+ export function wrapWithAtRules(rule, atRules) {
344
+ if (!atRules || atRules.length === 0) {
345
+ return rule;
346
+ }
347
+ return atRules.reduceRight((acc, atRule) => `${atRule} { ${acc} }`, rule);
348
+ }
349
+
350
+
@@ -0,0 +1,165 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.0.0-canary-736d057
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { StyleInjector } from './injector';
9
+ // Use a more robust global singleton that survives React Strict Mode
10
+ const GLOBAL_INJECTOR_KEY = '__TASTY_GLOBAL_INJECTOR__';
11
+ /**
12
+ * Detect if we're running in a test environment
13
+ */
14
+ function isTestEnvironment() {
15
+ // Check Node.js environment
16
+ if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {
17
+ return true;
18
+ }
19
+ // Check for Jest globals (safely)
20
+ if (typeof global !== 'undefined') {
21
+ const g = global;
22
+ if (g.jest || g.expect || g.describe || g.it) {
23
+ return true;
24
+ }
25
+ }
26
+ // Check for jsdom environment (common in tests)
27
+ if (typeof window !== 'undefined' &&
28
+ window.navigator?.userAgent?.includes('jsdom')) {
29
+ return true;
30
+ }
31
+ // Check for other test runners
32
+ if (typeof globalThis !== 'undefined') {
33
+ const gt = globalThis;
34
+ if (gt.vitest || gt.mocha) {
35
+ return true;
36
+ }
37
+ }
38
+ return false;
39
+ }
40
+ /**
41
+ * Configure the global style injector
42
+ */
43
+ export function configure(config = {}) {
44
+ const fullConfig = {
45
+ maxRulesPerSheet: 8192, // safer default cap per sheet
46
+ unusedStylesThreshold: 500, // default threshold for bulk cleanup of unused styles
47
+ bulkCleanupDelay: 5000, // default delay before bulk cleanup (ignored if idleCleanup is true)
48
+ idleCleanup: true, // default to using requestIdleCallback instead of setTimeout
49
+ collectMetrics: false, // default to no performance tracking
50
+ forceTextInjection: false, // auto-enable for test environments
51
+ debugMode: false, // reduce memory usage by avoiding full cssText storage
52
+ ...config,
53
+ };
54
+ // Store on window to survive React Strict Mode resets
55
+ if (typeof window !== 'undefined') {
56
+ window[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
57
+ }
58
+ else {
59
+ // Fallback for SSR
60
+ globalThis[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
61
+ }
62
+ }
63
+ /**
64
+ * Get or create the global injector instance
65
+ */
66
+ function getGlobalInjector() {
67
+ const storage = typeof window !== 'undefined' ? window : globalThis;
68
+ if (!storage[GLOBAL_INJECTOR_KEY]) {
69
+ configure();
70
+ }
71
+ return storage[GLOBAL_INJECTOR_KEY];
72
+ }
73
+ /**
74
+ * Inject styles and return className with dispose function
75
+ */
76
+ export function inject(rules, options) {
77
+ return getGlobalInjector().inject(rules, options);
78
+ }
79
+ /**
80
+ * Inject global CSS rule (legacy method - not supported in direct injector)
81
+ */
82
+ export function injectGlobal(selector, cssText, options) {
83
+ return getGlobalInjector().injectGlobal(selector, cssText, options);
84
+ }
85
+ /**
86
+ * Get CSS text from all sheets (for SSR)
87
+ */
88
+ export function getCssText(options) {
89
+ return getGlobalInjector().getCssText(options);
90
+ }
91
+ /**
92
+ * Collect only CSS used by a rendered subtree (like jest-styled-components).
93
+ * Pass the container returned by render(...).
94
+ */
95
+ export function getCssTextForNode(node, options) {
96
+ // Collect tasty-generated class names (t<number>) from the subtree
97
+ const classSet = new Set();
98
+ const readClasses = (el) => {
99
+ const cls = el.getAttribute('class');
100
+ if (!cls)
101
+ return;
102
+ for (const token of cls.split(/\s+/)) {
103
+ if (/^t\d+$/.test(token))
104
+ classSet.add(token);
105
+ }
106
+ };
107
+ // Include node itself if it's an Element
108
+ if (node.getAttribute) {
109
+ readClasses(node);
110
+ }
111
+ // Walk descendants
112
+ const elements = node.querySelectorAll
113
+ ? node.querySelectorAll('[class]')
114
+ : [];
115
+ elements && elements.forEach(readClasses);
116
+ return getGlobalInjector().getCssTextForClasses(classSet, options);
117
+ }
118
+ /**
119
+ * Force cleanup of unused rules
120
+ */
121
+ export function cleanup(root) {
122
+ return getGlobalInjector().cleanup(root);
123
+ }
124
+ /**
125
+ * Check if we're currently running in a test environment
126
+ */
127
+ export function getIsTestEnvironment() {
128
+ return isTestEnvironment();
129
+ }
130
+ /**
131
+ * Get the global injector instance for debugging
132
+ */
133
+ export const injector = {
134
+ get instance() {
135
+ return getGlobalInjector();
136
+ },
137
+ };
138
+ /**
139
+ * Destroy all resources and clean up
140
+ */
141
+ export function destroy(root) {
142
+ return getGlobalInjector().destroy(root);
143
+ }
144
+ /**
145
+ * Create a new isolated injector instance
146
+ */
147
+ export function createInjector(config = {}) {
148
+ const isTest = isTestEnvironment();
149
+ const fullConfig = {
150
+ maxRulesPerSheet: 8192, // safer default cap per sheet
151
+ unusedStylesThreshold: 500, // default threshold for bulk cleanup of unused styles
152
+ bulkCleanupDelay: 5000, // default delay before bulk cleanup (ignored if idleCleanup is true)
153
+ idleCleanup: true, // default to using requestIdleCallback instead of setTimeout
154
+ collectMetrics: false, // default to no performance tracking
155
+ forceTextInjection: isTest, // auto-enable for test environments
156
+ debugMode: false, // reduce memory usage by avoiding full cssText storage
157
+ ...config,
158
+ };
159
+ return new StyleInjector(fullConfig);
160
+ }
161
+ export { StyleInjector } from './injector';
162
+ export { SheetManager } from './sheet-manager';
163
+ export { flattenNestedCss } from './flatten';
164
+
165
+