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

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