@cube-dev/ui-kit 0.0.0-canary-0f4773b → 0.0.0-canary-458bf0e

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 (507) hide show
  1. package/es/_internal/hooks/index.js +1 -1
  2. package/es/_internal/hooks/use-chained-callback.js +1 -1
  3. package/es/_internal/hooks/use-debounced-value.js +1 -1
  4. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/es/_internal/hooks/use-effect-once.js +1 -1
  6. package/es/_internal/hooks/use-event.js +1 -1
  7. package/es/_internal/hooks/use-is-first-render.js +1 -1
  8. package/es/_internal/hooks/use-sync-ref.js +1 -1
  9. package/es/_internal/hooks/use-timer/index.js +1 -1
  10. package/es/_internal/hooks/use-timer/timer.js +1 -1
  11. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/es/_internal/hooks/use-update-effect.js +1 -1
  13. package/es/_internal/hooks/use-warn.js +1 -1
  14. package/es/_internal/index.js +1 -1
  15. package/es/components/Block.js +1 -1
  16. package/es/components/GlobalStyles.js +1 -1
  17. package/es/components/GridProvider.js +1 -1
  18. package/es/components/HiddenInput.js +1 -1
  19. package/es/components/Item.js +1 -1
  20. package/es/components/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +2 -2
  22. package/es/components/actions/Action/Action.js +18 -14
  23. package/es/components/actions/Button/Button.js +1 -2
  24. package/es/components/actions/Button/index.js +1 -1
  25. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  26. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/es/components/actions/CommandMenu/index.js +1 -1
  28. package/es/components/actions/CommandMenu/styled.js +1 -1
  29. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/es/components/actions/ItemButton/index.js +1 -1
  31. package/es/components/actions/Menu/Menu.js +1 -1
  32. package/es/components/actions/Menu/MenuItem.js +8 -3
  33. package/es/components/actions/Menu/MenuSection.js +1 -1
  34. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/es/components/actions/Menu/context.js +1 -1
  38. package/es/components/actions/Menu/index.js +1 -1
  39. package/es/components/actions/Menu/styled.js +1 -1
  40. package/es/components/actions/index.js +1 -1
  41. package/es/components/actions/use-action.js +1 -1
  42. package/es/components/actions/use-anchored-menu.js +1 -1
  43. package/es/components/actions/use-context-menu.js +1 -1
  44. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  45. package/es/components/content/Alert/Alert.js +1 -1
  46. package/es/components/content/Alert/index.js +1 -1
  47. package/es/components/content/Alert/types.js +1 -1
  48. package/es/components/content/Alert/use-alert.js +1 -1
  49. package/es/components/content/Avatar/Avatar.js +1 -1
  50. package/es/components/content/Badge/Badge.js +1 -1
  51. package/es/components/content/Card/Card.js +1 -1
  52. package/es/components/content/Content.js +1 -1
  53. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  54. package/es/components/content/CopyPasteBlock/index.js +1 -1
  55. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  56. package/es/components/content/CopySnippet/index.js +1 -1
  57. package/es/components/content/Divider.js +1 -1
  58. package/es/components/content/Footer.js +1 -1
  59. package/es/components/content/Header.js +1 -1
  60. package/es/components/content/HotKeys/HotKeys.js +1 -1
  61. package/es/components/content/HotKeys/index.js +1 -1
  62. package/es/components/content/ItemBase/ItemBase.js +4 -5
  63. package/es/components/content/ItemBase/index.js +1 -1
  64. package/es/components/content/List/SectionHeading.js +1 -1
  65. package/es/components/content/List/index.js +1 -1
  66. package/es/components/content/Paragraph.js +1 -1
  67. package/es/components/content/Placeholder/Placeholder.js +1 -1
  68. package/es/components/content/PrismCode/PrismCode.js +1 -1
  69. package/es/components/content/PrismCode/prismSetup.js +1 -1
  70. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  71. package/es/components/content/Result/Result.js +1 -1
  72. package/es/components/content/Skeleton/Skeleton.js +1 -1
  73. package/es/components/content/Tag/Tag.js +1 -1
  74. package/es/components/content/Text.js +3 -3
  75. package/es/components/content/Title.js +3 -3
  76. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  77. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  78. package/es/components/fields/Checkbox/context.js +1 -1
  79. package/es/components/fields/Checkbox/index.js +1 -1
  80. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  81. package/es/components/fields/ComboBox/index.js +1 -1
  82. package/es/components/fields/DatePicker/DateInput.js +1 -1
  83. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  84. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  85. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  86. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  87. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  88. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  89. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  90. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  91. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  92. package/es/components/fields/DatePicker/index.js +1 -1
  93. package/es/components/fields/DatePicker/intl.js +1 -1
  94. package/es/components/fields/DatePicker/parseDate.js +1 -1
  95. package/es/components/fields/DatePicker/props.js +1 -1
  96. package/es/components/fields/DatePicker/types.js +1 -1
  97. package/es/components/fields/DatePicker/utils.js +1 -1
  98. package/es/components/fields/FileInput/FileInput.js +1 -1
  99. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  100. package/es/components/fields/FilterListBox/index.js +1 -1
  101. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  102. package/es/components/fields/FilterPicker/index.js +1 -1
  103. package/es/components/fields/Input/Input.js +1 -1
  104. package/es/components/fields/Input/index.js +1 -1
  105. package/es/components/fields/ListBox/ListBox.js +2 -2
  106. package/es/components/fields/ListBox/index.js +1 -1
  107. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  108. package/es/components/fields/NumberInput/StepButton.js +1 -1
  109. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  110. package/es/components/fields/RadioGroup/Radio.js +1 -1
  111. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  112. package/es/components/fields/RadioGroup/context.js +1 -1
  113. package/es/components/fields/RadioGroup/index.js +1 -1
  114. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  115. package/es/components/fields/SearchInput/index.js +1 -1
  116. package/es/components/fields/Select/Select.js +1 -1
  117. package/es/components/fields/Select/index.js +1 -1
  118. package/es/components/fields/Slider/Gradation.js +1 -1
  119. package/es/components/fields/Slider/Header.js +1 -1
  120. package/es/components/fields/Slider/RangeSlider.js +1 -1
  121. package/es/components/fields/Slider/Slider.js +1 -1
  122. package/es/components/fields/Slider/SliderBase.js +1 -1
  123. package/es/components/fields/Slider/SliderInput.js +1 -1
  124. package/es/components/fields/Slider/SliderThumb.js +1 -1
  125. package/es/components/fields/Slider/SliderTrack.js +1 -1
  126. package/es/components/fields/Slider/elements.js +1 -1
  127. package/es/components/fields/Slider/index.js +1 -1
  128. package/es/components/fields/Slider/types.js +1 -1
  129. package/es/components/fields/Switch/Switch.js +1 -1
  130. package/es/components/fields/Switch/index.js +1 -1
  131. package/es/components/fields/TextArea/TextArea.js +1 -1
  132. package/es/components/fields/TextArea/index.js +1 -1
  133. package/es/components/fields/TextInput/TextInput.js +1 -1
  134. package/es/components/fields/TextInput/TextInputBase.js +2 -3
  135. package/es/components/fields/TextInput/index.js +1 -1
  136. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  137. package/es/components/fields/TextInputMapper/index.js +1 -1
  138. package/es/components/fields/index.js +1 -1
  139. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  140. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  141. package/es/components/form/FieldWrapper/index.js +1 -1
  142. package/es/components/form/FieldWrapper/types.js +1 -1
  143. package/es/components/form/Form/Field.js +1 -1
  144. package/es/components/form/Form/Form.js +1 -1
  145. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  146. package/es/components/form/Form/ResetButton/index.js +1 -1
  147. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  148. package/es/components/form/Form/SubmitButton/index.js +1 -1
  149. package/es/components/form/Form/SubmitError.js +1 -1
  150. package/es/components/form/Form/index.js +1 -1
  151. package/es/components/form/Form/types.js +1 -1
  152. package/es/components/form/Form/use-field/index.js +1 -1
  153. package/es/components/form/Form/use-field/types.js +1 -1
  154. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  155. package/es/components/form/Form/use-field/use-field.js +1 -1
  156. package/es/components/form/Form/use-form.js +1 -1
  157. package/es/components/form/Form/validation.js +1 -1
  158. package/es/components/form/Label.js +1 -1
  159. package/es/components/form/index.js +1 -1
  160. package/es/components/form/wrapper.js +1 -1
  161. package/es/components/layout/Flex.js +1 -1
  162. package/es/components/layout/Flow.js +1 -1
  163. package/es/components/layout/Grid.js +1 -1
  164. package/es/components/layout/Panel.js +1 -1
  165. package/es/components/layout/Prefix.js +1 -1
  166. package/es/components/layout/ResizablePanel.js +1 -1
  167. package/es/components/layout/Space.js +1 -1
  168. package/es/components/layout/Suffix.js +1 -1
  169. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  170. package/es/components/navigation/Link/Link.js +1 -1
  171. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  172. package/es/components/organisms/Modal/Modal.js +1 -1
  173. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  174. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  175. package/es/components/other/Calendar/Calendar.js +1 -1
  176. package/es/components/other/Calendar/CalendarCell.js +1 -1
  177. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  178. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  179. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  180. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  181. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  182. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  183. package/es/components/overlays/AlertDialog/index.js +1 -1
  184. package/es/components/overlays/AlertDialog/types.js +1 -1
  185. package/es/components/overlays/Dialog/Dialog.js +1 -1
  186. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  187. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  188. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  189. package/es/components/overlays/Dialog/context.js +1 -1
  190. package/es/components/overlays/Dialog/index.js +1 -1
  191. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  192. package/es/components/overlays/Modal/Modal.js +1 -1
  193. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  194. package/es/components/overlays/Modal/Overlay.js +1 -1
  195. package/es/components/overlays/Modal/Popover.js +1 -1
  196. package/es/components/overlays/Modal/Tray.js +1 -1
  197. package/es/components/overlays/Modal/Underlay.js +1 -1
  198. package/es/components/overlays/Modal/index.js +1 -1
  199. package/es/components/overlays/Modal/types.js +1 -1
  200. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  201. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  202. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  203. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  204. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  205. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  206. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  207. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  208. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  209. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  210. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  211. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  212. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  213. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  214. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  215. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  219. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  220. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  221. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  222. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  223. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  224. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  225. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  226. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  227. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  228. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  229. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  230. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  231. package/es/components/overlays/NewNotifications/index.js +1 -1
  232. package/es/components/overlays/NewNotifications/types.js +1 -1
  233. package/es/components/overlays/Notification/Notification.js +1 -1
  234. package/es/components/overlays/OverlayWrapper.js +1 -1
  235. package/es/components/overlays/Toasts/Toast.js +1 -1
  236. package/es/components/overlays/Toasts/index.js +1 -1
  237. package/es/components/overlays/Toasts/types.js +1 -1
  238. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  239. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  240. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  241. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  242. package/es/components/overlays/Tooltip/context.js +1 -1
  243. package/es/components/overlays/Tooltip/index.js +1 -1
  244. package/es/components/portal/Portal.js +1 -1
  245. package/es/components/portal/PortalProvider.js +1 -1
  246. package/es/components/portal/index.js +1 -1
  247. package/es/components/portal/types.js +1 -1
  248. package/es/components/portal/usePortal.js +1 -1
  249. package/es/components/shared/InvalidIcon.js +1 -1
  250. package/es/components/shared/ValidIcon.js +1 -1
  251. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  252. package/es/components/status/LoadingAnimation/index.js +1 -1
  253. package/es/components/status/Spin/Cube.js +1 -1
  254. package/es/components/status/Spin/InternalSpinner.js +1 -1
  255. package/es/components/status/Spin/Spin.js +1 -1
  256. package/es/components/status/Spin/SpinsContainer.js +1 -1
  257. package/es/components/status/Spin/index.js +1 -1
  258. package/es/components/status/Spin/types.js +1 -1
  259. package/es/components/status/index.js +1 -1
  260. package/es/data/item-themes.js +1 -1
  261. package/es/data/themes.js +1 -1
  262. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  263. package/es/icons/AdjustmentsIcon.js +1 -1
  264. package/es/icons/AiIcon.js +1 -1
  265. package/es/icons/AreaChartIcon.js +1 -1
  266. package/es/icons/BackwardIcon.js +1 -1
  267. package/es/icons/BarChartIcon.js +1 -1
  268. package/es/icons/BellFilledIcon.js +1 -1
  269. package/es/icons/BellIcon.js +1 -1
  270. package/es/icons/BooleanIcon.js +1 -1
  271. package/es/icons/CalendarEditIcon.js +1 -1
  272. package/es/icons/CalendarIcon.js +1 -1
  273. package/es/icons/CaretDownIcon.js +1 -1
  274. package/es/icons/CaretUpIcon.js +1 -1
  275. package/es/icons/ChartAreaStackedIcon.js +1 -1
  276. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  277. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  278. package/es/icons/ChartBarGroupedIcon.js +1 -1
  279. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  280. package/es/icons/ChartBarLineIcon.js +1 -1
  281. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  282. package/es/icons/ChartBarStackedIcon.js +1 -1
  283. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  284. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  285. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  286. package/es/icons/ChartBoxPlotIcon.js +1 -1
  287. package/es/icons/ChartBubbleIcon.js +1 -1
  288. package/es/icons/ChartDonut2Icon.js +1 -1
  289. package/es/icons/ChartFunnelIcon.js +1 -1
  290. package/es/icons/ChartKPIIcon.js +1 -1
  291. package/es/icons/ChartPie2Icon.js +1 -1
  292. package/es/icons/ChartScatterIcon.js +1 -1
  293. package/es/icons/CheckCircleFilledIcon.js +1 -1
  294. package/es/icons/CheckCircleIcon.js +1 -1
  295. package/es/icons/CheckIcon.js +1 -1
  296. package/es/icons/CircleFilledIcon.js +1 -1
  297. package/es/icons/ClearIcon.js +1 -1
  298. package/es/icons/CloseCircleFilledIcon.js +1 -1
  299. package/es/icons/CloseCircleIcon.js +1 -1
  300. package/es/icons/CloseIcon.js +1 -1
  301. package/es/icons/CodeIcon.js +1 -1
  302. package/es/icons/CopyIcon.js +1 -1
  303. package/es/icons/CountIcon.js +1 -1
  304. package/es/icons/CubeIcon.js +1 -1
  305. package/es/icons/DangerIcon.js +1 -1
  306. package/es/icons/DashboardIcon.js +1 -1
  307. package/es/icons/DatabaseIcon.js +1 -1
  308. package/es/icons/DirectionIcon.js +1 -1
  309. package/es/icons/DonutIcon.js +1 -1
  310. package/es/icons/DownIcon.js +1 -1
  311. package/es/icons/EditIcon.js +1 -1
  312. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  313. package/es/icons/ExclamationCircleIcon.js +1 -1
  314. package/es/icons/ExclamationIcon.js +1 -1
  315. package/es/icons/EyeIcon.js +1 -1
  316. package/es/icons/EyeInvisibleIcon.js +1 -1
  317. package/es/icons/FilterIcon.js +1 -1
  318. package/es/icons/FolderFilledIcon.js +1 -1
  319. package/es/icons/FolderIcon.js +1 -1
  320. package/es/icons/FolderOpenFilledIcon.js +1 -1
  321. package/es/icons/FolderOpenIcon.js +1 -1
  322. package/es/icons/ForwardIcon.js +1 -1
  323. package/es/icons/HierarchyIcon.js +1 -1
  324. package/es/icons/Icon.js +1 -1
  325. package/es/icons/InfoCircleIcon.js +1 -1
  326. package/es/icons/InfoIcon.js +1 -1
  327. package/es/icons/KeyIcon.js +1 -1
  328. package/es/icons/LeftIcon.js +1 -1
  329. package/es/icons/LineChartIcon.js +1 -1
  330. package/es/icons/LoadingIcon.js +1 -1
  331. package/es/icons/LockFilledIcon.js +1 -1
  332. package/es/icons/LockIcon.js +1 -1
  333. package/es/icons/MoreIcon.js +1 -1
  334. package/es/icons/NotAllowedIcon.js +1 -1
  335. package/es/icons/NumberIcon.js +1 -1
  336. package/es/icons/PauseCircleFilledIcon.js +1 -1
  337. package/es/icons/PauseCircleIcon.js +1 -1
  338. package/es/icons/PauseIcon.js +1 -1
  339. package/es/icons/PieChartIcon.js +1 -1
  340. package/es/icons/PlayCircleIcon.js +1 -1
  341. package/es/icons/PlayIcon.js +1 -1
  342. package/es/icons/PlusIcon.js +1 -1
  343. package/es/icons/ReloadIcon.js +1 -1
  344. package/es/icons/ReportIcon.js +1 -1
  345. package/es/icons/ReturnIcon.js +1 -1
  346. package/es/icons/RightIcon.js +1 -1
  347. package/es/icons/SchemeIcon.js +1 -1
  348. package/es/icons/SearchIcon.js +1 -1
  349. package/es/icons/SettingsIcon.js +1 -1
  350. package/es/icons/ShieldFilledIcon.js +1 -1
  351. package/es/icons/ShieldIcon.js +1 -1
  352. package/es/icons/SlashIcon.js +1 -1
  353. package/es/icons/SparklesIcon.js +1 -1
  354. package/es/icons/SqlIcon.js +1 -1
  355. package/es/icons/StatsIcon.js +1 -1
  356. package/es/icons/StopIcon.js +1 -1
  357. package/es/icons/StringIcon.js +1 -1
  358. package/es/icons/SwitchIcon.js +1 -1
  359. package/es/icons/TableIcon.js +1 -1
  360. package/es/icons/ThumbsDownIcon.js +1 -1
  361. package/es/icons/ThumbsUpIcon.js +1 -1
  362. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  363. package/es/icons/ThunderboltFilledIcon.js +1 -1
  364. package/es/icons/ThunderboltIcon.js +1 -1
  365. package/es/icons/TimeIcon.js +1 -1
  366. package/es/icons/UnlockIcon.js +1 -1
  367. package/es/icons/UpIcon.js +1 -1
  368. package/es/icons/UserGroupIcon.js +1 -1
  369. package/es/icons/UserIcon.js +1 -1
  370. package/es/icons/UserLockIcon.js +1 -1
  371. package/es/icons/ViewIcon.js +1 -1
  372. package/es/icons/WarningFilledIcon.js +1 -1
  373. package/es/icons/WarningIcon.js +1 -1
  374. package/es/icons/add-new-icon.js +1 -1
  375. package/es/icons/index.js +1 -1
  376. package/es/icons/wrap-icon.js +1 -1
  377. package/es/index.js +1 -1
  378. package/es/provider.js +1 -1
  379. package/es/providers/TrackingProvider.js +1 -1
  380. package/es/services/notification.js +1 -1
  381. package/es/shared/form.js +1 -1
  382. package/es/shared/index.js +1 -1
  383. package/es/stories/Form.legacy-stories.js +1 -1
  384. package/es/stories/FormFieldArgs.js +1 -1
  385. package/es/stories/Layout.stories.js +1 -1
  386. package/es/stories/Tasty.stories.js +1 -1
  387. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  388. package/es/stories/components/DialogFormApp.js +1 -1
  389. package/es/stories/components/StyledButton.js +1 -1
  390. package/es/stories/lists/baseProps.js +2 -1
  391. package/es/tasty/index.js +1 -3
  392. package/es/tasty/parser/classify.js +1 -1
  393. package/es/tasty/parser/const.js +1 -1
  394. package/es/tasty/parser/lru.js +2 -38
  395. package/es/tasty/parser/parser.js +1 -1
  396. package/es/tasty/parser/tokenizer.js +1 -1
  397. package/es/tasty/parser/types.js +1 -1
  398. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  399. package/es/tasty/styles/align.js +1 -1
  400. package/es/tasty/styles/border.js +1 -1
  401. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  402. package/es/tasty/styles/color.js +12 -8
  403. package/es/tasty/styles/createStyle.js +3 -3
  404. package/es/tasty/styles/dimension.js +1 -1
  405. package/es/tasty/styles/display.js +1 -1
  406. package/es/tasty/styles/fade.js +1 -1
  407. package/es/tasty/styles/fill.js +8 -6
  408. package/es/tasty/styles/flow.js +1 -1
  409. package/es/tasty/styles/font.js +1 -1
  410. package/es/tasty/styles/fontStyle.js +1 -1
  411. package/es/tasty/styles/gap.js +1 -1
  412. package/es/tasty/styles/groupRadius.js +1 -1
  413. package/es/tasty/styles/height.js +1 -1
  414. package/es/tasty/styles/index.js +1 -1
  415. package/es/tasty/styles/inset.js +1 -1
  416. package/es/tasty/styles/justify.js +1 -1
  417. package/es/tasty/styles/list.js +1 -1
  418. package/es/tasty/styles/margin.js +1 -1
  419. package/es/tasty/styles/marginBlock.js +1 -1
  420. package/es/tasty/styles/marginInline.js +1 -1
  421. package/es/tasty/styles/outline.js +1 -1
  422. package/es/tasty/styles/padding.js +1 -1
  423. package/es/tasty/styles/paddingBlock.js +1 -1
  424. package/es/tasty/styles/paddingInline.js +1 -1
  425. package/es/tasty/styles/place.js +1 -1
  426. package/es/tasty/styles/predefined.js +3 -1
  427. package/es/tasty/styles/preset.js +1 -1
  428. package/es/tasty/styles/radius.js +1 -1
  429. package/es/tasty/styles/reset.js +44 -40
  430. package/es/tasty/styles/scrollbar.js +1 -1
  431. package/es/tasty/styles/shadow.js +1 -1
  432. package/es/tasty/styles/styledScrollbar.js +1 -1
  433. package/es/tasty/styles/transition.js +1 -1
  434. package/es/tasty/styles/types.js +1 -1
  435. package/es/tasty/styles/width.js +1 -1
  436. package/es/tasty/tasty.js +19 -92
  437. package/es/tasty/types.js +1 -1
  438. package/es/tasty/utils/cache-wrapper.js +1 -1
  439. package/es/tasty/utils/case-converter.js +1 -1
  440. package/es/tasty/utils/colors.js +1 -1
  441. package/es/tasty/utils/dotize.js +1 -1
  442. package/es/tasty/utils/filterBaseProps.js +1 -1
  443. package/es/tasty/utils/getDisplayName.js +1 -1
  444. package/es/tasty/utils/getModCombinations.js +1 -1
  445. package/es/tasty/utils/mergeStyles.js +1 -1
  446. package/es/tasty/utils/modAttrs.js +1 -1
  447. package/es/tasty/utils/renderStyles.js +57 -789
  448. package/es/tasty/utils/responsive.js +1 -1
  449. package/es/tasty/utils/string.js +1 -1
  450. package/es/tasty/utils/styles.js +62 -3
  451. package/es/tasty/utils/warnings.js +1 -1
  452. package/es/tokens.js +1 -1
  453. package/es/type-checks.js +1 -1
  454. package/es/utils/ResizeSensor.js +1 -1
  455. package/es/utils/modules.js +1 -1
  456. package/es/utils/promise.js +1 -1
  457. package/es/utils/random.js +1 -1
  458. package/es/utils/range.js +1 -1
  459. package/es/utils/react/Slots.js +1 -1
  460. package/es/utils/react/chain.js +1 -1
  461. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  462. package/es/utils/react/index.js +1 -1
  463. package/es/utils/react/interactions.js +1 -1
  464. package/es/utils/react/isTextOnly.js +1 -1
  465. package/es/utils/react/mapProps.js +1 -1
  466. package/es/utils/react/mergeProps.js +1 -1
  467. package/es/utils/react/nullableValue.js +1 -1
  468. package/es/utils/react/sharedStore.js +1 -1
  469. package/es/utils/react/useCombinedRefs.js +1 -1
  470. package/es/utils/react/useControlledFocusVisible.js +1 -1
  471. package/es/utils/react/useEventBus.js +1 -1
  472. package/es/utils/react/useId.js +1 -1
  473. package/es/utils/react/useIsDarwin.js +1 -1
  474. package/es/utils/react/useKeySymbols.js +1 -1
  475. package/es/utils/react/useLayoutEffect.js +1 -1
  476. package/es/utils/react/useQaProps.js +1 -1
  477. package/es/utils/react/useViewportSize.js +1 -1
  478. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  479. package/es/utils/transitions.js +1 -1
  480. package/es/utils/tree.js +1 -1
  481. package/es/utils/warnings.js +1 -1
  482. package/es/version.js +2 -2
  483. package/package.json +1 -1
  484. package/types/components/actions/Button/Button.d.ts +0 -1
  485. package/types/components/actions/Menu/styled.d.ts +702 -699
  486. package/types/components/actions/use-action.d.ts +1 -1
  487. package/types/components/content/List/SectionHeading.d.ts +234 -233
  488. package/types/components/fields/DatePicker/DatePickerElement.d.ts +234 -233
  489. package/types/tasty/index.d.ts +0 -2
  490. package/types/tasty/parser/lru.d.ts +1 -5
  491. package/types/tasty/styles/color.d.ts +1 -3
  492. package/types/tasty/styles/reset.d.ts +2 -1
  493. package/types/tasty/types.d.ts +2 -0
  494. package/types/tasty/utils/renderStyles.d.ts +7 -25
  495. package/types/tasty/utils/styles.d.ts +9 -1
  496. package/es/tasty/debug.js +0 -282
  497. package/es/tasty/injector/flatten.js +0 -350
  498. package/es/tasty/injector/index.js +0 -165
  499. package/es/tasty/injector/injector.js +0 -293
  500. package/es/tasty/injector/sheet-manager.js +0 -492
  501. package/es/tasty/injector/types.js +0 -10
  502. package/types/tasty/debug.d.ts +0 -69
  503. package/types/tasty/injector/flatten.d.ts +0 -16
  504. package/types/tasty/injector/index.d.ts +0 -64
  505. package/types/tasty/injector/injector.d.ts +0 -82
  506. package/types/tasty/injector/sheet-manager.d.ts +0 -78
  507. package/types/tasty/injector/types.d.ts +0 -68
@@ -1,74 +1,15 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-0f4773b
4
+ * @cube-dev/ui-kit v0.0.0-canary-458bf0e
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
- /**
9
- * Style rendering that works with structured style objects
10
- * Eliminates CSS string parsing for better performance
11
- */
12
8
  import { createStyle, STYLE_HANDLER_MAP } from '../styles';
13
- import { mediaWrapper, normalizeStyleZones, pointsToZones, } from './responsive';
14
- import { computeState, getModSelector, styleStateMapToStyleStateDataList, } from './styles';
15
- // Detect if a value is a state map whose entries contain responsive arrays
16
- function stateMapHasResponsiveArrays(value) {
17
- if (!value || typeof value !== 'object' || Array.isArray(value))
18
- return false;
19
- return Object.values(value).some((v) => Array.isArray(v));
20
- }
21
- // Convert a state-map-of-arrays into an array-of-state-maps of length zoneNumber
22
- // Example:
23
- // { '': ['1x', '2x'], large: [null, '3x'] } →
24
- // [ { '': '1x', large: null }, { '': '2x', large: '3x' } ]
25
- function stateMapToArrayOfStateMaps(value, zoneNumber) {
26
- const result = Array.from({ length: zoneNumber }, () => ({}));
27
- for (const [state, stateValue] of Object.entries(value)) {
28
- const perZone = Array.isArray(stateValue)
29
- ? normalizeStyleZones(stateValue, zoneNumber)
30
- : Array(zoneNumber).fill(stateValue);
31
- for (let i = 0; i < zoneNumber; i++) {
32
- const v = perZone[i];
33
- // Always include the state in the result, even if null or empty
34
- // This preserves the state structure across all breakpoints
35
- result[i][state] = v;
36
- }
37
- }
38
- return result;
39
- }
40
- // Normalize an array that may contain plain values and/or state maps into
41
- // an array-of-state-maps of fixed length zoneNumber with propagation.
42
- // Example:
43
- // ['1x', { '': '1x', large: '2x' }] (zoneNumber=2) →
44
- // [ { '': '1x' }, { '': '1x', large: '2x' } ]
45
- function normalizeArrayWithStateMaps(valueArray, zoneNumber) {
46
- const propagated = normalizeStyleZones(valueArray, zoneNumber);
47
- return propagated.map((entry) => {
48
- if (entry && typeof entry === 'object' && !Array.isArray(entry)) {
49
- return entry;
50
- }
51
- return { '': entry };
52
- });
53
- }
54
- // Normalize selector suffixes coming from `$` in style handler results.
55
- // Some legacy handlers return suffixes starting with `&` (e.g. '& > *').
56
- // The renderer expects suffixes without the ampersand because it adds
57
- // the parent selector during materialization.
58
- function normalizeDollarSelectorSuffix(suffix) {
59
- if (!suffix)
60
- return '';
61
- return suffix.startsWith('&') ? suffix.slice(1) : suffix;
62
- }
63
- /**
64
- * Check if a key represents a CSS selector
65
- */
9
+ import { mediaWrapper, normalizeStyleZones } from './responsive';
66
10
  export function isSelector(key) {
67
- return (key.startsWith('&') || key.startsWith('.') || key.match(/^[A-Z]/) !== null);
11
+ return key.startsWith('&') || key.startsWith('.') || key.match(/^[A-Z]/);
68
12
  }
69
- /**
70
- * Get the selector suffix for a key
71
- */
72
13
  function getSelector(key) {
73
14
  if (key.startsWith('&')) {
74
15
  return key.slice(1);
@@ -81,258 +22,41 @@ function getSelector(key) {
81
22
  }
82
23
  return null;
83
24
  }
84
- function parseAttributeSelector(selector) {
85
- // Match patterns like [data-size="medium"] or [data-is-selected]
86
- const match = selector.match(/^\[([^=\]]+)(?:="([^"]+)")?\]$/);
87
- if (!match)
88
- return null;
89
- return {
90
- attribute: match[1],
91
- value: match[2] || 'true', // Handle boolean attributes
92
- fullSelector: selector,
93
- };
94
- }
95
- function hasConflictingAttributeSelectors(mods) {
96
- const attributeMap = new Map();
97
- for (const mod of mods) {
98
- const parsed = parseAttributeSelector(mod);
99
- if (parsed && parsed.value !== 'true') {
100
- if (!attributeMap.has(parsed.attribute)) {
101
- attributeMap.set(parsed.attribute, []);
102
- }
103
- attributeMap.get(parsed.attribute).push(parsed.value);
104
- }
105
- }
106
- // Check if any attribute has multiple values
107
- for (const values of attributeMap.values()) {
108
- if (values.length > 1)
109
- return true;
110
- }
111
- return false;
112
- }
113
- function optimizeNotSelectors(currentMods, allMods) {
114
- const attributeMap = new Map();
115
- const currentAttributeMap = new Map();
116
- // Build map of all possible values for each attribute
117
- for (const mod of allMods) {
118
- const parsed = parseAttributeSelector(mod);
119
- if (parsed && parsed.value !== 'true') {
120
- if (!attributeMap.has(parsed.attribute)) {
121
- attributeMap.set(parsed.attribute, new Set());
122
- }
123
- attributeMap.get(parsed.attribute).add(parsed.value);
124
- }
125
- }
126
- // Build map of current mod attribute values
127
- for (const mod of currentMods) {
128
- const parsed = parseAttributeSelector(mod);
129
- if (parsed && parsed.value !== 'true') {
130
- currentAttributeMap.set(parsed.attribute, parsed.value);
131
- }
132
- }
133
- const notMods = allMods.filter((mod) => !currentMods.includes(mod));
134
- const optimizedNotMods = [];
135
- for (const mod of notMods) {
136
- const parsed = parseAttributeSelector(mod);
137
- if (parsed && parsed.value !== 'true') {
138
- // If we already have a value for this attribute, skip this not selector
139
- // because it's already mutually exclusive
140
- if (currentAttributeMap.has(parsed.attribute)) {
141
- continue;
142
- }
143
- }
144
- optimizedNotMods.push(mod);
145
- }
146
- return optimizedNotMods;
147
- }
148
- /**
149
- * Explode a style handler result into logical rules with proper mapping
150
- * Phase 1: Handler fan-out ($ selectors, arrays)
151
- * Phase 2: Responsive fan-out (breakpoint arrays)
152
- * Phase 3: Rule materialization
153
- */
154
- function explodeHandlerResult(result, zones, selectorSuffix = '', forceBreakpointIdx, responsiveOrigin = false) {
155
- if (!result)
156
- return [];
157
- // Phase 1: Handler fan-out - normalize to array
158
- const resultArray = Array.isArray(result) ? result : [result];
159
- const logicalRules = [];
160
- for (const item of resultArray) {
161
- if (!item || typeof item !== 'object')
162
- continue;
163
- const { $, css, ...styleProps } = item;
164
- // Phase 2: Responsive fan-out - handle array values
165
- const breakpointGroups = new Map();
166
- if (forceBreakpointIdx !== undefined) {
167
- // When breakpoint is forced (from responsive processing), use all props for that breakpoint
168
- const group = {};
169
- for (const [prop, value] of Object.entries(styleProps)) {
170
- if (value != null && value !== '') {
171
- group[prop] = String(value);
172
- }
173
- }
174
- if (Object.keys(group).length > 0) {
175
- breakpointGroups.set(forceBreakpointIdx, group);
176
- }
177
- }
178
- else {
179
- // Normal processing - handle responsive arrays
180
- const responsiveProps = [];
181
- for (const [prop, value] of Object.entries(styleProps)) {
182
- if (Array.isArray(value)) {
183
- // Responsive array - create entry for each breakpoint
184
- value.forEach((val, idx) => {
185
- if (val != null && val !== '' && idx < zones.length) {
186
- responsiveProps.push({ prop, value: val, breakpointIdx: idx });
187
- }
188
- });
189
- }
190
- else if (value != null && value !== '') {
191
- // Single value - goes to base breakpoint
192
- responsiveProps.push({ prop, value, breakpointIdx: 0 });
193
- }
194
- }
195
- // Group by breakpoint index
196
- for (const { prop, value, breakpointIdx } of responsiveProps) {
197
- const group = breakpointGroups.get(breakpointIdx) || {};
198
- group[prop] = String(value);
199
- breakpointGroups.set(breakpointIdx, group);
200
- }
201
- }
202
- // Handle raw CSS if present (add to base breakpoint)
203
- if (css && typeof css === 'string') {
204
- const baseGroup = breakpointGroups.get(0) || {};
205
- // For now, we'll add raw CSS as a special property
206
- // This is a limitation - raw CSS should be parsed properly
207
- baseGroup['--raw-css'] = css;
208
- breakpointGroups.set(0, baseGroup);
209
- }
210
- // Phase 3: Selector fan-out - handle $ suffixes
211
- // IMPORTANT: If we are already in a pseudo-element context (contains '::'),
212
- // CSS does not allow further descendant/child selectors (e.g., '>*') after
213
- // a pseudo-element. In such cases we must ignore only the `$`-derived
214
- // selectors while still preserving base declarations for the current
215
- // selector. Previously this branch returned early and accidentally dropped
216
- // all declarations computed before, including valid base ones.
217
- const inPseudoElementContext = selectorSuffix.includes('::');
218
- if (inPseudoElementContext && $) {
219
- // Skip this item entirely to avoid producing invalid selectors like
220
- // `.t0::before>*`. Other items (without $) in the same handler result
221
- // will still be processed and preserved.
222
- continue;
223
- }
224
- const suffixes = $
225
- ? (Array.isArray($) ? $ : [$]).map((s) => selectorSuffix + normalizeDollarSelectorSuffix(String(s)))
226
- : [selectorSuffix];
227
- // Create logical rules for each breakpoint × selector combination
228
- for (const [breakpointIdx, declarations] of breakpointGroups) {
229
- if (Object.keys(declarations).length === 0)
230
- continue;
231
- for (const suffix of suffixes) {
232
- logicalRules.push({
233
- selectorSuffix: suffix,
234
- breakpointIdx,
235
- declarations,
236
- responsiveSource: responsiveOrigin || forceBreakpointIdx !== undefined,
237
- });
238
- }
239
- }
240
- }
241
- return logicalRules;
242
- }
243
- /**
244
- * Convert handler result (CSSMap) to CSS string for global injection
245
- */
246
- function convertHandlerResultToCSS(result, selectorSuffix = '') {
247
- if (!result)
248
- return '';
249
- if (Array.isArray(result)) {
250
- return result.reduce((css, item) => {
251
- return css + convertHandlerResultToCSS(item, selectorSuffix);
252
- }, '');
253
- }
254
- const { $, css, ...styleProps } = result;
255
- let renderedStyles = Object.keys(styleProps).reduce((styleList, styleName) => {
256
- const value = styleProps[styleName];
257
- if (Array.isArray(value)) {
258
- return (styleList +
259
- value.reduce((css, val) => {
260
- if (val) {
261
- return css + `${styleName}: ${val};\n`;
262
- }
263
- return css;
264
- }, ''));
265
- }
266
- if (value) {
267
- return `${styleList}${styleName}: ${value};\n`;
268
- }
269
- return styleList;
270
- }, '');
271
- if (css) {
272
- renderedStyles = css + '\n' + renderedStyles;
273
- }
274
- if (!renderedStyles) {
275
- return '';
276
- }
277
- const finalSelectorSuffix = selectorSuffix || '';
278
- if (Array.isArray($)) {
279
- return $.reduce((rend, suffix) => {
280
- const normalized = suffix
281
- ? normalizeDollarSelectorSuffix(String(suffix))
282
- : '';
283
- return (rend + `&${finalSelectorSuffix}${normalized}{\n${renderedStyles}}\n`);
284
- }, '');
285
- }
286
- const normalizedSingle = $ ? normalizeDollarSelectorSuffix(String($)) : '';
287
- return `&${finalSelectorSuffix}${normalizedSingle}{\n${renderedStyles}}\n`;
288
- }
289
- /**
290
- * Convert logical rules to final StyleResult format
291
- */
292
- function materializeRules(logicalRules, className, zones) {
293
- return logicalRules.map((rule) => {
294
- const selector = `.${className}${rule.selectorSuffix}`;
295
- const declarations = Object.entries(rule.declarations)
296
- .filter(([key]) => key !== '--raw-css') // Skip raw CSS for now
297
- .map(([prop, value]) => `${prop}: ${value};`)
298
- .join(' ');
299
- const q = rule.breakpointIdx > 0
300
- ? zones[rule.breakpointIdx]?.mediaQuery
301
- : rule.responsiveSource
302
- ? zones[0]?.mediaQuery
303
- : undefined;
304
- const atRules = q ? [`@media ${q}`] : undefined;
305
- return {
306
- selector,
307
- declarations,
308
- atRules,
309
- };
310
- });
311
- }
25
+ /** Props level cache for `renderStyles` function. */
26
+ let STYLE_CACHE = {};
27
+ /** Current size of the cache. */
28
+ let STYLE_CACHE_COUNT = 0;
29
+ /** Cache limit. */
30
+ const CACHE_LIMIT = 1000;
312
31
  /**
313
- * Render styles without CSS string conversion
314
- * This is a performance-optimized version of renderStyles
32
+ * Render style props to complete Styled Components CSS.
33
+ * @param styles - Complete style props.
34
+ * @param responsive - A list of responsive zones
35
+ * @param {string} [suffix]
36
+ * @return {string}
315
37
  */
316
- export function renderStyles(styles, responsive = [], className = 'unknown') {
317
- if (!styles) {
318
- return { rules: [] };
319
- }
320
- const zones = pointsToZones(responsive || []);
321
- // Collect all logical rules
322
- const allLogicalRules = [];
323
- // Process styles recursively, preserving mod selectors and combining with nested selector suffixes
324
- function processStyles(currentStyles, parentSuffix = '') {
325
- const keys = Object.keys(currentStyles || {});
38
+ export function renderStyles(styles, responsive = [], suffix) {
39
+ const zones = responsive;
40
+ const responsiveStyles = Array.from(Array(zones.length)).map(() => '');
41
+ const cacheKey = JSON.stringify({ s: styles, r: responsive, suffix });
42
+ let rawStyles = '';
43
+ const handlerQueue = [];
44
+ if (!STYLE_CACHE[cacheKey]) {
45
+ STYLE_CACHE_COUNT++;
46
+ // clear cache if size is more that the limit
47
+ if (STYLE_CACHE_COUNT > CACHE_LIMIT) {
48
+ STYLE_CACHE_COUNT = 0;
49
+ STYLE_CACHE = {};
50
+ }
51
+ const keys = styles ? Object.keys(styles) : [];
326
52
  const selectorKeys = keys.filter((key) => isSelector(key));
327
- // Recurse into nested selectors first to compute proper suffix chaining
328
- for (const key of selectorKeys) {
329
- const suffix = getSelector(key);
330
- if (suffix && currentStyles[key]) {
331
- processStyles(currentStyles[key], `${parentSuffix}${suffix}`);
332
- }
53
+ let innerStyles = '';
54
+ if (selectorKeys.length) {
55
+ selectorKeys.forEach((key) => {
56
+ const addSuffix = getSelector(key);
57
+ innerStyles += renderStyles(styles?.[key], responsive, addSuffix);
58
+ });
333
59
  }
334
- // Build handler queue for style properties at this level
335
- const handlerQueue = [];
336
60
  keys.forEach((styleName) => {
337
61
  if (isSelector(styleName))
338
62
  return;
@@ -340,53 +64,40 @@ export function renderStyles(styles, responsive = [], className = 'unknown') {
340
64
  if (!handlers) {
341
65
  handlers = STYLE_HANDLER_MAP[styleName] = [createStyle(styleName)];
342
66
  }
343
- handlers.forEach((handler) => {
344
- if (handlerQueue.find((queueItem) => queueItem.handler === handler)) {
67
+ handlers.forEach((STYLE) => {
68
+ if (handlerQueue.find((queueItem) => queueItem.handler === STYLE))
345
69
  return;
346
- }
347
70
  let isResponsive = false;
348
- const lookupStyles = handler.__lookupStyles;
71
+ const lookupStyles = STYLE.__lookupStyles;
349
72
  const filteredStyleMap = lookupStyles.reduce((map, name) => {
350
- const value = currentStyles?.[name];
351
- if (value !== undefined) {
352
- // Case 1: state-map-of-arrays → array-of-state-maps
353
- if (value &&
354
- typeof value === 'object' &&
355
- !Array.isArray(value) &&
356
- stateMapHasResponsiveArrays(value)) {
357
- map[name] = stateMapToArrayOfStateMaps(value, zones.length);
358
- isResponsive = true;
359
- }
360
- else if (Array.isArray(value)) {
361
- // Case 2: array that may contain state maps → normalize to array-of-state-maps
362
- if (value.length > 0) {
363
- map[name] = normalizeArrayWithStateMaps(value, zones.length);
364
- isResponsive = true;
365
- }
73
+ map[name] = styles?.[name];
74
+ if (Array.isArray(map[name])) {
75
+ if (map[name].length === 0) {
76
+ delete map[name];
366
77
  }
367
78
  else {
368
- map[name] = value;
79
+ if (map[name].length === 1) {
80
+ map[name] = map[name][0];
81
+ }
82
+ isResponsive = true;
369
83
  }
370
84
  }
371
85
  return map;
372
86
  }, {});
373
87
  handlerQueue.push({
374
- handler,
88
+ handler: STYLE,
375
89
  styleMap: filteredStyleMap,
376
90
  isResponsive,
377
91
  });
378
92
  });
379
93
  });
380
- // Process handlers using the three-phase approach
381
94
  handlerQueue.forEach(({ handler, styleMap, isResponsive }) => {
382
95
  const lookupStyles = handler.__lookupStyles;
383
96
  if (isResponsive) {
384
- // For responsive styles, resolve arrays using normalizeStyleZones
385
97
  const valueMap = lookupStyles.reduce((map, style) => {
386
98
  map[style] = normalizeStyleZones(styleMap[style], zones.length);
387
99
  return map;
388
100
  }, {});
389
- // Create props for each breakpoint
390
101
  const propsByPoint = zones.map((zone, i) => {
391
102
  const pointProps = {};
392
103
  lookupStyles.forEach((style) => {
@@ -396,466 +107,23 @@ export function renderStyles(styles, responsive = [], className = 'unknown') {
396
107
  });
397
108
  return pointProps;
398
109
  });
399
- // Call handler for each breakpoint, with state map processing if needed
400
- propsByPoint.forEach((pointProps, breakpointIdx) => {
401
- const hasStateMapsAtPoint = lookupStyles.some((style) => {
402
- const v = pointProps[style];
403
- return v && typeof v === 'object' && !Array.isArray(v);
404
- });
405
- if (hasStateMapsAtPoint) {
406
- const allMods = new Set();
407
- const styleStates = {};
408
- lookupStyles.forEach((style) => {
409
- const v = pointProps[style];
410
- if (v && typeof v === 'object' && !Array.isArray(v)) {
411
- const { states, mods } = styleStateMapToStyleStateDataList(v);
412
- styleStates[style] = states;
413
- mods.forEach((m) => allMods.add(m));
414
- }
415
- else {
416
- styleStates[style] = [{ mods: [], notMods: [], value: v }];
417
- }
418
- });
419
- const allModsArray = Array.from(allMods);
420
- const combinations = [[]];
421
- for (let i = 0; i < allModsArray.length; i++) {
422
- const currentLength = combinations.length;
423
- for (let j = 0; j < currentLength; j++) {
424
- const newCombination = [...combinations[j], allModsArray[i]];
425
- if (!hasConflictingAttributeSelectors(newCombination)) {
426
- combinations.push(newCombination);
427
- }
428
- }
429
- }
430
- combinations.forEach((modCombination) => {
431
- const stateProps = {};
432
- lookupStyles.forEach((style) => {
433
- const states = styleStates[style];
434
- const matchingState = states.find((state) => computeState(state.model, (mod) => modCombination.includes(mod)));
435
- if (matchingState) {
436
- stateProps[style] = matchingState.value;
437
- }
438
- });
439
- const optimizedNotMods = optimizeNotSelectors(modCombination, allModsArray);
440
- const modsSelectors = `${modCombination
441
- .map(getModSelector)
442
- .join('')}${optimizedNotMods
443
- .map((mod) => {
444
- const sel = getModSelector(mod);
445
- return sel.startsWith(':not(')
446
- ? sel.slice(5, -1)
447
- : `:not(${sel})`;
448
- })
449
- .join('')}`;
450
- const result = handler(stateProps);
451
- if (!result)
452
- return;
453
- const logicalRules = explodeHandlerResult(result, zones || [], `${modsSelectors}${parentSuffix}`, breakpointIdx, true);
454
- allLogicalRules.push(...logicalRules);
455
- });
456
- }
457
- else {
458
- const result = handler(pointProps);
459
- if (!result)
460
- return;
461
- const logicalRules = explodeHandlerResult(result, zones || [], parentSuffix, breakpointIdx, true);
462
- allLogicalRules.push(...logicalRules);
463
- }
110
+ const rulesByPoint = propsByPoint.map((props) => handler(props, suffix));
111
+ rulesByPoint.forEach((rules, i) => {
112
+ responsiveStyles[i] += rules || '';
464
113
  });
465
114
  }
466
115
  else {
467
- // For non-responsive styles, check if any values have state maps
468
- const hasStateMaps = lookupStyles.some((style) => {
469
- const value = styleMap[style];
470
- return value && typeof value === 'object' && !Array.isArray(value);
471
- });
472
- if (hasStateMaps) {
473
- // Process each style property individually for state resolution
474
- const allMods = new Set();
475
- const styleStates = {};
476
- lookupStyles.forEach((style) => {
477
- const value = styleMap[style];
478
- if (value && typeof value === 'object' && !Array.isArray(value)) {
479
- const { states, mods } = styleStateMapToStyleStateDataList(value);
480
- styleStates[style] = states;
481
- mods.forEach((mod) => allMods.add(mod));
482
- }
483
- else {
484
- // Simple value, create a single state
485
- styleStates[style] = [{ mods: [], notMods: [], value }];
486
- }
487
- });
488
- // Generate all possible mod combinations
489
- const allModsArray = Array.from(allMods);
490
- const combinations = [[]]; // Start with empty combination
491
- // Generate all combinations (including empty)
492
- for (let i = 0; i < allModsArray.length; i++) {
493
- const currentLength = combinations.length;
494
- for (let j = 0; j < currentLength; j++) {
495
- const newCombination = [...combinations[j], allModsArray[i]];
496
- // Skip combinations with conflicting attribute selectors
497
- if (!hasConflictingAttributeSelectors(newCombination)) {
498
- combinations.push(newCombination);
499
- }
500
- }
501
- }
502
- combinations.forEach((modCombination) => {
503
- const stateProps = {};
504
- lookupStyles.forEach((style) => {
505
- const states = styleStates[style];
506
- // Find the matching state for this mod combination
507
- const matchingState = states.find((state) => {
508
- return computeState(state.model, (mod) => modCombination.includes(mod));
509
- });
510
- if (matchingState) {
511
- stateProps[style] = matchingState.value;
512
- }
513
- });
514
- const optimizedNotMods = optimizeNotSelectors(modCombination, allModsArray);
515
- const modsSelectors = `${modCombination
516
- .map(getModSelector)
517
- .join('')}${optimizedNotMods
518
- .map((mod) => {
519
- const sel = getModSelector(mod);
520
- return sel.startsWith(':not(')
521
- ? sel.slice(5, -1)
522
- : `:not(${sel})`;
523
- })
524
- .join('')}`;
525
- // If any state value is responsive (array), fan-out by breakpoint
526
- const hasResponsiveStateValues = lookupStyles.some((style) => Array.isArray(stateProps[style]));
527
- if (hasResponsiveStateValues) {
528
- const propsByPoint = zones.map((_, i) => {
529
- const pointProps = {};
530
- lookupStyles.forEach((style) => {
531
- const v = stateProps[style];
532
- if (Array.isArray(v)) {
533
- const arr = normalizeStyleZones(v, zones.length);
534
- pointProps[style] = arr?.[i];
535
- }
536
- else {
537
- pointProps[style] = v;
538
- }
539
- });
540
- return pointProps;
541
- });
542
- propsByPoint.forEach((props, breakpointIdx) => {
543
- const res = handler(props);
544
- if (!res)
545
- return;
546
- const logical = explodeHandlerResult(res, zones || [], `${modsSelectors}${parentSuffix}`, breakpointIdx, true);
547
- allLogicalRules.push(...logical);
548
- });
549
- }
550
- else {
551
- // Simple non-responsive state values
552
- const result = handler(stateProps);
553
- if (!result)
554
- return;
555
- const logical = explodeHandlerResult(result, zones || [], `${modsSelectors}${parentSuffix}`);
556
- allLogicalRules.push(...logical);
557
- }
558
- });
559
- }
560
- else {
561
- // Simple case: no state maps, call handler directly
562
- const result = handler(styleMap);
563
- if (result) {
564
- const logical = explodeHandlerResult(result, zones || [], parentSuffix);
565
- allLogicalRules.push(...logical);
566
- }
567
- }
116
+ rawStyles +=
117
+ handler(styleMap, suffix) || '';
568
118
  }
569
119
  });
120
+ STYLE_CACHE[cacheKey] = `&${suffix || ''}{outline: none;\n&[hidden]{display: none !important;}}${rawStyles}${responsive &&
121
+ responsive.length &&
122
+ responsiveStyles.filter((s) => s).length
123
+ ? mediaWrapper(responsiveStyles, zones)
124
+ : ''}${innerStyles}`;
570
125
  }
571
- // Kick off processing from the root styles with empty suffix
572
- processStyles(styles, '');
573
- // Materialize all logical rules into final format
574
- const finalRulesRaw = materializeRules(allLogicalRules, className, zones || []);
575
- // De-duplicate identical rules (same selector, declarations, and at-rules)
576
- const seen = new Set();
577
- const finalRules = finalRulesRaw.filter((rule) => {
578
- const at = rule.atRules && rule.atRules.length ? `@${rule.atRules.join('|')}` : '';
579
- const key = `${rule.selector}|${rule.declarations}|${at}`;
580
- if (seen.has(key))
581
- return false;
582
- seen.add(key);
583
- return true;
584
- });
585
- return {
586
- rules: finalRules,
587
- className,
588
- };
589
- }
590
- /**
591
- * Render styles for global injection (without class names)
592
- * Returns CSS with & selectors that injectGlobal can process
593
- */
594
- export function renderStylesForGlobal(styles, responsive = []) {
595
- if (!styles) {
596
- return '';
597
- }
598
- const zones = pointsToZones(responsive || []);
599
- const handlerQueue = [];
600
- const keys = Object.keys(styles);
601
- const selectorKeys = keys.filter((key) => isSelector(key));
602
- const declarations = [];
603
- const responsiveStyles = Array.from(Array(zones.length)).map(() => '');
604
- let innerStyles = '';
605
- // Handle nested selectors (like &:hover, .SubElement)
606
- for (const key of selectorKeys) {
607
- const selectorSuffix = getSelector(key);
608
- if (selectorSuffix && styles[key]) {
609
- const nestedStyles = styles[key];
610
- innerStyles += renderStylesForGlobal(nestedStyles, responsive).replace(/&/g, `&${selectorSuffix}`);
611
- }
612
- }
613
- // Build handler queue for base styles
614
- keys.forEach((styleName) => {
615
- if (isSelector(styleName))
616
- return;
617
- let handlers = STYLE_HANDLER_MAP[styleName];
618
- if (!handlers) {
619
- handlers = STYLE_HANDLER_MAP[styleName] = [createStyle(styleName)];
620
- }
621
- handlers.forEach((handler) => {
622
- if (handlerQueue.find((queueItem) => queueItem.handler === handler)) {
623
- return;
624
- }
625
- let isResponsive = false;
626
- const lookupStyles = handler.__lookupStyles;
627
- const filteredStyleMap = lookupStyles.reduce((map, name) => {
628
- const value = styles?.[name];
629
- if (value !== undefined) {
630
- if (value &&
631
- typeof value === 'object' &&
632
- !Array.isArray(value) &&
633
- stateMapHasResponsiveArrays(value)) {
634
- map[name] = stateMapToArrayOfStateMaps(value, zones.length);
635
- isResponsive = true;
636
- }
637
- else if (Array.isArray(value)) {
638
- if (value.length > 0) {
639
- map[name] = normalizeArrayWithStateMaps(value, zones.length);
640
- isResponsive = true;
641
- }
642
- }
643
- else {
644
- map[name] = value;
645
- }
646
- }
647
- return map;
648
- }, {});
649
- handlerQueue.push({
650
- handler,
651
- styleMap: filteredStyleMap,
652
- isResponsive,
653
- });
654
- });
655
- });
656
- // Process handlers using approach
657
- handlerQueue.forEach(({ handler, styleMap, isResponsive }) => {
658
- const lookupStyles = handler.__lookupStyles;
659
- if (isResponsive) {
660
- // For responsive styles, resolve arrays using normalizeStyleZones
661
- const valueMap = lookupStyles.reduce((map, style) => {
662
- map[style] = normalizeStyleZones(styleMap[style], zones.length);
663
- return map;
664
- }, {});
665
- // Create props for each breakpoint
666
- const propsByPoint = zones.map((zone, i) => {
667
- const pointProps = {};
668
- lookupStyles.forEach((style) => {
669
- if (valueMap != null && valueMap[style] != null) {
670
- pointProps[style] = valueMap[style][i];
671
- }
672
- });
673
- return pointProps;
674
- });
675
- // Call handler for each breakpoint and convert to CSS, with state processing
676
- propsByPoint.forEach((pointProps, i) => {
677
- const hasStateMapsAtPoint = lookupStyles.some((style) => {
678
- const v = pointProps[style];
679
- return v && typeof v === 'object' && !Array.isArray(v);
680
- });
681
- if (hasStateMapsAtPoint) {
682
- const allMods = new Set();
683
- const styleStates = {};
684
- lookupStyles.forEach((style) => {
685
- const v = pointProps[style];
686
- if (v && typeof v === 'object' && !Array.isArray(v)) {
687
- const { states, mods } = styleStateMapToStyleStateDataList(v);
688
- styleStates[style] = states;
689
- mods.forEach((m) => allMods.add(m));
690
- }
691
- else {
692
- styleStates[style] = [{ mods: [], notMods: [], value: v }];
693
- }
694
- });
695
- const allModsArray = Array.from(allMods);
696
- const combinations = [[]];
697
- for (let a = 0; a < allModsArray.length; a++) {
698
- const currentLength = combinations.length;
699
- for (let b = 0; b < currentLength; b++) {
700
- const newCombination = [...combinations[b], allModsArray[a]];
701
- if (!hasConflictingAttributeSelectors(newCombination)) {
702
- combinations.push(newCombination);
703
- }
704
- }
705
- }
706
- combinations.forEach((modCombination) => {
707
- const stateProps = {};
708
- lookupStyles.forEach((style) => {
709
- const states = styleStates[style];
710
- const matchingState = states.find((state) => computeState(state.model, (mod) => modCombination.includes(mod)));
711
- if (matchingState) {
712
- stateProps[style] = matchingState.value;
713
- }
714
- });
715
- const optimizedNotMods = optimizeNotSelectors(modCombination, allModsArray);
716
- const modsSelectors = `${modCombination
717
- .map(getModSelector)
718
- .join('')}${optimizedNotMods
719
- .map((mod) => {
720
- const sel = getModSelector(mod);
721
- return sel.startsWith(':not(')
722
- ? sel.slice(5, -1)
723
- : `:not(${sel})`;
724
- })
725
- .join('')}`;
726
- const result = handler(stateProps);
727
- if (!result)
728
- return;
729
- const cssResult = convertHandlerResultToCSS(result, modsSelectors);
730
- if (cssResult) {
731
- responsiveStyles[i] += cssResult;
732
- }
733
- });
734
- }
735
- else {
736
- const result = handler(pointProps);
737
- if (!result)
738
- return;
739
- const cssResult = convertHandlerResultToCSS(result);
740
- if (cssResult) {
741
- responsiveStyles[i] += cssResult;
742
- }
743
- }
744
- });
745
- }
746
- else {
747
- // For non-responsive styles, check if any values have state maps
748
- const hasStateMaps = lookupStyles.some((style) => {
749
- const value = styleMap[style];
750
- return value && typeof value === 'object' && !Array.isArray(value);
751
- });
752
- if (hasStateMaps) {
753
- // Process each style property individually for state resolution
754
- const allMods = new Set();
755
- const styleStates = {};
756
- lookupStyles.forEach((style) => {
757
- const value = styleMap[style];
758
- if (value && typeof value === 'object' && !Array.isArray(value)) {
759
- const { states, mods } = styleStateMapToStyleStateDataList(value);
760
- styleStates[style] = states;
761
- mods.forEach((mod) => allMods.add(mod));
762
- }
763
- else {
764
- // Simple value, create a single state
765
- styleStates[style] = [{ mods: [], notMods: [], value }];
766
- }
767
- });
768
- // Generate all possible mod combinations
769
- const allModsArray = Array.from(allMods);
770
- const combinations = [[]]; // Start with empty combination
771
- // Generate all combinations (including empty)
772
- for (let i = 0; i < allModsArray.length; i++) {
773
- const currentLength = combinations.length;
774
- for (let j = 0; j < currentLength; j++) {
775
- const newCombination = [...combinations[j], allModsArray[i]];
776
- // Skip combinations with conflicting attribute selectors
777
- if (!hasConflictingAttributeSelectors(newCombination)) {
778
- combinations.push(newCombination);
779
- }
780
- }
781
- }
782
- combinations.forEach((modCombination) => {
783
- const stateProps = {};
784
- lookupStyles.forEach((style) => {
785
- const states = styleStates[style];
786
- // Find the matching state for this mod combination
787
- const matchingState = states.find((state) => {
788
- return computeState(state.model, (mod) => modCombination.includes(mod));
789
- });
790
- if (matchingState) {
791
- stateProps[style] = matchingState.value;
792
- }
793
- });
794
- const result = handler(stateProps);
795
- if (!result)
796
- return;
797
- const optimizedNotMods = optimizeNotSelectors(modCombination, allModsArray);
798
- const modsSelectors = `${modCombination
799
- .map(getModSelector)
800
- .join('')}${optimizedNotMods
801
- .map((mod) => {
802
- const sel = getModSelector(mod);
803
- return sel.startsWith(':not(')
804
- ? sel.slice(5, -1)
805
- : `:not(${sel})`;
806
- })
807
- .join('')}`;
808
- // Convert to CSS with proper selectors
809
- const cssResult = convertHandlerResultToCSS(result, modsSelectors);
810
- if (cssResult) {
811
- if (cssResult.startsWith('& {') && !cssResult.includes('&', 2)) {
812
- // Simple rule: "& { declarations }"
813
- const declarationBlock = cssResult.slice(3, -1).trim();
814
- if (declarationBlock) {
815
- declarations.push(declarationBlock);
816
- }
817
- }
818
- else {
819
- // Complex rule with nested selectors or state modifiers
820
- innerStyles += cssResult;
821
- }
822
- }
823
- });
824
- }
825
- else {
826
- // Simple case: no state maps, call handler directly
827
- const result = handler(styleMap);
828
- if (result) {
829
- const cssResult = convertHandlerResultToCSS(result);
830
- if (cssResult) {
831
- if (cssResult.startsWith('& {') && !cssResult.includes('&', 2)) {
832
- // Simple rule: "& { declarations }"
833
- const declarationBlock = cssResult.slice(3, -1).trim();
834
- if (declarationBlock) {
835
- declarations.push(declarationBlock);
836
- }
837
- }
838
- else {
839
- // Complex rule with nested selectors or state modifiers
840
- innerStyles += cssResult;
841
- }
842
- }
843
- }
844
- }
845
- }
846
- });
847
- // Build final CSS similar to original renderStyles
848
- // Merge all declarations into a single rule
849
- const baseRule = declarations.length > 0 ? `& { ${declarations.join('\n')} }` : '';
850
- const mediaRules = responsive && responsive.length && responsiveStyles.some((s) => s)
851
- ? mediaWrapper(responsiveStyles, zones)
852
- : '';
853
- // Ensure we always separate the base rule, inner complex selectors and media rules with
854
- // a newline so the selector replacement step ( & -> actual selector ) cannot accidentally
855
- // concatenate two selectors and create the invalid form "..selector selector".
856
- const parts = [baseRule, innerStyles, mediaRules].filter(Boolean);
857
- const result = parts.join('\n');
858
- return result;
126
+ return STYLE_CACHE[cacheKey];
859
127
  }
860
128
 
861
129