@cube-dev/ui-kit 0.75.0 → 0.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/CHANGELOG.md +14 -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 +1 -1
  23. package/es/components/actions/Action/Action.js +1 -1
  24. package/es/components/actions/Button/Button.js +1 -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 +1 -1
  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 +1 -1
  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 +1 -1
  76. package/es/components/content/Title.js +1 -1
  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 +3 -7
  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 +3 -3
  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 +1 -1
  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 -1
  392. package/es/tasty/debug.js +541 -744
  393. package/es/tasty/index.js +1 -1
  394. package/es/tasty/injector/index.js +31 -15
  395. package/es/tasty/injector/injector.js +138 -148
  396. package/es/tasty/injector/sheet-manager.js +292 -134
  397. package/es/tasty/injector/types.js +1 -1
  398. package/es/tasty/parser/classify.js +1 -1
  399. package/es/tasty/parser/const.js +1 -1
  400. package/es/tasty/parser/lru.js +1 -1
  401. package/es/tasty/parser/parser.js +1 -1
  402. package/es/tasty/parser/tokenizer.js +1 -1
  403. package/es/tasty/parser/types.js +1 -1
  404. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  405. package/es/tasty/styles/align.js +1 -1
  406. package/es/tasty/styles/border.js +1 -1
  407. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  408. package/es/tasty/styles/color.js +1 -1
  409. package/es/tasty/styles/createStyle.js +1 -1
  410. package/es/tasty/styles/dimension.js +1 -1
  411. package/es/tasty/styles/display.js +1 -1
  412. package/es/tasty/styles/fade.js +1 -1
  413. package/es/tasty/styles/fill.js +1 -1
  414. package/es/tasty/styles/flow.js +1 -1
  415. package/es/tasty/styles/font.js +1 -1
  416. package/es/tasty/styles/fontStyle.js +1 -1
  417. package/es/tasty/styles/gap.js +1 -1
  418. package/es/tasty/styles/groupRadius.js +1 -1
  419. package/es/tasty/styles/height.js +1 -1
  420. package/es/tasty/styles/index.js +1 -1
  421. package/es/tasty/styles/inset.js +1 -1
  422. package/es/tasty/styles/justify.js +1 -1
  423. package/es/tasty/styles/list.js +1 -1
  424. package/es/tasty/styles/margin.js +1 -1
  425. package/es/tasty/styles/marginBlock.js +1 -1
  426. package/es/tasty/styles/marginInline.js +1 -1
  427. package/es/tasty/styles/outline.js +1 -1
  428. package/es/tasty/styles/padding.js +1 -1
  429. package/es/tasty/styles/paddingBlock.js +1 -1
  430. package/es/tasty/styles/paddingInline.js +1 -1
  431. package/es/tasty/styles/place.js +1 -1
  432. package/es/tasty/styles/predefined.js +1 -1
  433. package/es/tasty/styles/preset.js +1 -1
  434. package/es/tasty/styles/radius.js +1 -1
  435. package/es/tasty/styles/reset.js +1 -1
  436. package/es/tasty/styles/scrollbar.js +1 -1
  437. package/es/tasty/styles/shadow.js +1 -1
  438. package/es/tasty/styles/styledScrollbar.js +1 -1
  439. package/es/tasty/styles/transition.js +1 -1
  440. package/es/tasty/styles/types.js +1 -1
  441. package/es/tasty/styles/width.js +1 -1
  442. package/es/tasty/tasty.js +61 -50
  443. package/es/tasty/types.js +1 -1
  444. package/es/tasty/utils/cache-wrapper.js +1 -1
  445. package/es/tasty/utils/case-converter.js +1 -1
  446. package/es/tasty/utils/colors.js +1 -1
  447. package/es/tasty/utils/dotize.js +1 -1
  448. package/es/tasty/utils/filterBaseProps.js +1 -1
  449. package/es/tasty/utils/getDisplayName.js +1 -1
  450. package/es/tasty/utils/getModCombinations.js +1 -1
  451. package/es/tasty/utils/isDevEnv.js +36 -0
  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 +44 -4
  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 +39 -1
  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/Menu/styled.d.ts +60 -60
  492. package/types/components/content/List/SectionHeading.d.ts +20 -20
  493. package/types/components/fields/DatePicker/DatePickerElement.d.ts +20 -20
  494. package/types/tasty/debug.d.ts +135 -222
  495. package/types/tasty/injector/index.d.ts +18 -2
  496. package/types/tasty/injector/injector.d.ts +20 -18
  497. package/types/tasty/injector/sheet-manager.d.ts +19 -15
  498. package/types/tasty/injector/types.d.ts +29 -13
  499. package/types/tasty/utils/isDevEnv.d.ts +6 -0
  500. package/types/tasty/utils/renderStyles.d.ts +6 -1
  501. package/types/tasty/utils/styles.d.ts +1 -0
package/es/tasty/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.75.0
4
+ * @cube-dev/ui-kit v0.76.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.75.0
4
+ * @cube-dev/ui-kit v0.76.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
+ import { isDevEnv } from '../utils/isDevEnv';
8
9
  import { StyleInjector } from './injector';
9
10
  // Use a more robust global singleton that survives React Strict Mode
10
11
  const GLOBAL_INJECTOR_KEY = '__TASTY_GLOBAL_INJECTOR__';
@@ -38,17 +39,26 @@ function isTestEnvironment() {
38
39
  return false;
39
40
  }
40
41
  /**
41
- * Configure the global style injector
42
+ * Create default configuration with optional test environment detection
42
43
  */
43
- export function configure(config = {}) {
44
- const fullConfig = {
44
+ function createDefaultConfig(isTest) {
45
+ return {
45
46
  maxRulesPerSheet: 8192, // safer default cap per sheet
46
- unusedStylesThreshold: 200, // default threshold for bulk cleanup of unused styles
47
+ unusedStylesThreshold: 500, // default threshold for bulk cleanup of unused styles
47
48
  bulkCleanupDelay: 5000, // default delay before bulk cleanup (ignored if idleCleanup is true)
48
49
  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
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(),
52
62
  ...config,
53
63
  };
54
64
  // Store on window to survive React Strict Mode resets
@@ -70,12 +80,24 @@ function getGlobalInjector() {
70
80
  }
71
81
  return storage[GLOBAL_INJECTOR_KEY];
72
82
  }
83
+ /**
84
+ * Allocate a className for a cacheKey without injecting styles yet
85
+ */
86
+ export function allocateClassName(cacheKey, options) {
87
+ return getGlobalInjector().allocateClassName(cacheKey, options);
88
+ }
73
89
  /**
74
90
  * Inject styles and return className with dispose function
75
91
  */
76
92
  export function inject(rules, options) {
77
93
  return getGlobalInjector().inject(rules, options);
78
94
  }
95
+ /**
96
+ * Inject global rules that should not reserve tasty class names
97
+ */
98
+ export function injectGlobal(rules, options) {
99
+ return getGlobalInjector().injectGlobal(rules, options);
100
+ }
79
101
  /**
80
102
  * Inject keyframes and return object with toString() and dispose()
81
103
  */
@@ -147,13 +169,7 @@ export function destroy(root) {
147
169
  export function createInjector(config = {}) {
148
170
  const isTest = isTestEnvironment();
149
171
  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
172
+ ...createDefaultConfig(isTest),
157
173
  ...config,
158
174
  };
159
175
  return new StyleInjector(fullConfig);
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.75.0
4
+ * @cube-dev/ui-kit v0.76.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -23,10 +23,42 @@ export class StyleInjector {
23
23
  sheetManager;
24
24
  config;
25
25
  cleanupScheduled = false;
26
+ globalRuleCounter = 0;
26
27
  constructor(config = {}) {
27
28
  this.config = config;
28
29
  this.sheetManager = new SheetManager(config);
29
30
  }
31
+ /**
32
+ * Allocate a className for a cacheKey without injecting styles yet.
33
+ * This allows separating className allocation (render phase) from style injection (insertion phase).
34
+ */
35
+ allocateClassName(cacheKey, options) {
36
+ const root = options?.root || document;
37
+ const registry = this.sheetManager.getRegistry(root);
38
+ // Check if we can reuse existing className for this cache key
39
+ if (registry.cacheKeyToClassName.has(cacheKey)) {
40
+ const className = registry.cacheKeyToClassName.get(cacheKey);
41
+ return {
42
+ className,
43
+ isNewAllocation: false,
44
+ };
45
+ }
46
+ // Generate new className and reserve it
47
+ const className = generateClassName(registry.classCounter++);
48
+ // Create placeholder RuleInfo to reserve the className
49
+ const placeholderRuleInfo = {
50
+ className,
51
+ ruleIndex: -1, // Placeholder - will be set during actual injection
52
+ sheetIndex: -1, // Placeholder - will be set during actual injection
53
+ };
54
+ // Store RuleInfo only once by className, and map cacheKey separately
55
+ registry.rules.set(className, placeholderRuleInfo);
56
+ registry.cacheKeyToClassName.set(cacheKey, className);
57
+ return {
58
+ className,
59
+ isNewAllocation: true,
60
+ };
61
+ }
30
62
  /**
31
63
  * Inject styles from StyleResult objects
32
64
  */
@@ -40,85 +72,49 @@ export class StyleInjector {
40
72
  };
41
73
  }
42
74
  // Rules are now in StyleRule format directly
43
- // Try to dedupe by className first — if the same class was already inserted, reuse it
44
- // Only extract className if it looks like a generated tasty className (t + digits)
45
- const preExtractedClass = this.extractClassName(rules);
46
- const generatedClass = preExtractedClass && /^t\d+$/.test(preExtractedClass)
47
- ? preExtractedClass
48
- : null;
49
- if (generatedClass && registry.rules.has(generatedClass)) {
50
- const currentRefCount = registry.refCounts.get(generatedClass) || 0;
51
- registry.refCounts.set(generatedClass, currentRefCount + 1);
52
- // If this class was previously marked as unused, clear that state now
53
- if (registry.unusedRules.has(generatedClass)) {
54
- registry.unusedRules.delete(generatedClass);
55
- if (registry.metrics) {
56
- // Consider this a reuse rather than a cold miss
57
- registry.metrics.unusedHits++;
58
- }
59
- }
60
- // Update metrics
61
- if (registry.metrics) {
62
- registry.metrics.hits++;
63
- }
64
- return {
65
- className: generatedClass,
66
- dispose: () => this.dispose(generatedClass, registry),
67
- };
68
- }
69
- // Try to restore from unused styles if className exists but is not active
70
- if (generatedClass &&
71
- registry.rules.has(generatedClass) &&
72
- !registry.refCounts.has(generatedClass)) {
73
- const restored = this.sheetManager.restoreFromUnused(registry, generatedClass);
74
- if (restored) {
75
+ // Check if we can reuse based on cache key
76
+ const cacheKey = options?.cacheKey;
77
+ let className;
78
+ let isPreAllocated = false;
79
+ if (cacheKey && registry.cacheKeyToClassName.has(cacheKey)) {
80
+ // Reuse existing class for this cache key
81
+ className = registry.cacheKeyToClassName.get(cacheKey);
82
+ const existingRuleInfo = registry.rules.get(className);
83
+ // Check if this is a placeholder (pre-allocated but not yet injected)
84
+ isPreAllocated =
85
+ existingRuleInfo.ruleIndex === -1 && existingRuleInfo.sheetIndex === -1;
86
+ if (!isPreAllocated) {
87
+ // Already injected - just increment refCount
88
+ const currentRefCount = registry.refCounts.get(className) || 0;
89
+ registry.refCounts.set(className, currentRefCount + 1);
75
90
  // Update metrics
76
91
  if (registry.metrics) {
77
92
  registry.metrics.hits++;
78
93
  }
79
94
  return {
80
- className: generatedClass,
81
- dispose: () => this.dispose(generatedClass, registry),
95
+ className,
96
+ dispose: () => this.dispose(className, registry),
82
97
  };
83
98
  }
84
99
  }
85
- // No active cache dedupe — rely on provided className or disposed cache only
86
- // Generate final className - only use extracted className if it's a generated tasty className
87
- const className = generatedClass
88
- ? generatedClass
89
- : generateClassName(registry.classCounter++);
90
- // If a different pre-extracted class was used in rules, rewrite selectors to the final class
91
- // Also increase specificity for class-based selectors by duplicating the class
92
- const rulesToInsert = generatedClass && generatedClass !== className
93
- ? rules.map((r) => {
94
- if (r.selector.startsWith('.' + generatedClass)) {
95
- const newSelector = '.' + className + r.selector.slice(generatedClass.length + 1);
96
- // Increase specificity by duplicating the class for class-based selectors
97
- const specificSelector = newSelector.startsWith('.' + className) &&
98
- /^\.t\d+/.test(newSelector)
99
- ? '.' + className + newSelector
100
- : newSelector;
101
- return {
102
- ...r,
103
- selector: specificSelector,
104
- };
105
- }
106
- return r;
107
- })
108
- : rules.map((r) => {
109
- // Increase specificity for class-based selectors by duplicating the class
110
- if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
111
- const classMatch = r.selector.match(/^\.t\d+/);
112
- if (classMatch) {
113
- const baseClass = classMatch[0];
114
- return {
115
- ...r,
116
- selector: baseClass + r.selector,
117
- };
118
- }
119
- }
120
- return r;
121
- });
100
+ else {
101
+ // Generate new className
102
+ className = generateClassName(registry.classCounter++);
103
+ }
104
+ // Process rules: handle needsClassName flag and apply specificity
105
+ const rulesToInsert = rules.map((rule) => {
106
+ let newSelector = rule.selector;
107
+ // If rule needs className prepended
108
+ if (rule.needsClassName) {
109
+ // Simple concatenation: .className (double specificity) + selectorSuffix
110
+ newSelector = `.${className}.${className}${newSelector}`;
111
+ }
112
+ return {
113
+ ...rule,
114
+ selector: newSelector,
115
+ needsClassName: undefined, // Remove the flag after processing
116
+ };
117
+ });
122
118
  // Before inserting, auto-register @property for any color custom properties being defined.
123
119
  // Fast parse: split declarations by ';' and match "--*-color:"
124
120
  // Do this only when we actually insert (i.e., no cache hit above)
@@ -159,7 +155,18 @@ export class StyleInjector {
159
155
  }
160
156
  // Store in registry
161
157
  registry.refCounts.set(className, 1);
162
- registry.rules.set(className, ruleInfo);
158
+ if (isPreAllocated) {
159
+ // Update the existing placeholder entry with real rule info
160
+ registry.rules.set(className, ruleInfo);
161
+ // cacheKey mapping already exists from allocation
162
+ }
163
+ else {
164
+ // Store new entries
165
+ registry.rules.set(className, ruleInfo);
166
+ if (cacheKey) {
167
+ registry.cacheKeyToClassName.set(cacheKey, className);
168
+ }
169
+ }
163
170
  // Update metrics
164
171
  if (registry.metrics) {
165
172
  registry.metrics.totalInsertions++;
@@ -171,74 +178,56 @@ export class StyleInjector {
171
178
  };
172
179
  }
173
180
  /**
174
- * Extract className from rules (assumes first rule contains the base className)
181
+ * Inject global styles (rules without a generated tasty class selector)
182
+ * This ensures we don't reserve a tasty class name (t{number}) for global rules,
183
+ * which could otherwise collide with element-level styles and break lookups.
175
184
  */
176
- extractClassName(rules) {
177
- for (const rule of rules) {
178
- const match = rule.selector.match(/^\.([a-zA-Z0-9_-]+)/);
179
- if (match) {
180
- return match[1];
181
- }
185
+ injectGlobal(rules, options) {
186
+ const root = options?.root || document;
187
+ const registry = this.sheetManager.getRegistry(root);
188
+ if (!rules || rules.length === 0) {
189
+ return { dispose: () => { } };
182
190
  }
183
- return null;
184
- }
185
- /**
186
- * Generate cache key from style rules with optimized deduplication
187
- */
188
- generateCacheKey(rules) {
189
- const normalizeSelector = (selector) => {
190
- const match = selector.match(/^\.[a-zA-Z0-9_-]+(.*)$/);
191
- return match ? match[1] : selector;
191
+ // Use a non-tasty identifier to avoid any collisions with .t{number} classes
192
+ const key = `global:${this.globalRuleCounter++}`;
193
+ const info = this.sheetManager.insertGlobalRule(registry, rules, key, root);
194
+ if (registry.metrics) {
195
+ registry.metrics.totalInsertions++;
196
+ }
197
+ return {
198
+ dispose: () => {
199
+ if (info)
200
+ this.sheetManager.deleteGlobalRule(registry, key);
201
+ },
192
202
  };
193
- // Sort rules to ensure consistent cache keys for equivalent rule sets
194
- const sortedRules = [...rules].sort((a, b) => {
195
- const aKey = `${normalizeSelector(a.selector)}${a.atRules ? a.atRules.join('|') : ''}`;
196
- const bKey = `${normalizeSelector(b.selector)}${b.atRules ? b.atRules.join('|') : ''}`;
197
- return aKey.localeCompare(bKey);
198
- });
199
- return sortedRules
200
- .map((rule) => {
201
- const at = rule.atRules && rule.atRules.length
202
- ? `@${rule.atRules.join('|')}`
203
- : '';
204
- const sel = normalizeSelector(rule.selector);
205
- // Normalize declarations by sorting properties for consistent caching
206
- const normalizedDeclarations = rule.declarations
207
- .split(';')
208
- .filter(Boolean)
209
- .map((decl) => decl.trim())
210
- .sort()
211
- .join(';');
212
- return `${sel}{${normalizedDeclarations}}${at}`;
213
- })
214
- .join('');
215
203
  }
216
204
  /**
217
205
  * Dispose of a className
218
206
  */
219
207
  dispose(className, registry) {
220
- const currentRefCount = registry.refCounts.get(className) || 0;
221
- if (currentRefCount <= 1) {
222
- // Mark as unused immediately
223
- this.sheetManager.markAsUnused(registry, className);
208
+ const currentRefCount = registry.refCounts.get(className);
209
+ // Guard against stale double-dispose or mismatched lifecycle
210
+ if (currentRefCount == null || currentRefCount <= 0) {
211
+ return;
224
212
  }
225
- else {
226
- registry.refCounts.set(className, currentRefCount - 1);
213
+ const newRefCount = currentRefCount - 1;
214
+ registry.refCounts.set(className, newRefCount);
215
+ if (newRefCount === 0) {
216
+ // Update metrics
217
+ if (registry.metrics) {
218
+ registry.metrics.totalUnused++;
219
+ }
220
+ // Check if cleanup should be scheduled
221
+ this.sheetManager.checkCleanupNeeded(registry);
227
222
  }
228
223
  }
229
- /**
230
- * Cleanup unused rules
231
- */
232
- cleanup(root) {
233
- const registry = this.sheetManager.getRegistry(root || document);
234
- this.sheetManager.processCleanupQueue(registry);
235
- }
236
224
  /**
237
225
  * Force bulk cleanup of unused styles
238
226
  */
239
- forceBulkCleanup(root) {
227
+ cleanup(root) {
240
228
  const registry = this.sheetManager.getRegistry(root || document);
241
- this.sheetManager['performBulkCleanup'](registry);
229
+ // Clean up ALL unused rules regardless of batch ratio
230
+ this.sheetManager.forceCleanup(registry);
242
231
  }
243
232
  /**
244
233
  * Get CSS text from all sheets (for SSR)
@@ -258,16 +247,16 @@ export class StyleInjector {
258
247
  for (const cls of classNames) {
259
248
  const info = registry.rules.get(cls);
260
249
  if (info) {
261
- if (info.cssText && info.cssText.length) {
262
- cssChunks.push(...info.cssText);
263
- }
264
- else {
265
- // Fallback: try to read from live sheet by index range
266
- const sheet = registry.sheets[info.sheetIndex];
267
- const styleSheet = sheet?.sheet?.sheet;
268
- if (styleSheet) {
269
- const start = Math.max(0, info.ruleIndex);
270
- const end = Math.min(styleSheet.cssRules.length - 1, info.endRuleIndex ?? info.ruleIndex);
250
+ // Always prefer reading from the live stylesheet, since indices can change
251
+ const sheet = registry.sheets[info.sheetIndex];
252
+ const styleSheet = sheet?.sheet?.sheet;
253
+ if (styleSheet) {
254
+ const start = Math.max(0, info.ruleIndex);
255
+ const end = Math.min(styleSheet.cssRules.length - 1, info.endRuleIndex ?? info.ruleIndex);
256
+ // Additional validation: ensure indices are valid and in correct order
257
+ if (start >= 0 &&
258
+ end >= start &&
259
+ start < styleSheet.cssRules.length) {
271
260
  for (let i = start; i <= end; i++) {
272
261
  const rule = styleSheet.cssRules[i];
273
262
  if (rule)
@@ -275,6 +264,10 @@ export class StyleInjector {
275
264
  }
276
265
  }
277
266
  }
267
+ else if (info.cssText && info.cssText.length) {
268
+ // Fallback in environments without CSSOM access
269
+ cssChunks.push(...info.cssText);
270
+ }
278
271
  }
279
272
  }
280
273
  return cssChunks.join('\n');
@@ -295,14 +288,6 @@ export class StyleInjector {
295
288
  const registry = this.sheetManager.getRegistry(root);
296
289
  this.sheetManager.resetMetrics(registry);
297
290
  }
298
- /**
299
- * Force cleanup of unused styles (useful for memory pressure)
300
- */
301
- forceCleanupUnused(options) {
302
- const root = options?.root || document;
303
- const registry = this.sheetManager.getRegistry(root);
304
- this.sheetManager['performBulkCleanup'](registry);
305
- }
306
291
  /**
307
292
  * Define a CSS @property custom property
308
293
  * Example:
@@ -418,9 +403,14 @@ export class StyleInjector {
418
403
  return;
419
404
  entry.refCount--;
420
405
  if (entry.refCount <= 0) {
421
- // Mark as unused
406
+ // Dispose immediately - keyframes are global and safe to clean up right away
407
+ this.sheetManager.deleteKeyframes(registry, entry.info);
422
408
  registry.keyframesCache.delete(cacheKey);
423
- this.sheetManager.markKeyframesAsUnused(registry, entry.name);
409
+ // Update metrics
410
+ if (registry.metrics) {
411
+ registry.metrics.totalUnused++;
412
+ registry.metrics.stylesCleanedUp++;
413
+ }
424
414
  }
425
415
  }
426
416
  /**
@@ -452,8 +442,8 @@ export class StyleInjector {
452
442
  const css = this.interpolateTemplate();
453
443
  if (css.trim()) {
454
444
  const styleResults = this.parseCSSToStyleResults(css);
455
- // Bind the inject method to the outer injector instance
456
- const result = injector.inject(styleResults, {
445
+ // Bind the global inject method to the outer injector instance
446
+ const result = injector.injectGlobal(styleResults, {
457
447
  root: this.props.root,
458
448
  });
459
449
  this.disposeFunction = result.dispose;