@cube-dev/ui-kit 0.0.0-canary-55e23f2 → 0.0.0-canary-21dd9ff

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 (506) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/GlobalStyles.js +1 -1
  18. package/es/components/GridProvider.js +1 -1
  19. package/es/components/HiddenInput.js +1 -1
  20. package/es/components/Item.js +1 -1
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +2 -2
  23. package/es/components/actions/Action/Action.js +14 -18
  24. package/es/components/actions/Button/Button.js +2 -1
  25. package/es/components/actions/Button/index.js +1 -1
  26. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  27. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/es/components/actions/CommandMenu/index.js +1 -1
  29. package/es/components/actions/CommandMenu/styled.js +1 -1
  30. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  31. package/es/components/actions/ItemButton/index.js +1 -1
  32. package/es/components/actions/Menu/Menu.js +1 -1
  33. package/es/components/actions/Menu/MenuItem.js +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 +5 -4
  64. package/es/components/content/ItemBase/index.js +1 -1
  65. package/es/components/content/List/SectionHeading.js +1 -1
  66. package/es/components/content/List/index.js +1 -1
  67. package/es/components/content/Paragraph.js +1 -1
  68. package/es/components/content/Placeholder/Placeholder.js +1 -1
  69. package/es/components/content/PrismCode/PrismCode.js +1 -1
  70. package/es/components/content/PrismCode/prismSetup.js +1 -1
  71. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  72. package/es/components/content/Result/Result.js +1 -1
  73. package/es/components/content/Skeleton/Skeleton.js +1 -1
  74. package/es/components/content/Tag/Tag.js +1 -1
  75. package/es/components/content/Text.js +3 -3
  76. package/es/components/content/Title.js +3 -3
  77. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  78. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  79. package/es/components/fields/Checkbox/context.js +1 -1
  80. package/es/components/fields/Checkbox/index.js +1 -1
  81. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  82. package/es/components/fields/ComboBox/index.js +1 -1
  83. package/es/components/fields/DatePicker/DateInput.js +1 -1
  84. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  85. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  86. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  87. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  88. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  89. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  90. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  91. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  92. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  93. package/es/components/fields/DatePicker/index.js +1 -1
  94. package/es/components/fields/DatePicker/intl.js +1 -1
  95. package/es/components/fields/DatePicker/parseDate.js +1 -1
  96. package/es/components/fields/DatePicker/props.js +1 -1
  97. package/es/components/fields/DatePicker/types.js +1 -1
  98. package/es/components/fields/DatePicker/utils.js +1 -1
  99. package/es/components/fields/FileInput/FileInput.js +1 -1
  100. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  101. package/es/components/fields/FilterListBox/index.js +1 -1
  102. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  103. package/es/components/fields/FilterPicker/index.js +1 -1
  104. package/es/components/fields/Input/Input.js +1 -1
  105. package/es/components/fields/Input/index.js +1 -1
  106. package/es/components/fields/ListBox/ListBox.js +1 -1
  107. package/es/components/fields/ListBox/index.js +1 -1
  108. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  109. package/es/components/fields/NumberInput/StepButton.js +1 -1
  110. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  111. package/es/components/fields/RadioGroup/Radio.js +1 -1
  112. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  113. package/es/components/fields/RadioGroup/context.js +1 -1
  114. package/es/components/fields/RadioGroup/index.js +1 -1
  115. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  116. package/es/components/fields/SearchInput/index.js +1 -1
  117. package/es/components/fields/Select/Select.js +1 -1
  118. package/es/components/fields/Select/index.js +1 -1
  119. package/es/components/fields/Slider/Gradation.js +1 -1
  120. package/es/components/fields/Slider/Header.js +1 -1
  121. package/es/components/fields/Slider/RangeSlider.js +1 -1
  122. package/es/components/fields/Slider/Slider.js +1 -1
  123. package/es/components/fields/Slider/SliderBase.js +1 -1
  124. package/es/components/fields/Slider/SliderInput.js +1 -1
  125. package/es/components/fields/Slider/SliderThumb.js +1 -1
  126. package/es/components/fields/Slider/SliderTrack.js +1 -1
  127. package/es/components/fields/Slider/elements.js +1 -1
  128. package/es/components/fields/Slider/index.js +1 -1
  129. package/es/components/fields/Slider/types.js +1 -1
  130. package/es/components/fields/Switch/Switch.js +1 -1
  131. package/es/components/fields/Switch/index.js +1 -1
  132. package/es/components/fields/TextArea/TextArea.js +1 -1
  133. package/es/components/fields/TextArea/index.js +1 -1
  134. package/es/components/fields/TextInput/TextInput.js +1 -1
  135. package/es/components/fields/TextInput/TextInputBase.js +3 -2
  136. package/es/components/fields/TextInput/index.js +1 -1
  137. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  138. package/es/components/fields/TextInputMapper/index.js +1 -1
  139. package/es/components/fields/index.js +1 -1
  140. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  141. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  142. package/es/components/form/FieldWrapper/index.js +1 -1
  143. package/es/components/form/FieldWrapper/types.js +1 -1
  144. package/es/components/form/Form/Field.js +1 -1
  145. package/es/components/form/Form/Form.js +1 -1
  146. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  147. package/es/components/form/Form/ResetButton/index.js +1 -1
  148. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  149. package/es/components/form/Form/SubmitButton/index.js +1 -1
  150. package/es/components/form/Form/SubmitError.js +1 -1
  151. package/es/components/form/Form/index.js +1 -1
  152. package/es/components/form/Form/types.js +1 -1
  153. package/es/components/form/Form/use-field/index.js +1 -1
  154. package/es/components/form/Form/use-field/types.js +1 -1
  155. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  156. package/es/components/form/Form/use-field/use-field.js +1 -1
  157. package/es/components/form/Form/use-form.js +1 -1
  158. package/es/components/form/Form/validation.js +1 -1
  159. package/es/components/form/Label.js +1 -1
  160. package/es/components/form/index.js +1 -1
  161. package/es/components/form/wrapper.js +1 -1
  162. package/es/components/layout/Flex.js +1 -1
  163. package/es/components/layout/Flow.js +1 -1
  164. package/es/components/layout/Grid.js +1 -1
  165. package/es/components/layout/Panel.js +1 -1
  166. package/es/components/layout/Prefix.js +1 -1
  167. package/es/components/layout/ResizablePanel.js +1 -1
  168. package/es/components/layout/Space.js +1 -1
  169. package/es/components/layout/Suffix.js +1 -1
  170. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  171. package/es/components/navigation/Link/Link.js +1 -1
  172. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  173. package/es/components/organisms/Modal/Modal.js +1 -1
  174. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  175. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  176. package/es/components/other/Calendar/Calendar.js +1 -1
  177. package/es/components/other/Calendar/CalendarCell.js +1 -1
  178. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  179. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  180. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  181. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  182. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  183. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  184. package/es/components/overlays/AlertDialog/index.js +1 -1
  185. package/es/components/overlays/AlertDialog/types.js +1 -1
  186. package/es/components/overlays/Dialog/Dialog.js +1 -1
  187. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  188. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  189. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  190. package/es/components/overlays/Dialog/context.js +1 -1
  191. package/es/components/overlays/Dialog/index.js +1 -1
  192. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  193. package/es/components/overlays/Modal/Modal.js +1 -1
  194. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  195. package/es/components/overlays/Modal/Overlay.js +1 -1
  196. package/es/components/overlays/Modal/Popover.js +1 -1
  197. package/es/components/overlays/Modal/Tray.js +1 -1
  198. package/es/components/overlays/Modal/Underlay.js +1 -1
  199. package/es/components/overlays/Modal/index.js +1 -1
  200. package/es/components/overlays/Modal/types.js +1 -1
  201. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  202. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  203. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  204. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  205. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  206. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  207. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  208. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  209. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  210. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  211. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  212. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  213. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  214. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  215. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  219. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  220. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  221. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  222. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  223. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  224. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  225. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  226. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  227. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  228. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  229. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  230. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  231. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  232. package/es/components/overlays/NewNotifications/index.js +1 -1
  233. package/es/components/overlays/NewNotifications/types.js +1 -1
  234. package/es/components/overlays/Notification/Notification.js +1 -1
  235. package/es/components/overlays/OverlayWrapper.js +1 -1
  236. package/es/components/overlays/Toasts/Toast.js +1 -1
  237. package/es/components/overlays/Toasts/index.js +1 -1
  238. package/es/components/overlays/Toasts/types.js +1 -1
  239. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  240. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  241. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  242. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  243. package/es/components/overlays/Tooltip/context.js +1 -1
  244. package/es/components/overlays/Tooltip/index.js +1 -1
  245. package/es/components/portal/Portal.js +1 -1
  246. package/es/components/portal/PortalProvider.js +1 -1
  247. package/es/components/portal/index.js +1 -1
  248. package/es/components/portal/types.js +1 -1
  249. package/es/components/portal/usePortal.js +1 -1
  250. package/es/components/shared/InvalidIcon.js +1 -1
  251. package/es/components/shared/ValidIcon.js +1 -1
  252. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  253. package/es/components/status/LoadingAnimation/index.js +1 -1
  254. package/es/components/status/Spin/Cube.js +1 -1
  255. package/es/components/status/Spin/InternalSpinner.js +1 -1
  256. package/es/components/status/Spin/Spin.js +1 -1
  257. package/es/components/status/Spin/SpinsContainer.js +1 -1
  258. package/es/components/status/Spin/index.js +1 -1
  259. package/es/components/status/Spin/types.js +1 -1
  260. package/es/components/status/index.js +1 -1
  261. package/es/data/item-themes.js +1 -1
  262. package/es/data/themes.js +1 -1
  263. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  264. package/es/icons/AdjustmentsIcon.js +1 -1
  265. package/es/icons/AiIcon.js +1 -1
  266. package/es/icons/AreaChartIcon.js +1 -1
  267. package/es/icons/BackwardIcon.js +1 -1
  268. package/es/icons/BarChartIcon.js +1 -1
  269. package/es/icons/BellFilledIcon.js +1 -1
  270. package/es/icons/BellIcon.js +1 -1
  271. package/es/icons/BooleanIcon.js +1 -1
  272. package/es/icons/CalendarEditIcon.js +1 -1
  273. package/es/icons/CalendarIcon.js +1 -1
  274. package/es/icons/CaretDownIcon.js +1 -1
  275. package/es/icons/CaretUpIcon.js +1 -1
  276. package/es/icons/ChartAreaStackedIcon.js +1 -1
  277. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  278. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  279. package/es/icons/ChartBarGroupedIcon.js +1 -1
  280. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  281. package/es/icons/ChartBarLineIcon.js +1 -1
  282. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  283. package/es/icons/ChartBarStackedIcon.js +1 -1
  284. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  285. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  286. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  287. package/es/icons/ChartBoxPlotIcon.js +1 -1
  288. package/es/icons/ChartBubbleIcon.js +1 -1
  289. package/es/icons/ChartDonut2Icon.js +1 -1
  290. package/es/icons/ChartFunnelIcon.js +1 -1
  291. package/es/icons/ChartKPIIcon.js +1 -1
  292. package/es/icons/ChartPie2Icon.js +1 -1
  293. package/es/icons/ChartScatterIcon.js +1 -1
  294. package/es/icons/CheckCircleFilledIcon.js +1 -1
  295. package/es/icons/CheckCircleIcon.js +1 -1
  296. package/es/icons/CheckIcon.js +1 -1
  297. package/es/icons/CircleFilledIcon.js +1 -1
  298. package/es/icons/ClearIcon.js +1 -1
  299. package/es/icons/CloseCircleFilledIcon.js +1 -1
  300. package/es/icons/CloseCircleIcon.js +1 -1
  301. package/es/icons/CloseIcon.js +1 -1
  302. package/es/icons/CodeIcon.js +1 -1
  303. package/es/icons/CopyIcon.js +1 -1
  304. package/es/icons/CountIcon.js +1 -1
  305. package/es/icons/CubeIcon.js +1 -1
  306. package/es/icons/DangerIcon.js +1 -1
  307. package/es/icons/DashboardIcon.js +1 -1
  308. package/es/icons/DatabaseIcon.js +1 -1
  309. package/es/icons/DirectionIcon.js +1 -1
  310. package/es/icons/DonutIcon.js +1 -1
  311. package/es/icons/DownIcon.js +1 -1
  312. package/es/icons/EditIcon.js +1 -1
  313. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  314. package/es/icons/ExclamationCircleIcon.js +1 -1
  315. package/es/icons/ExclamationIcon.js +1 -1
  316. package/es/icons/EyeIcon.js +1 -1
  317. package/es/icons/EyeInvisibleIcon.js +1 -1
  318. package/es/icons/FilterIcon.js +1 -1
  319. package/es/icons/FolderFilledIcon.js +1 -1
  320. package/es/icons/FolderIcon.js +1 -1
  321. package/es/icons/FolderOpenFilledIcon.js +1 -1
  322. package/es/icons/FolderOpenIcon.js +1 -1
  323. package/es/icons/ForwardIcon.js +1 -1
  324. package/es/icons/HierarchyIcon.js +1 -1
  325. package/es/icons/Icon.js +1 -1
  326. package/es/icons/InfoCircleIcon.js +1 -1
  327. package/es/icons/InfoIcon.js +1 -1
  328. package/es/icons/KeyIcon.js +1 -1
  329. package/es/icons/LeftIcon.js +1 -1
  330. package/es/icons/LineChartIcon.js +1 -1
  331. package/es/icons/LoadingIcon.js +1 -1
  332. package/es/icons/LockFilledIcon.js +1 -1
  333. package/es/icons/LockIcon.js +1 -1
  334. package/es/icons/MoreIcon.js +1 -1
  335. package/es/icons/NotAllowedIcon.js +1 -1
  336. package/es/icons/NumberIcon.js +1 -1
  337. package/es/icons/PauseCircleFilledIcon.js +1 -1
  338. package/es/icons/PauseCircleIcon.js +1 -1
  339. package/es/icons/PauseIcon.js +1 -1
  340. package/es/icons/PieChartIcon.js +1 -1
  341. package/es/icons/PlayCircleIcon.js +1 -1
  342. package/es/icons/PlayIcon.js +1 -1
  343. package/es/icons/PlusIcon.js +1 -1
  344. package/es/icons/ReloadIcon.js +1 -1
  345. package/es/icons/ReportIcon.js +1 -1
  346. package/es/icons/ReturnIcon.js +1 -1
  347. package/es/icons/RightIcon.js +1 -1
  348. package/es/icons/SchemeIcon.js +1 -1
  349. package/es/icons/SearchIcon.js +1 -1
  350. package/es/icons/SettingsIcon.js +1 -1
  351. package/es/icons/ShieldFilledIcon.js +1 -1
  352. package/es/icons/ShieldIcon.js +1 -1
  353. package/es/icons/SlashIcon.js +1 -1
  354. package/es/icons/SparklesIcon.js +1 -1
  355. package/es/icons/SqlIcon.js +1 -1
  356. package/es/icons/StatsIcon.js +1 -1
  357. package/es/icons/StopIcon.js +1 -1
  358. package/es/icons/StringIcon.js +1 -1
  359. package/es/icons/SwitchIcon.js +1 -1
  360. package/es/icons/TableIcon.js +1 -1
  361. package/es/icons/ThumbsDownIcon.js +1 -1
  362. package/es/icons/ThumbsUpIcon.js +1 -1
  363. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  364. package/es/icons/ThunderboltFilledIcon.js +1 -1
  365. package/es/icons/ThunderboltIcon.js +1 -1
  366. package/es/icons/TimeIcon.js +1 -1
  367. package/es/icons/UnlockIcon.js +1 -1
  368. package/es/icons/UpIcon.js +1 -1
  369. package/es/icons/UserGroupIcon.js +1 -1
  370. package/es/icons/UserIcon.js +1 -1
  371. package/es/icons/UserLockIcon.js +1 -1
  372. package/es/icons/ViewIcon.js +1 -1
  373. package/es/icons/WarningFilledIcon.js +1 -1
  374. package/es/icons/WarningIcon.js +1 -1
  375. package/es/icons/add-new-icon.js +1 -1
  376. package/es/icons/index.js +1 -1
  377. package/es/icons/wrap-icon.js +1 -1
  378. package/es/index.js +1 -1
  379. package/es/provider.js +1 -1
  380. package/es/providers/TrackingProvider.js +1 -1
  381. package/es/services/notification.js +1 -1
  382. package/es/shared/form.js +1 -1
  383. package/es/shared/index.js +1 -1
  384. package/es/stories/Form.legacy-stories.js +1 -1
  385. package/es/stories/FormFieldArgs.js +1 -1
  386. package/es/stories/Layout.stories.js +1 -1
  387. package/es/stories/Tasty.stories.js +1 -1
  388. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  389. package/es/stories/components/DialogFormApp.js +1 -1
  390. package/es/stories/components/StyledButton.js +1 -1
  391. package/es/stories/lists/baseProps.js +1 -2
  392. package/es/tasty/index.js +2 -1
  393. package/es/tasty/injector/flatten.js +350 -0
  394. package/es/tasty/injector/index.js +165 -0
  395. package/es/tasty/injector/injector.js +315 -0
  396. package/es/tasty/injector/sheet-manager.js +518 -0
  397. package/es/tasty/injector/types.js +10 -0
  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 +38 -2
  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 +8 -12
  409. package/es/tasty/styles/createStyle.js +3 -3
  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 +6 -8
  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 -3
  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 +40 -44
  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 +92 -19
  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/mergeStyles.js +1 -1
  452. package/es/tasty/utils/modAttrs.js +1 -1
  453. package/es/tasty/utils/renderStyles.js +515 -57
  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 +3 -62
  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/components/actions/Button/Button.d.ts +1 -0
  491. package/types/components/actions/Menu/styled.d.ts +699 -702
  492. package/types/components/actions/use-action.d.ts +1 -1
  493. package/types/components/content/List/SectionHeading.d.ts +233 -234
  494. package/types/components/fields/DatePicker/DatePickerElement.d.ts +233 -234
  495. package/types/tasty/index.d.ts +1 -0
  496. package/types/tasty/injector/flatten.d.ts +16 -0
  497. package/types/tasty/injector/index.d.ts +64 -0
  498. package/types/tasty/injector/injector.d.ts +82 -0
  499. package/types/tasty/injector/sheet-manager.d.ts +74 -0
  500. package/types/tasty/injector/types.d.ts +71 -0
  501. package/types/tasty/parser/lru.d.ts +5 -1
  502. package/types/tasty/styles/color.d.ts +3 -1
  503. package/types/tasty/styles/reset.d.ts +1 -2
  504. package/types/tasty/types.d.ts +0 -2
  505. package/types/tasty/utils/renderStyles.d.ts +25 -7
  506. package/types/tasty/utils/styles.d.ts +1 -9
@@ -0,0 +1,518 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { Lru } from '../parser/lru';
9
+ export class SheetManager {
10
+ rootRegistries = new WeakMap();
11
+ config;
12
+ constructor(config) {
13
+ this.config = config;
14
+ }
15
+ /**
16
+ * Get or create registry for a root (Document or ShadowRoot)
17
+ */
18
+ getRegistry(root) {
19
+ let registry = this.rootRegistries.get(root);
20
+ if (!registry) {
21
+ const metrics = this.config.collectMetrics
22
+ ? {
23
+ hits: 0,
24
+ misses: 0,
25
+ disposedHits: 0,
26
+ evictions: 0,
27
+ totalInsertions: 0,
28
+ totalDisposals: 0,
29
+ domCleanups: 0,
30
+ startTime: Date.now(),
31
+ }
32
+ : undefined;
33
+ const disposedCache = new Lru(this.config.cacheSize || 500);
34
+ registry = {
35
+ sheets: [],
36
+ refCounts: new Map(),
37
+ rules: new Map(),
38
+ deletionQueue: [],
39
+ ruleTextSet: new Set(),
40
+ disposedCache,
41
+ cleanupTimeouts: new Map(),
42
+ metrics,
43
+ classCounter: 0,
44
+ };
45
+ // Perform DOM cleanup only when an item is evicted from the LRU
46
+ disposedCache.setOnEvict((key) => {
47
+ this.performActualCleanup(registry, key);
48
+ if (registry.metrics) {
49
+ registry.metrics.evictions++;
50
+ }
51
+ });
52
+ this.rootRegistries.set(root, registry);
53
+ }
54
+ return registry;
55
+ }
56
+ /**
57
+ * Create a new stylesheet for the registry
58
+ */
59
+ createSheet(registry, root) {
60
+ const sheet = this.createStyleElement(root);
61
+ const sheetInfo = {
62
+ sheet,
63
+ ruleCount: 0,
64
+ holes: [],
65
+ };
66
+ registry.sheets.push(sheetInfo);
67
+ return sheetInfo;
68
+ }
69
+ /**
70
+ * Create a style element and append to document
71
+ */
72
+ createStyleElement(root) {
73
+ const style = root.createElement?.('style') ||
74
+ document.createElement('style');
75
+ if (this.config.nonce) {
76
+ style.nonce = this.config.nonce;
77
+ }
78
+ style.setAttribute('data-tasty', '');
79
+ // Append to head or shadow root
80
+ if ('head' in root && root.head) {
81
+ root.head.appendChild(style);
82
+ }
83
+ else if ('appendChild' in root) {
84
+ root.appendChild(style);
85
+ }
86
+ else {
87
+ document.head.appendChild(style);
88
+ }
89
+ // Verify it was actually added - log only if there's a problem and we're not using forceTextInjection
90
+ if (!style.isConnected && !this.config.forceTextInjection) {
91
+ console.error('SheetManager: Style element failed to connect to DOM!', {
92
+ parentNode: style.parentNode?.nodeName,
93
+ isConnected: style.isConnected,
94
+ });
95
+ }
96
+ return style;
97
+ }
98
+ /**
99
+ * Insert CSS rules as a single block
100
+ */
101
+ insertRule(registry, flattenedRules, className, root) {
102
+ // Find or create a sheet with available space
103
+ let targetSheet = this.findAvailableSheet(registry, root);
104
+ if (!targetSheet) {
105
+ targetSheet = this.createSheet(registry, root);
106
+ }
107
+ const ruleIndex = this.findAvailableRuleIndex(targetSheet);
108
+ const sheetIndex = registry.sheets.indexOf(targetSheet);
109
+ try {
110
+ // Group rules by selector and at-rules to combine declarations
111
+ const groupedRules = [];
112
+ const groupMap = new Map();
113
+ const atKey = (at) => (at && at.length ? at.join('|') : '');
114
+ flattenedRules.forEach((r) => {
115
+ const key = `${atKey(r.atRules)}||${r.selector}`;
116
+ const existing = groupMap.get(key);
117
+ if (existing) {
118
+ // Append declarations, preserving order
119
+ existing.declarations = existing.declarations
120
+ ? `${existing.declarations} ${r.declarations}`
121
+ : r.declarations;
122
+ }
123
+ else {
124
+ groupMap.set(key, {
125
+ idx: groupedRules.length,
126
+ selector: r.selector,
127
+ atRules: r.atRules,
128
+ declarations: r.declarations,
129
+ });
130
+ groupedRules.push({ ...r });
131
+ }
132
+ });
133
+ // Normalize groupedRules from map (with merged declarations)
134
+ groupMap.forEach((val) => {
135
+ groupedRules[val.idx] = {
136
+ selector: val.selector,
137
+ atRules: val.atRules,
138
+ declarations: val.declarations,
139
+ };
140
+ });
141
+ // Insert grouped rules
142
+ const insertedRuleTexts = [];
143
+ let currentRuleIndex = ruleIndex;
144
+ let firstInsertedIndex = null;
145
+ let lastInsertedIndex = null;
146
+ for (const rule of groupedRules) {
147
+ const declarations = rule.declarations;
148
+ const baseRule = `${rule.selector} { ${declarations} }`;
149
+ // Wrap with at-rules if present
150
+ let fullRule = baseRule;
151
+ if (rule.atRules && rule.atRules.length > 0) {
152
+ fullRule = rule.atRules.reduce((css, atRule) => `${atRule} { ${css} }`, baseRule);
153
+ }
154
+ // Insert individual rule into style element
155
+ const styleElement = targetSheet.sheet;
156
+ const styleSheet = styleElement.sheet;
157
+ if (styleSheet && !this.config.forceTextInjection) {
158
+ const maxIndex = styleSheet.cssRules.length;
159
+ const safeIndex = Math.min(Math.max(0, currentRuleIndex), maxIndex);
160
+ styleSheet.insertRule(fullRule, safeIndex);
161
+ if (firstInsertedIndex == null)
162
+ firstInsertedIndex = safeIndex;
163
+ lastInsertedIndex = safeIndex;
164
+ currentRuleIndex = safeIndex + 1;
165
+ }
166
+ else {
167
+ // Use textContent (either as fallback or when forceTextInjection is enabled)
168
+ styleElement.textContent =
169
+ (styleElement.textContent || '') + '\n' + fullRule;
170
+ if (firstInsertedIndex == null)
171
+ firstInsertedIndex = currentRuleIndex;
172
+ lastInsertedIndex = currentRuleIndex;
173
+ currentRuleIndex++;
174
+ }
175
+ // CRITICAL DEBUG: Verify the style element is in DOM only if there are issues and we're not using forceTextInjection
176
+ if (!styleElement.parentNode && !this.config.forceTextInjection) {
177
+ console.error('SheetManager: Style element is NOT in DOM! This is the problem!', {
178
+ className,
179
+ ruleIndex: currentRuleIndex,
180
+ });
181
+ }
182
+ // Conditionally store cssText and track for debug
183
+ if (this.config.debugMode) {
184
+ insertedRuleTexts.push(fullRule);
185
+ try {
186
+ registry.ruleTextSet.add(fullRule);
187
+ }
188
+ catch (_) {
189
+ // noop: defensive in case ruleTextSet is unavailable
190
+ }
191
+ }
192
+ // currentRuleIndex already adjusted above
193
+ }
194
+ // Update sheet info based on the number of rules inserted
195
+ const finalRuleIndex = currentRuleIndex - 1;
196
+ if (finalRuleIndex >= targetSheet.ruleCount) {
197
+ targetSheet.ruleCount = finalRuleIndex + 1;
198
+ }
199
+ return {
200
+ className,
201
+ ruleIndex: firstInsertedIndex ?? ruleIndex,
202
+ sheetIndex,
203
+ cssText: this.config.debugMode ? insertedRuleTexts : [],
204
+ endRuleIndex: lastInsertedIndex ?? finalRuleIndex,
205
+ };
206
+ }
207
+ catch (error) {
208
+ console.warn('Failed to insert CSS rules:', error, {
209
+ flattenedRules,
210
+ className,
211
+ });
212
+ return null;
213
+ }
214
+ }
215
+ /**
216
+ * Insert global CSS rules
217
+ */
218
+ insertGlobalRule(registry, flattenedRules, className, root) {
219
+ // For now, global rules are handled the same way as regular rules
220
+ return this.insertRule(registry, flattenedRules, className, root);
221
+ }
222
+ /**
223
+ * Delete a CSS rule from the sheet
224
+ */
225
+ deleteRule(registry, ruleInfo) {
226
+ const sheet = registry.sheets[ruleInfo.sheetIndex];
227
+ if (!sheet) {
228
+ return;
229
+ }
230
+ try {
231
+ const texts = Array.isArray(ruleInfo.cssText)
232
+ ? ruleInfo.cssText.slice()
233
+ : [];
234
+ const styleElement = sheet.sheet;
235
+ const styleSheet = styleElement.sheet;
236
+ if (styleSheet) {
237
+ const rules = styleSheet.cssRules;
238
+ // Prefer index-based deletion when possible
239
+ const startIdx = Math.max(0, ruleInfo.ruleIndex);
240
+ const endIdx = Math.min(rules.length - 1, Number.isFinite(ruleInfo.endRuleIndex)
241
+ ? ruleInfo.endRuleIndex
242
+ : startIdx - 1);
243
+ if (Number.isFinite(startIdx) && endIdx >= startIdx) {
244
+ for (let idx = endIdx; idx >= startIdx; idx--) {
245
+ if (idx < 0 || idx >= styleSheet.cssRules.length)
246
+ continue;
247
+ styleSheet.deleteRule(idx);
248
+ }
249
+ sheet.ruleCount = Math.max(0, sheet.ruleCount - (endIdx - startIdx + 1));
250
+ }
251
+ else if (this.config.debugMode && texts.length) {
252
+ // Fallback: locate each rule by exact cssText and delete (debug mode only)
253
+ for (const text of texts) {
254
+ let idx = -1;
255
+ for (let i = styleSheet.cssRules.length - 1; i >= 0; i--) {
256
+ if (styleSheet.cssRules[i].cssText === text) {
257
+ idx = i;
258
+ break;
259
+ }
260
+ }
261
+ if (idx >= 0) {
262
+ styleSheet.deleteRule(idx);
263
+ }
264
+ }
265
+ sheet.ruleCount = Math.max(0, sheet.ruleCount - texts.length);
266
+ }
267
+ }
268
+ // Remove texts from validation set
269
+ if (this.config.debugMode) {
270
+ try {
271
+ for (const text of texts) {
272
+ registry.ruleTextSet.delete(text);
273
+ }
274
+ }
275
+ catch (_) {
276
+ // noop
277
+ }
278
+ }
279
+ }
280
+ catch (error) {
281
+ console.warn('Failed to delete CSS rule:', error);
282
+ }
283
+ }
284
+ /**
285
+ * Find a sheet with available space or return null
286
+ */
287
+ findAvailableSheet(registry, root) {
288
+ const maxRules = this.config.maxRulesPerSheet;
289
+ if (!maxRules) {
290
+ // No limit, use the last sheet if it exists
291
+ const lastSheet = registry.sheets[registry.sheets.length - 1];
292
+ return lastSheet || null;
293
+ }
294
+ // Find sheet with space
295
+ for (const sheet of registry.sheets) {
296
+ if (sheet.ruleCount < maxRules) {
297
+ return sheet;
298
+ }
299
+ }
300
+ return null; // No available sheet found
301
+ }
302
+ /**
303
+ * Find an available rule index in the sheet
304
+ */
305
+ findAvailableRuleIndex(sheet) {
306
+ // Always append to the end - CSS doesn't have holes
307
+ return sheet.ruleCount;
308
+ }
309
+ /**
310
+ * Move a ruleset to disposed cache for potential reuse
311
+ */
312
+ moveToDisposedCache(registry, className) {
313
+ const ruleInfo = registry.rules.get(className);
314
+ if (!ruleInfo)
315
+ return;
316
+ // Move to disposed cache
317
+ const disposedInfo = {
318
+ ruleInfo,
319
+ disposedAt: Date.now(),
320
+ recentlyUsed: false,
321
+ };
322
+ registry.disposedCache.set(className, disposedInfo);
323
+ // Remove from active registry
324
+ registry.rules.delete(className);
325
+ registry.refCounts.delete(className);
326
+ // Update metrics
327
+ if (registry.metrics) {
328
+ registry.metrics.totalDisposals++;
329
+ }
330
+ // If we have a disposed LRU cache, don't schedule DOM cleanup.
331
+ // Cleanup will occur on LRU eviction or via manual forceCleanup.
332
+ if ((this.config.cacheSize || 0) > 0) {
333
+ return;
334
+ }
335
+ // Schedule lazy cleanup if configured (legacy behavior when no cache)
336
+ if (this.config.idleCleanup && typeof requestIdleCallback !== 'undefined') {
337
+ // Use requestIdleCallback for cleanup when available and enabled
338
+ const timeoutId = requestIdleCallback(() => {
339
+ this.performActualCleanup(registry, className);
340
+ });
341
+ registry.cleanupTimeouts.set(className, timeoutId);
342
+ }
343
+ else {
344
+ const cleanupDelay = this.config.cleanupDelay || 5000;
345
+ if (cleanupDelay > 0) {
346
+ const timeoutId = setTimeout(() => {
347
+ this.performActualCleanup(registry, className);
348
+ }, cleanupDelay);
349
+ registry.cleanupTimeouts.set(className, timeoutId);
350
+ }
351
+ else {
352
+ // Immediate cleanup
353
+ this.performActualCleanup(registry, className);
354
+ }
355
+ }
356
+ }
357
+ /**
358
+ * Restore a ruleset from disposed cache
359
+ */
360
+ restoreFromDisposedCache(registry, className) {
361
+ const disposedInfo = registry.disposedCache.get(className);
362
+ if (!disposedInfo)
363
+ return null;
364
+ // Cancel any scheduled cleanup
365
+ const timeoutId = registry.cleanupTimeouts.get(className);
366
+ if (timeoutId) {
367
+ if (this.config.idleCleanup &&
368
+ typeof cancelIdleCallback !== 'undefined') {
369
+ cancelIdleCallback(timeoutId);
370
+ }
371
+ else {
372
+ clearTimeout(timeoutId);
373
+ }
374
+ registry.cleanupTimeouts.delete(className);
375
+ }
376
+ // Restore to active registry
377
+ registry.rules.set(className, disposedInfo.ruleInfo);
378
+ registry.refCounts.set(className, 1);
379
+ // Remove from disposed cache
380
+ registry.disposedCache.delete(className);
381
+ // Mark as recently used for optimization
382
+ disposedInfo.recentlyUsed = true;
383
+ // Update metrics
384
+ if (registry.metrics) {
385
+ registry.metrics.disposedHits++;
386
+ }
387
+ return disposedInfo.ruleInfo;
388
+ }
389
+ /**
390
+ * Actually remove CSS rules from DOM (lazy cleanup)
391
+ */
392
+ performActualCleanup(registry, className) {
393
+ const disposedInfo = registry.disposedCache.get(className);
394
+ if (!disposedInfo)
395
+ return;
396
+ // Remove from DOM
397
+ this.deleteRule(registry, disposedInfo.ruleInfo);
398
+ // Remove from disposed cache
399
+ registry.disposedCache.delete(className);
400
+ // Clean up timeout tracking
401
+ registry.cleanupTimeouts.delete(className);
402
+ // Update metrics
403
+ if (registry.metrics) {
404
+ registry.metrics.domCleanups++;
405
+ }
406
+ }
407
+ /**
408
+ * Process the deletion queue for cleanup
409
+ */
410
+ processCleanupQueue(registry) {
411
+ const { deletionQueue } = registry;
412
+ if (deletionQueue.length === 0) {
413
+ return;
414
+ }
415
+ // Process deletions
416
+ const toDelete = [...deletionQueue];
417
+ deletionQueue.length = 0; // Clear queue
418
+ for (const className of toDelete) {
419
+ // Check if still referenced
420
+ const refCount = registry.refCounts.get(className) || 0;
421
+ if (refCount <= 0) {
422
+ // Move to disposed cache
423
+ const ruleInfo = registry.rules.get(className);
424
+ if (ruleInfo) {
425
+ this.moveToDisposedCache(registry, className);
426
+ }
427
+ }
428
+ }
429
+ }
430
+ /**
431
+ * Get total number of rules across all sheets
432
+ */
433
+ getTotalRuleCount(registry) {
434
+ return registry.sheets.reduce((total, sheet) => total + sheet.ruleCount - sheet.holes.length, 0);
435
+ }
436
+ /**
437
+ * Get CSS text from all sheets (for SSR)
438
+ */
439
+ getCssText(registry) {
440
+ const cssChunks = [];
441
+ for (const sheet of registry.sheets) {
442
+ try {
443
+ const styleElement = sheet.sheet;
444
+ if (styleElement.textContent) {
445
+ cssChunks.push(styleElement.textContent);
446
+ }
447
+ else if (styleElement.sheet) {
448
+ const rules = Array.from(styleElement.sheet.cssRules);
449
+ cssChunks.push(rules.map((rule) => rule.cssText).join('\n'));
450
+ }
451
+ }
452
+ catch (error) {
453
+ console.warn('Failed to read CSS from sheet:', error);
454
+ }
455
+ }
456
+ return cssChunks.join('\n');
457
+ }
458
+ /**
459
+ * Get cache performance metrics
460
+ */
461
+ getMetrics(registry) {
462
+ return registry.metrics || null;
463
+ }
464
+ /**
465
+ * Reset cache performance metrics
466
+ */
467
+ resetMetrics(registry) {
468
+ if (registry.metrics) {
469
+ registry.metrics = {
470
+ hits: 0,
471
+ misses: 0,
472
+ disposedHits: 0,
473
+ evictions: 0,
474
+ totalInsertions: 0,
475
+ totalDisposals: 0,
476
+ domCleanups: 0,
477
+ startTime: Date.now(),
478
+ };
479
+ }
480
+ }
481
+ /**
482
+ * Clean up resources for a root
483
+ */
484
+ cleanup(root) {
485
+ const registry = this.rootRegistries.get(root);
486
+ if (!registry) {
487
+ return;
488
+ }
489
+ // Clear all cleanup timeouts
490
+ for (const timeoutId of registry.cleanupTimeouts.values()) {
491
+ if (this.config.idleCleanup &&
492
+ typeof cancelIdleCallback !== 'undefined') {
493
+ cancelIdleCallback(timeoutId);
494
+ }
495
+ else {
496
+ clearTimeout(timeoutId);
497
+ }
498
+ }
499
+ registry.cleanupTimeouts.clear();
500
+ // Remove all sheets
501
+ for (const sheet of registry.sheets) {
502
+ try {
503
+ // Remove style element
504
+ const styleElement = sheet.sheet;
505
+ if (styleElement.parentNode) {
506
+ styleElement.parentNode.removeChild(styleElement);
507
+ }
508
+ }
509
+ catch (error) {
510
+ console.warn('Failed to cleanup sheet:', error);
511
+ }
512
+ }
513
+ // Clear registry
514
+ this.rootRegistries.delete(root);
515
+ }
516
+ }
517
+
518
+
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ export {};
9
+
10
+
@@ -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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -10,7 +10,8 @@ export class Lru {
10
10
  map = new Map();
11
11
  head = null;
12
12
  tail = null;
13
- constructor(limit = 1000) {
13
+ onEvict;
14
+ constructor(limit = 1000, onEvict) {
14
15
  this.limit = limit;
15
16
  // Normalize limit; fall back to sensible default (1000) to keep caching enabled
16
17
  let normalized = Number.isFinite(this.limit)
@@ -19,6 +20,10 @@ export class Lru {
19
20
  if (normalized <= 0)
20
21
  normalized = 1000;
21
22
  this.limit = normalized;
23
+ this.onEvict = onEvict;
24
+ }
25
+ setOnEvict(fn) {
26
+ this.onEvict = fn;
22
27
  }
23
28
  get(key) {
24
29
  const node = this.map.get(key);
@@ -47,6 +52,29 @@ export class Lru {
47
52
  if (this.map.size > this.limit)
48
53
  this.evict();
49
54
  }
55
+ delete(key) {
56
+ const node = this.map.get(key);
57
+ if (!node)
58
+ return;
59
+ if (node.prev) {
60
+ const prevNode = this.map.get(node.prev);
61
+ if (prevNode)
62
+ prevNode.next = node.next;
63
+ }
64
+ if (node.next) {
65
+ const nextNode = this.map.get(node.next);
66
+ if (nextNode)
67
+ nextNode.prev = node.prev;
68
+ }
69
+ if (this.head === key)
70
+ this.head = node.next;
71
+ if (this.tail === key)
72
+ this.tail = node.prev;
73
+ this.map.delete(key);
74
+ }
75
+ keys() {
76
+ return this.map.keys();
77
+ }
50
78
  touch(key, node) {
51
79
  if (this.head === key)
52
80
  return; // already MRU
@@ -94,6 +122,14 @@ export class Lru {
94
122
  if (this.head === old)
95
123
  this.head = null;
96
124
  this.map.delete(old);
125
+ if (this.onEvict) {
126
+ try {
127
+ this.onEvict(old, node.value);
128
+ }
129
+ catch {
130
+ // ignore user callback errors
131
+ }
132
+ }
97
133
  }
98
134
  clear() {
99
135
  this.map.clear();
@@ -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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
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-55e23f2
4
+ * @cube-dev/ui-kit v0.0.0-canary-21dd9ff
5
5
  * Released under the MIT license.
6
6
  */
7
7