@cube-dev/ui-kit 0.0.0-canary-fe57a1b → 0.0.0-canary-9e3bcfc

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 (551) 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/CollectionItem.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/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +1 -1
  22. package/es/components/actions/Action/Action.js +1 -1
  23. package/es/components/actions/Button/Button.js +1 -1
  24. package/es/components/actions/Button/index.js +1 -1
  25. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  26. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/es/components/actions/CommandMenu/index.js +1 -1
  28. package/es/components/actions/CommandMenu/styled.js +1 -1
  29. package/es/components/actions/ItemAction/ItemAction.js +1 -1
  30. package/es/components/actions/ItemAction/index.js +1 -1
  31. package/es/components/actions/ItemActionContext.js +1 -1
  32. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  33. package/es/components/actions/ItemButton/index.js +1 -1
  34. package/es/components/actions/Link/Link.js +1 -1
  35. package/es/components/actions/Menu/Menu.js +1 -1
  36. package/es/components/actions/Menu/MenuItem.js +1 -1
  37. package/es/components/actions/Menu/MenuSection.js +1 -1
  38. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  39. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  40. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  41. package/es/components/actions/Menu/context.js +1 -1
  42. package/es/components/actions/Menu/index.js +1 -1
  43. package/es/components/actions/Menu/styled.js +1 -1
  44. package/es/components/actions/index.js +1 -1
  45. package/es/components/actions/use-action.js +1 -1
  46. package/es/components/actions/use-anchored-menu.js +1 -1
  47. package/es/components/actions/use-context-menu.js +1 -1
  48. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  49. package/es/components/content/Alert/Alert.js +1 -1
  50. package/es/components/content/Alert/index.js +1 -1
  51. package/es/components/content/Alert/types.js +1 -1
  52. package/es/components/content/Alert/use-alert.js +1 -1
  53. package/es/components/content/Avatar/Avatar.js +1 -1
  54. package/es/components/content/Badge/Badge.js +1 -1
  55. package/es/components/content/Card/Card.js +1 -1
  56. package/es/components/content/Content.js +1 -1
  57. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  58. package/es/components/content/CopyPasteBlock/index.js +1 -1
  59. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  60. package/es/components/content/CopySnippet/index.js +1 -1
  61. package/es/components/content/Disclosure/Disclosure.js +1 -1
  62. package/es/components/content/Disclosure/index.js +1 -1
  63. package/es/components/content/Divider.js +1 -1
  64. package/es/components/content/Footer.js +1 -1
  65. package/es/components/content/Header.js +1 -1
  66. package/es/components/content/HotKeys/HotKeys.js +1 -1
  67. package/es/components/content/HotKeys/index.js +1 -1
  68. package/es/components/content/Item/Item.js +1 -1
  69. package/es/components/content/Item/index.js +1 -1
  70. package/es/components/content/ItemBadge/ItemBadge.js +1 -1
  71. package/es/components/content/ItemBadge/index.js +1 -1
  72. package/es/components/content/Layout/GridLayout.js +1 -1
  73. package/es/components/content/Layout/Layout.js +1 -1
  74. package/es/components/content/Layout/LayoutBlock.js +1 -1
  75. package/es/components/content/Layout/LayoutCenter.js +1 -1
  76. package/es/components/content/Layout/LayoutContainer.js +1 -1
  77. package/es/components/content/Layout/LayoutContent.js +1 -1
  78. package/es/components/content/Layout/LayoutContext.js +1 -1
  79. package/es/components/content/Layout/LayoutFlex.js +1 -1
  80. package/es/components/content/Layout/LayoutFooter.js +1 -1
  81. package/es/components/content/Layout/LayoutGrid.js +1 -1
  82. package/es/components/content/Layout/LayoutHeader.js +1 -1
  83. package/es/components/content/Layout/LayoutPane.js +1 -1
  84. package/es/components/content/Layout/LayoutPanel.js +1 -1
  85. package/es/components/content/Layout/LayoutPanelHeader.js +1 -1
  86. package/es/components/content/Layout/LayoutToolbar.js +1 -1
  87. package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  88. package/es/components/content/Layout/index.js +1 -1
  89. package/es/components/content/Layout/utils.js +1 -1
  90. package/es/components/content/List/SectionHeading.js +1 -1
  91. package/es/components/content/List/index.js +1 -1
  92. package/es/components/content/Paragraph.js +1 -1
  93. package/es/components/content/Placeholder/Placeholder.js +1 -1
  94. package/es/components/content/PrismCode/PrismCode.js +1 -1
  95. package/es/components/content/PrismCode/prismSetup.js +1 -1
  96. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  97. package/es/components/content/Result/Result.js +1 -1
  98. package/es/components/content/Skeleton/Skeleton.js +1 -1
  99. package/es/components/content/Tag/Tag.js +1 -1
  100. package/es/components/content/Text.js +1 -1
  101. package/es/components/content/TextItem/TextItem.js +1 -1
  102. package/es/components/content/TextItem/index.js +1 -1
  103. package/es/components/content/Title.js +1 -1
  104. package/es/components/content/highlightText.js +1 -1
  105. package/es/components/content/use-auto-tooltip.js +1 -1
  106. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  107. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  108. package/es/components/fields/Checkbox/context.js +1 -1
  109. package/es/components/fields/Checkbox/index.js +1 -1
  110. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  111. package/es/components/fields/ComboBox/index.js +1 -1
  112. package/es/components/fields/DatePicker/DateInput.js +1 -1
  113. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  114. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  115. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  116. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  117. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  118. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  119. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  120. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  121. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  122. package/es/components/fields/DatePicker/index.js +1 -1
  123. package/es/components/fields/DatePicker/intl.js +1 -1
  124. package/es/components/fields/DatePicker/parseDate.js +1 -1
  125. package/es/components/fields/DatePicker/props.js +1 -1
  126. package/es/components/fields/DatePicker/types.js +1 -1
  127. package/es/components/fields/DatePicker/utils.js +1 -1
  128. package/es/components/fields/FileInput/FileInput.js +1 -1
  129. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  130. package/es/components/fields/FilterListBox/index.js +1 -1
  131. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  132. package/es/components/fields/FilterPicker/index.js +1 -1
  133. package/es/components/fields/Input/Input.js +1 -1
  134. package/es/components/fields/Input/index.js +1 -1
  135. package/es/components/fields/ListBox/ListBox.js +1 -1
  136. package/es/components/fields/ListBox/index.js +1 -1
  137. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  138. package/es/components/fields/NumberInput/StepButton.js +1 -1
  139. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  140. package/es/components/fields/Picker/Picker.js +1 -1
  141. package/es/components/fields/Picker/index.js +1 -1
  142. package/es/components/fields/RadioGroup/Radio.js +1 -1
  143. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  144. package/es/components/fields/RadioGroup/context.js +1 -1
  145. package/es/components/fields/RadioGroup/index.js +1 -1
  146. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  147. package/es/components/fields/SearchInput/index.js +1 -1
  148. package/es/components/fields/Select/Select.js +1 -1
  149. package/es/components/fields/Select/index.js +1 -1
  150. package/es/components/fields/Slider/Gradation.js +1 -1
  151. package/es/components/fields/Slider/Header.js +1 -1
  152. package/es/components/fields/Slider/RangeSlider.js +1 -1
  153. package/es/components/fields/Slider/Slider.js +1 -1
  154. package/es/components/fields/Slider/SliderBase.js +1 -1
  155. package/es/components/fields/Slider/SliderInput.js +1 -1
  156. package/es/components/fields/Slider/SliderThumb.js +1 -1
  157. package/es/components/fields/Slider/SliderTrack.js +1 -1
  158. package/es/components/fields/Slider/elements.js +1 -1
  159. package/es/components/fields/Slider/index.js +1 -1
  160. package/es/components/fields/Slider/types.js +1 -1
  161. package/es/components/fields/Switch/Switch.js +1 -1
  162. package/es/components/fields/Switch/index.js +1 -1
  163. package/es/components/fields/TextArea/TextArea.js +1 -1
  164. package/es/components/fields/TextArea/index.js +1 -1
  165. package/es/components/fields/TextInput/TextInput.js +1 -1
  166. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  167. package/es/components/fields/TextInput/index.js +1 -1
  168. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  169. package/es/components/fields/TextInputMapper/index.js +1 -1
  170. package/es/components/fields/index.js +1 -1
  171. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  172. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  173. package/es/components/form/FieldWrapper/index.js +1 -1
  174. package/es/components/form/FieldWrapper/types.js +1 -1
  175. package/es/components/form/Form/Field.js +1 -1
  176. package/es/components/form/Form/Form.js +1 -1
  177. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  178. package/es/components/form/Form/ResetButton/index.js +1 -1
  179. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  180. package/es/components/form/Form/SubmitButton/index.js +1 -1
  181. package/es/components/form/Form/SubmitError.js +1 -1
  182. package/es/components/form/Form/index.js +1 -1
  183. package/es/components/form/Form/types.js +1 -1
  184. package/es/components/form/Form/use-field/index.js +1 -1
  185. package/es/components/form/Form/use-field/types.js +1 -1
  186. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  187. package/es/components/form/Form/use-field/use-field.js +1 -1
  188. package/es/components/form/Form/use-form.js +1 -1
  189. package/es/components/form/Form/validation.js +1 -1
  190. package/es/components/form/Label.js +1 -1
  191. package/es/components/form/index.js +1 -1
  192. package/es/components/form/wrapper.js +1 -1
  193. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  194. package/es/components/helpers/DisplayTransition/index.js +1 -1
  195. package/es/components/helpers/IconSwitch/IconSwitch.js +1 -1
  196. package/es/components/helpers/index.js +1 -1
  197. package/es/components/layout/Flex.js +1 -1
  198. package/es/components/layout/Flow.js +1 -1
  199. package/es/components/layout/Grid.js +1 -1
  200. package/es/components/layout/Panel.js +1 -1
  201. package/es/components/layout/Prefix.js +1 -1
  202. package/es/components/layout/ResizablePanel.js +1 -1
  203. package/es/components/layout/Space.js +1 -1
  204. package/es/components/layout/Suffix.js +1 -1
  205. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  206. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  207. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  208. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  209. package/es/components/other/Calendar/Calendar.js +1 -1
  210. package/es/components/other/Calendar/CalendarCell.js +1 -1
  211. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  212. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  213. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  214. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  215. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  216. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  217. package/es/components/overlays/AlertDialog/index.js +1 -1
  218. package/es/components/overlays/AlertDialog/types.js +1 -1
  219. package/es/components/overlays/Dialog/Dialog.js +1 -1
  220. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  221. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  222. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  223. package/es/components/overlays/Dialog/context.js +1 -1
  224. package/es/components/overlays/Dialog/index.js +1 -1
  225. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  226. package/es/components/overlays/Modal/Modal.js +1 -1
  227. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  228. package/es/components/overlays/Modal/Overlay.js +1 -1
  229. package/es/components/overlays/Modal/Popover.js +1 -1
  230. package/es/components/overlays/Modal/Tray.js +1 -1
  231. package/es/components/overlays/Modal/Underlay.js +1 -1
  232. package/es/components/overlays/Modal/index.js +1 -1
  233. package/es/components/overlays/Modal/types.js +1 -1
  234. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  235. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  236. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  237. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  238. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  239. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  240. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  241. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  242. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  243. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  244. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  245. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  246. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  247. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  248. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  249. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  250. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  251. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  252. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  253. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  254. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  255. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  256. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  257. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  258. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  259. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  260. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  261. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  262. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  263. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  264. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  265. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  266. package/es/components/overlays/NewNotifications/index.js +1 -1
  267. package/es/components/overlays/NewNotifications/types.js +1 -1
  268. package/es/components/overlays/Notification/Notification.js +1 -1
  269. package/es/components/overlays/OverlayWrapper.js +1 -1
  270. package/es/components/overlays/Toasts/Toast.js +1 -1
  271. package/es/components/overlays/Toasts/index.js +1 -1
  272. package/es/components/overlays/Toasts/types.js +1 -1
  273. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  274. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  275. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  276. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  277. package/es/components/overlays/Tooltip/context.js +1 -1
  278. package/es/components/overlays/Tooltip/index.js +1 -1
  279. package/es/components/portal/Portal.js +1 -1
  280. package/es/components/portal/PortalProvider.js +1 -1
  281. package/es/components/portal/index.js +1 -1
  282. package/es/components/portal/types.js +1 -1
  283. package/es/components/portal/usePortal.js +1 -1
  284. package/es/components/shared/InvalidIcon.js +1 -1
  285. package/es/components/shared/ValidIcon.js +1 -1
  286. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  287. package/es/components/status/LoadingAnimation/index.js +1 -1
  288. package/es/components/status/Spin/Cube.js +1 -1
  289. package/es/components/status/Spin/InternalSpinner.js +1 -1
  290. package/es/components/status/Spin/Spin.js +1 -1
  291. package/es/components/status/Spin/SpinsContainer.js +1 -1
  292. package/es/components/status/Spin/index.js +1 -1
  293. package/es/components/status/Spin/types.js +1 -1
  294. package/es/components/status/index.js +1 -1
  295. package/es/data/item-themes.js +1 -1
  296. package/es/data/themes.js +1 -1
  297. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  298. package/es/icons/AdjustmentsIcon.js +1 -1
  299. package/es/icons/AiIcon.js +1 -1
  300. package/es/icons/AreaChartIcon.js +1 -1
  301. package/es/icons/BackwardIcon.js +1 -1
  302. package/es/icons/BarChartIcon.js +1 -1
  303. package/es/icons/BellFilledIcon.js +1 -1
  304. package/es/icons/BellIcon.js +1 -1
  305. package/es/icons/BooleanIcon.js +1 -1
  306. package/es/icons/CalendarEditIcon.js +1 -1
  307. package/es/icons/CalendarIcon.js +1 -1
  308. package/es/icons/CaretDownIcon.js +1 -1
  309. package/es/icons/CaretUpIcon.js +1 -1
  310. package/es/icons/ChartAreaStackedIcon.js +1 -1
  311. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  312. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  313. package/es/icons/ChartBarGroupedIcon.js +1 -1
  314. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  315. package/es/icons/ChartBarLineIcon.js +1 -1
  316. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  317. package/es/icons/ChartBarStackedIcon.js +1 -1
  318. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  319. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  320. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  321. package/es/icons/ChartBoxPlotIcon.js +1 -1
  322. package/es/icons/ChartBubbleIcon.js +1 -1
  323. package/es/icons/ChartDonut2Icon.js +1 -1
  324. package/es/icons/ChartFunnelIcon.js +1 -1
  325. package/es/icons/ChartHeatmapIcon.js +1 -1
  326. package/es/icons/ChartKPIIcon.js +1 -1
  327. package/es/icons/ChartPie2Icon.js +1 -1
  328. package/es/icons/ChartScatterIcon.js +1 -1
  329. package/es/icons/CheckCircleFilledIcon.js +1 -1
  330. package/es/icons/CheckCircleIcon.js +1 -1
  331. package/es/icons/CheckIcon.js +1 -1
  332. package/es/icons/CircleFilledIcon.js +1 -1
  333. package/es/icons/ClearIcon.js +1 -1
  334. package/es/icons/CloseCircleFilledIcon.js +1 -1
  335. package/es/icons/CloseCircleIcon.js +1 -1
  336. package/es/icons/CloseIcon.js +1 -1
  337. package/es/icons/CodeIcon.js +1 -1
  338. package/es/icons/ColumnTotalIcon.js +1 -1
  339. package/es/icons/CopyIcon.js +1 -1
  340. package/es/icons/CountIcon.js +1 -1
  341. package/es/icons/CubeIcon.js +1 -1
  342. package/es/icons/CubePauseIcon.js +1 -1
  343. package/es/icons/CubePlayIcon.js +1 -1
  344. package/es/icons/CurrencyDollarIcon.js +1 -1
  345. package/es/icons/DangerIcon.js +1 -1
  346. package/es/icons/DashboardIcon.js +1 -1
  347. package/es/icons/DatabaseIcon.js +1 -1
  348. package/es/icons/DecimalDecreaseIcon.js +1 -1
  349. package/es/icons/DecimalIncreaseIcon.js +1 -1
  350. package/es/icons/DirectionIcon.js +1 -1
  351. package/es/icons/DonutIcon.js +1 -1
  352. package/es/icons/DownIcon.js +1 -1
  353. package/es/icons/EditIcon.js +1 -1
  354. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  355. package/es/icons/ExclamationCircleIcon.js +1 -1
  356. package/es/icons/ExclamationIcon.js +1 -1
  357. package/es/icons/EyeIcon.js +1 -1
  358. package/es/icons/EyeInvisibleIcon.js +1 -1
  359. package/es/icons/FilterIcon.js +1 -1
  360. package/es/icons/FolderFilledIcon.js +1 -1
  361. package/es/icons/FolderIcon.js +1 -1
  362. package/es/icons/FolderOpenFilledIcon.js +1 -1
  363. package/es/icons/FolderOpenIcon.js +1 -1
  364. package/es/icons/ForwardIcon.js +1 -1
  365. package/es/icons/HierarchyIcon.js +1 -1
  366. package/es/icons/HierarchyOpenIcon.js +1 -1
  367. package/es/icons/Icon.js +1 -1
  368. package/es/icons/InfoCircleIcon.js +1 -1
  369. package/es/icons/InfoIcon.js +1 -1
  370. package/es/icons/KeyIcon.js +1 -1
  371. package/es/icons/LeftIcon.js +1 -1
  372. package/es/icons/LineChartIcon.js +1 -1
  373. package/es/icons/LoadingIcon.js +1 -1
  374. package/es/icons/LockFilledIcon.js +1 -1
  375. package/es/icons/LockIcon.js +1 -1
  376. package/es/icons/MoreIcon.js +1 -1
  377. package/es/icons/NotAllowedIcon.js +1 -1
  378. package/es/icons/Number123Icon.js +1 -1
  379. package/es/icons/NumberIcon.js +1 -1
  380. package/es/icons/PauseCircleFilledIcon.js +1 -1
  381. package/es/icons/PauseCircleIcon.js +1 -1
  382. package/es/icons/PauseIcon.js +1 -1
  383. package/es/icons/PercentageIcon.js +1 -1
  384. package/es/icons/PieChartIcon.js +1 -1
  385. package/es/icons/PlayCircleIcon.js +1 -1
  386. package/es/icons/PlayIcon.js +1 -1
  387. package/es/icons/PlusIcon.js +1 -1
  388. package/es/icons/ProgressBarIcon.js +1 -1
  389. package/es/icons/ReloadIcon.js +1 -1
  390. package/es/icons/ReportIcon.js +1 -1
  391. package/es/icons/ReturnIcon.js +1 -1
  392. package/es/icons/RightIcon.js +1 -1
  393. package/es/icons/RowTotalsIcon.js +1 -1
  394. package/es/icons/SchemeIcon.js +1 -1
  395. package/es/icons/SearchIcon.js +1 -1
  396. package/es/icons/SettingsIcon.js +1 -1
  397. package/es/icons/ShieldFilledIcon.js +1 -1
  398. package/es/icons/ShieldIcon.js +1 -1
  399. package/es/icons/SlashIcon.js +1 -1
  400. package/es/icons/SparklesIcon.js +1 -1
  401. package/es/icons/SqlIcon.js +1 -1
  402. package/es/icons/StatsIcon.js +1 -1
  403. package/es/icons/StopIcon.js +1 -1
  404. package/es/icons/StringIcon.js +1 -1
  405. package/es/icons/SubtotalsIcon.js +1 -1
  406. package/es/icons/SwitchIcon.js +1 -1
  407. package/es/icons/TableIcon.js +1 -1
  408. package/es/icons/ThumbsDownIcon.js +1 -1
  409. package/es/icons/ThumbsUpIcon.js +1 -1
  410. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  411. package/es/icons/ThunderboltFilledIcon.js +1 -1
  412. package/es/icons/ThunderboltIcon.js +1 -1
  413. package/es/icons/TimeIcon.js +1 -1
  414. package/es/icons/TrashIcon.js +1 -1
  415. package/es/icons/UnlockIcon.js +1 -1
  416. package/es/icons/UpIcon.js +1 -1
  417. package/es/icons/UserGroupIcon.js +1 -1
  418. package/es/icons/UserIcon.js +1 -1
  419. package/es/icons/UserLockIcon.js +1 -1
  420. package/es/icons/ViewIcon.js +1 -1
  421. package/es/icons/WarningFilledIcon.js +1 -1
  422. package/es/icons/WarningIcon.js +1 -1
  423. package/es/icons/add-new-icon.js +1 -1
  424. package/es/icons/index.js +1 -1
  425. package/es/icons/wrap-icon.js +1 -1
  426. package/es/index.js +1 -1
  427. package/es/provider.js +1 -1
  428. package/es/providers/TrackingProvider.js +1 -1
  429. package/es/providers/navigation.types.js +1 -1
  430. package/es/providers/navigationAdapter.default.js +1 -1
  431. package/es/services/notification.js +1 -1
  432. package/es/shared/form.js +1 -1
  433. package/es/shared/index.js +1 -1
  434. package/es/stories/Form.legacy-stories.js +1 -1
  435. package/es/stories/FormFieldArgs.js +1 -1
  436. package/es/stories/SimpleLayout.stories.js +1 -1
  437. package/es/stories/Tasty.stories.js +1 -1
  438. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  439. package/es/stories/components/DialogFormApp.js +1 -1
  440. package/es/stories/components/StyledButton.js +1 -1
  441. package/es/stories/lists/baseProps.js +1 -1
  442. package/es/tasty/chunks/cacheKey.js +1 -1
  443. package/es/tasty/chunks/definitions.js +1 -1
  444. package/es/tasty/chunks/index.js +1 -1
  445. package/es/tasty/chunks/renderChunk.js +1 -1
  446. package/es/tasty/debug.js +1 -1
  447. package/es/tasty/hooks/index.js +1 -1
  448. package/es/tasty/hooks/useGlobalStyles.js +1 -1
  449. package/es/tasty/hooks/useStyles.js +1 -1
  450. package/es/tasty/index.js +1 -1
  451. package/es/tasty/injector/index.js +1 -1
  452. package/es/tasty/injector/injector.js +1 -1
  453. package/es/tasty/injector/sheet-manager.js +8 -2
  454. package/es/tasty/injector/types.js +1 -1
  455. package/es/tasty/parser/classify.js +1 -1
  456. package/es/tasty/parser/const.js +1 -1
  457. package/es/tasty/parser/lru.js +1 -1
  458. package/es/tasty/parser/parser.js +1 -1
  459. package/es/tasty/parser/tokenizer.js +1 -1
  460. package/es/tasty/parser/types.js +1 -1
  461. package/es/tasty/pipeline/conditions.js +1 -1
  462. package/es/tasty/pipeline/exclusive.js +1 -1
  463. package/es/tasty/pipeline/index.js +1 -1
  464. package/es/tasty/pipeline/materialize.js +345 -301
  465. package/es/tasty/pipeline/parseStateKey.js +1 -1
  466. package/es/tasty/pipeline/simplify.js +146 -1
  467. package/es/tasty/states/index.js +1 -1
  468. package/es/tasty/styles/align.js +1 -1
  469. package/es/tasty/styles/border.js +1 -1
  470. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  471. package/es/tasty/styles/color.js +1 -1
  472. package/es/tasty/styles/createStyle.js +1 -1
  473. package/es/tasty/styles/dimension.js +1 -1
  474. package/es/tasty/styles/display.js +1 -1
  475. package/es/tasty/styles/fade.js +1 -1
  476. package/es/tasty/styles/fill.js +1 -1
  477. package/es/tasty/styles/flow.js +1 -1
  478. package/es/tasty/styles/font.js +1 -1
  479. package/es/tasty/styles/fontStyle.js +1 -1
  480. package/es/tasty/styles/gap.js +1 -1
  481. package/es/tasty/styles/groupRadius.js +1 -1
  482. package/es/tasty/styles/height.js +1 -1
  483. package/es/tasty/styles/index.js +1 -1
  484. package/es/tasty/styles/inset.js +1 -1
  485. package/es/tasty/styles/justify.js +1 -1
  486. package/es/tasty/styles/list.js +1 -1
  487. package/es/tasty/styles/margin.js +56 -24
  488. package/es/tasty/styles/outline.js +1 -1
  489. package/es/tasty/styles/padding.js +56 -24
  490. package/es/tasty/styles/place.js +1 -1
  491. package/es/tasty/styles/predefined.js +1 -1
  492. package/es/tasty/styles/preset.js +1 -1
  493. package/es/tasty/styles/radius.js +1 -1
  494. package/es/tasty/styles/reset.js +1 -1
  495. package/es/tasty/styles/scrollbar.js +1 -1
  496. package/es/tasty/styles/shadow.js +1 -1
  497. package/es/tasty/styles/styledScrollbar.js +1 -1
  498. package/es/tasty/styles/transition.js +1 -1
  499. package/es/tasty/styles/types.js +1 -1
  500. package/es/tasty/styles/width.js +1 -1
  501. package/es/tasty/tasty.js +1 -1
  502. package/es/tasty/types.js +1 -1
  503. package/es/tasty/utils/cache-wrapper.js +1 -1
  504. package/es/tasty/utils/case-converter.js +1 -1
  505. package/es/tasty/utils/colors.js +1 -1
  506. package/es/tasty/utils/dotize.js +1 -1
  507. package/es/tasty/utils/filterBaseProps.js +1 -1
  508. package/es/tasty/utils/getDisplayName.js +1 -1
  509. package/es/tasty/utils/isDevEnv.js +1 -1
  510. package/es/tasty/utils/mergeStyles.js +1 -1
  511. package/es/tasty/utils/modAttrs.js +1 -1
  512. package/es/tasty/utils/processTokens.js +1 -1
  513. package/es/tasty/utils/string.js +1 -1
  514. package/es/tasty/utils/styles.js +1 -1
  515. package/es/tasty/utils/warnings.js +1 -1
  516. package/es/tokens.js +1 -1
  517. package/es/utils/ResizeSensor.js +1 -1
  518. package/es/utils/index.js +1 -1
  519. package/es/utils/modules.js +1 -1
  520. package/es/utils/promise.js +1 -1
  521. package/es/utils/raf.js +1 -1
  522. package/es/utils/random.js +1 -1
  523. package/es/utils/range.js +1 -1
  524. package/es/utils/react/RenderCache.js +1 -1
  525. package/es/utils/react/Slots.js +1 -1
  526. package/es/utils/react/chain.js +1 -1
  527. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  528. package/es/utils/react/index.js +1 -1
  529. package/es/utils/react/interactions.js +1 -1
  530. package/es/utils/react/isTextOnly.js +1 -1
  531. package/es/utils/react/mapProps.js +1 -1
  532. package/es/utils/react/mergeProps.js +1 -1
  533. package/es/utils/react/nullableValue.js +1 -1
  534. package/es/utils/react/resolveIcon.js +1 -1
  535. package/es/utils/react/sharedStore.js +1 -1
  536. package/es/utils/react/useCombinedRefs.js +1 -1
  537. package/es/utils/react/useControlledFocusVisible.js +1 -1
  538. package/es/utils/react/useEventBus.js +1 -1
  539. package/es/utils/react/useId.js +1 -1
  540. package/es/utils/react/useIsDarwin.js +1 -1
  541. package/es/utils/react/useKeySymbols.js +1 -1
  542. package/es/utils/react/useLayoutEffect.js +1 -1
  543. package/es/utils/react/useLocalStorage.js +1 -1
  544. package/es/utils/react/useQaProps.js +1 -1
  545. package/es/utils/react/useViewportSize.js +1 -1
  546. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  547. package/es/utils/tree.js +1 -1
  548. package/es/utils/warnings.js +1 -1
  549. package/es/version.js +2 -2
  550. package/package.json +1 -1
  551. package/types/tasty/pipeline/materialize.d.ts +52 -4
@@ -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-fe57a1b
4
+ * @cube-dev/ui-kit v0.0.0-canary-9e3bcfc
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -50,8 +50,8 @@ function emptyVariant() {
50
50
  return {
51
51
  modifierSelectors: [],
52
52
  ownSelectors: [],
53
- mediaRules: [],
54
- containerRules: [],
53
+ mediaConditions: [],
54
+ containerConditions: [],
55
55
  startingStyle: false,
56
56
  };
57
57
  }
@@ -95,11 +95,11 @@ function conditionToCSSInner(node) {
95
95
  function stateToCSS(state) {
96
96
  switch (state.type) {
97
97
  case 'media': {
98
- // Media rules can return multiple variants for negated ranges (OR branches)
99
- const mediaResults = mediaToCSS(state);
100
- const variants = mediaResults.map((mediaRule) => {
98
+ // Media conditions can return multiple variants for negated ranges (OR branches)
99
+ const mediaResults = mediaToParsed(state);
100
+ const variants = mediaResults.map((mediaCond) => {
101
101
  const v = emptyVariant();
102
- v.mediaRules.push(mediaRule);
102
+ v.mediaConditions.push(mediaCond);
103
103
  return v;
104
104
  });
105
105
  return { variants, isImpossible: false };
@@ -114,7 +114,7 @@ function stateToCSS(state) {
114
114
  variant.modifierSelectors.push(pseudoToCSS(state));
115
115
  break;
116
116
  case 'container':
117
- variant.containerRules.push(containerToCSS(state));
117
+ variant.containerConditions.push(containerToParsed(state));
118
118
  break;
119
119
  case 'root':
120
120
  variant.rootPrefix = rootToCSS(state);
@@ -167,17 +167,21 @@ function pseudoToCSS(state) {
167
167
  return state.pseudo;
168
168
  }
169
169
  /**
170
- * Convert media condition to CSS at-rule(s)
171
- * Returns an array because negated ranges produce OR branches (two separate rules)
170
+ * Convert media condition to parsed structure(s)
171
+ * Returns an array because negated ranges produce OR branches (two separate conditions)
172
172
  */
173
- function mediaToCSS(state) {
173
+ function mediaToParsed(state) {
174
174
  if (state.subtype === 'type') {
175
175
  // @media:print → @media print (or @media not print)
176
176
  const mediaType = state.mediaType || 'all';
177
- if (state.negated) {
178
- return [`@media not ${mediaType}`];
179
- }
180
- return [`@media ${mediaType}`];
177
+ return [
178
+ {
179
+ subtype: 'type',
180
+ negated: state.negated ?? false,
181
+ condition: mediaType,
182
+ mediaType: state.mediaType,
183
+ },
184
+ ];
181
185
  }
182
186
  else if (state.subtype === 'feature') {
183
187
  // @media(prefers-contrast: high) → @media (prefers-contrast: high)
@@ -188,70 +192,27 @@ function mediaToCSS(state) {
188
192
  else {
189
193
  condition = `(${state.feature})`;
190
194
  }
191
- // "not (condition)" is valid for feature queries like prefers-color-scheme
192
- if (state.negated) {
193
- return [`@media not ${condition}`];
194
- }
195
- return [`@media ${condition}`];
195
+ return [
196
+ {
197
+ subtype: 'feature',
198
+ negated: state.negated ?? false,
199
+ condition,
200
+ feature: state.feature,
201
+ featureValue: state.featureValue,
202
+ },
203
+ ];
196
204
  }
197
205
  else {
198
206
  // Dimension query - negation is handled by inverting the condition
199
207
  // because "not (width < x)" doesn't work reliably in browsers
200
- const conditions = dimensionToMediaCondition(state.dimension || 'width', state.lowerBound, state.upperBound, state.negated);
201
- // dimensionToMediaCondition returns array for negated ranges (OR branches)
202
- return conditions.map((c) => `@media ${c}`);
203
- }
204
- }
205
- /**
206
- * Convert container condition to CSS at-rule
207
- * Container queries support "not (condition)" syntax, so we can use it directly
208
- */
209
- function containerToCSS(state) {
210
- const name = state.containerName ? `${state.containerName} ` : '';
211
- let condition;
212
- if (state.subtype === 'style') {
213
- // Style query: @container style(--prop: value)
214
- if (state.propertyValue) {
215
- condition = `style(--${state.property}: ${state.propertyValue})`;
216
- }
217
- else {
218
- condition = `style(--${state.property})`;
219
- }
220
- }
221
- else {
222
- // Dimension query - container queries support "not (condition)"
223
- condition = dimensionToContainerCondition(state.dimension || 'width', state.lowerBound, state.upperBound);
224
- }
225
- if (state.negated) {
226
- return `@container ${name}not ${condition}`;
227
- }
228
- return `@container ${name}${condition}`;
229
- }
230
- /**
231
- * Convert dimension bounds to container query condition (single string)
232
- * Container queries support "not (condition)", so no need to invert manually
233
- */
234
- function dimensionToContainerCondition(dimension, lowerBound, upperBound) {
235
- if (lowerBound && upperBound) {
236
- const lowerOp = lowerBound.inclusive ? '<=' : '<';
237
- const upperOp = upperBound.inclusive ? '<=' : '<';
238
- return `(${lowerBound.value} ${lowerOp} ${dimension} ${upperOp} ${upperBound.value})`;
239
- }
240
- else if (upperBound) {
241
- const op = upperBound.inclusive ? '<=' : '<';
242
- return `(${dimension} ${op} ${upperBound.value})`;
243
- }
244
- else if (lowerBound) {
245
- const op = lowerBound.inclusive ? '>=' : '>';
246
- return `(${dimension} ${op} ${lowerBound.value})`;
208
+ return dimensionToMediaParsed(state.dimension || 'width', state.lowerBound, state.upperBound, state.negated ?? false);
247
209
  }
248
- return '(width)'; // Fallback
249
210
  }
250
211
  /**
251
- * Convert dimension bounds to media condition(s)
212
+ * Convert dimension bounds to parsed media condition(s)
252
213
  * Returns an array because negated ranges produce OR branches (two separate conditions)
253
214
  */
254
- function dimensionToMediaCondition(dimension, lowerBound, upperBound, negated) {
215
+ function dimensionToMediaParsed(dimension, lowerBound, upperBound, negated) {
255
216
  if (negated) {
256
217
  // Invert the condition manually since "not (width < x)" doesn't work in browsers
257
218
  // Single bounds: flip the operator → returns single condition
@@ -262,42 +223,143 @@ function dimensionToMediaCondition(dimension, lowerBound, upperBound, negated) {
262
223
  const lowerOp = lowerBound.inclusive ? '<' : '<=';
263
224
  const upperOp = upperBound.inclusive ? '>' : '>=';
264
225
  return [
265
- `(${dimension} ${lowerOp} ${lowerBound.value})`,
266
- `(${dimension} ${upperOp} ${upperBound.value})`,
226
+ {
227
+ subtype: 'dimension',
228
+ negated: false,
229
+ condition: `(${dimension} ${lowerOp} ${lowerBound.value})`,
230
+ dimension,
231
+ upperBound: {
232
+ value: lowerBound.value,
233
+ valueNumeric: lowerBound.valueNumeric,
234
+ inclusive: !lowerBound.inclusive,
235
+ },
236
+ },
237
+ {
238
+ subtype: 'dimension',
239
+ negated: false,
240
+ condition: `(${dimension} ${upperOp} ${upperBound.value})`,
241
+ dimension,
242
+ lowerBound: {
243
+ value: upperBound.value,
244
+ valueNumeric: upperBound.valueNumeric,
245
+ inclusive: !upperBound.inclusive,
246
+ },
247
+ },
267
248
  ];
268
249
  }
269
250
  else if (upperBound) {
270
251
  // (dim < upper) negated is (dim >= upper)
271
252
  // (dim <= upper) negated is (dim > upper)
272
253
  const op = upperBound.inclusive ? '>' : '>=';
273
- return [`(${dimension} ${op} ${upperBound.value})`];
254
+ return [
255
+ {
256
+ subtype: 'dimension',
257
+ negated: false,
258
+ condition: `(${dimension} ${op} ${upperBound.value})`,
259
+ dimension,
260
+ lowerBound: {
261
+ value: upperBound.value,
262
+ valueNumeric: upperBound.valueNumeric,
263
+ inclusive: !upperBound.inclusive,
264
+ },
265
+ },
266
+ ];
274
267
  }
275
268
  else if (lowerBound) {
276
269
  // (dim >= lower) negated is (dim < lower)
277
270
  // (dim > lower) negated is (dim <= lower)
278
271
  const op = lowerBound.inclusive ? '<' : '<=';
279
- return [`(${dimension} ${op} ${lowerBound.value})`];
272
+ return [
273
+ {
274
+ subtype: 'dimension',
275
+ negated: false,
276
+ condition: `(${dimension} ${op} ${lowerBound.value})`,
277
+ dimension,
278
+ upperBound: {
279
+ value: lowerBound.value,
280
+ valueNumeric: lowerBound.valueNumeric,
281
+ inclusive: !lowerBound.inclusive,
282
+ },
283
+ },
284
+ ];
280
285
  }
281
- // Fallback - should not happen
282
- return ['(width < 0px)'];
283
286
  }
284
- // Positive condition - always returns single condition
287
+ // Non-negated conditions
288
+ let condition;
285
289
  if (lowerBound && upperBound) {
286
290
  const lowerOp = lowerBound.inclusive ? '<=' : '<';
287
291
  const upperOp = upperBound.inclusive ? '<=' : '<';
288
- return [
289
- `(${lowerBound.value} ${lowerOp} ${dimension} ${upperOp} ${upperBound.value})`,
290
- ];
292
+ condition = `(${lowerBound.value} ${lowerOp} ${dimension} ${upperOp} ${upperBound.value})`;
291
293
  }
292
294
  else if (upperBound) {
293
295
  const op = upperBound.inclusive ? '<=' : '<';
294
- return [`(${dimension} ${op} ${upperBound.value})`];
296
+ condition = `(${dimension} ${op} ${upperBound.value})`;
295
297
  }
296
298
  else if (lowerBound) {
297
299
  const op = lowerBound.inclusive ? '>=' : '>';
298
- return [`(${dimension} ${op} ${lowerBound.value})`];
300
+ condition = `(${dimension} ${op} ${lowerBound.value})`;
299
301
  }
300
- return ['(width)']; // Fallback
302
+ else {
303
+ condition = `(${dimension})`;
304
+ }
305
+ return [
306
+ {
307
+ subtype: 'dimension',
308
+ negated: false,
309
+ condition,
310
+ dimension,
311
+ lowerBound,
312
+ upperBound,
313
+ },
314
+ ];
315
+ }
316
+ /**
317
+ * Convert container condition to parsed structure
318
+ * This enables structured analysis for contradiction detection and condition combining
319
+ */
320
+ function containerToParsed(state) {
321
+ let condition;
322
+ if (state.subtype === 'style') {
323
+ // Style query: style(--prop: value)
324
+ if (state.propertyValue) {
325
+ condition = `style(--${state.property}: ${state.propertyValue})`;
326
+ }
327
+ else {
328
+ condition = `style(--${state.property})`;
329
+ }
330
+ }
331
+ else {
332
+ // Dimension query
333
+ condition = dimensionToContainerCondition(state.dimension || 'width', state.lowerBound, state.upperBound);
334
+ }
335
+ return {
336
+ name: state.containerName,
337
+ condition,
338
+ negated: state.negated ?? false,
339
+ subtype: state.subtype,
340
+ property: state.property,
341
+ propertyValue: state.propertyValue,
342
+ };
343
+ }
344
+ /**
345
+ * Convert dimension bounds to container query condition (single string)
346
+ * Container queries support "not (condition)", so no need to invert manually
347
+ */
348
+ function dimensionToContainerCondition(dimension, lowerBound, upperBound) {
349
+ if (lowerBound && upperBound) {
350
+ const lowerOp = lowerBound.inclusive ? '<=' : '<';
351
+ const upperOp = upperBound.inclusive ? '<=' : '<';
352
+ return `(${lowerBound.value} ${lowerOp} ${dimension} ${upperOp} ${upperBound.value})`;
353
+ }
354
+ else if (upperBound) {
355
+ const op = upperBound.inclusive ? '<=' : '<';
356
+ return `(${dimension} ${op} ${upperBound.value})`;
357
+ }
358
+ else if (lowerBound) {
359
+ const op = lowerBound.inclusive ? '>=' : '>';
360
+ return `(${dimension} ${op} ${lowerBound.value})`;
361
+ }
362
+ return '(width)'; // Fallback
301
363
  }
302
364
  /**
303
365
  * Convert root condition to CSS selector prefix
@@ -345,8 +407,11 @@ function dedupeArray(arr) {
345
407
  * Deduplicates selectors to avoid `.foo:not([x]):not([x])` repetition
346
408
  */
347
409
  function mergeVariants(a, b) {
348
- const mergedMedia = dedupeArray([...a.mediaRules, ...b.mediaRules]);
349
- // Check for contradictory media rules
410
+ // Merge media conditions and check for contradictions
411
+ const mergedMedia = dedupeMediaConditions([
412
+ ...a.mediaConditions,
413
+ ...b.mediaConditions,
414
+ ]);
350
415
  if (hasMediaContradiction(mergedMedia)) {
351
416
  return null; // Impossible variant
352
417
  }
@@ -363,10 +428,10 @@ function mergeVariants(a, b) {
363
428
  if (hasModifierContradiction(mergedModifiers)) {
364
429
  return null; // Impossible variant
365
430
  }
366
- // Merge container rules and check for contradictions
367
- const mergedContainers = dedupeArray([
368
- ...a.containerRules,
369
- ...b.containerRules,
431
+ // Merge container conditions and check for contradictions
432
+ const mergedContainers = dedupeContainerConditions([
433
+ ...a.containerConditions,
434
+ ...b.containerConditions,
370
435
  ]);
371
436
  if (hasContainerStyleContradiction(mergedContainers)) {
372
437
  return null; // Impossible variant
@@ -374,169 +439,101 @@ function mergeVariants(a, b) {
374
439
  return {
375
440
  modifierSelectors: mergedModifiers,
376
441
  ownSelectors: dedupeArray([...a.ownSelectors, ...b.ownSelectors]),
377
- mediaRules: mergedMedia,
378
- containerRules: mergedContainers,
442
+ mediaConditions: mergedMedia,
443
+ containerConditions: mergedContainers,
379
444
  rootPrefix: combinedRoot,
380
445
  startingStyle: a.startingStyle || b.startingStyle,
381
446
  };
382
447
  }
383
- function parseValue(str) {
384
- const match = str.match(/^(\d+(?:\.\d+)?)(px|em|rem|vh|vw|%)$/i);
385
- if (match) {
386
- return { value: parseFloat(match[1]), unit: match[2].toLowerCase() };
387
- }
388
- return null;
389
- }
390
- function parseDimensionCondition(condition) {
391
- // Try range syntax first: (600px <= width < 900px)
392
- const rangeMatch = condition.match(/\(\s*(\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%))\s*(<=?)\s*(width|height)\s*(<=?)\s*(\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%))\s*\)/i);
393
- if (rangeMatch) {
394
- const lowerVal = parseValue(rangeMatch[1]);
395
- const upperVal = parseValue(rangeMatch[5]);
396
- if (lowerVal && upperVal && lowerVal.unit === upperVal.unit) {
397
- return {
398
- dimension: rangeMatch[3].toLowerCase(),
399
- lowerBound: {
400
- value: lowerVal.value,
401
- unit: lowerVal.unit,
402
- inclusive: rangeMatch[2] === '<=',
403
- },
404
- upperBound: {
405
- value: upperVal.value,
406
- unit: upperVal.unit,
407
- inclusive: rangeMatch[4] === '<=',
408
- },
409
- };
410
- }
411
- }
412
- // Try single bound: (width < 600px) or (width >= 900px)
413
- const singleMatch = condition.match(/\(\s*(width|height)\s*(<=?|>=?)\s*(\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%))\s*\)/i);
414
- if (singleMatch) {
415
- const val = parseValue(singleMatch[3]);
416
- if (val) {
417
- const op = singleMatch[2];
418
- if (op === '<' || op === '<=') {
419
- return {
420
- dimension: singleMatch[1].toLowerCase(),
421
- upperBound: {
422
- value: val.value,
423
- unit: val.unit,
424
- inclusive: op === '<=',
425
- },
426
- };
427
- }
428
- else {
429
- return {
430
- dimension: singleMatch[1].toLowerCase(),
431
- lowerBound: {
432
- value: val.value,
433
- unit: val.unit,
434
- inclusive: op === '>=',
435
- },
436
- };
437
- }
448
+ /**
449
+ * Deduplicate media conditions by their key (subtype + condition + negated)
450
+ */
451
+ function dedupeMediaConditions(conditions) {
452
+ const seen = new Set();
453
+ const result = [];
454
+ for (const c of conditions) {
455
+ const key = `${c.subtype}|${c.condition}|${c.negated}`;
456
+ if (!seen.has(key)) {
457
+ seen.add(key);
458
+ result.push(c);
438
459
  }
439
460
  }
440
- return null;
461
+ return result;
441
462
  }
442
463
  /**
443
- * Check if two dimension conditions are contradictory
444
- * e.g., "width >= 900px" and "width < 900px" are contradictory
445
- * Also handles ranges: "(600px <= width < 900px)" and "(width < 600px)" are contradictory
464
+ * Deduplicate container conditions by their key (name + condition + negated)
446
465
  */
447
- function areDimensionContradictions(a, b) {
448
- if (a.dimension !== b.dimension)
449
- return false;
450
- // Get effective bounds - considering both single-bound and ranges
451
- const aLower = a.lowerBound;
452
- const aUpper = a.upperBound;
453
- const bLower = b.lowerBound;
454
- const bUpper = b.upperBound;
455
- // Check if units are compatible (only compare if same unit)
456
- const getUnit = (bound) => bound?.unit;
457
- const units = [aLower, aUpper, bLower, bUpper]
458
- .filter(Boolean)
459
- .map((b) => b.unit);
460
- if (units.length > 0 && !units.every((u) => u === units[0])) {
461
- return false; // Different units, can't determine
462
- }
463
- // Two conditions contradict if their valid ranges don't overlap
464
- // A range is [aLowerVal, aUpperVal) or similar
465
- // Default: -Infinity to +Infinity
466
- const aLowerVal = aLower?.value ?? -Infinity;
467
- const aUpperVal = aUpper?.value ?? Infinity;
468
- const bLowerVal = bLower?.value ?? -Infinity;
469
- const bUpperVal = bUpper?.value ?? Infinity;
470
- // For non-inclusive bounds, adjust slightly for comparison
471
- // But for simplicity, we'll use strict non-overlap check
472
- // Two ranges [aL, aU) and [bL, bU) don't overlap if:
473
- // aU <= bL or bU <= aL (considering inclusivity)
474
- // Check if a's upper bound is at or below b's lower bound
475
- if (aUpper && bLower && aUpper.value === bLower.value) {
476
- // Same value - check inclusivity
477
- // If a.upper is exclusive (<) and b.lower is inclusive (>=), they don't overlap at this point
478
- // If a.upper is inclusive (<=) and b.lower is exclusive (>), they don't overlap
479
- if (!aUpper.inclusive && bLower.inclusive) {
480
- return true; // a < X and X <= b → no overlap at X
481
- }
482
- if (aUpper.inclusive && !bLower.inclusive) {
483
- return true; // a <= X and X > b → no overlap at X
484
- }
485
- }
486
- if (aUpperVal < bLowerVal)
487
- return true;
488
- // Check if b's upper bound is at or below a's lower bound
489
- if (bUpper && aLower && bUpper.value === aLower.value) {
490
- if (!bUpper.inclusive && aLower.inclusive) {
491
- return true;
492
- }
493
- if (bUpper.inclusive && !aLower.inclusive) {
494
- return true;
466
+ function dedupeContainerConditions(conditions) {
467
+ const seen = new Set();
468
+ const result = [];
469
+ for (const c of conditions) {
470
+ const key = `${c.name ?? ''}|${c.condition}|${c.negated}`;
471
+ if (!seen.has(key)) {
472
+ seen.add(key);
473
+ result.push(c);
495
474
  }
496
475
  }
497
- if (bUpperVal < aLowerVal)
498
- return true;
499
- return false;
476
+ return result;
500
477
  }
501
478
  /**
502
- * Check if a set of media rules contains contradictions
503
- * e.g., "@media (prefers-color-scheme: light)" and "@media not (prefers-color-scheme: light)"
504
- * or "@media (width >= 900px)" and "@media (width < 900px)"
505
- */
506
- function hasMediaContradiction(mediaRules) {
507
- const conditions = new Map();
508
- const dimensionConditions = [];
509
- for (const rule of mediaRules) {
510
- // Check for negated media rule: @media not (...)
511
- const notMatch = rule.match(/@media\s+not\s+(\([^)]+\))/i);
512
- // Check for positive media rule: @media (...)
513
- const posMatch = rule.match(/@media\s+(\([^)]+\))/i);
514
- if (notMatch) {
515
- // Normalize the condition (remove extra whitespace)
516
- const key = notMatch[1].replace(/\s+/g, ' ').trim();
517
- const existing = conditions.get(key);
518
- if (existing && existing.positive) {
519
- return true; // Found: (condition) AND not (condition)
479
+ * Check if a set of media conditions contains contradictions
480
+ * e.g., (prefers-color-scheme: light) AND NOT (prefers-color-scheme: light)
481
+ * or (width >= 900px) AND (width < 600px)
482
+ *
483
+ * Uses parsed media conditions for efficient analysis without regex parsing.
484
+ */
485
+ function hasMediaContradiction(conditions) {
486
+ // Track conditions by their key (condition string) to detect A and NOT A
487
+ const featureConditions = new Map(); // key -> isPositive
488
+ const typeConditions = new Map(); // mediaType -> isPositive
489
+ // Track dimension conditions for range contradiction detection
490
+ const dimensionsByDim = new Map();
491
+ for (const cond of conditions) {
492
+ if (cond.subtype === 'type') {
493
+ // Type query: check for direct contradiction (print AND NOT print)
494
+ const key = cond.mediaType || 'all';
495
+ const existing = typeConditions.get(key);
496
+ if (existing !== undefined && existing !== !cond.negated) {
497
+ return true; // Contradiction: positive AND negated
520
498
  }
521
- conditions.set(key, { positive: false, rule });
522
- }
523
- else if (posMatch) {
524
- // Normalize the condition (remove extra whitespace)
525
- const key = posMatch[1].replace(/\s+/g, ' ').trim();
526
- const existing = conditions.get(key);
527
- if (existing && !existing.positive) {
528
- return true; // Found: not (condition) AND (condition)
499
+ typeConditions.set(key, !cond.negated);
500
+ }
501
+ else if (cond.subtype === 'feature') {
502
+ // Feature query: check for direct contradiction
503
+ const key = cond.condition;
504
+ const existing = featureConditions.get(key);
505
+ if (existing !== undefined && existing !== !cond.negated) {
506
+ return true; // Contradiction: positive AND negated
529
507
  }
530
- conditions.set(key, { positive: true, rule });
531
- // Also check for dimension contradictions
532
- const dimCond = parseDimensionCondition(posMatch[1]);
533
- if (dimCond) {
534
- for (const existing of dimensionConditions) {
535
- if (areDimensionContradictions(dimCond, existing)) {
536
- return true;
537
- }
508
+ featureConditions.set(key, !cond.negated);
509
+ }
510
+ else if (cond.subtype === 'dimension') {
511
+ // Dimension query: check for range contradictions
512
+ // Note: negated conditions are already inverted in dimensionToMediaParsed
513
+ const dim = cond.dimension || 'width';
514
+ let bounds = dimensionsByDim.get(dim);
515
+ if (!bounds) {
516
+ bounds = { lowerBound: null, upperBound: null };
517
+ dimensionsByDim.set(dim, bounds);
518
+ }
519
+ // Track the effective bounds
520
+ if (cond.lowerBound?.valueNumeric != null) {
521
+ const value = cond.lowerBound.valueNumeric;
522
+ if (bounds.lowerBound === null || value > bounds.lowerBound) {
523
+ bounds.lowerBound = value;
538
524
  }
539
- dimensionConditions.push(dimCond);
525
+ }
526
+ if (cond.upperBound?.valueNumeric != null) {
527
+ const value = cond.upperBound.valueNumeric;
528
+ if (bounds.upperBound === null || value < bounds.upperBound) {
529
+ bounds.upperBound = value;
530
+ }
531
+ }
532
+ // Check for impossible range
533
+ if (bounds.lowerBound !== null &&
534
+ bounds.upperBound !== null &&
535
+ bounds.lowerBound >= bounds.upperBound) {
536
+ return true;
540
537
  }
541
538
  }
542
539
  }
@@ -585,47 +582,47 @@ function hasSelectorStringContradiction(selector) {
585
582
  return false;
586
583
  }
587
584
  /**
588
- * Check if container rules contain contradictions in style queries
589
- * e.g., "style(--variant: danger)" and "style(--variant: success)" together
585
+ * Check if container conditions contain contradictions in style queries
586
+ * e.g., style(--variant: danger) and style(--variant: success) together
590
587
  * Same property with different values = always false
588
+ *
589
+ * Uses parsed container conditions for efficient analysis without regex parsing.
591
590
  */
592
- function hasContainerStyleContradiction(containerRules) {
591
+ function hasContainerStyleContradiction(conditions) {
593
592
  // Track style queries by property name
594
- // key: property name, value: { hasExistence: boolean, values: Set<string> }
593
+ // key: property name, value: { hasExistence: boolean, values: Set<string>, hasNegatedExistence: boolean }
595
594
  const styleQueries = new Map();
596
- for (const rule of containerRules) {
597
- // Match style queries: @container [name] style(--prop) or style(--prop: value)
598
- // Also handle negated: @container [name] not style(...)
599
- const isNegated = /not\s+style\(/i.test(rule);
600
- const styleMatch = rule.match(/style\(--([^:)\s]+)(?::\s*([^)]+))?\)/i);
601
- if (styleMatch) {
602
- const property = styleMatch[1];
603
- const value = styleMatch[2]?.trim();
604
- if (!styleQueries.has(property)) {
605
- styleQueries.set(property, {
606
- hasExistence: false,
607
- values: new Set(),
608
- hasNegatedExistence: false,
609
- });
595
+ for (const cond of conditions) {
596
+ // Only analyze style queries
597
+ if (cond.subtype !== 'style' || !cond.property) {
598
+ continue;
599
+ }
600
+ const property = cond.property;
601
+ const value = cond.propertyValue;
602
+ if (!styleQueries.has(property)) {
603
+ styleQueries.set(property, {
604
+ hasExistence: false,
605
+ values: new Set(),
606
+ hasNegatedExistence: false,
607
+ });
608
+ }
609
+ const entry = styleQueries.get(property);
610
+ if (cond.negated) {
611
+ if (value === undefined) {
612
+ // not style(--prop) - negated existence check
613
+ entry.hasNegatedExistence = true;
610
614
  }
611
- const entry = styleQueries.get(property);
612
- if (isNegated) {
613
- if (value === undefined) {
614
- // not style(--prop) - negated existence check
615
- entry.hasNegatedExistence = true;
616
- }
617
- // Negated value checks don't contradict positive value checks directly
618
- // They just mean "not this value"
615
+ // Negated value checks don't contradict positive value checks directly
616
+ // They just mean "not this value"
617
+ }
618
+ else {
619
+ if (value === undefined) {
620
+ // style(--prop) - existence check
621
+ entry.hasExistence = true;
619
622
  }
620
623
  else {
621
- if (value === undefined) {
622
- // style(--prop) - existence check
623
- entry.hasExistence = true;
624
- }
625
- else {
626
- // style(--prop: value) - value check
627
- entry.values.add(value);
628
- }
624
+ // style(--prop: value) - value check
625
+ entry.values.add(value);
629
626
  }
630
627
  }
631
628
  }
@@ -663,11 +660,19 @@ function combineRootPrefixes(a, b) {
663
660
  * Get a unique key for a variant (for deduplication)
664
661
  */
665
662
  function getVariantKey(v) {
663
+ const containerKey = v.containerConditions
664
+ .map((c) => `${c.name ?? ''}:${c.negated ? '!' : ''}${c.condition}`)
665
+ .sort()
666
+ .join('|');
667
+ const mediaKey = v.mediaConditions
668
+ .map((c) => `${c.subtype}:${c.negated ? '!' : ''}${c.condition}`)
669
+ .sort()
670
+ .join('|');
666
671
  return [
667
672
  v.modifierSelectors.slice().sort().join('|'),
668
673
  v.ownSelectors.slice().sort().join('|'),
669
- v.mediaRules.slice().sort().join('|'),
670
- v.containerRules.slice().sort().join('|'),
674
+ mediaKey,
675
+ containerKey,
671
676
  v.rootPrefix || '',
672
677
  v.startingStyle ? '1' : '0',
673
678
  ].join('###');
@@ -689,11 +694,11 @@ function isVariantSuperset(a, b) {
689
694
  return false;
690
695
  if (a.startingStyle !== b.startingStyle)
691
696
  return false;
692
- // Check if a.mediaRules is superset of b.mediaRules
693
- if (!isArraySuperset(a.mediaRules, b.mediaRules))
697
+ // Check if a.mediaConditions is superset of b.mediaConditions
698
+ if (!isMediaConditionsSuperset(a.mediaConditions, b.mediaConditions))
694
699
  return false;
695
- // Check if a.containerRules is superset of b.containerRules
696
- if (!isArraySuperset(a.containerRules, b.containerRules))
700
+ // Check if a.containerConditions is superset of b.containerConditions
701
+ if (!isContainerConditionsSuperset(a.containerConditions, b.containerConditions))
697
702
  return false;
698
703
  // Check if a.modifierSelectors is superset of b.modifierSelectors
699
704
  if (!isArraySuperset(a.modifierSelectors, b.modifierSelectors))
@@ -703,16 +708,40 @@ function isVariantSuperset(a, b) {
703
708
  return false;
704
709
  // A is a superset if it has all of B's items (possibly more)
705
710
  // and at least one category has strictly more items
706
- const aTotal = a.mediaRules.length +
707
- a.containerRules.length +
711
+ const aTotal = a.mediaConditions.length +
712
+ a.containerConditions.length +
708
713
  a.modifierSelectors.length +
709
714
  a.ownSelectors.length;
710
- const bTotal = b.mediaRules.length +
711
- b.containerRules.length +
715
+ const bTotal = b.mediaConditions.length +
716
+ b.containerConditions.length +
712
717
  b.modifierSelectors.length +
713
718
  b.ownSelectors.length;
714
719
  return aTotal > bTotal;
715
720
  }
721
+ /**
722
+ * Check if media conditions A is a superset of B
723
+ */
724
+ function isMediaConditionsSuperset(a, b) {
725
+ const aKeys = new Set(a.map((c) => `${c.subtype}|${c.condition}|${c.negated}`));
726
+ for (const c of b) {
727
+ const key = `${c.subtype}|${c.condition}|${c.negated}`;
728
+ if (!aKeys.has(key))
729
+ return false;
730
+ }
731
+ return true;
732
+ }
733
+ /**
734
+ * Check if container conditions A is a superset of B
735
+ */
736
+ function isContainerConditionsSuperset(a, b) {
737
+ const aKeys = new Set(a.map((c) => `${c.name ?? ''}|${c.condition}|${c.negated}`));
738
+ for (const c of b) {
739
+ const key = `${c.name ?? ''}|${c.condition}|${c.negated}`;
740
+ if (!aKeys.has(key))
741
+ return false;
742
+ }
743
+ return true;
744
+ }
716
745
  /**
717
746
  * Check if array A contains all elements of array B (superset)
718
747
  */
@@ -747,12 +776,12 @@ function dedupeVariants(variants) {
747
776
  result.sort((a, b) => {
748
777
  const aCount = a.modifierSelectors.length +
749
778
  a.ownSelectors.length +
750
- a.mediaRules.length +
751
- a.containerRules.length;
779
+ a.mediaConditions.length +
780
+ a.containerConditions.length;
752
781
  const bCount = b.modifierSelectors.length +
753
782
  b.ownSelectors.length +
754
- b.mediaRules.length +
755
- b.containerRules.length;
783
+ b.mediaConditions.length +
784
+ b.containerConditions.length;
756
785
  return aCount - bCount;
757
786
  });
758
787
  // Remove variants that are supersets of earlier (less restrictive) variants
@@ -880,23 +909,38 @@ export function buildCSSSelectorFromVariant(className, variant, selectorSuffix =
880
909
  */
881
910
  export function buildAtRulesFromVariant(variant) {
882
911
  const atRules = [];
883
- // Add media rules
884
- if (variant.mediaRules.length > 0) {
885
- // Each rule is either:
886
- // - "@media (condition)" for positive conditions
887
- // - "@media not (condition)" for negated conditions
888
- // - "@media not print" for negated media types
889
- // - "@media (inverted-condition)" for negated dimension queries (already inverted)
890
- //
891
- // We strip "@media " and join with " and "
892
- // This produces valid CSS like:
893
- // @media not (prefers-color-scheme: dark) and (width > 800px)
894
- // which means: NOT(dark) AND (width > 800px)
895
- const conditions = variant.mediaRules.map((r) => r.replace(/^@media\s*/, ''));
896
- atRules.push(`@media ${conditions.join(' and ')}`);
897
- }
898
- // Add container rules
899
- atRules.push(...variant.containerRules);
912
+ // Add media rules - combine all conditions with "and"
913
+ if (variant.mediaConditions.length > 0) {
914
+ const conditionParts = variant.mediaConditions.map((c) => {
915
+ if (c.subtype === 'type') {
916
+ // Media type: print, screen, etc.
917
+ return c.negated ? `not ${c.condition}` : c.condition;
918
+ }
919
+ else {
920
+ // Feature or dimension: (condition) or not (condition)
921
+ return c.negated ? `not ${c.condition}` : c.condition;
922
+ }
923
+ });
924
+ atRules.push(`@media ${conditionParts.join(' and ')}`);
925
+ }
926
+ // Add container rules - group by container name and combine with "and"
927
+ if (variant.containerConditions.length > 0) {
928
+ // Group conditions by container name (undefined = unnamed/nearest)
929
+ const byName = new Map();
930
+ for (const cond of variant.containerConditions) {
931
+ const group = byName.get(cond.name) || [];
932
+ group.push(cond);
933
+ byName.set(cond.name, group);
934
+ }
935
+ // Build one @container rule per container name
936
+ for (const [name, conditions] of byName) {
937
+ // CSS Container Query syntax requires parentheses around negated conditions:
938
+ // @container (not style(--x)) and style(--y) - NOT @container not style(--x) and style(--y)
939
+ const conditionParts = conditions.map((c) => c.negated ? `(not ${c.condition})` : c.condition);
940
+ const namePrefix = name ? `${name} ` : '';
941
+ atRules.push(`@container ${namePrefix}${conditionParts.join(' and ')}`);
942
+ }
943
+ }
900
944
  // Add starting-style
901
945
  if (variant.startingStyle) {
902
946
  atRules.push('@starting-style');