@cube-dev/ui-kit 0.0.0-canary-c4a232d → 0.0.0-canary-d6409e4

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 (494) hide show
  1. package/es/_internal/hooks/index.js +1 -1
  2. package/es/_internal/hooks/use-chained-callback.js +1 -1
  3. package/es/_internal/hooks/use-debounced-value.js +1 -1
  4. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/es/_internal/hooks/use-effect-once.js +1 -1
  6. package/es/_internal/hooks/use-event.js +1 -1
  7. package/es/_internal/hooks/use-is-first-render.js +1 -1
  8. package/es/_internal/hooks/use-sync-ref.js +1 -1
  9. package/es/_internal/hooks/use-timer/index.js +1 -1
  10. package/es/_internal/hooks/use-timer/timer.js +1 -1
  11. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/es/_internal/hooks/use-update-effect.js +1 -1
  13. package/es/_internal/hooks/use-warn.js +1 -1
  14. package/es/_internal/index.js +1 -1
  15. package/es/components/Block.js +1 -1
  16. package/es/components/GlobalStyles.js +1 -1
  17. package/es/components/GridProvider.js +1 -1
  18. package/es/components/HiddenInput.js +1 -1
  19. package/es/components/Item.js +1 -1
  20. package/es/components/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +1 -1
  22. package/es/components/actions/Action/Action.js +1 -1
  23. package/es/components/actions/Button/Button.js +1 -1
  24. package/es/components/actions/Button/index.js +1 -1
  25. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  26. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/es/components/actions/CommandMenu/index.js +1 -1
  28. package/es/components/actions/CommandMenu/styled.js +1 -1
  29. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/es/components/actions/ItemButton/index.js +1 -1
  31. package/es/components/actions/Menu/Menu.js +1 -1
  32. package/es/components/actions/Menu/MenuItem.js +1 -1
  33. package/es/components/actions/Menu/MenuSection.js +1 -1
  34. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/es/components/actions/Menu/context.js +1 -1
  38. package/es/components/actions/Menu/index.js +1 -1
  39. package/es/components/actions/Menu/styled.js +1 -1
  40. package/es/components/actions/index.js +1 -1
  41. package/es/components/actions/use-action.js +1 -1
  42. package/es/components/actions/use-anchored-menu.js +1 -1
  43. package/es/components/actions/use-context-menu.js +1 -1
  44. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  45. package/es/components/content/Alert/Alert.js +1 -1
  46. package/es/components/content/Alert/index.js +1 -1
  47. package/es/components/content/Alert/types.js +1 -1
  48. package/es/components/content/Alert/use-alert.js +1 -1
  49. package/es/components/content/Avatar/Avatar.js +1 -1
  50. package/es/components/content/Badge/Badge.js +1 -1
  51. package/es/components/content/Card/Card.js +1 -1
  52. package/es/components/content/Content.js +1 -1
  53. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  54. package/es/components/content/CopyPasteBlock/index.js +1 -1
  55. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  56. package/es/components/content/CopySnippet/index.js +1 -1
  57. package/es/components/content/Divider.js +1 -1
  58. package/es/components/content/Footer.js +1 -1
  59. package/es/components/content/Header.js +1 -1
  60. package/es/components/content/HotKeys/HotKeys.js +1 -1
  61. package/es/components/content/HotKeys/index.js +1 -1
  62. package/es/components/content/ItemBase/ItemBase.js +1 -1
  63. package/es/components/content/ItemBase/index.js +1 -1
  64. package/es/components/content/List/SectionHeading.js +1 -1
  65. package/es/components/content/List/index.js +1 -1
  66. package/es/components/content/Paragraph.js +1 -1
  67. package/es/components/content/Placeholder/Placeholder.js +1 -1
  68. package/es/components/content/PrismCode/PrismCode.js +1 -1
  69. package/es/components/content/PrismCode/prismSetup.js +1 -1
  70. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  71. package/es/components/content/Result/Result.js +1 -1
  72. package/es/components/content/Skeleton/Skeleton.js +1 -1
  73. package/es/components/content/Tag/Tag.js +1 -1
  74. package/es/components/content/Text.js +1 -1
  75. package/es/components/content/Title.js +1 -1
  76. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  77. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  78. package/es/components/fields/Checkbox/context.js +1 -1
  79. package/es/components/fields/Checkbox/index.js +1 -1
  80. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  81. package/es/components/fields/ComboBox/index.js +1 -1
  82. package/es/components/fields/DatePicker/DateInput.js +1 -1
  83. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  84. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  85. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  86. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  87. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  88. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  89. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  90. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  91. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  92. package/es/components/fields/DatePicker/index.js +1 -1
  93. package/es/components/fields/DatePicker/intl.js +1 -1
  94. package/es/components/fields/DatePicker/parseDate.js +1 -1
  95. package/es/components/fields/DatePicker/props.js +1 -1
  96. package/es/components/fields/DatePicker/types.js +1 -1
  97. package/es/components/fields/DatePicker/utils.js +1 -1
  98. package/es/components/fields/FileInput/FileInput.js +1 -1
  99. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  100. package/es/components/fields/FilterListBox/index.js +1 -1
  101. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  102. package/es/components/fields/FilterPicker/index.js +1 -1
  103. package/es/components/fields/Input/Input.js +1 -1
  104. package/es/components/fields/Input/index.js +1 -1
  105. package/es/components/fields/ListBox/ListBox.js +1 -1
  106. package/es/components/fields/ListBox/index.js +1 -1
  107. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  108. package/es/components/fields/NumberInput/StepButton.js +1 -1
  109. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  110. package/es/components/fields/RadioGroup/Radio.js +1 -1
  111. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  112. package/es/components/fields/RadioGroup/context.js +1 -1
  113. package/es/components/fields/RadioGroup/index.js +1 -1
  114. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  115. package/es/components/fields/SearchInput/index.js +1 -1
  116. package/es/components/fields/Select/Select.js +1 -1
  117. package/es/components/fields/Select/index.js +1 -1
  118. package/es/components/fields/Slider/Gradation.js +1 -1
  119. package/es/components/fields/Slider/Header.js +1 -1
  120. package/es/components/fields/Slider/RangeSlider.js +1 -1
  121. package/es/components/fields/Slider/Slider.js +1 -1
  122. package/es/components/fields/Slider/SliderBase.js +1 -1
  123. package/es/components/fields/Slider/SliderInput.js +1 -1
  124. package/es/components/fields/Slider/SliderThumb.js +1 -1
  125. package/es/components/fields/Slider/SliderTrack.js +1 -1
  126. package/es/components/fields/Slider/elements.js +1 -1
  127. package/es/components/fields/Slider/index.js +1 -1
  128. package/es/components/fields/Slider/types.js +1 -1
  129. package/es/components/fields/Switch/Switch.js +1 -1
  130. package/es/components/fields/Switch/index.js +1 -1
  131. package/es/components/fields/TextArea/TextArea.js +1 -1
  132. package/es/components/fields/TextArea/index.js +1 -1
  133. package/es/components/fields/TextInput/TextInput.js +1 -1
  134. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  135. package/es/components/fields/TextInput/index.js +1 -1
  136. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  137. package/es/components/fields/TextInputMapper/index.js +1 -1
  138. package/es/components/fields/index.js +1 -1
  139. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  140. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  141. package/es/components/form/FieldWrapper/index.js +1 -1
  142. package/es/components/form/FieldWrapper/types.js +1 -1
  143. package/es/components/form/Form/Field.js +1 -1
  144. package/es/components/form/Form/Form.js +1 -1
  145. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  146. package/es/components/form/Form/ResetButton/index.js +1 -1
  147. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  148. package/es/components/form/Form/SubmitButton/index.js +1 -1
  149. package/es/components/form/Form/SubmitError.js +1 -1
  150. package/es/components/form/Form/index.js +1 -1
  151. package/es/components/form/Form/types.js +1 -1
  152. package/es/components/form/Form/use-field/index.js +1 -1
  153. package/es/components/form/Form/use-field/types.js +1 -1
  154. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  155. package/es/components/form/Form/use-field/use-field.js +1 -1
  156. package/es/components/form/Form/use-form.js +1 -1
  157. package/es/components/form/Form/validation.js +1 -1
  158. package/es/components/form/Label.js +1 -1
  159. package/es/components/form/index.js +1 -1
  160. package/es/components/form/wrapper.js +1 -1
  161. package/es/components/layout/Flex.js +1 -1
  162. package/es/components/layout/Flow.js +1 -1
  163. package/es/components/layout/Grid.js +1 -1
  164. package/es/components/layout/Panel.js +1 -1
  165. package/es/components/layout/Prefix.js +1 -1
  166. package/es/components/layout/ResizablePanel.js +1 -1
  167. package/es/components/layout/Space.js +1 -1
  168. package/es/components/layout/Suffix.js +1 -1
  169. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  170. package/es/components/navigation/Link/Link.js +1 -1
  171. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  172. package/es/components/organisms/Modal/Modal.js +1 -1
  173. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  174. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  175. package/es/components/other/Calendar/Calendar.js +1 -1
  176. package/es/components/other/Calendar/CalendarCell.js +1 -1
  177. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  178. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  179. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  180. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  181. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  182. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  183. package/es/components/overlays/AlertDialog/index.js +1 -1
  184. package/es/components/overlays/AlertDialog/types.js +1 -1
  185. package/es/components/overlays/Dialog/Dialog.js +1 -1
  186. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  187. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  188. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  189. package/es/components/overlays/Dialog/context.js +1 -1
  190. package/es/components/overlays/Dialog/index.js +1 -1
  191. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  192. package/es/components/overlays/Modal/Modal.js +1 -1
  193. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  194. package/es/components/overlays/Modal/Overlay.js +1 -1
  195. package/es/components/overlays/Modal/Popover.js +1 -1
  196. package/es/components/overlays/Modal/Tray.js +1 -1
  197. package/es/components/overlays/Modal/Underlay.js +1 -1
  198. package/es/components/overlays/Modal/index.js +1 -1
  199. package/es/components/overlays/Modal/types.js +1 -1
  200. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  201. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  202. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  203. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  204. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  205. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  206. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  207. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  208. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  209. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  210. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  211. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  212. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  213. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  214. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  215. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  219. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  220. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  221. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  222. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  223. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  224. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  225. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  226. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  227. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  228. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  229. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  230. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  231. package/es/components/overlays/NewNotifications/index.js +1 -1
  232. package/es/components/overlays/NewNotifications/types.js +1 -1
  233. package/es/components/overlays/Notification/Notification.js +1 -1
  234. package/es/components/overlays/OverlayWrapper.js +1 -1
  235. package/es/components/overlays/Toasts/Toast.js +1 -1
  236. package/es/components/overlays/Toasts/index.js +1 -1
  237. package/es/components/overlays/Toasts/types.js +1 -1
  238. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  239. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  240. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  241. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  242. package/es/components/overlays/Tooltip/context.js +1 -1
  243. package/es/components/overlays/Tooltip/index.js +1 -1
  244. package/es/components/portal/Portal.js +1 -1
  245. package/es/components/portal/PortalProvider.js +1 -1
  246. package/es/components/portal/index.js +1 -1
  247. package/es/components/portal/types.js +1 -1
  248. package/es/components/portal/usePortal.js +1 -1
  249. package/es/components/shared/InvalidIcon.js +1 -1
  250. package/es/components/shared/ValidIcon.js +1 -1
  251. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  252. package/es/components/status/LoadingAnimation/index.js +1 -1
  253. package/es/components/status/Spin/Cube.js +1 -1
  254. package/es/components/status/Spin/InternalSpinner.js +1 -1
  255. package/es/components/status/Spin/Spin.js +1 -1
  256. package/es/components/status/Spin/SpinsContainer.js +1 -1
  257. package/es/components/status/Spin/index.js +1 -1
  258. package/es/components/status/Spin/types.js +1 -1
  259. package/es/components/status/index.js +1 -1
  260. package/es/data/item-themes.js +1 -1
  261. package/es/data/themes.js +1 -1
  262. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  263. package/es/icons/AdjustmentsIcon.js +1 -1
  264. package/es/icons/AiIcon.js +1 -1
  265. package/es/icons/AreaChartIcon.js +1 -1
  266. package/es/icons/BackwardIcon.js +1 -1
  267. package/es/icons/BarChartIcon.js +1 -1
  268. package/es/icons/BellFilledIcon.js +1 -1
  269. package/es/icons/BellIcon.js +1 -1
  270. package/es/icons/BooleanIcon.js +1 -1
  271. package/es/icons/CalendarEditIcon.js +1 -1
  272. package/es/icons/CalendarIcon.js +1 -1
  273. package/es/icons/CaretDownIcon.js +1 -1
  274. package/es/icons/CaretUpIcon.js +1 -1
  275. package/es/icons/ChartAreaStackedIcon.js +1 -1
  276. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  277. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  278. package/es/icons/ChartBarGroupedIcon.js +1 -1
  279. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  280. package/es/icons/ChartBarLineIcon.js +1 -1
  281. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  282. package/es/icons/ChartBarStackedIcon.js +1 -1
  283. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  284. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  285. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  286. package/es/icons/ChartBoxPlotIcon.js +1 -1
  287. package/es/icons/ChartBubbleIcon.js +1 -1
  288. package/es/icons/ChartDonut2Icon.js +1 -1
  289. package/es/icons/ChartFunnelIcon.js +1 -1
  290. package/es/icons/ChartKPIIcon.js +1 -1
  291. package/es/icons/ChartPie2Icon.js +1 -1
  292. package/es/icons/ChartScatterIcon.js +1 -1
  293. package/es/icons/CheckCircleFilledIcon.js +1 -1
  294. package/es/icons/CheckCircleIcon.js +1 -1
  295. package/es/icons/CheckIcon.js +1 -1
  296. package/es/icons/CircleFilledIcon.js +1 -1
  297. package/es/icons/ClearIcon.js +1 -1
  298. package/es/icons/CloseCircleFilledIcon.js +1 -1
  299. package/es/icons/CloseCircleIcon.js +1 -1
  300. package/es/icons/CloseIcon.js +1 -1
  301. package/es/icons/CodeIcon.js +1 -1
  302. package/es/icons/CopyIcon.js +1 -1
  303. package/es/icons/CountIcon.js +1 -1
  304. package/es/icons/CubeIcon.js +1 -1
  305. package/es/icons/DangerIcon.js +1 -1
  306. package/es/icons/DashboardIcon.js +1 -1
  307. package/es/icons/DatabaseIcon.js +1 -1
  308. package/es/icons/DirectionIcon.js +1 -1
  309. package/es/icons/DonutIcon.js +1 -1
  310. package/es/icons/DownIcon.js +1 -1
  311. package/es/icons/EditIcon.js +1 -1
  312. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  313. package/es/icons/ExclamationCircleIcon.js +1 -1
  314. package/es/icons/ExclamationIcon.js +1 -1
  315. package/es/icons/EyeIcon.js +1 -1
  316. package/es/icons/EyeInvisibleIcon.js +1 -1
  317. package/es/icons/FilterIcon.js +1 -1
  318. package/es/icons/FolderFilledIcon.js +1 -1
  319. package/es/icons/FolderIcon.js +1 -1
  320. package/es/icons/FolderOpenFilledIcon.js +1 -1
  321. package/es/icons/FolderOpenIcon.js +1 -1
  322. package/es/icons/ForwardIcon.js +1 -1
  323. package/es/icons/HierarchyIcon.js +1 -1
  324. package/es/icons/Icon.js +1 -1
  325. package/es/icons/InfoCircleIcon.js +1 -1
  326. package/es/icons/InfoIcon.js +1 -1
  327. package/es/icons/KeyIcon.js +1 -1
  328. package/es/icons/LeftIcon.js +1 -1
  329. package/es/icons/LineChartIcon.js +1 -1
  330. package/es/icons/LoadingIcon.js +1 -1
  331. package/es/icons/LockFilledIcon.js +1 -1
  332. package/es/icons/LockIcon.js +1 -1
  333. package/es/icons/MoreIcon.js +1 -1
  334. package/es/icons/NotAllowedIcon.js +1 -1
  335. package/es/icons/NumberIcon.js +1 -1
  336. package/es/icons/PauseCircleFilledIcon.js +1 -1
  337. package/es/icons/PauseCircleIcon.js +1 -1
  338. package/es/icons/PauseIcon.js +1 -1
  339. package/es/icons/PieChartIcon.js +1 -1
  340. package/es/icons/PlayCircleIcon.js +1 -1
  341. package/es/icons/PlayIcon.js +1 -1
  342. package/es/icons/PlusIcon.js +1 -1
  343. package/es/icons/ReloadIcon.js +1 -1
  344. package/es/icons/ReportIcon.js +1 -1
  345. package/es/icons/ReturnIcon.js +1 -1
  346. package/es/icons/RightIcon.js +1 -1
  347. package/es/icons/SchemeIcon.js +1 -1
  348. package/es/icons/SearchIcon.js +1 -1
  349. package/es/icons/SettingsIcon.js +1 -1
  350. package/es/icons/ShieldFilledIcon.js +1 -1
  351. package/es/icons/ShieldIcon.js +1 -1
  352. package/es/icons/SlashIcon.js +1 -1
  353. package/es/icons/SparklesIcon.js +1 -1
  354. package/es/icons/SqlIcon.js +1 -1
  355. package/es/icons/StatsIcon.js +1 -1
  356. package/es/icons/StopIcon.js +1 -1
  357. package/es/icons/StringIcon.js +1 -1
  358. package/es/icons/SwitchIcon.js +1 -1
  359. package/es/icons/TableIcon.js +1 -1
  360. package/es/icons/ThumbsDownIcon.js +1 -1
  361. package/es/icons/ThumbsUpIcon.js +1 -1
  362. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  363. package/es/icons/ThunderboltFilledIcon.js +1 -1
  364. package/es/icons/ThunderboltIcon.js +1 -1
  365. package/es/icons/TimeIcon.js +1 -1
  366. package/es/icons/UnlockIcon.js +1 -1
  367. package/es/icons/UpIcon.js +1 -1
  368. package/es/icons/UserGroupIcon.js +1 -1
  369. package/es/icons/UserIcon.js +1 -1
  370. package/es/icons/UserLockIcon.js +1 -1
  371. package/es/icons/ViewIcon.js +1 -1
  372. package/es/icons/WarningFilledIcon.js +1 -1
  373. package/es/icons/WarningIcon.js +1 -1
  374. package/es/icons/add-new-icon.js +1 -1
  375. package/es/icons/index.js +1 -1
  376. package/es/icons/wrap-icon.js +1 -1
  377. package/es/index.js +1 -1
  378. package/es/provider.js +1 -1
  379. package/es/providers/TrackingProvider.js +1 -1
  380. package/es/services/notification.js +1 -1
  381. package/es/shared/form.js +1 -1
  382. package/es/shared/index.js +1 -1
  383. package/es/stories/Form.legacy-stories.js +1 -1
  384. package/es/stories/FormFieldArgs.js +1 -1
  385. package/es/stories/Layout.stories.js +1 -1
  386. package/es/stories/Tasty.stories.js +1 -1
  387. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  388. package/es/stories/components/DialogFormApp.js +1 -1
  389. package/es/stories/components/StyledButton.js +1 -1
  390. package/es/stories/lists/baseProps.js +1 -1
  391. package/es/tasty/debug.js +28 -18
  392. package/es/tasty/index.js +1 -1
  393. package/es/tasty/injector/index.js +1 -1
  394. package/es/tasty/injector/injector.js +22 -148
  395. package/es/tasty/injector/sheet-manager.js +46 -81
  396. package/es/tasty/injector/types.js +1 -1
  397. package/es/tasty/parser/classify.js +1 -1
  398. package/es/tasty/parser/const.js +1 -1
  399. package/es/tasty/parser/lru.js +1 -1
  400. package/es/tasty/parser/parser.js +1 -1
  401. package/es/tasty/parser/tokenizer.js +1 -1
  402. package/es/tasty/parser/types.js +1 -1
  403. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  404. package/es/tasty/styles/align.js +1 -1
  405. package/es/tasty/styles/border.js +1 -1
  406. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  407. package/es/tasty/styles/color.js +1 -1
  408. package/es/tasty/styles/createStyle.js +1 -1
  409. package/es/tasty/styles/dimension.js +1 -1
  410. package/es/tasty/styles/display.js +1 -1
  411. package/es/tasty/styles/fade.js +1 -1
  412. package/es/tasty/styles/fill.js +1 -1
  413. package/es/tasty/styles/flow.js +1 -1
  414. package/es/tasty/styles/font.js +1 -1
  415. package/es/tasty/styles/fontStyle.js +1 -1
  416. package/es/tasty/styles/gap.js +1 -1
  417. package/es/tasty/styles/groupRadius.js +1 -1
  418. package/es/tasty/styles/height.js +1 -1
  419. package/es/tasty/styles/index.js +1 -1
  420. package/es/tasty/styles/inset.js +1 -1
  421. package/es/tasty/styles/justify.js +1 -1
  422. package/es/tasty/styles/list.js +1 -1
  423. package/es/tasty/styles/margin.js +1 -1
  424. package/es/tasty/styles/marginBlock.js +1 -1
  425. package/es/tasty/styles/marginInline.js +1 -1
  426. package/es/tasty/styles/outline.js +1 -1
  427. package/es/tasty/styles/padding.js +1 -1
  428. package/es/tasty/styles/paddingBlock.js +1 -1
  429. package/es/tasty/styles/paddingInline.js +1 -1
  430. package/es/tasty/styles/place.js +1 -1
  431. package/es/tasty/styles/predefined.js +1 -1
  432. package/es/tasty/styles/preset.js +1 -1
  433. package/es/tasty/styles/radius.js +1 -1
  434. package/es/tasty/styles/reset.js +1 -1
  435. package/es/tasty/styles/scrollbar.js +1 -1
  436. package/es/tasty/styles/shadow.js +1 -1
  437. package/es/tasty/styles/styledScrollbar.js +1 -1
  438. package/es/tasty/styles/transition.js +1 -1
  439. package/es/tasty/styles/types.js +1 -1
  440. package/es/tasty/styles/width.js +1 -1
  441. package/es/tasty/tasty.js +1 -1
  442. package/es/tasty/types.js +1 -1
  443. package/es/tasty/utils/cache-wrapper.js +1 -1
  444. package/es/tasty/utils/case-converter.js +1 -1
  445. package/es/tasty/utils/colors.js +1 -1
  446. package/es/tasty/utils/dotize.js +1 -1
  447. package/es/tasty/utils/filterBaseProps.js +1 -1
  448. package/es/tasty/utils/getDisplayName.js +1 -1
  449. package/es/tasty/utils/getModCombinations.js +1 -1
  450. package/es/tasty/utils/isDevEnv.js +1 -1
  451. package/es/tasty/utils/mergeStyles.js +1 -1
  452. package/es/tasty/utils/modAttrs.js +1 -1
  453. package/es/tasty/utils/renderStyles.js +16 -3
  454. package/es/tasty/utils/responsive.js +1 -1
  455. package/es/tasty/utils/string.js +1 -1
  456. package/es/tasty/utils/styles.js +1 -1
  457. package/es/tasty/utils/warnings.js +1 -1
  458. package/es/tokens.js +1 -1
  459. package/es/type-checks.js +1 -1
  460. package/es/utils/ResizeSensor.js +1 -1
  461. package/es/utils/modules.js +1 -1
  462. package/es/utils/promise.js +1 -1
  463. package/es/utils/random.js +1 -1
  464. package/es/utils/range.js +1 -1
  465. package/es/utils/react/Slots.js +1 -1
  466. package/es/utils/react/chain.js +1 -1
  467. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  468. package/es/utils/react/index.js +1 -1
  469. package/es/utils/react/interactions.js +1 -1
  470. package/es/utils/react/isTextOnly.js +1 -1
  471. package/es/utils/react/mapProps.js +1 -1
  472. package/es/utils/react/mergeProps.js +1 -1
  473. package/es/utils/react/nullableValue.js +1 -1
  474. package/es/utils/react/sharedStore.js +1 -1
  475. package/es/utils/react/useCombinedRefs.js +1 -1
  476. package/es/utils/react/useControlledFocusVisible.js +1 -1
  477. package/es/utils/react/useEventBus.js +1 -1
  478. package/es/utils/react/useId.js +1 -1
  479. package/es/utils/react/useIsDarwin.js +1 -1
  480. package/es/utils/react/useKeySymbols.js +1 -1
  481. package/es/utils/react/useLayoutEffect.js +1 -1
  482. package/es/utils/react/useQaProps.js +1 -1
  483. package/es/utils/react/useViewportSize.js +1 -1
  484. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  485. package/es/utils/transitions.js +1 -1
  486. package/es/utils/tree.js +1 -1
  487. package/es/utils/warnings.js +1 -1
  488. package/es/version.js +2 -2
  489. package/package.json +1 -1
  490. package/types/tasty/debug.d.ts +6 -6
  491. package/types/tasty/injector/index.d.ts +1 -1
  492. package/types/tasty/injector/injector.d.ts +0 -4
  493. package/types/tasty/injector/sheet-manager.d.ts +3 -11
  494. package/types/tasty/injector/types.d.ts +1 -8
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
package/es/tasty/debug.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -265,11 +265,15 @@ export const tastyDebug = {
265
265
  const activeClasses = findAllTastyClasses(root);
266
266
  css = injector.instance.getCssTextForClasses(activeClasses, { root });
267
267
  }
268
- else if (target === 'cached') {
269
- const activeClasses = findAllTastyClasses(root);
270
- const allClasses = findAllStyledClasses(root);
271
- const cachedClasses = allClasses.filter((cls) => !activeClasses.includes(cls));
272
- css = injector.instance.getCssTextForClasses(cachedClasses, { root });
268
+ else if (target === 'unused') {
269
+ // Get unused classes (refCount = 0) from the registry
270
+ const registry = injector.instance['sheetManager']?.getRegistry(root);
271
+ const unusedClasses = registry
272
+ ? Array.from(registry.refCounts.entries())
273
+ .filter(([, refCount]) => refCount === 0)
274
+ .map(([className]) => className)
275
+ : [];
276
+ css = injector.instance.getCssTextForClasses(unusedClasses, { root });
273
277
  }
274
278
  else if (target === 'page') {
275
279
  css = getPageCSS({ root, includeCrossOrigin: true });
@@ -337,12 +341,18 @@ export const tastyDebug = {
337
341
  const { root = document } = opts || {};
338
342
  const activeClasses = findAllTastyClasses(root);
339
343
  const allClasses = findAllStyledClasses(root);
340
- const cachedClasses = allClasses.filter((cls) => !activeClasses.includes(cls));
344
+ // Get unused classes (refCount = 0) from the registry
345
+ const registry = injector.instance['sheetManager']?.getRegistry(root);
346
+ const unusedClasses = registry
347
+ ? Array.from(registry.refCounts.entries())
348
+ .filter(([, refCount]) => refCount === 0)
349
+ .map(([className]) => className)
350
+ : [];
341
351
  return {
342
352
  classes: {
343
353
  active: activeClasses,
344
- cached: cachedClasses,
345
- all: allClasses,
354
+ unused: unusedClasses,
355
+ all: [...activeClasses, ...unusedClasses],
346
356
  },
347
357
  metrics: injector.instance.getMetrics({ root }),
348
358
  };
@@ -477,7 +487,7 @@ export const tastyDebug = {
477
487
  const definitions = this.defs({ root });
478
488
  const metrics = this.metrics({ root });
479
489
  const activeCSS = this.css('active', { root, prettify: false });
480
- const cachedCSS = this.css('cached', { root, prettify: false });
490
+ const unusedCSS = this.css('unused', { root, prettify: false });
481
491
  const allCSS = this.css('all', { root, prettify: false });
482
492
  // Build cleanup summary from metrics
483
493
  const cleanupSummary = {
@@ -519,13 +529,13 @@ export const tastyDebug = {
519
529
  }
520
530
  const summary = {
521
531
  activeClasses: cacheStatus.classes.active,
522
- cachedClasses: cacheStatus.classes.cached,
532
+ unusedClasses: cacheStatus.classes.unused,
523
533
  totalStyledClasses: cacheStatus.classes.all,
524
534
  activeCSSSize: activeCSS.length,
525
- cachedCSSSize: cachedCSS.length,
535
+ unusedCSSSize: unusedCSS.length,
526
536
  totalCSSSize: allCSS.length,
527
537
  activeCSS: prettifyCSS(activeCSS),
528
- cachedCSS: prettifyCSS(cachedCSS),
538
+ unusedCSS: prettifyCSS(unusedCSS),
529
539
  allCSS: prettifyCSS(allCSS),
530
540
  globalCSS: globalBreakdown.css,
531
541
  globalCSSSize: globalBreakdown.totalCSSSize,
@@ -542,11 +552,11 @@ export const tastyDebug = {
542
552
  console.group('🎨 Comprehensive Tasty Debug Summary');
543
553
  console.log(`📊 Style Cache Status:`);
544
554
  console.log(` • Active classes (in DOM): ${summary.activeClasses.length}`);
545
- console.log(` • Cached classes (performance cache): ${summary.cachedClasses.length}`);
555
+ console.log(` • Unused classes (refCount = 0): ${summary.unusedClasses.length}`);
546
556
  console.log(` • Total styled classes: ${summary.totalStyledClasses.length}`);
547
557
  console.log(`💾 CSS Size:`);
548
558
  console.log(` • Active CSS: ${summary.activeCSSSize} characters`);
549
- console.log(` • Cached CSS: ${summary.cachedCSSSize} characters`);
559
+ console.log(` • Unused CSS: ${summary.unusedCSSSize} characters`);
550
560
  console.log(` • Global CSS: ${summary.globalCSSSize} characters (${summary.globalRuleCount} rules)`);
551
561
  console.log(` • Total CSS: ${summary.totalCSSSize} characters`);
552
562
  if (page) {
@@ -564,7 +574,7 @@ export const tastyDebug = {
564
574
  console.log(` • Cache misses: ${metrics.misses}`);
565
575
  console.log(` • Cached style reuses: ${metrics.unusedHits}`);
566
576
  const hitRate = metrics.hits + metrics.misses > 0
567
- ? (((metrics.hits + metrics.unusedHits) /
577
+ ? (((metrics.hits + (metrics.unusedHits || 0)) /
568
578
  (metrics.hits + metrics.misses)) *
569
579
  100).toFixed(1)
570
580
  : '0';
@@ -572,7 +582,7 @@ export const tastyDebug = {
572
582
  }
573
583
  console.log('🔍 Details:');
574
584
  console.log(' • Active classes:', summary.activeClasses);
575
- console.log(' • Cached classes:', summary.cachedClasses);
585
+ console.log(' • Unused classes:', summary.unusedClasses);
576
586
  console.groupEnd();
577
587
  }
578
588
  return summary;
@@ -669,7 +679,7 @@ export const tastyDebug = {
669
679
  console.log('📖 Common targets for css()/log():');
670
680
  console.log(' • "all" - all tasty CSS + global CSS');
671
681
  console.log(' • "active" - CSS for classes in DOM');
672
- console.log(' • "cached" - CSS for unused classes');
682
+ console.log(' • "unused" - CSS for classes with refCount = 0');
673
683
  console.log(' • "global" - only global CSS (createGlobalStyle)');
674
684
  console.log(' • "page" - ALL page CSS (including non-tasty)');
675
685
  console.log(' • "t123" - specific tasty class');
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.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -28,35 +28,6 @@ export class StyleInjector {
28
28
  this.config = config;
29
29
  this.sheetManager = new SheetManager(config);
30
30
  }
31
- /**
32
- * Check if a class has live rules in the CSSOM
33
- */
34
- hasLiveRules(registry, className) {
35
- const info = registry.rules.get(className);
36
- if (!info)
37
- return false;
38
- try {
39
- const sheetInfo = registry.sheets[info.sheetIndex];
40
- const styleSheet = sheetInfo?.sheet?.sheet;
41
- if (!styleSheet)
42
- return false;
43
- const start = Math.max(0, info.ruleIndex);
44
- const end = Math.min(styleSheet.cssRules.length - 1, info.endRuleIndex ?? info.ruleIndex);
45
- if (start > end || start >= styleSheet.cssRules.length)
46
- return false;
47
- // Check if any rule in the range contains the expected class name
48
- for (let i = start; i <= end; i++) {
49
- const rule = styleSheet.cssRules[i];
50
- if (rule && (rule.cssText || '').includes('.' + className)) {
51
- return true;
52
- }
53
- }
54
- }
55
- catch {
56
- // Ignore CSSOM access errors and treat as missing
57
- }
58
- return false;
59
- }
60
31
  /**
61
32
  * Inject styles from StyleResult objects
62
33
  */
@@ -77,41 +48,8 @@ export class StyleInjector {
77
48
  ? preExtractedClass
78
49
  : null;
79
50
  if (generatedClass && registry.rules.has(generatedClass)) {
80
- // Verify that the rules still exist in the live CSSOM
81
- const hasLiveCSS = this.hasLiveRules(registry, generatedClass);
82
- if (!hasLiveCSS) {
83
- // Rules were deleted from CSSOM but registry still has the entry
84
- // Reinsert the rules using the same class name
85
- const className = generatedClass;
86
- const rulesToInsert = rules.map((r) => {
87
- // Increase specificity for class-based selectors by duplicating the class
88
- if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
89
- const classMatch = r.selector.match(/^\.t\d+/);
90
- if (classMatch) {
91
- const baseClass = classMatch[0];
92
- return {
93
- ...r,
94
- selector: baseClass + r.selector,
95
- };
96
- }
97
- }
98
- return r;
99
- });
100
- const ruleInfo = this.sheetManager.insertRule(registry, rulesToInsert, className, root);
101
- if (ruleInfo) {
102
- registry.rules.set(className, ruleInfo);
103
- }
104
- }
105
51
  const currentRefCount = registry.refCounts.get(generatedClass) || 0;
106
52
  registry.refCounts.set(generatedClass, currentRefCount + 1);
107
- // If this class was previously marked as unused, clear that state now
108
- if (registry.unusedRules.has(generatedClass)) {
109
- registry.unusedRules.delete(generatedClass);
110
- if (registry.metrics) {
111
- // Consider this a reuse rather than a cold miss
112
- registry.metrics.unusedHits++;
113
- }
114
- }
115
53
  // Update metrics
116
54
  if (registry.metrics) {
117
55
  registry.metrics.hits++;
@@ -121,83 +59,11 @@ export class StyleInjector {
121
59
  dispose: () => this.dispose(generatedClass, registry),
122
60
  };
123
61
  }
124
- // Try to restore from unused styles if className exists but is not active
125
- if (generatedClass &&
126
- registry.rules.has(generatedClass) &&
127
- !registry.refCounts.has(generatedClass)) {
128
- const restored = this.sheetManager.restoreFromUnused(registry, generatedClass);
129
- if (restored) {
130
- // Verify that the rules still exist in the live CSSOM after restoration
131
- const hasLiveCSS = this.hasLiveRules(registry, generatedClass);
132
- if (!hasLiveCSS) {
133
- // Rules were deleted from CSSOM, reinsert them
134
- const className = generatedClass;
135
- const rulesToInsert = rules.map((r) => {
136
- // Increase specificity for class-based selectors by duplicating the class
137
- if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
138
- const classMatch = r.selector.match(/^\.t\d+/);
139
- if (classMatch) {
140
- const baseClass = classMatch[0];
141
- return {
142
- ...r,
143
- selector: baseClass + r.selector,
144
- };
145
- }
146
- }
147
- return r;
148
- });
149
- const ruleInfo = this.sheetManager.insertRule(registry, rulesToInsert, className, root);
150
- if (ruleInfo) {
151
- registry.rules.set(className, ruleInfo);
152
- }
153
- }
154
- // Update metrics
155
- if (registry.metrics) {
156
- registry.metrics.hits++;
157
- }
158
- return {
159
- className: generatedClass,
160
- dispose: () => this.dispose(generatedClass, registry),
161
- };
162
- }
163
- }
164
62
  // No active cache dedupe — rely on provided className or disposed cache only
165
- // Generate final className - only use extracted className if it's a generated tasty className
166
- const className = generatedClass
167
- ? generatedClass
168
- : generateClassName(registry.classCounter++);
169
- // If a different pre-extracted class was used in rules, rewrite selectors to the final class
170
- // Also increase specificity for class-based selectors by duplicating the class
171
- const rulesToInsert = generatedClass && generatedClass !== className
172
- ? rules.map((r) => {
173
- if (r.selector.startsWith('.' + generatedClass)) {
174
- const newSelector = '.' + className + r.selector.slice(generatedClass.length + 1);
175
- // Increase specificity by duplicating the class for class-based selectors
176
- const specificSelector = newSelector.startsWith('.' + className) &&
177
- /^\.t\d+/.test(newSelector)
178
- ? '.' + className + newSelector
179
- : newSelector;
180
- return {
181
- ...r,
182
- selector: specificSelector,
183
- };
184
- }
185
- return r;
186
- })
187
- : rules.map((r) => {
188
- // Increase specificity for class-based selectors by duplicating the class
189
- if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
190
- const classMatch = r.selector.match(/^\.t\d+/);
191
- if (classMatch) {
192
- const baseClass = classMatch[0];
193
- return {
194
- ...r,
195
- selector: baseClass + r.selector,
196
- };
197
- }
198
- }
199
- return r;
200
- });
63
+ // Use extracted className if available, otherwise generate new one
64
+ const className = generatedClass || generateClassName(registry.classCounter++);
65
+ // Use rules as-is - specificity is handled during selector generation
66
+ const rulesToInsert = rules;
201
67
  // Before inserting, auto-register @property for any color custom properties being defined.
202
68
  // Fast parse: split declarations by ';' and match "--*-color:"
203
69
  // Do this only when we actually insert (i.e., no cache hit above)
@@ -291,15 +157,18 @@ export class StyleInjector {
291
157
  dispose(className, registry) {
292
158
  const currentRefCount = registry.refCounts.get(className);
293
159
  // Guard against stale double-dispose or mismatched lifecycle
294
- if (currentRefCount == null) {
160
+ if (currentRefCount == null || currentRefCount <= 0) {
295
161
  return;
296
162
  }
297
- if (currentRefCount <= 1) {
298
- // Mark as unused immediately
299
- this.sheetManager.markAsUnused(registry, className);
300
- }
301
- else {
302
- registry.refCounts.set(className, currentRefCount - 1);
163
+ const newRefCount = currentRefCount - 1;
164
+ registry.refCounts.set(className, newRefCount);
165
+ if (newRefCount === 0) {
166
+ // Update metrics
167
+ if (registry.metrics) {
168
+ registry.metrics.totalUnused++;
169
+ }
170
+ // Check if cleanup should be scheduled
171
+ this.sheetManager.checkCleanupNeeded(registry);
303
172
  }
304
173
  }
305
174
  /**
@@ -478,9 +347,14 @@ export class StyleInjector {
478
347
  return;
479
348
  entry.refCount--;
480
349
  if (entry.refCount <= 0) {
481
- // Mark as unused
350
+ // Dispose immediately - keyframes are global and safe to clean up right away
351
+ this.sheetManager.deleteKeyframes(registry, entry.info);
482
352
  registry.keyframesCache.delete(cacheKey);
483
- this.sheetManager.markKeyframesAsUnused(registry, entry.name);
353
+ // Update metrics
354
+ if (registry.metrics) {
355
+ registry.metrics.totalUnused++;
356
+ registry.metrics.stylesCleanedUp++;
357
+ }
484
358
  }
485
359
  }
486
360
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -22,7 +22,6 @@ export class SheetManager {
22
22
  ? {
23
23
  hits: 0,
24
24
  misses: 0,
25
- unusedHits: 0,
26
25
  bulkCleanups: 0,
27
26
  totalInsertions: 0,
28
27
  totalUnused: 0,
@@ -35,13 +34,11 @@ export class SheetManager {
35
34
  sheets: [],
36
35
  refCounts: new Map(),
37
36
  rules: new Map(),
38
- unusedRules: new Map(),
39
37
  ruleTextSet: new Set(),
40
38
  bulkCleanupTimeout: null,
41
39
  metrics,
42
40
  classCounter: 0,
43
41
  keyframesCache: new Map(),
44
- unusedKeyframes: new Map(),
45
42
  keyframesCounter: 0,
46
43
  injectedProperties: new Set(),
47
44
  };
@@ -328,10 +325,7 @@ export class SheetManager {
328
325
  for (const info of registry.rules.values()) {
329
326
  adjustRuleInfo(info);
330
327
  }
331
- // Adjust unused rules (their ruleInfo references the same objects as in rules map)
332
- for (const unused of registry.unusedRules.values()) {
333
- adjustRuleInfo(unused.ruleInfo);
334
- }
328
+ // No need to separately adjust unused rules since they're part of the rules Map
335
329
  // Adjust keyframes indices stored in cache
336
330
  for (const entry of registry.keyframesCache.values()) {
337
331
  const ki = entry.info;
@@ -422,52 +416,20 @@ export class SheetManager {
422
416
  return sheet.ruleCount;
423
417
  }
424
418
  /**
425
- * Mark a ruleset as unused but keep it in the stylesheet
426
- */
427
- markAsUnused(registry, className) {
428
- const ruleInfo = registry.rules.get(className);
429
- if (!ruleInfo)
430
- return;
431
- // Mark as unused (but keep in registry.rules)
432
- const unusedInfo = {
433
- ruleInfo,
434
- markedUnusedAt: Date.now(),
435
- };
436
- registry.unusedRules.set(className, unusedInfo);
437
- registry.refCounts.delete(className);
438
- // Update metrics
439
- if (registry.metrics) {
440
- registry.metrics.totalUnused++;
441
- }
442
- // Schedule bulk cleanup if threshold exceeded
443
- const threshold = this.config.unusedStylesThreshold || 500;
444
- if (registry.unusedRules.size >= threshold) {
445
- this.scheduleBulkCleanup(registry);
446
- }
447
- }
448
- /**
449
- * Restore a ruleset from unused styles
450
- */
451
- restoreFromUnused(registry, className) {
452
- const unusedInfo = registry.unusedRules.get(className);
453
- if (!unusedInfo)
454
- return null;
455
- // Remove from unused rules (rules stays in registry.rules)
456
- registry.unusedRules.delete(className);
457
- registry.refCounts.set(className, 1);
458
- // Update metrics
459
- if (registry.metrics) {
460
- registry.metrics.unusedHits++;
461
- }
462
- return unusedInfo.ruleInfo;
463
- }
464
- /**
465
- * Schedule bulk cleanup of all unused styles
419
+ * Schedule bulk cleanup of all unused styles (non-stacking)
466
420
  */
467
421
  scheduleBulkCleanup(registry) {
468
- // Don't schedule if already scheduled
469
- if (registry.bulkCleanupTimeout)
470
- return;
422
+ // Clear any existing timeout to prevent stacking
423
+ if (registry.bulkCleanupTimeout) {
424
+ if (this.config.idleCleanup &&
425
+ typeof cancelIdleCallback !== 'undefined') {
426
+ cancelIdleCallback(registry.bulkCleanupTimeout);
427
+ }
428
+ else {
429
+ clearTimeout(registry.bulkCleanupTimeout);
430
+ }
431
+ registry.bulkCleanupTimeout = null;
432
+ }
471
433
  const performCleanup = () => {
472
434
  this.performBulkCleanup(registry);
473
435
  registry.bulkCleanupTimeout = null;
@@ -484,22 +446,21 @@ export class SheetManager {
484
446
  * Perform bulk cleanup of all unused styles
485
447
  */
486
448
  performBulkCleanup(registry) {
487
- if (registry.unusedRules.size === 0)
488
- return;
489
449
  const cleanupStartTime = Date.now();
490
- // Build candidates list with age and sort by oldest first
491
- const now = Date.now();
492
- const minAge = Math.max(0, this.config.unusedStylesMinAgeMs || 0);
493
- const candidates = Array.from(registry.unusedRules.entries())
494
- .map(([className, info]) => ({
495
- className,
496
- info,
497
- age: now - (info.markedUnusedAt || 0),
498
- }))
499
- // Filter out too-fresh entries to avoid racing unmount/mount cycles
500
- .filter((entry) => entry.age >= minAge)
501
- // Sort from oldest to newest
502
- .sort((a, b) => b.age - a.age);
450
+ // Calculate unused rules dynamically: rules that have refCount = 0
451
+ const unusedClassNames = Array.from(registry.refCounts.entries())
452
+ .filter(([, refCount]) => refCount === 0)
453
+ .map(([className]) => className);
454
+ if (unusedClassNames.length === 0)
455
+ return;
456
+ // Build candidates list - no age filtering needed
457
+ const candidates = unusedClassNames.map((className) => {
458
+ const ruleInfo = registry.rules.get(className); // We know it exists
459
+ return {
460
+ className,
461
+ ruleInfo,
462
+ };
463
+ });
503
464
  if (candidates.length === 0)
504
465
  return;
505
466
  // Limit deletion scope per run (batch ratio)
@@ -512,8 +473,7 @@ export class SheetManager {
512
473
  // Group by sheet for efficient deletion
513
474
  const rulesBySheet = new Map();
514
475
  // Calculate CSS size before deletion and group rules
515
- for (const { className, info: unusedInfo } of selected) {
516
- const ruleInfo = unusedInfo.ruleInfo;
476
+ for (const { className, ruleInfo } of selected) {
517
477
  const sheetIndex = ruleInfo.sheetIndex;
518
478
  // Dev-only metrics: estimate CSS size and rule count if available
519
479
  if (this.config.devMode && Array.isArray(ruleInfo.cssText)) {
@@ -545,11 +505,9 @@ export class SheetManager {
545
505
  for (const { className, ruleInfo } of rulesInSheet) {
546
506
  // SAFETY: Re-check that the rule is still unused at deletion time.
547
507
  // Between scheduling and execution a class may have been restored
548
- // (refCounts set and removed from unusedRules). Skip such entries.
549
- if (!registry.unusedRules.has(className)) {
550
- continue;
551
- }
552
- if (registry.refCounts.has(className)) {
508
+ // (refCount set to > 0). Skip such entries.
509
+ const currentRefCount = registry.refCounts.get(className) || 0;
510
+ if (currentRefCount > 0) {
553
511
  // Class became active again; do not delete
554
512
  continue;
555
513
  }
@@ -567,7 +525,7 @@ export class SheetManager {
567
525
  }
568
526
  this.deleteRule(registry, ruleInfo);
569
527
  registry.rules.delete(className);
570
- registry.unusedRules.delete(className);
528
+ registry.refCounts.delete(className);
571
529
  cleanedUpCount++;
572
530
  }
573
531
  }
@@ -616,7 +574,14 @@ export class SheetManager {
616
574
  * Get cache performance metrics
617
575
  */
618
576
  getMetrics(registry) {
619
- return registry.metrics || null;
577
+ if (!registry.metrics)
578
+ return null;
579
+ // Calculate unusedHits on demand - only count CSS rules since keyframes are disposed immediately
580
+ const unusedRulesCount = Array.from(registry.refCounts.values()).filter((count) => count === 0).length;
581
+ return {
582
+ ...registry.metrics,
583
+ unusedHits: unusedRulesCount,
584
+ };
620
585
  }
621
586
  /**
622
587
  * Reset cache performance metrics
@@ -626,7 +591,6 @@ export class SheetManager {
626
591
  registry.metrics = {
627
592
  hits: 0,
628
593
  misses: 0,
629
- unusedHits: 0,
630
594
  bulkCleanups: 0,
631
595
  totalInsertions: 0,
632
596
  totalUnused: 0,
@@ -769,12 +733,13 @@ export class SheetManager {
769
733
  }
770
734
  }
771
735
  /**
772
- * Mark keyframes as unused
736
+ * Check if cleanup should be scheduled (async, non-stacking)
773
737
  */
774
- markKeyframesAsUnused(registry, name) {
775
- // Implementation similar to markAsUnused but for keyframes
738
+ checkCleanupNeeded(registry) {
739
+ // Count unused rules (refCount = 0) - keyframes are disposed immediately
740
+ const unusedRulesCount = Array.from(registry.refCounts.values()).filter((count) => count === 0).length;
776
741
  const threshold = this.config.unusedStylesThreshold || 500;
777
- if (registry.unusedKeyframes.size >= threshold) {
742
+ if (unusedRulesCount >= threshold) {
778
743
  this.scheduleBulkCleanup(registry);
779
744
  }
780
745
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-c4a232d
4
+ * @cube-dev/ui-kit v0.0.0-canary-d6409e4
5
5
  * Released under the MIT license.
6
6
  */
7
7