@cube-dev/ui-kit 0.75.0 → 0.76.1

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 +20 -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 +644 -775
  393. package/es/tasty/index.js +1 -1
  394. package/es/tasty/injector/index.js +37 -15
  395. package/es/tasty/injector/injector.js +157 -145
  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 +133 -222
  495. package/types/tasty/injector/index.d.ts +18 -2
  496. package/types/tasty/injector/injector.d.ts +24 -16
  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.1
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.1
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,30 @@ 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
+ }
101
+ /**
102
+ * Internal method for createGlobalStyle - not exported publicly
103
+ */
104
+ function injectCreateGlobalStyle(rules, options) {
105
+ return getGlobalInjector().injectCreateGlobalStyle(rules, options);
106
+ }
79
107
  /**
80
108
  * Inject keyframes and return object with toString() and dispose()
81
109
  */
@@ -147,13 +175,7 @@ export function destroy(root) {
147
175
  export function createInjector(config = {}) {
148
176
  const isTest = isTestEnvironment();
149
177
  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
178
+ ...createDefaultConfig(isTest),
157
179
  ...config,
158
180
  };
159
181
  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.1
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,78 @@ 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;
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
+ },
202
+ };
184
203
  }
185
204
  /**
186
- * Generate cache key from style rules with optimized deduplication
205
+ * Inject styles from createGlobalStyle (separate from injectGlobal for tracking)
187
206
  */
188
- generateCacheKey(rules) {
189
- const normalizeSelector = (selector) => {
190
- const match = selector.match(/^\.[a-zA-Z0-9_-]+(.*)$/);
191
- return match ? match[1] : selector;
207
+ injectCreateGlobalStyle(rules, options) {
208
+ const root = options?.root || document;
209
+ const registry = this.sheetManager.getRegistry(root);
210
+ if (!rules || rules.length === 0) {
211
+ return { dispose: () => { } };
212
+ }
213
+ // Use a different prefix to distinguish from injectGlobal
214
+ const key = `raw:${this.globalRuleCounter++}`;
215
+ const info = this.sheetManager.insertGlobalRule(registry, rules, key, root);
216
+ if (registry.metrics) {
217
+ registry.metrics.totalInsertions++;
218
+ }
219
+ return {
220
+ dispose: () => {
221
+ if (info)
222
+ this.sheetManager.deleteGlobalRule(registry, key);
223
+ },
192
224
  };
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
225
  }
216
226
  /**
217
227
  * Dispose of a className
218
228
  */
219
229
  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);
230
+ const currentRefCount = registry.refCounts.get(className);
231
+ // Guard against stale double-dispose or mismatched lifecycle
232
+ if (currentRefCount == null || currentRefCount <= 0) {
233
+ return;
224
234
  }
225
- else {
226
- registry.refCounts.set(className, currentRefCount - 1);
235
+ const newRefCount = currentRefCount - 1;
236
+ registry.refCounts.set(className, newRefCount);
237
+ if (newRefCount === 0) {
238
+ // Update metrics
239
+ if (registry.metrics) {
240
+ registry.metrics.totalUnused++;
241
+ }
242
+ // Check if cleanup should be scheduled
243
+ this.sheetManager.checkCleanupNeeded(registry);
227
244
  }
228
245
  }
229
- /**
230
- * Cleanup unused rules
231
- */
232
- cleanup(root) {
233
- const registry = this.sheetManager.getRegistry(root || document);
234
- this.sheetManager.processCleanupQueue(registry);
235
- }
236
246
  /**
237
247
  * Force bulk cleanup of unused styles
238
248
  */
239
- forceBulkCleanup(root) {
249
+ cleanup(root) {
240
250
  const registry = this.sheetManager.getRegistry(root || document);
241
- this.sheetManager['performBulkCleanup'](registry);
251
+ // Clean up ALL unused rules regardless of batch ratio
252
+ this.sheetManager.forceCleanup(registry);
242
253
  }
243
254
  /**
244
255
  * Get CSS text from all sheets (for SSR)
@@ -258,16 +269,16 @@ export class StyleInjector {
258
269
  for (const cls of classNames) {
259
270
  const info = registry.rules.get(cls);
260
271
  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);
272
+ // Always prefer reading from the live stylesheet, since indices can change
273
+ const sheet = registry.sheets[info.sheetIndex];
274
+ const styleSheet = sheet?.sheet?.sheet;
275
+ if (styleSheet) {
276
+ const start = Math.max(0, info.ruleIndex);
277
+ const end = Math.min(styleSheet.cssRules.length - 1, info.endRuleIndex ?? info.ruleIndex);
278
+ // Additional validation: ensure indices are valid and in correct order
279
+ if (start >= 0 &&
280
+ end >= start &&
281
+ start < styleSheet.cssRules.length) {
271
282
  for (let i = start; i <= end; i++) {
272
283
  const rule = styleSheet.cssRules[i];
273
284
  if (rule)
@@ -275,6 +286,10 @@ export class StyleInjector {
275
286
  }
276
287
  }
277
288
  }
289
+ else if (info.cssText && info.cssText.length) {
290
+ // Fallback in environments without CSSOM access
291
+ cssChunks.push(...info.cssText);
292
+ }
278
293
  }
279
294
  }
280
295
  return cssChunks.join('\n');
@@ -295,14 +310,6 @@ export class StyleInjector {
295
310
  const registry = this.sheetManager.getRegistry(root);
296
311
  this.sheetManager.resetMetrics(registry);
297
312
  }
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
313
  /**
307
314
  * Define a CSS @property custom property
308
315
  * Example:
@@ -418,9 +425,14 @@ export class StyleInjector {
418
425
  return;
419
426
  entry.refCount--;
420
427
  if (entry.refCount <= 0) {
421
- // Mark as unused
428
+ // Dispose immediately - keyframes are global and safe to clean up right away
429
+ this.sheetManager.deleteKeyframes(registry, entry.info);
422
430
  registry.keyframesCache.delete(cacheKey);
423
- this.sheetManager.markKeyframesAsUnused(registry, entry.name);
431
+ // Update metrics
432
+ if (registry.metrics) {
433
+ registry.metrics.totalUnused++;
434
+ registry.metrics.stylesCleanedUp++;
435
+ }
424
436
  }
425
437
  }
426
438
  /**
@@ -452,8 +464,8 @@ export class StyleInjector {
452
464
  const css = this.interpolateTemplate();
453
465
  if (css.trim()) {
454
466
  const styleResults = this.parseCSSToStyleResults(css);
455
- // Bind the inject method to the outer injector instance
456
- const result = injector.inject(styleResults, {
467
+ // Use a special method for createGlobalStyle to distinguish from injectGlobal
468
+ const result = injector.injectCreateGlobalStyle(styleResults, {
457
469
  root: this.props.root,
458
470
  });
459
471
  this.disposeFunction = result.dispose;