@cube-dev/ui-kit 0.0.0-canary-d09344a → 0.0.0-canary-ad2c384

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 (516) 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 +2 -2
  20. package/es/components/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +3 -3
  22. package/es/components/actions/Action/Action.js +2 -2
  23. package/es/components/actions/Button/Button.js +27 -25
  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 +4 -4
  29. package/es/components/actions/ItemAction/ItemAction.js +7 -7
  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 +8 -8
  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 +9 -9
  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 +2 -2
  49. package/es/components/content/Alert/Alert.js +3 -3
  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 +3 -3
  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 +6 -6
  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/Divider.js +1 -1
  62. package/es/components/content/Footer.js +1 -1
  63. package/es/components/content/Header.js +1 -1
  64. package/es/components/content/HotKeys/HotKeys.js +4 -4
  65. package/es/components/content/HotKeys/index.js +1 -1
  66. package/es/components/content/Item/Item.js +88 -87
  67. package/es/components/content/Item/index.js +1 -1
  68. package/es/components/content/ItemBadge/ItemBadge.js +2 -2
  69. package/es/components/content/ItemBadge/index.js +1 -1
  70. package/es/components/content/List/SectionHeading.js +1 -1
  71. package/es/components/content/List/index.js +1 -1
  72. package/es/components/content/Paragraph.js +1 -1
  73. package/es/components/content/Placeholder/Placeholder.js +1 -1
  74. package/es/components/content/PrismCode/PrismCode.js +1 -1
  75. package/es/components/content/PrismCode/prismSetup.js +1 -1
  76. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  77. package/es/components/content/Result/Result.js +1 -1
  78. package/es/components/content/Skeleton/Skeleton.js +1 -1
  79. package/es/components/content/Tag/Tag.js +4 -4
  80. package/es/components/content/Text.js +1 -1
  81. package/es/components/content/Title.js +7 -7
  82. package/es/components/fields/Checkbox/Checkbox.js +2 -2
  83. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  84. package/es/components/fields/Checkbox/context.js +1 -1
  85. package/es/components/fields/Checkbox/index.js +1 -1
  86. package/es/components/fields/ComboBox/ComboBox.js +2 -3
  87. package/es/components/fields/ComboBox/index.js +1 -1
  88. package/es/components/fields/DatePicker/DateInput.js +1 -1
  89. package/es/components/fields/DatePicker/DateInputBase.js +3 -3
  90. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  91. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  92. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  93. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  94. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  95. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  96. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  97. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  98. package/es/components/fields/DatePicker/index.js +1 -1
  99. package/es/components/fields/DatePicker/intl.js +1 -1
  100. package/es/components/fields/DatePicker/parseDate.js +1 -1
  101. package/es/components/fields/DatePicker/props.js +1 -1
  102. package/es/components/fields/DatePicker/types.js +1 -1
  103. package/es/components/fields/DatePicker/utils.js +1 -1
  104. package/es/components/fields/FileInput/FileInput.js +3 -3
  105. package/es/components/fields/FilterListBox/FilterListBox.js +5 -5
  106. package/es/components/fields/FilterListBox/index.js +1 -1
  107. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  108. package/es/components/fields/FilterPicker/index.js +1 -1
  109. package/es/components/fields/Input/Input.js +1 -1
  110. package/es/components/fields/Input/index.js +1 -1
  111. package/es/components/fields/ListBox/ListBox.js +2 -2
  112. package/es/components/fields/ListBox/index.js +1 -1
  113. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  114. package/es/components/fields/NumberInput/StepButton.js +1 -1
  115. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  116. package/es/components/fields/Picker/Picker.js +1 -1
  117. package/es/components/fields/Picker/index.js +1 -1
  118. package/es/components/fields/RadioGroup/Radio.js +2 -2
  119. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  120. package/es/components/fields/RadioGroup/context.js +1 -1
  121. package/es/components/fields/RadioGroup/index.js +1 -1
  122. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  123. package/es/components/fields/SearchInput/index.js +1 -1
  124. package/es/components/fields/Select/Select.js +2 -2
  125. package/es/components/fields/Select/index.js +1 -1
  126. package/es/components/fields/Slider/Gradation.js +1 -1
  127. package/es/components/fields/Slider/Header.js +1 -1
  128. package/es/components/fields/Slider/RangeSlider.js +1 -1
  129. package/es/components/fields/Slider/Slider.js +1 -1
  130. package/es/components/fields/Slider/SliderBase.js +1 -1
  131. package/es/components/fields/Slider/SliderInput.js +1 -1
  132. package/es/components/fields/Slider/SliderThumb.js +1 -1
  133. package/es/components/fields/Slider/SliderTrack.js +1 -1
  134. package/es/components/fields/Slider/elements.js +2 -2
  135. package/es/components/fields/Slider/index.js +1 -1
  136. package/es/components/fields/Slider/types.js +1 -1
  137. package/es/components/fields/Switch/Switch.js +17 -17
  138. package/es/components/fields/Switch/index.js +1 -1
  139. package/es/components/fields/TextArea/TextArea.js +1 -1
  140. package/es/components/fields/TextArea/index.js +1 -1
  141. package/es/components/fields/TextInput/TextInput.js +1 -1
  142. package/es/components/fields/TextInput/TextInputBase.js +12 -12
  143. package/es/components/fields/TextInput/index.js +1 -1
  144. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  145. package/es/components/fields/TextInputMapper/index.js +1 -1
  146. package/es/components/fields/index.js +1 -1
  147. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  148. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  149. package/es/components/form/FieldWrapper/index.js +1 -1
  150. package/es/components/form/FieldWrapper/types.js +1 -1
  151. package/es/components/form/Form/Field.js +1 -1
  152. package/es/components/form/Form/Form.js +1 -1
  153. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  154. package/es/components/form/Form/ResetButton/index.js +1 -1
  155. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  156. package/es/components/form/Form/SubmitButton/index.js +1 -1
  157. package/es/components/form/Form/SubmitError.js +1 -1
  158. package/es/components/form/Form/index.js +1 -1
  159. package/es/components/form/Form/types.js +1 -1
  160. package/es/components/form/Form/use-field/index.js +1 -1
  161. package/es/components/form/Form/use-field/types.js +1 -1
  162. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  163. package/es/components/form/Form/use-field/use-field.js +1 -1
  164. package/es/components/form/Form/use-form.js +1 -1
  165. package/es/components/form/Form/validation.js +1 -1
  166. package/es/components/form/Label.js +2 -2
  167. package/es/components/form/index.js +1 -1
  168. package/es/components/form/wrapper.js +1 -1
  169. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  170. package/es/components/helpers/index.js +1 -1
  171. package/es/components/layout/Flex.js +1 -1
  172. package/es/components/layout/Flow.js +1 -1
  173. package/es/components/layout/Grid.js +1 -1
  174. package/es/components/layout/Panel.js +1 -1
  175. package/es/components/layout/Prefix.js +1 -1
  176. package/es/components/layout/ResizablePanel.js +1 -1
  177. package/es/components/layout/Space.js +1 -1
  178. package/es/components/layout/Suffix.js +1 -1
  179. package/es/components/navigation/LegacyTabs/LegacyTabs.js +6 -6
  180. package/es/components/organisms/FileTabs/FileTabs.js +6 -6
  181. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  182. package/es/components/other/Base64Upload/Base64Upload.js +5 -5
  183. package/es/components/other/Calendar/Calendar.js +1 -1
  184. package/es/components/other/Calendar/CalendarCell.js +2 -2
  185. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  186. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  187. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  188. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  189. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  190. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  191. package/es/components/overlays/AlertDialog/index.js +1 -1
  192. package/es/components/overlays/AlertDialog/types.js +1 -1
  193. package/es/components/overlays/Dialog/Dialog.js +20 -19
  194. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  195. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  196. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  197. package/es/components/overlays/Dialog/context.js +1 -1
  198. package/es/components/overlays/Dialog/index.js +1 -1
  199. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  200. package/es/components/overlays/Modal/Modal.js +10 -9
  201. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  202. package/es/components/overlays/Modal/Overlay.js +1 -1
  203. package/es/components/overlays/Modal/Popover.js +1 -1
  204. package/es/components/overlays/Modal/Tray.js +1 -1
  205. package/es/components/overlays/Modal/Underlay.js +1 -1
  206. package/es/components/overlays/Modal/index.js +1 -1
  207. package/es/components/overlays/Modal/types.js +1 -1
  208. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  209. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  210. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  211. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  212. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  213. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  214. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  215. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  219. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  220. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  221. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  222. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  223. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +4 -4
  224. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  225. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  226. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  227. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  228. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  229. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  230. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  231. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  232. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  233. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  234. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  235. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  236. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  237. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  238. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  239. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  240. package/es/components/overlays/NewNotifications/index.js +1 -1
  241. package/es/components/overlays/NewNotifications/types.js +1 -1
  242. package/es/components/overlays/Notification/Notification.js +3 -3
  243. package/es/components/overlays/OverlayWrapper.js +1 -1
  244. package/es/components/overlays/Toasts/Toast.js +1 -1
  245. package/es/components/overlays/Toasts/index.js +1 -1
  246. package/es/components/overlays/Toasts/types.js +1 -1
  247. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  248. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  249. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  250. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  251. package/es/components/overlays/Tooltip/context.js +1 -1
  252. package/es/components/overlays/Tooltip/index.js +1 -1
  253. package/es/components/portal/Portal.js +1 -1
  254. package/es/components/portal/PortalProvider.js +1 -1
  255. package/es/components/portal/index.js +1 -1
  256. package/es/components/portal/types.js +1 -1
  257. package/es/components/portal/usePortal.js +1 -1
  258. package/es/components/shared/InvalidIcon.js +1 -1
  259. package/es/components/shared/ValidIcon.js +1 -1
  260. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  261. package/es/components/status/LoadingAnimation/index.js +1 -1
  262. package/es/components/status/Spin/Cube.js +1 -1
  263. package/es/components/status/Spin/InternalSpinner.js +1 -1
  264. package/es/components/status/Spin/Spin.js +1 -1
  265. package/es/components/status/Spin/SpinsContainer.js +1 -1
  266. package/es/components/status/Spin/index.js +1 -1
  267. package/es/components/status/Spin/types.js +1 -1
  268. package/es/components/status/index.js +1 -1
  269. package/es/data/item-themes.js +2 -2
  270. package/es/data/themes.js +1 -1
  271. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  272. package/es/icons/AdjustmentsIcon.js +1 -1
  273. package/es/icons/AiIcon.js +1 -1
  274. package/es/icons/AreaChartIcon.js +1 -1
  275. package/es/icons/BackwardIcon.js +1 -1
  276. package/es/icons/BarChartIcon.js +1 -1
  277. package/es/icons/BellFilledIcon.js +1 -1
  278. package/es/icons/BellIcon.js +1 -1
  279. package/es/icons/BooleanIcon.js +1 -1
  280. package/es/icons/CalendarEditIcon.js +1 -1
  281. package/es/icons/CalendarIcon.js +1 -1
  282. package/es/icons/CaretDownIcon.js +1 -1
  283. package/es/icons/CaretUpIcon.js +1 -1
  284. package/es/icons/ChartAreaStackedIcon.js +1 -1
  285. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  286. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  287. package/es/icons/ChartBarGroupedIcon.js +1 -1
  288. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  289. package/es/icons/ChartBarLineIcon.js +1 -1
  290. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  291. package/es/icons/ChartBarStackedIcon.js +1 -1
  292. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  293. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  294. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  295. package/es/icons/ChartBoxPlotIcon.js +1 -1
  296. package/es/icons/ChartBubbleIcon.js +1 -1
  297. package/es/icons/ChartDonut2Icon.js +1 -1
  298. package/es/icons/ChartFunnelIcon.js +1 -1
  299. package/es/icons/ChartHeatmapIcon.js +1 -1
  300. package/es/icons/ChartKPIIcon.js +1 -1
  301. package/es/icons/ChartPie2Icon.js +1 -1
  302. package/es/icons/ChartScatterIcon.js +1 -1
  303. package/es/icons/CheckCircleFilledIcon.js +1 -1
  304. package/es/icons/CheckCircleIcon.js +1 -1
  305. package/es/icons/CheckIcon.js +1 -1
  306. package/es/icons/CircleFilledIcon.js +1 -1
  307. package/es/icons/ClearIcon.js +1 -1
  308. package/es/icons/CloseCircleFilledIcon.js +1 -1
  309. package/es/icons/CloseCircleIcon.js +1 -1
  310. package/es/icons/CloseIcon.js +1 -1
  311. package/es/icons/CodeIcon.js +1 -1
  312. package/es/icons/CopyIcon.js +1 -1
  313. package/es/icons/CountIcon.js +1 -1
  314. package/es/icons/CubeIcon.js +1 -1
  315. package/es/icons/CubePauseIcon.js +1 -1
  316. package/es/icons/CubePlayIcon.js +1 -1
  317. package/es/icons/CurrencyDollarIcon.js +1 -1
  318. package/es/icons/DangerIcon.js +1 -1
  319. package/es/icons/DashboardIcon.js +1 -1
  320. package/es/icons/DatabaseIcon.js +1 -1
  321. package/es/icons/DecimalDecreaseIcon.js +1 -1
  322. package/es/icons/DecimalIncreaseIcon.js +1 -1
  323. package/es/icons/DirectionIcon.js +1 -1
  324. package/es/icons/DonutIcon.js +1 -1
  325. package/es/icons/DownIcon.js +1 -1
  326. package/es/icons/EditIcon.js +1 -1
  327. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  328. package/es/icons/ExclamationCircleIcon.js +1 -1
  329. package/es/icons/ExclamationIcon.js +1 -1
  330. package/es/icons/EyeIcon.js +1 -1
  331. package/es/icons/EyeInvisibleIcon.js +1 -1
  332. package/es/icons/FilterIcon.js +1 -1
  333. package/es/icons/FolderFilledIcon.js +1 -1
  334. package/es/icons/FolderIcon.js +1 -1
  335. package/es/icons/FolderOpenFilledIcon.js +1 -1
  336. package/es/icons/FolderOpenIcon.js +1 -1
  337. package/es/icons/ForwardIcon.js +1 -1
  338. package/es/icons/HierarchyIcon.js +1 -1
  339. package/es/icons/HierarchyOpenIcon.js +1 -1
  340. package/es/icons/Icon.js +1 -1
  341. package/es/icons/InfoCircleIcon.js +1 -1
  342. package/es/icons/InfoIcon.js +1 -1
  343. package/es/icons/KeyIcon.js +1 -1
  344. package/es/icons/LeftIcon.js +1 -1
  345. package/es/icons/LineChartIcon.js +1 -1
  346. package/es/icons/LoadingIcon.js +1 -1
  347. package/es/icons/LockFilledIcon.js +1 -1
  348. package/es/icons/LockIcon.js +1 -1
  349. package/es/icons/MoreIcon.js +1 -1
  350. package/es/icons/NotAllowedIcon.js +1 -1
  351. package/es/icons/Number123Icon.js +1 -1
  352. package/es/icons/NumberIcon.js +1 -1
  353. package/es/icons/PauseCircleFilledIcon.js +1 -1
  354. package/es/icons/PauseCircleIcon.js +1 -1
  355. package/es/icons/PauseIcon.js +1 -1
  356. package/es/icons/PercentageIcon.js +1 -1
  357. package/es/icons/PieChartIcon.js +1 -1
  358. package/es/icons/PlayCircleIcon.js +1 -1
  359. package/es/icons/PlayIcon.js +1 -1
  360. package/es/icons/PlusIcon.js +1 -1
  361. package/es/icons/ProgressBarIcon.js +1 -1
  362. package/es/icons/ReloadIcon.js +1 -1
  363. package/es/icons/ReportIcon.js +1 -1
  364. package/es/icons/ReturnIcon.js +1 -1
  365. package/es/icons/RightIcon.js +1 -1
  366. package/es/icons/SchemeIcon.js +1 -1
  367. package/es/icons/SearchIcon.js +1 -1
  368. package/es/icons/SettingsIcon.js +1 -1
  369. package/es/icons/ShieldFilledIcon.js +1 -1
  370. package/es/icons/ShieldIcon.js +1 -1
  371. package/es/icons/SlashIcon.js +1 -1
  372. package/es/icons/SparklesIcon.js +1 -1
  373. package/es/icons/SqlIcon.js +1 -1
  374. package/es/icons/StatsIcon.js +1 -1
  375. package/es/icons/StopIcon.js +1 -1
  376. package/es/icons/StringIcon.js +1 -1
  377. package/es/icons/SwitchIcon.js +1 -1
  378. package/es/icons/TableIcon.js +1 -1
  379. package/es/icons/ThumbsDownIcon.js +1 -1
  380. package/es/icons/ThumbsUpIcon.js +1 -1
  381. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  382. package/es/icons/ThunderboltFilledIcon.js +1 -1
  383. package/es/icons/ThunderboltIcon.js +1 -1
  384. package/es/icons/TimeIcon.js +1 -1
  385. package/es/icons/TrashIcon.js +1 -1
  386. package/es/icons/UnlockIcon.js +1 -1
  387. package/es/icons/UpIcon.js +1 -1
  388. package/es/icons/UserGroupIcon.js +1 -1
  389. package/es/icons/UserIcon.js +1 -1
  390. package/es/icons/UserLockIcon.js +1 -1
  391. package/es/icons/ViewIcon.js +1 -1
  392. package/es/icons/WarningFilledIcon.js +1 -1
  393. package/es/icons/WarningIcon.js +1 -1
  394. package/es/icons/add-new-icon.js +1 -1
  395. package/es/icons/index.js +1 -1
  396. package/es/icons/wrap-icon.js +1 -1
  397. package/es/index.js +1 -1
  398. package/es/provider.js +1 -1
  399. package/es/providers/TrackingProvider.js +1 -1
  400. package/es/providers/navigation.types.js +1 -1
  401. package/es/providers/navigationAdapter.default.js +1 -1
  402. package/es/services/notification.js +1 -1
  403. package/es/shared/form.js +1 -1
  404. package/es/shared/index.js +1 -1
  405. package/es/stories/Form.legacy-stories.js +1 -1
  406. package/es/stories/FormFieldArgs.js +1 -1
  407. package/es/stories/Layout.stories.js +1 -1
  408. package/es/stories/Tasty.stories.js +1 -1
  409. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  410. package/es/stories/components/DialogFormApp.js +1 -1
  411. package/es/stories/components/StyledButton.js +1 -1
  412. package/es/stories/lists/baseProps.js +1 -1
  413. package/es/tasty/debug.js +1 -1
  414. package/es/tasty/index.js +1 -1
  415. package/es/tasty/injector/index.js +1 -1
  416. package/es/tasty/injector/injector.js +1 -1
  417. package/es/tasty/injector/sheet-manager.js +1 -1
  418. package/es/tasty/injector/types.js +1 -1
  419. package/es/tasty/parser/classify.js +1 -1
  420. package/es/tasty/parser/const.js +1 -1
  421. package/es/tasty/parser/lru.js +1 -1
  422. package/es/tasty/parser/parser.js +1 -1
  423. package/es/tasty/parser/tokenizer.js +1 -1
  424. package/es/tasty/parser/types.js +1 -1
  425. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  426. package/es/tasty/styles/align.js +1 -1
  427. package/es/tasty/styles/border.js +1 -1
  428. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  429. package/es/tasty/styles/color.js +1 -1
  430. package/es/tasty/styles/createStyle.js +1 -1
  431. package/es/tasty/styles/dimension.js +1 -1
  432. package/es/tasty/styles/display.js +1 -1
  433. package/es/tasty/styles/fade.js +1 -1
  434. package/es/tasty/styles/fill.js +1 -1
  435. package/es/tasty/styles/flow.js +1 -1
  436. package/es/tasty/styles/font.js +1 -1
  437. package/es/tasty/styles/fontStyle.js +1 -1
  438. package/es/tasty/styles/gap.js +1 -1
  439. package/es/tasty/styles/groupRadius.js +1 -1
  440. package/es/tasty/styles/height.js +1 -1
  441. package/es/tasty/styles/index.js +1 -1
  442. package/es/tasty/styles/inset.js +1 -1
  443. package/es/tasty/styles/justify.js +1 -1
  444. package/es/tasty/styles/list.js +1 -1
  445. package/es/tasty/styles/margin.js +1 -1
  446. package/es/tasty/styles/outline.js +1 -1
  447. package/es/tasty/styles/padding.js +1 -1
  448. package/es/tasty/styles/place.js +1 -1
  449. package/es/tasty/styles/predefined.js +1 -1
  450. package/es/tasty/styles/preset.js +1 -1
  451. package/es/tasty/styles/radius.js +1 -1
  452. package/es/tasty/styles/reset.js +1 -1
  453. package/es/tasty/styles/scrollbar.js +1 -1
  454. package/es/tasty/styles/shadow.js +1 -1
  455. package/es/tasty/styles/styledScrollbar.js +1 -1
  456. package/es/tasty/styles/transition.js +1 -1
  457. package/es/tasty/styles/types.js +1 -1
  458. package/es/tasty/styles/width.js +1 -1
  459. package/es/tasty/tasty.js +9 -10
  460. package/es/tasty/types.js +1 -1
  461. package/es/tasty/utils/cache-wrapper.js +1 -1
  462. package/es/tasty/utils/case-converter.js +1 -1
  463. package/es/tasty/utils/colors.js +1 -1
  464. package/es/tasty/utils/dotize.js +1 -1
  465. package/es/tasty/utils/filterBaseProps.js +1 -1
  466. package/es/tasty/utils/getDisplayName.js +1 -1
  467. package/es/tasty/utils/getModCombinations.js +1 -1
  468. package/es/tasty/utils/isDevEnv.js +1 -1
  469. package/es/tasty/utils/mergeStyles.js +1 -1
  470. package/es/tasty/utils/modAttrs.js +3 -24
  471. package/es/tasty/utils/renderStyles.js +140 -385
  472. package/es/tasty/utils/responsive.js +1 -1
  473. package/es/tasty/utils/string.js +1 -1
  474. package/es/tasty/utils/styles.js +3 -47
  475. package/es/tasty/utils/warnings.js +1 -1
  476. package/es/tokens.js +1 -1
  477. package/es/utils/ResizeSensor.js +1 -1
  478. package/es/utils/index.js +1 -1
  479. package/es/utils/modules.js +1 -1
  480. package/es/utils/promise.js +1 -1
  481. package/es/utils/raf.js +1 -1
  482. package/es/utils/random.js +1 -1
  483. package/es/utils/range.js +1 -1
  484. package/es/utils/react/RenderCache.js +1 -1
  485. package/es/utils/react/Slots.js +1 -1
  486. package/es/utils/react/chain.js +1 -1
  487. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  488. package/es/utils/react/index.js +1 -1
  489. package/es/utils/react/interactions.js +1 -1
  490. package/es/utils/react/isTextOnly.js +1 -1
  491. package/es/utils/react/mapProps.js +1 -1
  492. package/es/utils/react/mergeProps.js +1 -1
  493. package/es/utils/react/nullableValue.js +1 -1
  494. package/es/utils/react/sharedStore.js +1 -1
  495. package/es/utils/react/useCombinedRefs.js +1 -1
  496. package/es/utils/react/useControlledFocusVisible.js +1 -1
  497. package/es/utils/react/useEventBus.js +1 -1
  498. package/es/utils/react/useId.js +1 -1
  499. package/es/utils/react/useIsDarwin.js +1 -1
  500. package/es/utils/react/useKeySymbols.js +1 -1
  501. package/es/utils/react/useLayoutEffect.js +1 -1
  502. package/es/utils/react/useQaProps.js +1 -1
  503. package/es/utils/react/useViewportSize.js +1 -1
  504. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  505. package/es/utils/tree.js +1 -1
  506. package/es/utils/warnings.js +1 -1
  507. package/es/version.js +2 -2
  508. package/package.json +1 -1
  509. package/types/components/Root.d.ts +1 -0
  510. package/types/components/actions/Button/Button.d.ts +25 -23
  511. package/types/components/actions/Menu/styled.d.ts +3 -3
  512. package/types/components/content/List/SectionHeading.d.ts +1 -1
  513. package/types/components/fields/DatePicker/DatePickerElement.d.ts +1 -1
  514. package/types/tasty/styles/types.d.ts +1 -6
  515. package/types/tasty/types.d.ts +1 -1
  516. package/types/tasty/utils/renderStyles.d.ts +2 -10
@@ -1,35 +1,25 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-d09344a
4
+ * @cube-dev/ui-kit v0.0.0-canary-ad2c384
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  /**
9
- * Style rendering that works with structured style objects.
10
- * Eliminates CSS string parsing for better performance.
11
- *
12
- * Key optimizations:
13
- * - Early exit checks (hasSameAttributeConflicts) handle common cases without overhead
14
- * - Logical rule caching (logicalRulesCache) memoizes expensive style processing
15
- * - Conflict detection prevents invalid CSS selector combinations
16
- * - Not-selector optimization reduces CSS size
17
- * - Priority-based filtering handles mod precedence correctly
18
- * - Consolidated mod processing eliminates code duplication
9
+ * Style rendering that works with structured style objects
10
+ * Eliminates CSS string parsing for better performance
19
11
  */
20
12
  import { Lru } from '../parser/lru';
21
13
  import { createStyle, STYLE_HANDLER_MAP } from '../styles';
22
14
  import { getModCombinationsIterative } from './getModCombinations';
23
15
  import { normalizeStyleZones, pointsToZones, } from './responsive';
24
- import { computeState, getModSelector, stringifyStyles, styleStateMapToStyleStateDataList, } from './styles';
16
+ import { computeState, getModSelector, styleStateMapToStyleStateDataList, } from './styles';
25
17
  // Detect if a value is a state map whose entries contain responsive arrays
26
18
  function stateMapHasResponsiveArrays(value) {
27
19
  if (!value || typeof value !== 'object' || Array.isArray(value))
28
20
  return false;
29
21
  return Object.values(value).some((v) => Array.isArray(v));
30
22
  }
31
- // Cache logical rules per styles+breakpoints to avoid recomputation across identical calls
32
- const logicalRulesCache = new Lru(5000);
33
23
  // Normalize selector suffixes coming from `$` in style handler results.
34
24
  // Some legacy handlers return suffixes starting with `&` (e.g. '& > *').
35
25
  // The renderer expects suffixes without the ampersand because it adds
@@ -58,15 +48,6 @@ function transformSelectorAffix(affix) {
58
48
  const trimmed = affix.trim();
59
49
  if (!trimmed)
60
50
  return ' ';
61
- // Validate that combinators have spaces around them
62
- // Check for capitalized words adjacent to combinators without spaces
63
- const invalidPattern = /[A-Z][a-z]*[>+~]|[>+~][A-Z][a-z]*/;
64
- if (invalidPattern.test(trimmed)) {
65
- console.error(`[Tasty] Invalid selector affix ($) syntax: "${affix}"\n` +
66
- `Combinators (>, +, ~) must have spaces around them when used with element names.\n` +
67
- `Example: Use "$: '> Body > Row'" instead of "$: '>Body>Row'"\n` +
68
- `This is a design choice: the parser uses simple whitespace splitting for performance.`);
69
- }
70
51
  const tokens = trimmed.split(/\s+/);
71
52
  const transformed = tokens.map((token) => /^[A-Z]/.test(token) ? `[data-element="${token}"]` : token);
72
53
  return ` ${transformed.join(' ')} `;
@@ -91,42 +72,40 @@ function getSelector(key, styles) {
91
72
  }
92
73
  return null;
93
74
  }
94
- /**
95
- * Parse attribute selector into its components.
96
- * Simple regex parsing - JS engines optimize repeated patterns internally.
97
- */
75
+ // Cache for parsed attribute selectors with bounded size to prevent memory leaks
76
+ const attributeSelectorCache = new Lru(5000);
98
77
  function parseAttributeSelector(selector) {
99
- // Match patterns like [data-size="medium"] or [data-selected]
78
+ // Check cache first
79
+ const cached = attributeSelectorCache.get(selector);
80
+ if (cached !== undefined) {
81
+ return cached;
82
+ }
83
+ // Match patterns like [data-size="medium"] or [data-is-selected]
100
84
  const match = selector.match(/^\[([^=\]]+)(?:="([^"]+)")?\]$/);
101
- return match
85
+ const result = match
102
86
  ? {
103
87
  attribute: match[1],
104
88
  value: match[2] || 'true', // Handle boolean attributes
105
89
  fullSelector: selector,
106
90
  }
107
91
  : null;
92
+ // Cache the result
93
+ attributeSelectorCache.set(selector, result);
94
+ return result;
108
95
  }
109
96
  function hasConflictingAttributeSelectors(mods, parsedMods) {
110
- const attributeValues = new Map();
111
- const attributeBooleans = new Set();
97
+ const attributeMap = new Map();
112
98
  for (const mod of mods) {
113
99
  const parsed = parsedMods?.get(mod) ?? parseAttributeSelector(mod);
114
- if (!parsed)
115
- continue;
116
- if (parsed.value === 'true') {
117
- // Boolean attribute
118
- attributeBooleans.add(parsed.attribute);
119
- }
120
- else {
121
- // Value attribute
122
- if (!attributeValues.has(parsed.attribute)) {
123
- attributeValues.set(parsed.attribute, []);
100
+ if (parsed && parsed.value !== 'true') {
101
+ if (!attributeMap.has(parsed.attribute)) {
102
+ attributeMap.set(parsed.attribute, []);
124
103
  }
125
- attributeValues.get(parsed.attribute).push(parsed.value);
104
+ attributeMap.get(parsed.attribute).push(parsed.value);
126
105
  }
127
106
  }
128
- // Check for multiple different values for the same attribute
129
- for (const values of attributeValues.values()) {
107
+ // Check if any attribute has multiple values
108
+ for (const values of attributeMap.values()) {
130
109
  if (values.length > 1)
131
110
  return true;
132
111
  }
@@ -140,17 +119,15 @@ function createAttributeConflictChecker(parsedMods) {
140
119
  return (combination) => hasConflictingAttributeSelectors(combination, parsedMods);
141
120
  }
142
121
  // Build precomputed attribute maps for efficient not selector optimization
143
- function buildAttributeMaps(currentMods, allMods, parsedModsCache) {
122
+ function buildAttributeMaps(currentMods, allMods) {
144
123
  const allAttributes = new Map();
145
124
  const currentAttributes = new Map();
146
- const parsedMods = parsedModsCache || new Map();
147
- // Parse all mods once and cache results (only if cache not provided)
148
- if (!parsedModsCache) {
149
- const allModsSet = new Set([...currentMods, ...allMods]);
150
- for (const mod of allModsSet) {
151
- if (!parsedMods.has(mod)) {
152
- parsedMods.set(mod, parseAttributeSelector(mod));
153
- }
125
+ const parsedMods = new Map();
126
+ // Parse all mods once and cache results
127
+ const allModsSet = new Set([...currentMods, ...allMods]);
128
+ for (const mod of allModsSet) {
129
+ if (!parsedMods.has(mod)) {
130
+ parsedMods.set(mod, parseAttributeSelector(mod));
154
131
  }
155
132
  }
156
133
  // Build map of all possible values for each attribute
@@ -172,219 +149,23 @@ function buildAttributeMaps(currentMods, allMods, parsedModsCache) {
172
149
  }
173
150
  return { allAttributes, currentAttributes, parsedMods };
174
151
  }
175
- /**
176
- * Check if a combination of positive and negative selectors creates a contradiction
177
- * Returns true if the combination is INVALID and should be pruned
178
- */
179
- function hasContradiction(currentMods, notMods, parsedMods) {
180
- // Build maps of positive selector states
181
- const positiveAttributes = new Map();
182
- const positiveBooleans = new Set();
183
- for (const mod of currentMods) {
184
- const parsed = parsedMods.get(mod);
185
- if (parsed) {
186
- if (parsed.value === 'true') {
187
- // Boolean attribute (e.g., [data-theme])
188
- positiveBooleans.add(parsed.attribute);
189
- }
190
- else {
191
- // Value attribute (e.g., [data-theme="danger"])
192
- if (!positiveAttributes.has(parsed.attribute)) {
193
- positiveAttributes.set(parsed.attribute, []);
194
- }
195
- positiveAttributes.get(parsed.attribute).push(parsed.value);
196
- }
197
- }
198
- }
199
- // Check negative selectors for contradictions
200
- for (const mod of notMods) {
201
- const parsed = parsedMods.get(mod);
202
- if (parsed) {
203
- if (parsed.value === 'true') {
204
- // Negative boolean: !([data-theme])
205
- // Case 6: Value positive + attribute negative = CONTRADICTION
206
- if (positiveAttributes.has(parsed.attribute) ||
207
- positiveBooleans.has(parsed.attribute)) {
208
- return true; // INVALID: can't have value without attribute
209
- }
210
- }
211
- else {
212
- // Negative value: !([data-theme="danger"])
213
- // No contradiction - this is valid
214
- }
215
- }
216
- }
217
- return false;
218
- }
219
152
  function optimizeNotSelectors(currentMods, allMods, precomputedMaps) {
220
153
  const maps = precomputedMaps || buildAttributeMaps(currentMods, allMods);
221
154
  const notMods = allMods.filter((mod) => !currentMods.includes(mod));
222
155
  const optimizedNotMods = [];
223
- // Precompute presence of negative boolean attributes to avoid repeated scans
224
- const negativeBooleanByAttr = new Set();
225
- for (const mod of notMods) {
226
- const p = maps.parsedMods.get(mod);
227
- if (p && p.value === 'true') {
228
- negativeBooleanByAttr.add(p.attribute);
229
- }
230
- }
231
- // Build maps of positive selector states for subsumption optimization
232
- const positiveAttributes = new Map();
233
- const positiveBooleans = new Set();
234
- for (const mod of currentMods) {
235
- const parsed = maps.parsedMods.get(mod);
236
- if (parsed) {
237
- if (parsed.value === 'true') {
238
- positiveBooleans.add(parsed.attribute);
239
- }
240
- else {
241
- if (!positiveAttributes.has(parsed.attribute)) {
242
- positiveAttributes.set(parsed.attribute, []);
243
- }
244
- positiveAttributes.get(parsed.attribute).push(parsed.value);
245
- }
246
- }
247
- }
248
156
  for (const mod of notMods) {
249
157
  const parsed = maps.parsedMods.get(mod);
250
158
  if (parsed && parsed.value !== 'true') {
251
- // Negative value selector
252
159
  // If we already have a value for this attribute, skip this not selector
253
- // because it's already mutually exclusive (optimization)
254
- if (maps.currentAttributes.has(parsed.attribute)) {
255
- continue;
256
- }
257
- }
258
- // If we have a positive value for this attribute, skip the negative boolean
259
- // This avoids producing selectors like [data-attr="x"]:not([data-attr])
260
- if (parsed && parsed.value === 'true') {
160
+ // because it's already mutually exclusive
261
161
  if (maps.currentAttributes.has(parsed.attribute)) {
262
162
  continue;
263
163
  }
264
164
  }
265
- // Case 4 subsumption: If we have a value positive and boolean positive for same attribute
266
- // The value implies the boolean, so we can skip the boolean from positive mods
267
- // (This is handled elsewhere - the value selector is more specific)
268
- // Case 7 subsumption: If we have a value negative and boolean negative for same attribute
269
- // The boolean negative implies value negative, so skip the value negative
270
- if (parsed && parsed.value !== 'true') {
271
- // If we also have the boolean attribute in negative mods, skip the value negative
272
- if (negativeBooleanByAttr.has(parsed.attribute)) {
273
- continue;
274
- }
275
- }
276
165
  optimizedNotMods.push(mod);
277
166
  }
278
167
  return optimizedNotMods;
279
168
  }
280
- /**
281
- * Quick check if there are any same-attribute conflicts (boolean vs value for same attribute).
282
- * Returns true if conflicts exist, false if filtering can be skipped.
283
- * This early exit optimization handles the common case efficiently.
284
- */
285
- function hasSameAttributeConflicts(allMods, parsedModsCache) {
286
- const attributeCounts = new Map();
287
- for (const mod of allMods) {
288
- const parsed = parsedModsCache.get(mod);
289
- if (!parsed)
290
- continue;
291
- const isBool = parsed.value === 'true';
292
- const existing = attributeCounts.get(parsed.attribute);
293
- if (existing) {
294
- // Already have both types for this attribute - conflict exists!
295
- if ((isBool && existing.hasValue) || (!isBool && existing.hasBool)) {
296
- return true;
297
- }
298
- // Update the types we've seen
299
- if (isBool)
300
- existing.hasBool = true;
301
- else
302
- existing.hasValue = true;
303
- }
304
- else {
305
- attributeCounts.set(parsed.attribute, {
306
- hasBool: isBool,
307
- hasValue: !isBool,
308
- });
309
- }
310
- }
311
- return false;
312
- }
313
- /**
314
- * Filter mods based on priority order for same-attribute conflicts.
315
- * If a boolean selector has higher priority than value selectors for the same attribute,
316
- * remove the value selectors (they would be shadowed by the boolean).
317
- *
318
- * Priority is determined by order in the styleStates (after reversal - earlier = higher priority)
319
- */
320
- function filterModsByPriority(allMods, styleStates, lookupStyles, parsedModsCache) {
321
- // Early exit: if no same-attribute conflicts exist, skip all the expensive work
322
- // This handles the common case efficiently without any cache overhead
323
- if (!hasSameAttributeConflicts(allMods, parsedModsCache)) {
324
- return allMods;
325
- }
326
- // Build priority map: for each mod, find its earliest appearance in any state list
327
- const modPriorities = new Map();
328
- for (const style of lookupStyles) {
329
- const states = styleStates[style];
330
- if (!states || states.length === 0)
331
- continue; // Skip empty states
332
- // states are already reversed (higher priority = lower index)
333
- for (let index = 0; index < states.length; index++) {
334
- const state = states[index];
335
- if (!state.mods || state.mods.length === 0)
336
- continue; // Skip empty mods
337
- for (const mod of state.mods) {
338
- const currentPriority = modPriorities.get(mod);
339
- if (currentPriority === undefined || index < currentPriority) {
340
- modPriorities.set(mod, index);
341
- }
342
- }
343
- }
344
- }
345
- // Group mods by attribute
346
- const attributeGroups = new Map();
347
- for (const mod of allMods) {
348
- const parsed = parsedModsCache.get(mod);
349
- if (!parsed)
350
- continue;
351
- const priority = modPriorities.get(mod);
352
- if (priority === undefined)
353
- continue;
354
- const isBool = parsed.value === 'true';
355
- let group = attributeGroups.get(parsed.attribute);
356
- if (!group) {
357
- group = [];
358
- attributeGroups.set(parsed.attribute, group);
359
- }
360
- group.push({
361
- mod,
362
- isBool,
363
- priority,
364
- });
365
- }
366
- // Filter: for each attribute, if boolean has higher priority than any value, remove values
367
- const modsToRemove = new Set();
368
- for (const [attribute, group] of attributeGroups.entries()) {
369
- // Only process attributes with more than one mod
370
- if (group.length <= 1)
371
- continue;
372
- const boolMods = group.filter((m) => m.isBool);
373
- const valueMods = group.filter((m) => !m.isBool);
374
- // Only check if we have both types
375
- if (boolMods.length === 0 || valueMods.length === 0)
376
- continue;
377
- // Check if any boolean has higher priority (lower index) than all values
378
- for (const boolMod of boolMods) {
379
- const hasHigherPriorityThanAllValues = valueMods.every((valueMod) => boolMod.priority < valueMod.priority);
380
- if (hasHigherPriorityThanAllValues) {
381
- // This boolean shadows all value mods for this attribute
382
- valueMods.forEach((valueMod) => modsToRemove.add(valueMod.mod));
383
- }
384
- }
385
- }
386
- return allMods.filter((mod) => !modsToRemove.has(mod));
387
- }
388
169
  /**
389
170
  * Explode a style handler result into logical rules with proper mapping
390
171
  * Phase 1: Handler fan-out ($ selectors, arrays)
@@ -543,124 +324,6 @@ function convertHandlerResultToCSS(result, selectorSuffix = '') {
543
324
  const normalizedSingle = $ ? normalizeDollarSelectorSuffix(String($)) : '';
544
325
  return `&${finalSelectorSuffix}${normalizedSingle}{\n${renderedStyles}}\n`;
545
326
  }
546
- /**
547
- * Process state maps with mod combinations and generate logical rules.
548
- * This consolidates the common logic for handling mod combinations, priority filtering,
549
- * contradiction checking, and selector optimization.
550
- */
551
- function processStateMapsWithModCombinations(styleStates, lookupStyles, zones, handler, parentSuffix, allLogicalRules, cachedNormalizeStyleZones, breakpointIdx, responsiveOrigin = false) {
552
- // Collect all mods from style states
553
- const allMods = [];
554
- const seenMods = new Set();
555
- for (const style of lookupStyles) {
556
- const states = styleStates[style];
557
- if (!states)
558
- continue;
559
- for (const state of states) {
560
- if (state.mods) {
561
- for (const mod of state.mods) {
562
- if (!seenMods.has(mod)) {
563
- seenMods.add(mod);
564
- allMods.push(mod);
565
- }
566
- }
567
- }
568
- }
569
- }
570
- if (allMods.length === 0) {
571
- // No mods - just call handler with default state values
572
- const stateProps = {};
573
- lookupStyles.forEach((style) => {
574
- const states = styleStates[style];
575
- if (states && states.length > 0) {
576
- stateProps[style] = states[0].value;
577
- }
578
- });
579
- const result = handler(stateProps);
580
- if (!result)
581
- return;
582
- const logicalRules = explodeHandlerResult(result, zones, parentSuffix, breakpointIdx, responsiveOrigin);
583
- allLogicalRules.push(...logicalRules);
584
- return;
585
- }
586
- // Parse all mods once and share the cache across all operations
587
- const parsedModsCache = new Map();
588
- for (const mod of allMods) {
589
- parsedModsCache.set(mod, parseAttributeSelector(getModSelector(mod)));
590
- }
591
- // Apply priority-based filtering for same-attribute boolean vs value conflicts
592
- const filteredMods = filterModsByPriority(allMods, styleStates, lookupStyles, parsedModsCache);
593
- // Precompute attribute maps once for all combinations
594
- const attributeMaps = buildAttributeMaps([], filteredMods, parsedModsCache);
595
- // Generate combinations with conflict-aware pruning
596
- const conflictChecker = createAttributeConflictChecker(attributeMaps.parsedMods);
597
- const combinations = getModCombinationsIterative(filteredMods, true, conflictChecker);
598
- // Process each mod combination
599
- combinations.forEach((modCombination) => {
600
- const stateProps = {};
601
- // Find matching state for each style
602
- lookupStyles.forEach((style) => {
603
- const states = styleStates[style];
604
- const matchingState = states.find((state) => computeState(state.model, (mod) => modCombination.includes(mod)));
605
- if (matchingState) {
606
- stateProps[style] = matchingState.value;
607
- }
608
- });
609
- // Use precomputed maps for efficient not selector optimization
610
- const currentMaps = buildAttributeMaps(modCombination, filteredMods, parsedModsCache);
611
- // Compute raw NOTs for contradiction check (before optimization)
612
- const rawNotMods = filteredMods.filter((mod) => !modCombination.includes(mod));
613
- // Check for contradictions between positive and negative selectors
614
- if (hasContradiction(modCombination, rawNotMods, currentMaps.parsedMods)) {
615
- return; // Skip this invalid combination
616
- }
617
- // Optimize NOT selectors afterwards (pure simplification)
618
- const optimizedNotMods = optimizeNotSelectors(modCombination, filteredMods, currentMaps);
619
- // Build the mod selector string
620
- const modsSelectors = `${modCombination
621
- .map(getModSelector)
622
- .join('')}${optimizedNotMods
623
- .map((mod) => {
624
- const sel = getModSelector(mod);
625
- return sel.startsWith(':not(') ? sel.slice(5, -1) : `:not(${sel})`;
626
- })
627
- .join('')}`;
628
- // Check if any state value is responsive (array)
629
- const hasResponsiveStateValues = lookupStyles.some((style) => Array.isArray(stateProps[style]));
630
- if (hasResponsiveStateValues) {
631
- // Fan out by breakpoint for responsive state values
632
- const propsByPoint = zones.map((_, i) => {
633
- const pointProps = {};
634
- lookupStyles.forEach((style) => {
635
- const v = stateProps[style];
636
- if (Array.isArray(v)) {
637
- const arr = cachedNormalizeStyleZones(v, zones.length);
638
- pointProps[style] = arr?.[i];
639
- }
640
- else {
641
- pointProps[style] = v;
642
- }
643
- });
644
- return pointProps;
645
- });
646
- propsByPoint.forEach((props, bpIdx) => {
647
- const res = handler(props);
648
- if (!res)
649
- return;
650
- const logical = explodeHandlerResult(res, zones, `${modsSelectors}${parentSuffix}`, bpIdx, true);
651
- allLogicalRules.push(...logical);
652
- });
653
- }
654
- else {
655
- // Simple non-responsive state values
656
- const result = handler(stateProps);
657
- if (!result)
658
- return;
659
- const logical = explodeHandlerResult(result, zones, `${modsSelectors}${parentSuffix}`, breakpointIdx, responsiveOrigin);
660
- allLogicalRules.push(...logical);
661
- }
662
- });
663
- }
664
327
  /**
665
328
  * Convert logical rules to final StyleResult format
666
329
  */
@@ -875,20 +538,53 @@ function generateLogicalRules(styles, responsive = [], parentSuffix = '') {
875
538
  return v && typeof v === 'object' && !Array.isArray(v);
876
539
  });
877
540
  if (hasStateMapsAtPoint) {
878
- // Build styleStates from point props
541
+ const allMods = new Set();
879
542
  const styleStates = {};
880
543
  lookupStyles.forEach((style) => {
881
544
  const v = pointProps[style];
882
545
  if (v && typeof v === 'object' && !Array.isArray(v)) {
883
- const { states } = styleStateMapToStyleStateDataList(v);
546
+ const { states, mods } = styleStateMapToStyleStateDataList(v);
884
547
  styleStates[style] = states;
548
+ mods.forEach((m) => allMods.add(m));
885
549
  }
886
550
  else {
887
551
  styleStates[style] = [{ mods: [], notMods: [], value: v }];
888
552
  }
889
553
  });
890
- // Use the consolidated helper for mod combination processing
891
- processStateMapsWithModCombinations(styleStates, lookupStyles, zones || [], handler, parentSuffix, allLogicalRules, cachedNormalizeStyleZones, breakpointIdx, true);
554
+ const allModsArray = Array.from(allMods);
555
+ // Precompute attribute maps once for all combinations
556
+ const attributeMaps = buildAttributeMaps([], allModsArray);
557
+ // Generate combinations with conflict-aware pruning
558
+ const conflictChecker = createAttributeConflictChecker(attributeMaps.parsedMods);
559
+ const combinations = getModCombinationsIterative(allModsArray, true, conflictChecker);
560
+ combinations.forEach((modCombination) => {
561
+ const stateProps = {};
562
+ lookupStyles.forEach((style) => {
563
+ const states = styleStates[style];
564
+ const matchingState = states.find((state) => computeState(state.model, (mod) => modCombination.includes(mod)));
565
+ if (matchingState) {
566
+ stateProps[style] = matchingState.value;
567
+ }
568
+ });
569
+ // Use precomputed maps for efficient not selector optimization
570
+ const currentMaps = buildAttributeMaps(modCombination, allModsArray);
571
+ const optimizedNotMods = optimizeNotSelectors(modCombination, allModsArray, currentMaps);
572
+ const modsSelectors = `${modCombination
573
+ .map(getModSelector)
574
+ .join('')}${optimizedNotMods
575
+ .map((mod) => {
576
+ const sel = getModSelector(mod);
577
+ return sel.startsWith(':not(')
578
+ ? sel.slice(5, -1)
579
+ : `:not(${sel})`;
580
+ })
581
+ .join('')}`;
582
+ const result = handler(stateProps);
583
+ if (!result)
584
+ return;
585
+ const logicalRules = explodeHandlerResult(result, zones || [], `${modsSelectors}${parentSuffix}`, breakpointIdx, true);
586
+ allLogicalRules.push(...logicalRules);
587
+ });
892
588
  }
893
589
  else {
894
590
  const result = handler(pointProps);
@@ -906,21 +602,87 @@ function generateLogicalRules(styles, responsive = [], parentSuffix = '') {
906
602
  return value && typeof value === 'object' && !Array.isArray(value);
907
603
  });
908
604
  if (hasStateMaps) {
909
- // Build styleStates from styleMap
605
+ // Process each style property individually for state resolution
606
+ const allMods = new Set();
910
607
  const styleStates = {};
911
608
  lookupStyles.forEach((style) => {
912
609
  const value = styleMap[style];
913
610
  if (value && typeof value === 'object' && !Array.isArray(value)) {
914
- const { states } = styleStateMapToStyleStateDataList(value);
611
+ const { states, mods } = styleStateMapToStyleStateDataList(value);
915
612
  styleStates[style] = states;
613
+ mods.forEach((mod) => allMods.add(mod));
916
614
  }
917
615
  else {
918
616
  // Simple value, create a single state
919
617
  styleStates[style] = [{ mods: [], notMods: [], value }];
920
618
  }
921
619
  });
922
- // Use the consolidated helper for mod combination processing
923
- processStateMapsWithModCombinations(styleStates, lookupStyles, zones || [], handler, parentSuffix, allLogicalRules, cachedNormalizeStyleZones);
620
+ // Generate all possible mod combinations
621
+ const allModsArray = Array.from(allMods);
622
+ // Precompute attribute maps once for all combinations
623
+ const attributeMaps = buildAttributeMaps([], allModsArray);
624
+ // Generate combinations with conflict-aware pruning
625
+ const conflictChecker = createAttributeConflictChecker(attributeMaps.parsedMods);
626
+ const combinations = getModCombinationsIterative(allModsArray, true, conflictChecker);
627
+ combinations.forEach((modCombination) => {
628
+ const stateProps = {};
629
+ lookupStyles.forEach((style) => {
630
+ const states = styleStates[style];
631
+ // Find the matching state for this mod combination
632
+ const matchingState = states.find((state) => {
633
+ return computeState(state.model, (mod) => modCombination.includes(mod));
634
+ });
635
+ if (matchingState) {
636
+ stateProps[style] = matchingState.value;
637
+ }
638
+ });
639
+ // Use precomputed maps for efficient not selector optimization
640
+ const currentMaps = buildAttributeMaps(modCombination, allModsArray);
641
+ const optimizedNotMods = optimizeNotSelectors(modCombination, allModsArray, currentMaps);
642
+ const modsSelectors = `${modCombination
643
+ .map(getModSelector)
644
+ .join('')}${optimizedNotMods
645
+ .map((mod) => {
646
+ const sel = getModSelector(mod);
647
+ return sel.startsWith(':not(')
648
+ ? sel.slice(5, -1)
649
+ : `:not(${sel})`;
650
+ })
651
+ .join('')}`;
652
+ // If any state value is responsive (array), fan-out by breakpoint
653
+ const hasResponsiveStateValues = lookupStyles.some((style) => Array.isArray(stateProps[style]));
654
+ if (hasResponsiveStateValues) {
655
+ const propsByPoint = zones.map((_, i) => {
656
+ const pointProps = {};
657
+ lookupStyles.forEach((style) => {
658
+ const v = stateProps[style];
659
+ if (Array.isArray(v)) {
660
+ const arr = cachedNormalizeStyleZones(v, zones.length);
661
+ pointProps[style] = arr?.[i];
662
+ }
663
+ else {
664
+ pointProps[style] = v;
665
+ }
666
+ });
667
+ return pointProps;
668
+ });
669
+ propsByPoint.forEach((props, breakpointIdx) => {
670
+ const res = handler(props);
671
+ if (!res)
672
+ return;
673
+ const logical = explodeHandlerResult(res, zones || [], `${modsSelectors}${parentSuffix}`, breakpointIdx, true);
674
+ allLogicalRules.push(...logical);
675
+ });
676
+ }
677
+ else {
678
+ // Simple non-responsive state values
679
+ const result = handler(stateProps);
680
+ if (!result)
681
+ return;
682
+ const logical = explodeHandlerResult(result, zones || [], `${modsSelectors}${parentSuffix}`);
683
+ allLogicalRules.push(...logical);
684
+ }
685
+ });
924
686
  }
925
687
  else {
926
688
  // Simple case: no state maps, call handler directly
@@ -942,15 +704,8 @@ export function renderStyles(styles, responsive = [], classNameOrSelector) {
942
704
  if (!styles) {
943
705
  return directSelector ? [] : { rules: [] };
944
706
  }
945
- // Generate logical rules using shared pipeline (memoized per styles+breakpoints)
946
- const stylesKey = stringifyStyles(styles);
947
- const bpKey = (responsive || []).join(',');
948
- const lrKey = `${stylesKey}#${bpKey}`;
949
- let allLogicalRules = logicalRulesCache.get(lrKey);
950
- if (!allLogicalRules) {
951
- allLogicalRules = generateLogicalRules(styles, responsive);
952
- logicalRulesCache.set(lrKey, allLogicalRules);
953
- }
707
+ // Generate logical rules using shared pipeline
708
+ const allLogicalRules = generateLogicalRules(styles, responsive);
954
709
  const zones = pointsToZones(responsive || []);
955
710
  if (directSelector) {
956
711
  // Direct selector mode: convert logical rules directly to StyleResult format
@@ -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-d09344a
4
+ * @cube-dev/ui-kit v0.0.0-canary-ad2c384
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-d09344a
4
+ * @cube-dev/ui-kit v0.0.0-canary-ad2c384
5
5
  * Released under the MIT license.
6
6
  */
7
7