@cube-dev/ui-kit 0.98.8 → 0.99.0

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 (676) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/es/_internal/hooks/index.js +10 -10
  3. package/es/_internal/hooks/use-chained-callback.js +2 -2
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +2 -2
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +2 -2
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +2 -2
  10. package/es/_internal/hooks/use-timer/index.js +3 -3
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +3 -3
  13. package/es/_internal/hooks/use-update-effect.js +2 -2
  14. package/es/_internal/hooks/use-warn.js +3 -3
  15. package/es/_internal/index.js +2 -2
  16. package/es/components/Block.js +2 -2
  17. package/es/components/CollectionItem.js +3 -3
  18. package/es/components/GlobalStyles.js +56 -65
  19. package/es/components/GridProvider.js +4 -4
  20. package/es/components/HiddenInput.js +2 -2
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +22 -64
  23. package/es/components/actions/Action/Action.js +3 -3
  24. package/es/components/actions/Button/Button.js +12 -12
  25. package/es/components/actions/Button/index.js +2 -2
  26. package/es/components/actions/ButtonGroup/ButtonGroup.js +4 -4
  27. package/es/components/actions/CommandMenu/CommandMenu.js +11 -11
  28. package/es/components/actions/CommandMenu/index.js +2 -2
  29. package/es/components/actions/CommandMenu/styled.js +2 -2
  30. package/es/components/actions/ItemAction/ItemAction.js +9 -9
  31. package/es/components/actions/ItemAction/index.js +2 -2
  32. package/es/components/actions/ItemActionContext.js +1 -1
  33. package/es/components/actions/ItemButton/ItemButton.js +9 -9
  34. package/es/components/actions/ItemButton/index.js +2 -2
  35. package/es/components/actions/Link/Link.js +2 -2
  36. package/es/components/actions/Menu/Menu.js +10 -10
  37. package/es/components/actions/Menu/MenuItem.js +7 -7
  38. package/es/components/actions/Menu/MenuSection.js +4 -4
  39. package/es/components/actions/Menu/MenuTrigger.js +6 -6
  40. package/es/components/actions/Menu/SubMenuTrigger.js +6 -6
  41. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  42. package/es/components/actions/Menu/context.js +1 -1
  43. package/es/components/actions/Menu/index.js +10 -10
  44. package/es/components/actions/Menu/styled.js +5 -5
  45. package/es/components/actions/index.js +13 -13
  46. package/es/components/actions/use-action.js +7 -7
  47. package/es/components/actions/use-anchored-menu.js +6 -6
  48. package/es/components/actions/use-context-menu.js +6 -6
  49. package/es/components/content/ActiveZone/ActiveZone.js +4 -4
  50. package/es/components/content/Alert/Alert.js +4 -4
  51. package/es/components/content/Alert/index.js +2 -2
  52. package/es/components/content/Alert/types.js +1 -1
  53. package/es/components/content/Alert/use-alert.js +3 -3
  54. package/es/components/content/Avatar/Avatar.js +2 -2
  55. package/es/components/content/Badge/Badge.js +4 -4
  56. package/es/components/content/Card/Card.js +2 -2
  57. package/es/components/content/Content.js +3 -3
  58. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +8 -8
  59. package/es/components/content/CopyPasteBlock/index.js +2 -2
  60. package/es/components/content/CopySnippet/CopySnippet.js +9 -9
  61. package/es/components/content/CopySnippet/index.js +2 -2
  62. package/es/components/content/Disclosure/Disclosure.js +6 -6
  63. package/es/components/content/Disclosure/index.js +2 -2
  64. package/es/components/content/Divider.js +3 -3
  65. package/es/components/content/Footer.js +3 -3
  66. package/es/components/content/Header.js +3 -3
  67. package/es/components/content/HotKeys/HotKeys.js +5 -5
  68. package/es/components/content/HotKeys/index.js +2 -2
  69. package/es/components/content/Item/Item.js +25 -20
  70. package/es/components/content/Item/index.js +3 -3
  71. package/es/components/content/ItemBadge/ItemBadge.js +8 -8
  72. package/es/components/content/ItemBadge/index.js +2 -2
  73. package/es/components/content/Layout/GridLayout.js +13 -13
  74. package/es/components/content/Layout/Layout.js +7 -6
  75. package/es/components/content/Layout/LayoutBlock.js +4 -3
  76. package/es/components/content/Layout/LayoutCenter.js +3 -3
  77. package/es/components/content/Layout/LayoutContainer.js +4 -4
  78. package/es/components/content/Layout/LayoutContent.js +6 -5
  79. package/es/components/content/Layout/LayoutContext.js +1 -1
  80. package/es/components/content/Layout/LayoutFlex.js +4 -3
  81. package/es/components/content/Layout/LayoutFooter.js +4 -3
  82. package/es/components/content/Layout/LayoutGrid.js +4 -3
  83. package/es/components/content/Layout/LayoutHeader.js +8 -7
  84. package/es/components/content/Layout/LayoutPane.js +8 -7
  85. package/es/components/content/Layout/LayoutPanel.js +10 -9
  86. package/es/components/content/Layout/LayoutPanelHeader.js +7 -7
  87. package/es/components/content/Layout/LayoutToolbar.js +4 -3
  88. package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  89. package/es/components/content/Layout/index.js +16 -16
  90. package/es/components/content/Layout/utils.js +1 -1
  91. package/es/components/content/List/SectionHeading.js +3 -3
  92. package/es/components/content/List/index.js +2 -2
  93. package/es/components/content/Paragraph.js +3 -3
  94. package/es/components/content/Placeholder/Placeholder.js +2 -2
  95. package/es/components/content/PrismCode/PrismCode.js +7 -7
  96. package/es/components/content/PrismCode/prismSetup.js +1 -1
  97. package/es/components/content/PrismDiffCode/PrismDiffCode.js +2 -2
  98. package/es/components/content/Result/Result.js +4 -4
  99. package/es/components/content/Skeleton/Skeleton.js +5 -5
  100. package/es/components/content/Tag/Tag.js +4 -4
  101. package/es/components/content/Text.js +3 -3
  102. package/es/components/content/TextItem/TextItem.js +5 -5
  103. package/es/components/content/TextItem/index.js +2 -2
  104. package/es/components/content/Title.js +4 -4
  105. package/es/components/content/highlightText.js +2 -2
  106. package/es/components/content/use-auto-tooltip.js +2 -2
  107. package/es/components/fields/Checkbox/Checkbox.js +12 -12
  108. package/es/components/fields/Checkbox/CheckboxGroup.js +7 -7
  109. package/es/components/fields/Checkbox/context.js +1 -1
  110. package/es/components/fields/Checkbox/index.js +3 -3
  111. package/es/components/fields/ComboBox/ComboBox.js +18 -18
  112. package/es/components/fields/ComboBox/index.js +2 -2
  113. package/es/components/fields/DatePicker/DateInput.js +10 -10
  114. package/es/components/fields/DatePicker/DateInputBase.js +6 -6
  115. package/es/components/fields/DatePicker/DatePicker.js +14 -14
  116. package/es/components/fields/DatePicker/DatePickerButton.js +4 -4
  117. package/es/components/fields/DatePicker/DatePickerElement.js +3 -3
  118. package/es/components/fields/DatePicker/DatePickerInput.js +5 -5
  119. package/es/components/fields/DatePicker/DatePickerSegment.js +2 -2
  120. package/es/components/fields/DatePicker/DateRangePicker.js +15 -15
  121. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +15 -15
  122. package/es/components/fields/DatePicker/TimeInput.js +9 -9
  123. package/es/components/fields/DatePicker/index.js +8 -8
  124. package/es/components/fields/DatePicker/intl.js +1 -1
  125. package/es/components/fields/DatePicker/parseDate.js +1 -1
  126. package/es/components/fields/DatePicker/props.js +1 -1
  127. package/es/components/fields/DatePicker/types.js +1 -1
  128. package/es/components/fields/DatePicker/utils.js +1 -1
  129. package/es/components/fields/FileInput/FileInput.js +6 -6
  130. package/es/components/fields/FilterListBox/FilterListBox.js +10 -10
  131. package/es/components/fields/FilterListBox/index.js +2 -2
  132. package/es/components/fields/FilterPicker/FilterPicker.js +14 -14
  133. package/es/components/fields/FilterPicker/index.js +2 -2
  134. package/es/components/fields/Input/Input.js +6 -6
  135. package/es/components/fields/Input/index.js +2 -2
  136. package/es/components/fields/ListBox/ListBox.js +14 -14
  137. package/es/components/fields/ListBox/index.js +2 -2
  138. package/es/components/fields/NumberInput/NumberInput.js +8 -8
  139. package/es/components/fields/NumberInput/StepButton.js +4 -4
  140. package/es/components/fields/PasswordInput/PasswordInput.js +8 -8
  141. package/es/components/fields/Picker/Picker.js +13 -13
  142. package/es/components/fields/Picker/index.js +2 -2
  143. package/es/components/fields/RadioGroup/Radio.js +10 -10
  144. package/es/components/fields/RadioGroup/RadioGroup.js +7 -7
  145. package/es/components/fields/RadioGroup/context.js +1 -1
  146. package/es/components/fields/RadioGroup/index.js +3 -3
  147. package/es/components/fields/SearchInput/SearchInput.js +8 -8
  148. package/es/components/fields/SearchInput/index.js +2 -2
  149. package/es/components/fields/Select/Select.js +20 -20
  150. package/es/components/fields/Select/index.js +2 -2
  151. package/es/components/fields/Slider/Gradation.js +2 -2
  152. package/es/components/fields/Slider/Header.js +1 -1
  153. package/es/components/fields/Slider/RangeSlider.js +5 -5
  154. package/es/components/fields/Slider/Slider.js +7 -7
  155. package/es/components/fields/Slider/SliderBase.js +6 -6
  156. package/es/components/fields/Slider/SliderInput.js +2 -2
  157. package/es/components/fields/Slider/SliderThumb.js +3 -3
  158. package/es/components/fields/Slider/SliderTrack.js +2 -2
  159. package/es/components/fields/Slider/elements.js +2 -2
  160. package/es/components/fields/Slider/index.js +4 -4
  161. package/es/components/fields/Slider/types.js +1 -1
  162. package/es/components/fields/Switch/Switch.js +11 -11
  163. package/es/components/fields/Switch/index.js +2 -2
  164. package/es/components/fields/TextArea/TextArea.js +7 -7
  165. package/es/components/fields/TextArea/index.js +2 -2
  166. package/es/components/fields/TextInput/TextInput.js +6 -6
  167. package/es/components/fields/TextInput/TextInputBase.js +9 -9
  168. package/es/components/fields/TextInput/index.js +3 -3
  169. package/es/components/fields/TextInputMapper/TextInputMapper.js +14 -14
  170. package/es/components/fields/TextInputMapper/index.js +2 -2
  171. package/es/components/fields/index.js +20 -20
  172. package/es/components/form/FieldWrapper/FieldWrapper.js +9 -9
  173. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  174. package/es/components/form/FieldWrapper/index.js +4 -4
  175. package/es/components/form/FieldWrapper/types.js +1 -1
  176. package/es/components/form/Form/Field.js +6 -6
  177. package/es/components/form/Form/Form.js +6 -6
  178. package/es/components/form/Form/ResetButton/ResetButton.js +6 -6
  179. package/es/components/form/Form/ResetButton/index.js +2 -2
  180. package/es/components/form/Form/SubmitButton/SubmitButton.js +4 -4
  181. package/es/components/form/Form/SubmitButton/index.js +2 -2
  182. package/es/components/form/Form/SubmitError.js +3 -3
  183. package/es/components/form/Form/index.js +11 -11
  184. package/es/components/form/Form/types.js +1 -1
  185. package/es/components/form/Form/use-field/index.js +4 -4
  186. package/es/components/form/Form/use-field/types.js +1 -1
  187. package/es/components/form/Form/use-field/use-field-props.js +6 -6
  188. package/es/components/form/Form/use-field/use-field.js +4 -4
  189. package/es/components/form/Form/use-form.js +3 -3
  190. package/es/components/form/Form/validation.js +1 -1
  191. package/es/components/form/Label.js +3 -3
  192. package/es/components/form/index.js +5 -5
  193. package/es/components/form/wrapper.js +3 -3
  194. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  195. package/es/components/helpers/DisplayTransition/index.js +2 -2
  196. package/es/components/helpers/IconSwitch/IconSwitch.js +3 -3
  197. package/es/components/helpers/index.js +3 -3
  198. package/es/components/layout/Flex.js +2 -2
  199. package/es/components/layout/Flow.js +2 -2
  200. package/es/components/layout/Grid.js +2 -2
  201. package/es/components/layout/Panel.js +2 -2
  202. package/es/components/layout/Prefix.js +3 -3
  203. package/es/components/layout/ResizablePanel.js +5 -5
  204. package/es/components/layout/Space.js +2 -2
  205. package/es/components/layout/Suffix.js +3 -3
  206. package/es/components/organisms/FileTabs/FileTabs.js +8 -8
  207. package/es/components/organisms/StatsCard/StatsCard.js +4 -4
  208. package/es/components/other/Calendar/Calendar.js +8 -8
  209. package/es/components/other/Calendar/CalendarCell.js +2 -2
  210. package/es/components/other/Calendar/CalendarGrid.js +3 -3
  211. package/es/components/other/Calendar/RangeCalendar.js +8 -8
  212. package/es/components/other/CloudLogo/CloudLogo.js +3 -3
  213. package/es/components/overlays/AlertDialog/AlertDialog.js +11 -10
  214. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +2 -2
  215. package/es/components/overlays/AlertDialog/AlertDialogZone.js +4 -4
  216. package/es/components/overlays/AlertDialog/index.js +4 -4
  217. package/es/components/overlays/AlertDialog/types.js +1 -1
  218. package/es/components/overlays/Dialog/Dialog.js +7 -7
  219. package/es/components/overlays/Dialog/DialogContainer.js +3 -3
  220. package/es/components/overlays/Dialog/DialogForm.js +8 -8
  221. package/es/components/overlays/Dialog/DialogTrigger.js +4 -4
  222. package/es/components/overlays/Dialog/context.js +1 -1
  223. package/es/components/overlays/Dialog/index.js +6 -6
  224. package/es/components/overlays/Dialog/use-dialog-container.js +4 -4
  225. package/es/components/overlays/Modal/Modal.js +5 -5
  226. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  227. package/es/components/overlays/Modal/Overlay.js +3 -3
  228. package/es/components/overlays/Modal/Popover.js +4 -4
  229. package/es/components/overlays/Modal/Tray.js +6 -6
  230. package/es/components/overlays/Modal/Underlay.js +2 -2
  231. package/es/components/overlays/Modal/index.js +7 -7
  232. package/es/components/overlays/Modal/types.js +1 -1
  233. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +5 -5
  234. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +7 -7
  235. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +36 -34
  236. package/es/components/overlays/NewNotifications/Bar/index.js +2 -2
  237. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  238. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +8 -8
  239. package/es/components/overlays/NewNotifications/Dialog/index.js +2 -2
  240. package/es/components/overlays/NewNotifications/Notification.js +4 -4
  241. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +5 -5
  242. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +4 -4
  243. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +4 -4
  244. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +3 -3
  245. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +3 -3
  246. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +4 -4
  247. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  248. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +12 -12
  249. package/es/components/overlays/NewNotifications/NotificationView/index.js +3 -3
  250. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  251. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  252. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +5 -5
  253. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +3 -3
  254. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +2 -2
  255. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +4 -4
  256. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +5 -5
  257. package/es/components/overlays/NewNotifications/NotificationsList/index.js +2 -2
  258. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  259. package/es/components/overlays/NewNotifications/hooks/index.js +6 -6
  260. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  261. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  262. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +2 -2
  263. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  264. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +3 -3
  265. package/es/components/overlays/NewNotifications/index.js +7 -7
  266. package/es/components/overlays/NewNotifications/types.js +1 -1
  267. package/es/components/overlays/Notification/Notification.js +7 -7
  268. package/es/components/overlays/OverlayWrapper.js +2 -2
  269. package/es/components/overlays/Toasts/Toast.js +4 -4
  270. package/es/components/overlays/Toasts/index.js +3 -3
  271. package/es/components/overlays/Toasts/types.js +1 -1
  272. package/es/components/overlays/Toasts/use-toasts-api.js +2 -2
  273. package/es/components/overlays/Tooltip/Tooltip.js +4 -4
  274. package/es/components/overlays/Tooltip/TooltipProvider.js +3 -3
  275. package/es/components/overlays/Tooltip/TooltipTrigger.js +6 -6
  276. package/es/components/overlays/Tooltip/context.js +1 -1
  277. package/es/components/overlays/Tooltip/index.js +4 -4
  278. package/es/components/portal/Portal.js +2 -2
  279. package/es/components/portal/PortalProvider.js +1 -1
  280. package/es/components/portal/index.js +3 -3
  281. package/es/components/portal/types.js +1 -1
  282. package/es/components/portal/usePortal.js +2 -2
  283. package/es/components/shared/InvalidIcon.js +2 -2
  284. package/es/components/shared/ValidIcon.js +2 -2
  285. package/es/components/status/LoadingAnimation/LoadingAnimation.js +58 -114
  286. package/es/components/status/LoadingAnimation/index.js +2 -2
  287. package/es/components/status/Spin/Cube.js +95 -179
  288. package/es/components/status/Spin/InternalSpinner.js +5 -5
  289. package/es/components/status/Spin/Spin.js +4 -4
  290. package/es/components/status/Spin/SpinsContainer.js +28 -30
  291. package/es/components/status/Spin/index.js +2 -2
  292. package/es/components/status/Spin/types.js +1 -1
  293. package/es/components/status/index.js +3 -3
  294. package/es/data/item-themes.js +1 -1
  295. package/es/data/themes.js +1 -1
  296. package/es/icons/AdjustmentsHorizontalIcon.js +2 -2
  297. package/es/icons/AdjustmentsIcon.js +2 -2
  298. package/es/icons/AiIcon.js +2 -2
  299. package/es/icons/AreaChartIcon.js +2 -2
  300. package/es/icons/BackwardIcon.js +2 -2
  301. package/es/icons/BarChartIcon.js +2 -2
  302. package/es/icons/BellFilledIcon.js +2 -2
  303. package/es/icons/BellIcon.js +2 -2
  304. package/es/icons/BooleanIcon.js +2 -2
  305. package/es/icons/CalendarEditIcon.js +2 -2
  306. package/es/icons/CalendarIcon.js +2 -2
  307. package/es/icons/CaretDownIcon.js +2 -2
  308. package/es/icons/CaretUpIcon.js +2 -2
  309. package/es/icons/ChartAreaStackedIcon.js +2 -2
  310. package/es/icons/ChartAreaStackedPercentageIcon.js +2 -2
  311. package/es/icons/ChartBarGroupedHorizontalIcon.js +2 -2
  312. package/es/icons/ChartBarGroupedIcon.js +2 -2
  313. package/es/icons/ChartBarHorizontalIcon.js +2 -2
  314. package/es/icons/ChartBarLineIcon.js +2 -2
  315. package/es/icons/ChartBarStackedHorizontalIcon.js +2 -2
  316. package/es/icons/ChartBarStackedIcon.js +2 -2
  317. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +2 -2
  318. package/es/icons/ChartBarStackedPercentageIcon.js +2 -2
  319. package/es/icons/ChartBoxPlot2Icon.js +2 -2
  320. package/es/icons/ChartBoxPlotIcon.js +2 -2
  321. package/es/icons/ChartBubbleIcon.js +2 -2
  322. package/es/icons/ChartDonut2Icon.js +2 -2
  323. package/es/icons/ChartFunnelIcon.js +2 -2
  324. package/es/icons/ChartHeatmapIcon.js +2 -2
  325. package/es/icons/ChartKPIIcon.js +2 -2
  326. package/es/icons/ChartPie2Icon.js +2 -2
  327. package/es/icons/ChartScatterIcon.js +2 -2
  328. package/es/icons/CheckCircleFilledIcon.js +2 -2
  329. package/es/icons/CheckCircleIcon.js +2 -2
  330. package/es/icons/CheckIcon.js +2 -2
  331. package/es/icons/CircleFilledIcon.js +2 -2
  332. package/es/icons/ClearIcon.js +2 -2
  333. package/es/icons/CloseCircleFilledIcon.js +2 -2
  334. package/es/icons/CloseCircleIcon.js +2 -2
  335. package/es/icons/CloseIcon.js +2 -2
  336. package/es/icons/CodeIcon.js +2 -2
  337. package/es/icons/ColumnTotalIcon.js +2 -2
  338. package/es/icons/CopyIcon.js +2 -2
  339. package/es/icons/CountIcon.js +2 -2
  340. package/es/icons/CubeIcon.js +2 -2
  341. package/es/icons/CubePauseIcon.js +2 -2
  342. package/es/icons/CubePlayIcon.js +2 -2
  343. package/es/icons/CurrencyDollarIcon.js +2 -2
  344. package/es/icons/DangerIcon.js +2 -2
  345. package/es/icons/DashboardIcon.js +2 -2
  346. package/es/icons/DatabaseIcon.js +2 -2
  347. package/es/icons/DecimalDecreaseIcon.js +2 -2
  348. package/es/icons/DecimalIncreaseIcon.js +2 -2
  349. package/es/icons/DirectionIcon.js +3 -3
  350. package/es/icons/DonutIcon.js +2 -2
  351. package/es/icons/DownIcon.js +2 -2
  352. package/es/icons/EditIcon.js +2 -2
  353. package/es/icons/ExclamationCircleFilledIcon.js +2 -2
  354. package/es/icons/ExclamationCircleIcon.js +2 -2
  355. package/es/icons/ExclamationIcon.js +2 -2
  356. package/es/icons/EyeIcon.js +2 -2
  357. package/es/icons/EyeInvisibleIcon.js +2 -2
  358. package/es/icons/FilterIcon.js +2 -2
  359. package/es/icons/FolderFilledIcon.js +2 -2
  360. package/es/icons/FolderIcon.js +2 -2
  361. package/es/icons/FolderOpenFilledIcon.js +2 -2
  362. package/es/icons/FolderOpenIcon.js +2 -2
  363. package/es/icons/ForwardIcon.js +2 -2
  364. package/es/icons/HierarchyIcon.js +2 -2
  365. package/es/icons/HierarchyOpenIcon.js +2 -2
  366. package/es/icons/Icon.js +2 -2
  367. package/es/icons/InfoCircleIcon.js +2 -2
  368. package/es/icons/InfoIcon.js +2 -2
  369. package/es/icons/KeyIcon.js +2 -2
  370. package/es/icons/LeftIcon.js +2 -2
  371. package/es/icons/LineChartIcon.js +2 -2
  372. package/es/icons/LoadingIcon.js +2 -2
  373. package/es/icons/LockFilledIcon.js +2 -2
  374. package/es/icons/LockIcon.js +2 -2
  375. package/es/icons/MoreIcon.js +2 -2
  376. package/es/icons/NotAllowedIcon.js +2 -2
  377. package/es/icons/Number123Icon.js +2 -2
  378. package/es/icons/NumberIcon.js +2 -2
  379. package/es/icons/PauseCircleFilledIcon.js +2 -2
  380. package/es/icons/PauseCircleIcon.js +2 -2
  381. package/es/icons/PauseIcon.js +2 -2
  382. package/es/icons/PercentageIcon.js +2 -2
  383. package/es/icons/PieChartIcon.js +2 -2
  384. package/es/icons/PlayCircleIcon.js +2 -2
  385. package/es/icons/PlayIcon.js +2 -2
  386. package/es/icons/PlusIcon.js +2 -2
  387. package/es/icons/ProgressBarIcon.js +2 -2
  388. package/es/icons/ReloadIcon.js +2 -2
  389. package/es/icons/ReportIcon.js +2 -2
  390. package/es/icons/ReturnIcon.js +2 -2
  391. package/es/icons/RightIcon.js +2 -2
  392. package/es/icons/RowTotalsIcon.js +2 -2
  393. package/es/icons/SchemeIcon.js +2 -2
  394. package/es/icons/SearchIcon.js +2 -2
  395. package/es/icons/SemanticQueryIcon.js +12 -0
  396. package/es/icons/SettingsIcon.js +2 -2
  397. package/es/icons/ShieldFilledIcon.js +2 -2
  398. package/es/icons/ShieldIcon.js +2 -2
  399. package/es/icons/SlashIcon.js +2 -2
  400. package/es/icons/SparklesIcon.js +2 -2
  401. package/es/icons/SqlIcon.js +2 -2
  402. package/es/icons/StatsIcon.js +2 -2
  403. package/es/icons/StopIcon.js +2 -2
  404. package/es/icons/StringIcon.js +2 -2
  405. package/es/icons/SubtotalsIcon.js +2 -2
  406. package/es/icons/SwitchIcon.js +2 -2
  407. package/es/icons/TableIcon.js +2 -2
  408. package/es/icons/ThumbsDownIcon.js +2 -2
  409. package/es/icons/ThumbsUpIcon.js +2 -2
  410. package/es/icons/ThunderboltCrossedIcon.js +2 -2
  411. package/es/icons/ThunderboltFilledIcon.js +2 -2
  412. package/es/icons/ThunderboltIcon.js +2 -2
  413. package/es/icons/TimeIcon.js +2 -2
  414. package/es/icons/TrashIcon.js +2 -2
  415. package/es/icons/UnlockIcon.js +2 -2
  416. package/es/icons/UpIcon.js +2 -2
  417. package/es/icons/UserGroupIcon.js +2 -2
  418. package/es/icons/UserIcon.js +2 -2
  419. package/es/icons/UserLockIcon.js +2 -2
  420. package/es/icons/ViewIcon.js +2 -2
  421. package/es/icons/WarningFilledIcon.js +2 -2
  422. package/es/icons/WarningIcon.js +2 -2
  423. package/es/icons/index.js +129 -128
  424. package/es/icons/wrap-icon.js +2 -2
  425. package/es/index.js +73 -74
  426. package/es/provider.js +4 -10
  427. package/es/providers/TrackingProvider.js +1 -1
  428. package/es/providers/navigation.types.js +1 -1
  429. package/es/providers/navigationAdapter.default.js +1 -1
  430. package/es/services/notification.js +2 -2
  431. package/es/shared/form.js +1 -1
  432. package/es/shared/index.js +2 -2
  433. package/es/stories/Form.legacy-stories.js +4 -4
  434. package/es/stories/FormFieldArgs.js +2 -2
  435. package/es/stories/SimpleLayout.stories.js +2 -2
  436. package/es/stories/Tasty.stories.js +2 -2
  437. package/es/stories/components/ConfirmDeletionDialogForm.js +2 -2
  438. package/es/stories/components/DialogFormApp.js +3 -3
  439. package/es/stories/components/StyledButton.js +19 -15
  440. package/es/stories/lists/baseProps.js +2 -2
  441. package/es/stories/playground/PlaygroundEditor.js +89 -0
  442. package/es/stories/playground/PlaygroundLayout.js +16 -0
  443. package/es/stories/playground/PlaygroundOutput.js +92 -0
  444. package/es/stories/playground/PlaygroundPreview.js +91 -0
  445. package/es/stories/playground/components/Button.js +45 -0
  446. package/es/stories/playground/components/Card.js +20 -0
  447. package/es/stories/playground/components/ScrollProgress.js +17 -0
  448. package/es/stories/playground/examples.js +158 -0
  449. package/es/tasty/chunks/cacheKey.js +98 -0
  450. package/es/tasty/chunks/definitions.js +281 -0
  451. package/es/tasty/chunks/index.js +12 -0
  452. package/es/tasty/chunks/renderChunk.js +97 -0
  453. package/es/tasty/config.js +280 -0
  454. package/es/tasty/debug.js +195 -9
  455. package/es/tasty/hooks/index.js +12 -0
  456. package/es/tasty/hooks/useGlobalStyles.js +67 -0
  457. package/es/tasty/hooks/useRawCSS.js +40 -0
  458. package/es/tasty/hooks/useStyles.js +206 -0
  459. package/es/tasty/index.js +31 -17
  460. package/es/tasty/injector/index.js +34 -90
  461. package/es/tasty/injector/injector.js +81 -299
  462. package/es/tasty/injector/sheet-manager.js +138 -3
  463. package/es/tasty/injector/types.js +1 -1
  464. package/es/tasty/keyframes/index.js +301 -0
  465. package/es/tasty/parser/classify.js +8 -6
  466. package/es/tasty/parser/const.js +1 -1
  467. package/es/tasty/parser/lru.js +1 -1
  468. package/es/tasty/parser/parser.js +18 -5
  469. package/es/tasty/parser/tokenizer.js +1 -1
  470. package/es/tasty/parser/types.js +2 -1
  471. package/es/tasty/pipeline/conditions.js +426 -0
  472. package/es/tasty/pipeline/exclusive.js +311 -0
  473. package/es/tasty/pipeline/index.js +543 -0
  474. package/es/tasty/pipeline/materialize.js +1260 -0
  475. package/es/tasty/pipeline/parseStateKey.js +592 -0
  476. package/es/tasty/pipeline/simplify.js +898 -0
  477. package/es/tasty/plugins/index.js +26 -0
  478. package/es/tasty/plugins/okhsl-plugin.js +400 -0
  479. package/es/tasty/plugins/types.js +10 -0
  480. package/es/tasty/states/index.js +523 -0
  481. package/es/tasty/static/index.js +47 -0
  482. package/es/tasty/static/tastyStatic.js +55 -0
  483. package/es/tasty/static/types.js +34 -0
  484. package/es/tasty/styles/align.js +1 -1
  485. package/es/tasty/styles/border.js +2 -2
  486. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  487. package/es/tasty/styles/color.js +3 -3
  488. package/es/tasty/styles/createStyle.js +3 -3
  489. package/es/tasty/styles/dimension.js +2 -2
  490. package/es/tasty/styles/display.js +1 -1
  491. package/es/tasty/styles/fade.js +2 -2
  492. package/es/tasty/styles/fill.js +11 -21
  493. package/es/tasty/styles/flow.js +1 -1
  494. package/es/tasty/styles/font.js +1 -1
  495. package/es/tasty/styles/fontStyle.js +1 -1
  496. package/es/tasty/styles/gap.js +2 -2
  497. package/es/tasty/styles/groupRadius.js +2 -2
  498. package/es/tasty/styles/height.js +2 -2
  499. package/es/tasty/styles/index.js +3 -3
  500. package/es/tasty/styles/inset.js +2 -2
  501. package/es/tasty/styles/justify.js +1 -1
  502. package/es/tasty/styles/list.js +1 -1
  503. package/es/tasty/styles/margin.js +76 -56
  504. package/es/tasty/styles/outline.js +2 -2
  505. package/es/tasty/styles/padding.js +76 -56
  506. package/es/tasty/styles/place.js +1 -1
  507. package/es/tasty/styles/predefined.js +28 -27
  508. package/es/tasty/styles/preset.js +2 -2
  509. package/es/tasty/styles/radius.js +5 -12
  510. package/es/tasty/styles/reset.js +3 -7
  511. package/es/tasty/styles/scrollbar.js +2 -2
  512. package/es/tasty/styles/shadow.js +2 -2
  513. package/es/tasty/styles/styledScrollbar.js +1 -1
  514. package/es/tasty/styles/transition.js +10 -3
  515. package/es/tasty/styles/types.js +1 -1
  516. package/es/tasty/styles/width.js +2 -2
  517. package/es/tasty/tasty.js +81 -122
  518. package/es/tasty/types.js +1 -1
  519. package/es/tasty/utils/cache-wrapper.js +1 -1
  520. package/es/tasty/utils/case-converter.js +1 -1
  521. package/es/tasty/utils/colors.js +1 -1
  522. package/es/tasty/utils/dotize.js +1 -1
  523. package/es/tasty/utils/filterBaseProps.js +1 -1
  524. package/es/tasty/utils/getDisplayName.js +1 -1
  525. package/es/tasty/utils/isDevEnv.js +1 -1
  526. package/es/tasty/utils/mergeStyles.js +2 -2
  527. package/es/tasty/utils/modAttrs.js +3 -3
  528. package/es/tasty/utils/processTokens.js +88 -2
  529. package/es/tasty/utils/string.js +1 -1
  530. package/es/tasty/utils/styles.js +255 -22
  531. package/es/tasty/utils/typography.js +67 -0
  532. package/es/tasty/utils/warnings.js +1 -1
  533. package/es/tasty/zero/babel.js +453 -0
  534. package/es/tasty/zero/css-writer.js +94 -0
  535. package/es/tasty/zero/extractor.js +222 -0
  536. package/es/tasty/zero/index.js +28 -0
  537. package/es/tasty/zero/next.js +102 -0
  538. package/es/tokens/base.js +64 -0
  539. package/es/tokens/colors.js +68 -0
  540. package/es/tokens/index.js +63 -0
  541. package/es/tokens/layout.js +26 -0
  542. package/es/tokens/shadows.js +27 -0
  543. package/es/tokens/sizes.js +42 -0
  544. package/es/tokens/spacing.js +22 -0
  545. package/es/tokens/typography.js +237 -0
  546. package/es/utils/ResizeSensor.js +1 -1
  547. package/es/utils/index.js +10 -10
  548. package/es/utils/modules.js +1 -1
  549. package/es/utils/promise.js +1 -1
  550. package/es/utils/raf.js +1 -1
  551. package/es/utils/random.js +1 -1
  552. package/es/utils/range.js +1 -1
  553. package/es/utils/react/RenderCache.js +1 -1
  554. package/es/utils/react/Slots.js +2 -2
  555. package/es/utils/react/chain.js +1 -1
  556. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  557. package/es/utils/react/index.js +17 -17
  558. package/es/utils/react/interactions.js +1 -1
  559. package/es/utils/react/isTextOnly.js +1 -1
  560. package/es/utils/react/mapProps.js +1 -1
  561. package/es/utils/react/mergeProps.js +4 -4
  562. package/es/utils/react/nullableValue.js +1 -1
  563. package/es/utils/react/resolveIcon.js +1 -1
  564. package/es/utils/react/sharedStore.js +2 -2
  565. package/es/utils/react/useCombinedRefs.js +1 -1
  566. package/es/utils/react/useControlledFocusVisible.js +2 -2
  567. package/es/utils/react/useEventBus.js +1 -1
  568. package/es/utils/react/useId.js +2 -2
  569. package/es/utils/react/useIsDarwin.js +1 -1
  570. package/es/utils/react/useKeySymbols.js +2 -2
  571. package/es/utils/react/useLayoutEffect.js +1 -1
  572. package/es/utils/react/useLocalStorage.js +2 -2
  573. package/es/utils/react/useQaProps.js +1 -1
  574. package/es/utils/react/useViewportSize.js +1 -1
  575. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  576. package/es/utils/tree.js +1 -1
  577. package/es/utils/warnings.js +1 -1
  578. package/es/version.js +2 -2
  579. package/package.json +14 -4
  580. package/types/components/GlobalStyles.d.ts +2 -1
  581. package/types/components/HiddenInput.d.ts +828 -826
  582. package/types/components/Root.d.ts +1 -0
  583. package/types/components/actions/Button/Button.d.ts +1649 -1645
  584. package/types/components/actions/CommandMenu/styled.d.ts +4140 -4130
  585. package/types/components/actions/ItemActionContext.d.ts +1 -1
  586. package/types/components/actions/Menu/styled.d.ts +4893 -4883
  587. package/types/components/actions/use-action.d.ts +1 -1
  588. package/types/components/content/List/SectionHeading.d.ts +251 -251
  589. package/types/components/content/Text.d.ts +1487 -1487
  590. package/types/components/fields/DatePicker/DatePickerElement.d.ts +251 -251
  591. package/types/components/fields/Select/Select.d.ts +828 -826
  592. package/types/components/fields/Slider/elements.d.ts +4968 -4956
  593. package/types/components/overlays/AlertDialog/AlertDialog.d.ts +1 -1
  594. package/types/components/status/Spin/Cube.d.ts +1 -1
  595. package/types/components/status/Spin/SpinsContainer.d.ts +6 -3
  596. package/types/icons/SemanticQueryIcon.d.ts +4 -0
  597. package/types/icons/index.d.ts +1 -0
  598. package/types/index.d.ts +1 -4
  599. package/types/provider.d.ts +1 -2
  600. package/types/stories/components/StyledButton.d.ts +1 -1
  601. package/types/stories/playground/PlaygroundEditor.d.ts +6 -0
  602. package/types/stories/playground/PlaygroundLayout.d.ts +8 -0
  603. package/types/stories/playground/PlaygroundOutput.d.ts +5 -0
  604. package/types/stories/playground/PlaygroundPreview.d.ts +6 -0
  605. package/types/stories/playground/components/Button.d.ts +11 -0
  606. package/types/stories/playground/components/Card.d.ts +7 -0
  607. package/types/stories/playground/components/ScrollProgress.d.ts +5 -0
  608. package/types/stories/playground/examples.d.ts +7 -0
  609. package/types/tasty/chunks/cacheKey.d.ts +26 -0
  610. package/types/tasty/chunks/definitions.d.ts +75 -0
  611. package/types/tasty/chunks/index.d.ts +4 -0
  612. package/types/tasty/chunks/renderChunk.d.ts +25 -0
  613. package/types/tasty/config.d.ts +171 -0
  614. package/types/tasty/debug.d.ts +35 -0
  615. package/types/tasty/hooks/index.d.ts +4 -0
  616. package/types/tasty/hooks/useGlobalStyles.d.ts +22 -0
  617. package/types/tasty/hooks/useRawCSS.d.ts +50 -0
  618. package/types/tasty/hooks/useStyles.d.ts +35 -0
  619. package/types/tasty/index.d.ts +14 -4
  620. package/types/tasty/injector/index.d.ts +30 -19
  621. package/types/tasty/injector/injector.d.ts +19 -13
  622. package/types/tasty/injector/sheet-manager.d.ts +25 -1
  623. package/types/tasty/injector/types.d.ts +23 -2
  624. package/types/tasty/keyframes/index.d.ts +49 -0
  625. package/types/tasty/parser/parser.d.ts +4 -0
  626. package/types/tasty/parser/types.d.ts +1 -0
  627. package/types/tasty/pipeline/conditions.d.ts +243 -0
  628. package/types/tasty/pipeline/exclusive.d.ts +103 -0
  629. package/types/tasty/pipeline/index.d.ts +67 -0
  630. package/types/tasty/pipeline/materialize.d.ts +162 -0
  631. package/types/tasty/pipeline/parseStateKey.d.ts +20 -0
  632. package/types/tasty/pipeline/simplify.d.ts +28 -0
  633. package/types/tasty/plugins/index.d.ts +17 -0
  634. package/types/tasty/plugins/okhsl-plugin.d.ts +45 -0
  635. package/types/tasty/plugins/types.d.ts +34 -0
  636. package/types/tasty/states/index.d.ts +101 -0
  637. package/types/tasty/static/index.d.ts +39 -0
  638. package/types/tasty/static/tastyStatic.d.ts +41 -0
  639. package/types/tasty/static/types.d.ts +44 -0
  640. package/types/tasty/styles/fill.d.ts +11 -1
  641. package/types/tasty/styles/margin.d.ts +3 -1
  642. package/types/tasty/styles/padding.d.ts +3 -1
  643. package/types/tasty/styles/radius.d.ts +2 -10
  644. package/types/tasty/styles/types.d.ts +24 -3
  645. package/types/tasty/tasty.d.ts +892 -840
  646. package/types/tasty/utils/styles.d.ts +50 -6
  647. package/types/tasty/utils/typography.d.ts +32 -0
  648. package/types/tasty/zero/babel.d.ts +63 -0
  649. package/types/tasty/zero/css-writer.d.ts +41 -0
  650. package/types/tasty/zero/extractor.d.ts +40 -0
  651. package/types/tasty/zero/index.d.ts +18 -0
  652. package/types/tasty/zero/next.d.ts +57 -0
  653. package/types/tokens/base.d.ts +8 -0
  654. package/types/tokens/colors.d.ts +6 -0
  655. package/types/tokens/index.d.ts +41 -0
  656. package/types/tokens/layout.d.ts +7 -0
  657. package/types/tokens/shadows.d.ts +12 -0
  658. package/types/tokens/sizes.d.ts +25 -0
  659. package/types/tokens/spacing.d.ts +8 -0
  660. package/types/tokens/typography.d.ts +30 -0
  661. package/es/components/navigation/LegacyTabs/LegacyTabs.js +0 -275
  662. package/es/components/other/Base64Upload/Base64Upload.js +0 -103
  663. package/es/icons/add-new-icon.js +0 -129
  664. package/es/tasty/providers/BreakpointsProvider.js +0 -16
  665. package/es/tasty/utils/getModCombinations.js +0 -38
  666. package/es/tasty/utils/renderStyles.js +0 -1050
  667. package/es/tasty/utils/responsive.js +0 -60
  668. package/es/tokens.js +0 -309
  669. package/types/components/navigation/LegacyTabs/LegacyTabs.d.ts +0 -43
  670. package/types/components/other/Base64Upload/Base64Upload.d.ts +0 -5
  671. package/types/icons/add-new-icon.d.ts +0 -2
  672. package/types/tasty/providers/BreakpointsProvider.d.ts +0 -8
  673. package/types/tasty/utils/getModCombinations.d.ts +0 -9
  674. package/types/tasty/utils/renderStyles.d.ts +0 -41
  675. package/types/tasty/utils/responsive.d.ts +0 -8
  676. package/types/tokens.d.ts +0 -221
@@ -0,0 +1,523 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ /**
9
+ * Advanced State Mapping - Predefined States Management
10
+ *
11
+ * This module handles global and local predefined states for the Tasty styling system.
12
+ * See ADVANCED_STATE_MAPPING.md for full specification.
13
+ */
14
+ import { hasStylesGenerated } from '../config.js';
15
+ import { isDevEnv } from '../utils/isDevEnv.js';
16
+ // Built-in state names that cannot be overridden
17
+ const BUILTIN_STATES = new Set(['@starting', '@keyframes', '@supports']);
18
+ // Reserved prefixes that are built-in
19
+ const RESERVED_PREFIXES = [
20
+ '@media',
21
+ '@root',
22
+ '@own',
23
+ '@(',
24
+ '@starting',
25
+ '@keyframes',
26
+ '@supports',
27
+ ];
28
+ // Global predefined states storage
29
+ let globalPredefinedStates = {};
30
+ // Warnings tracking to avoid duplicates
31
+ const emittedWarnings = new Set();
32
+ const devMode = isDevEnv();
33
+ /**
34
+ * Emit a warning only once
35
+ */
36
+ function warnOnce(key, message) {
37
+ if (devMode && !emittedWarnings.has(key)) {
38
+ emittedWarnings.add(key);
39
+ console.warn(message);
40
+ }
41
+ }
42
+ /**
43
+ * Configure global predefined states
44
+ */
45
+ export function setGlobalPredefinedStates(states) {
46
+ if (hasStylesGenerated()) {
47
+ const newStateNames = Object.keys(states).join(', ');
48
+ warnOnce(`dynamic-states:${newStateNames}`, `[Tasty] Cannot update predefined states after styles have been generated.\n` +
49
+ `The new definition(s) for ${newStateNames} will be ignored.`);
50
+ return;
51
+ }
52
+ // Validate state names
53
+ for (const [name, value] of Object.entries(states)) {
54
+ // Check for valid name format
55
+ if (!/^@[A-Za-z][A-Za-z0-9-]*$/.test(name)) {
56
+ warnOnce(`invalid-state-name:${name}`, `[Tasty] Invalid predefined state name '${name}'. Must start with '@' followed by a letter.`);
57
+ continue;
58
+ }
59
+ // Check for reserved names
60
+ if (BUILTIN_STATES.has(name)) {
61
+ warnOnce(`reserved-state:${name}`, `[Tasty] Cannot define predefined state '${name}'. This name is reserved for built-in functionality.`);
62
+ continue;
63
+ }
64
+ // Check for reserved prefixes (but only exact matches, not user-defined states like @mobile)
65
+ // Reserved prefixes are: @media, @root, @own, @(
66
+ // A user state like @mobile should NOT be blocked
67
+ const isReservedPrefix = name === '@media' ||
68
+ name === '@root' ||
69
+ name === '@own' ||
70
+ name.startsWith('@(');
71
+ if (isReservedPrefix) {
72
+ warnOnce(`reserved-prefix:${name}`, `[Tasty] Cannot define predefined state '${name}'. This prefix is reserved for built-in functionality.`);
73
+ continue;
74
+ }
75
+ // Check for cross-references
76
+ const crossRefs = extractPredefinedStateRefs(value);
77
+ if (crossRefs.length > 0) {
78
+ warnOnce(`cross-ref:${name}`, `[Tasty] Predefined state '${name}' references another predefined state '${crossRefs[0]}'.\n` +
79
+ `Predefined states cannot reference each other. Use the full definition instead.`);
80
+ continue;
81
+ }
82
+ // Check for duplicates
83
+ if (globalPredefinedStates[name] &&
84
+ globalPredefinedStates[name] !== value) {
85
+ warnOnce(`duplicate-state:${name}`, `[Tasty] Duplicate predefined state '${name}' in configure(). The last definition will be used.`);
86
+ }
87
+ globalPredefinedStates[name] = value;
88
+ }
89
+ }
90
+ /**
91
+ * Get global predefined states
92
+ */
93
+ export function getGlobalPredefinedStates() {
94
+ return globalPredefinedStates;
95
+ }
96
+ /**
97
+ * Clear global predefined states (for testing only)
98
+ */
99
+ export function clearGlobalPredefinedStates() {
100
+ globalPredefinedStates = {};
101
+ emittedWarnings.clear();
102
+ }
103
+ /**
104
+ * Regex to match predefined state references in a string
105
+ * Matches @name that is NOT followed by ( or : and is a complete word
106
+ * Uses word boundary and negative lookahead
107
+ */
108
+ const PREDEFINED_STATE_PATTERN = /@([A-Za-z][A-Za-z0-9-]*)(?![A-Za-z0-9-:(])/g;
109
+ /**
110
+ * Extract predefined state references from a string
111
+ */
112
+ export function extractPredefinedStateRefs(value) {
113
+ const matches = value.matchAll(PREDEFINED_STATE_PATTERN);
114
+ const refs = [];
115
+ for (const match of matches) {
116
+ const stateName = '@' + match[1];
117
+ // Skip built-in states (@starting) and duplicates
118
+ // Note: @media, @root, @own are always followed by '(' so the regex
119
+ // negative lookahead (?![A-Za-z0-9-:(]) already excludes them
120
+ if (!BUILTIN_STATES.has(stateName) && !refs.includes(stateName)) {
121
+ refs.push(stateName);
122
+ }
123
+ }
124
+ return refs;
125
+ }
126
+ /**
127
+ * Check if a state key is a predefined state reference
128
+ */
129
+ export function isPredefinedStateRef(stateKey) {
130
+ if (!stateKey.startsWith('@'))
131
+ return false;
132
+ if (BUILTIN_STATES.has(stateKey))
133
+ return false;
134
+ // Check if it's NOT a built-in prefix
135
+ for (const prefix of RESERVED_PREFIXES) {
136
+ if (stateKey === prefix || stateKey.startsWith(prefix)) {
137
+ // Check if it's exactly @media, @root, @own, or starts with @( or @media(
138
+ if (stateKey === '@media' ||
139
+ stateKey.startsWith('@media(') ||
140
+ stateKey.startsWith('@media:')) {
141
+ return false;
142
+ }
143
+ if (stateKey === '@root' || stateKey.startsWith('@root('))
144
+ return false;
145
+ if (stateKey === '@own' || stateKey.startsWith('@own('))
146
+ return false;
147
+ if (stateKey.startsWith('@('))
148
+ return false;
149
+ }
150
+ }
151
+ // Must match the predefined state pattern
152
+ return /^@[A-Za-z][A-Za-z0-9-]*$/.test(stateKey);
153
+ }
154
+ /**
155
+ * Extract local predefined states from a styles object
156
+ * Local predefined states are top-level keys starting with @ that have string values
157
+ * and are valid predefined state names (not built-in like @media, @root, etc.)
158
+ */
159
+ export function extractLocalPredefinedStates(styles) {
160
+ const localStates = {};
161
+ if (!styles || typeof styles !== 'object') {
162
+ return localStates;
163
+ }
164
+ for (const [key, value] of Object.entries(styles)) {
165
+ // Check if it's a predefined state definition (starts with @, has string value)
166
+ if (key.startsWith('@') && typeof value === 'string') {
167
+ // Validate name format - must be @[letter][letters/numbers/dashes]*
168
+ if (!/^@[A-Za-z][A-Za-z0-9-]*$/.test(key)) {
169
+ continue; // Skip invalid names silently (might be something else)
170
+ }
171
+ // Skip built-in states
172
+ if (BUILTIN_STATES.has(key)) {
173
+ continue;
174
+ }
175
+ // Skip reserved prefixes
176
+ if (key === '@media' ||
177
+ key === '@root' ||
178
+ key === '@own' ||
179
+ key.startsWith('@(')) {
180
+ continue;
181
+ }
182
+ // Check for cross-references (predefined states cannot reference each other)
183
+ const crossRefs = extractPredefinedStateRefs(value);
184
+ if (crossRefs.length > 0) {
185
+ warnOnce(`local-cross-ref:${key}`, `[Tasty] Predefined state '${key}' references another predefined state '${crossRefs[0]}'.\n` +
186
+ `Predefined states cannot reference each other. Use the full definition instead.`);
187
+ continue;
188
+ }
189
+ localStates[key] = value;
190
+ }
191
+ }
192
+ return localStates;
193
+ }
194
+ /**
195
+ * Create a state parser context from styles
196
+ */
197
+ export function createStateParserContext(styles, isSubElement) {
198
+ const localStates = styles ? extractLocalPredefinedStates(styles) : {};
199
+ return {
200
+ localPredefinedStates: localStates,
201
+ globalPredefinedStates: getGlobalPredefinedStates(),
202
+ isSubElement,
203
+ };
204
+ }
205
+ /**
206
+ * Resolve a predefined state reference to its value
207
+ * Returns the resolved value or null if not found
208
+ */
209
+ export function resolvePredefinedState(stateKey, ctx) {
210
+ // Check local first (higher priority)
211
+ if (ctx.localPredefinedStates[stateKey]) {
212
+ return ctx.localPredefinedStates[stateKey];
213
+ }
214
+ // Then check global
215
+ if (ctx.globalPredefinedStates[stateKey]) {
216
+ return ctx.globalPredefinedStates[stateKey];
217
+ }
218
+ // Not found - emit warning
219
+ warnOnce(`undefined-state:${stateKey}`, `[Tasty] Undefined predefined state '${stateKey}'.\n` +
220
+ `Define it in configure({ states: { '${stateKey}': '...' } }) or in the component's styles.`);
221
+ return null;
222
+ }
223
+ /**
224
+ * Normalize state key by trimming whitespace and removing trailing/leading operators
225
+ */
226
+ export function normalizeStateKey(stateKey) {
227
+ const warnings = [];
228
+ let key = stateKey;
229
+ // Check for whitespace-only
230
+ if (key.trim() === '') {
231
+ if (key !== '') {
232
+ warnings.push(`[Tasty] Whitespace-only state key normalized to default state ''.`);
233
+ }
234
+ return { key: '', warnings };
235
+ }
236
+ // Trim whitespace
237
+ key = key.trim();
238
+ // Remove trailing operators
239
+ const trailingOpMatch = key.match(/\s*[&|^]\s*$/);
240
+ if (trailingOpMatch) {
241
+ const originalKey = key;
242
+ key = key.slice(0, -trailingOpMatch[0].length).trim();
243
+ warnings.push(`[Tasty] State key '${originalKey}' has trailing operator. Normalized to '${key}'.`);
244
+ }
245
+ // Remove leading operators (except !)
246
+ const leadingOpMatch = key.match(/^\s*[&|^]\s*/);
247
+ if (leadingOpMatch) {
248
+ const originalKey = key;
249
+ key = key.slice(leadingOpMatch[0].length).trim();
250
+ warnings.push(`[Tasty] State key '${originalKey}' has leading operator. Normalized to '${key}'.`);
251
+ }
252
+ return { key, warnings };
253
+ }
254
+ /**
255
+ * Expand dimension shorthands in a condition string
256
+ * w -> width, h -> height, is -> inline-size, bs -> block-size
257
+ */
258
+ export function expandDimensionShorthands(condition) {
259
+ // Replace dimension shorthands (only when they appear as standalone words)
260
+ let result = condition;
261
+ // w -> width (but not part of other words)
262
+ result = result.replace(/\bw\b/g, 'width');
263
+ // h -> height
264
+ result = result.replace(/\bh\b/g, 'height');
265
+ // is -> inline-size
266
+ result = result.replace(/\bis\b/g, 'inline-size');
267
+ // bs -> block-size
268
+ result = result.replace(/\bbs\b/g, 'block-size');
269
+ return result;
270
+ }
271
+ /**
272
+ * Convert tasty units in a string (e.g., 40x -> calc(var(--gap) * 40))
273
+ */
274
+ export function expandTastyUnits(value) {
275
+ // Match number followed by 'x' unit (tasty gap unit)
276
+ return value.replace(/(\d+(?:\.\d+)?)\s*x\b/g, (_, num) => {
277
+ return `calc(var(--gap) * ${num})`;
278
+ });
279
+ }
280
+ /**
281
+ * Parse an advanced state key and return its type and components
282
+ */
283
+ export function parseAdvancedState(stateKey, ctx) {
284
+ const raw = stateKey;
285
+ // Check for @starting (exact match)
286
+ if (stateKey === '@starting') {
287
+ return {
288
+ type: 'starting',
289
+ condition: '',
290
+ raw,
291
+ };
292
+ }
293
+ // Check for @media:type (e.g., @media:print)
294
+ if (stateKey.startsWith('@media:')) {
295
+ const mediaType = stateKey.slice(7); // Remove '@media:'
296
+ if (!['all', 'screen', 'print', 'speech'].includes(mediaType)) {
297
+ warnOnce(`unknown-media-type:${mediaType}`, `[Tasty] Unknown media type '${mediaType}'. Valid types: all, screen, print, speech.`);
298
+ }
299
+ return {
300
+ type: 'media',
301
+ condition: '',
302
+ mediaType,
303
+ raw,
304
+ };
305
+ }
306
+ // Check for @media(...) - media query with condition
307
+ if (stateKey.startsWith('@media(')) {
308
+ const endParen = findMatchingParen(stateKey, 6);
309
+ if (endParen === -1) {
310
+ warnOnce(`unclosed-media:${stateKey}`, `[Tasty] Unclosed media query '${stateKey}'. Missing closing parenthesis.`);
311
+ return { type: 'modifier', condition: stateKey, raw };
312
+ }
313
+ let condition = stateKey.slice(7, endParen);
314
+ // Check for empty condition
315
+ if (!condition.trim()) {
316
+ warnOnce(`empty-media:${stateKey}`, `[Tasty] Empty media query condition '${stateKey}'.`);
317
+ return { type: 'modifier', condition: stateKey, raw };
318
+ }
319
+ // Expand shorthands and units
320
+ condition = expandDimensionShorthands(condition);
321
+ condition = expandTastyUnits(condition);
322
+ return {
323
+ type: 'media',
324
+ condition,
325
+ raw,
326
+ };
327
+ }
328
+ // Check for @root(...) - root state
329
+ if (stateKey.startsWith('@root(')) {
330
+ const endParen = findMatchingParen(stateKey, 5);
331
+ if (endParen === -1) {
332
+ warnOnce(`unclosed-root:${stateKey}`, `[Tasty] Unclosed root state '${stateKey}'. Missing closing parenthesis.`);
333
+ return { type: 'modifier', condition: stateKey, raw };
334
+ }
335
+ const condition = stateKey.slice(6, endParen);
336
+ if (!condition.trim()) {
337
+ warnOnce(`empty-root:${stateKey}`, `[Tasty] Empty root state condition '${stateKey}'.`);
338
+ return { type: 'modifier', condition: stateKey, raw };
339
+ }
340
+ return {
341
+ type: 'root',
342
+ condition,
343
+ raw,
344
+ };
345
+ }
346
+ // Check for @own(...) - sub-element own state
347
+ if (stateKey.startsWith('@own(')) {
348
+ const endParen = findMatchingParen(stateKey, 4);
349
+ if (endParen === -1) {
350
+ warnOnce(`unclosed-own:${stateKey}`, `[Tasty] Unclosed own state '${stateKey}'. Missing closing parenthesis.`);
351
+ return { type: 'modifier', condition: stateKey, raw };
352
+ }
353
+ const condition = stateKey.slice(5, endParen);
354
+ if (!condition.trim()) {
355
+ warnOnce(`empty-own:${stateKey}`, `[Tasty] Empty own state condition '${stateKey}'.`);
356
+ return { type: 'modifier', condition: stateKey, raw };
357
+ }
358
+ // Check if used outside sub-element context
359
+ if (!ctx.isSubElement) {
360
+ warnOnce(`own-outside-subelement:${stateKey}`, `[Tasty] @own(${condition}) used outside sub-element context.\n` +
361
+ `@own() is equivalent to '${condition}' at the root level. ` +
362
+ `Did you mean to use it inside a sub-element?`);
363
+ // Treat as regular modifier
364
+ return {
365
+ type: 'modifier',
366
+ condition,
367
+ raw,
368
+ };
369
+ }
370
+ return {
371
+ type: 'own',
372
+ condition,
373
+ raw,
374
+ };
375
+ }
376
+ // Check for @(...) - container query (unnamed or named)
377
+ if (stateKey.startsWith('@(')) {
378
+ const endParen = findMatchingParen(stateKey, 1);
379
+ if (endParen === -1) {
380
+ warnOnce(`unclosed-container:${stateKey}`, `[Tasty] Unclosed container query '${stateKey}'. Missing closing parenthesis.`);
381
+ return { type: 'modifier', condition: stateKey, raw };
382
+ }
383
+ const content = stateKey.slice(2, endParen);
384
+ if (!content.trim()) {
385
+ warnOnce(`empty-container:${stateKey}`, `[Tasty] Empty container query '${stateKey}'.`);
386
+ return { type: 'modifier', condition: stateKey, raw };
387
+ }
388
+ // Check if named container (first token is name, followed by comma)
389
+ const commaIndex = content.indexOf(',');
390
+ let containerName;
391
+ let condition;
392
+ if (commaIndex !== -1) {
393
+ // Named container: @(layout, w < 600px)
394
+ containerName = content.slice(0, commaIndex).trim();
395
+ condition = content.slice(commaIndex + 1).trim();
396
+ }
397
+ else {
398
+ // Unnamed container: @(w < 600px)
399
+ condition = content.trim();
400
+ }
401
+ // Check for style query (starts with $)
402
+ if (condition.startsWith('$')) {
403
+ // Style query: @(layout, $compact) or @(layout, $variant=compact)
404
+ const styleCondition = parseStyleQuery(condition);
405
+ if (!styleCondition) {
406
+ warnOnce(`invalid-style-query:${stateKey}`, `[Tasty] Invalid style query '${condition}' in container query.`);
407
+ return { type: 'modifier', condition: stateKey, raw };
408
+ }
409
+ condition = styleCondition;
410
+ }
411
+ else {
412
+ // Dimension query - expand shorthands and units
413
+ condition = expandDimensionShorthands(condition);
414
+ condition = expandTastyUnits(condition);
415
+ }
416
+ return {
417
+ type: 'container',
418
+ condition,
419
+ containerName,
420
+ raw,
421
+ };
422
+ }
423
+ // Check for predefined state reference
424
+ if (isPredefinedStateRef(stateKey)) {
425
+ const resolved = resolvePredefinedState(stateKey, ctx);
426
+ if (resolved) {
427
+ // Recursively parse the resolved value to extract the actual state type
428
+ // (e.g., @mobile -> @media(w < 768px) should become a media state)
429
+ const parsedResolved = parseAdvancedState(resolved, ctx);
430
+ return {
431
+ ...parsedResolved,
432
+ raw, // Keep original raw for traceability
433
+ };
434
+ }
435
+ // If not resolved, treat as modifier (will likely produce invalid CSS)
436
+ return {
437
+ type: 'modifier',
438
+ condition: stateKey,
439
+ raw,
440
+ };
441
+ }
442
+ // Regular modifier (boolean mod, pseudo-class, class, attribute)
443
+ return {
444
+ type: 'modifier',
445
+ condition: stateKey,
446
+ raw,
447
+ };
448
+ }
449
+ /**
450
+ * Parse a style query condition (e.g., $compact, $variant=compact, $variant="very compact")
451
+ */
452
+ function parseStyleQuery(condition) {
453
+ // Remove $ prefix
454
+ const query = condition.slice(1);
455
+ // Check for comparison operators (not supported)
456
+ if (/[<>]/.test(query)) {
457
+ warnOnce(`style-query-comparison:${condition}`, `[Tasty] Style queries only support equality. '${condition}' is invalid. Use '${condition.split(/[<>]/)[0]}=...' instead.`);
458
+ return null;
459
+ }
460
+ // Check for equality
461
+ const eqIndex = query.indexOf('=');
462
+ if (eqIndex === -1) {
463
+ // Just existence check: style(--compact)
464
+ return `style(--${query})`;
465
+ }
466
+ const propName = query.slice(0, eqIndex).trim();
467
+ let value = query.slice(eqIndex + 1).trim();
468
+ // Handle quoted values
469
+ if ((value.startsWith('"') && value.endsWith('"')) ||
470
+ (value.startsWith("'") && value.endsWith("'"))) {
471
+ // Keep quotes for CSS
472
+ }
473
+ else {
474
+ // Add quotes if needed
475
+ value = `"${value}"`;
476
+ }
477
+ // Expand tasty units in value
478
+ value = expandTastyUnits(value);
479
+ return `style(--${propName}: ${value})`;
480
+ }
481
+ /**
482
+ * Find matching closing parenthesis
483
+ */
484
+ function findMatchingParen(str, startIndex) {
485
+ let depth = 1;
486
+ let i = startIndex + 1;
487
+ while (i < str.length && depth > 0) {
488
+ if (str[i] === '(')
489
+ depth++;
490
+ else if (str[i] === ')')
491
+ depth--;
492
+ i++;
493
+ }
494
+ return depth === 0 ? i - 1 : -1;
495
+ }
496
+ /**
497
+ * Check if a state key is an advanced state (starts with @)
498
+ */
499
+ export function isAdvancedState(stateKey) {
500
+ return stateKey.startsWith('@') || stateKey.startsWith('!@');
501
+ }
502
+ /**
503
+ * Detect the type of advanced state from a raw state key
504
+ */
505
+ export function detectAdvancedStateType(stateKey) {
506
+ // Handle negation prefix
507
+ const key = stateKey.startsWith('!') ? stateKey.slice(1) : stateKey;
508
+ if (key === '@starting')
509
+ return 'starting';
510
+ if (key.startsWith('@media'))
511
+ return 'media';
512
+ if (key.startsWith('@root('))
513
+ return 'root';
514
+ if (key.startsWith('@own('))
515
+ return 'own';
516
+ if (key.startsWith('@('))
517
+ return 'container';
518
+ if (isPredefinedStateRef(key))
519
+ return 'predefined';
520
+ return 'modifier';
521
+ }
522
+
523
+
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ /**
9
+ * Build-time only module for zero-runtime static site generation.
10
+ *
11
+ * Usage:
12
+ * ```typescript
13
+ * import { tastyStatic } from '@cube-dev/ui-kit/tasty/static';
14
+ *
15
+ * // Returns StaticStyle object (className + styles + toString)
16
+ * const button = tastyStatic({
17
+ * fill: '#blue',
18
+ * padding: '2x',
19
+ * });
20
+ *
21
+ * // Extend existing styles
22
+ * const primaryButton = tastyStatic(button, {
23
+ * fill: '#purple',
24
+ * });
25
+ *
26
+ * // Global styles (removed at build time)
27
+ * tastyStatic('.heading', { preset: 'h1' });
28
+ *
29
+ * // Usage in JSX
30
+ * <div className={button} /> // toString() coercion
31
+ * <div className={button.className} /> // Explicit
32
+ * ```
33
+ *
34
+ * Requires the Babel plugin to be configured:
35
+ * ```javascript
36
+ * // babel.config.js
37
+ * plugins: [
38
+ * ['@cube-dev/ui-kit/tasty/zero/babel', { output: 'public/tasty.css' }]
39
+ * ]
40
+ * ```
41
+ */
42
+ export { tastyStatic } from './tastyStatic.js';
43
+ export { createStaticStyle, isStaticStyle } from './types.js';
44
+ // Re-export mergeStyles for advanced use cases
45
+ export { mergeStyles } from '../utils/mergeStyles.js';
46
+
47
+
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { mergeStyles } from '../utils/mergeStyles.js';
9
+ import { createStaticStyle, isStaticStyle } from './types.js';
10
+ /**
11
+ * Build-time only function for zero-runtime static site generation.
12
+ *
13
+ * This function is transformed by the Babel plugin:
14
+ * - `tastyStatic(styles)` → StaticStyle object with className
15
+ * - `tastyStatic(base, styles)` → StaticStyle object with merged styles
16
+ * - `tastyStatic(selector, styles)` → removed entirely
17
+ *
18
+ * At runtime (during development/build), this function returns a placeholder.
19
+ * In production, all calls are replaced/removed by the build plugin.
20
+ */
21
+ export function tastyStatic(stylesOrBaseOrSelector, styles) {
22
+ // This code only executes if the Babel plugin hasn't processed the file yet.
23
+ // In a properly configured build, this function is never called at runtime.
24
+ if (typeof stylesOrBaseOrSelector === 'string') {
25
+ // Selector mode: tastyStatic(selector, styles)
26
+ // The plugin will remove this call entirely
27
+ if (process.env.NODE_ENV !== 'production') {
28
+ console.warn(`[tasty] tastyStatic('${stylesOrBaseOrSelector}', styles) was called at runtime. ` +
29
+ 'This indicates the Babel plugin is not configured. ' +
30
+ 'Add @cube-dev/ui-kit/tasty/zero/babel to your Babel config.');
31
+ }
32
+ return; // void
33
+ }
34
+ if (isStaticStyle(stylesOrBaseOrSelector)) {
35
+ // Extension mode: tastyStatic(base, styles)
36
+ if (process.env.NODE_ENV !== 'production') {
37
+ console.warn('[tasty] tastyStatic(base, styles) was called at runtime. ' +
38
+ 'This indicates the Babel plugin is not configured. ' +
39
+ 'Add @cube-dev/ui-kit/tasty/zero/babel to your Babel config.');
40
+ }
41
+ // Merge styles for dev mode preview (won't have real classNames)
42
+ const mergedStyles = mergeStyles(stylesOrBaseOrSelector.styles, styles || {});
43
+ return createStaticStyle('__TASTY_STATIC_NOT_TRANSFORMED__', mergedStyles);
44
+ }
45
+ // Styles mode: tastyStatic(styles)
46
+ if (process.env.NODE_ENV !== 'production') {
47
+ console.warn('[tasty] tastyStatic(styles) was called at runtime. ' +
48
+ 'This indicates the Babel plugin is not configured. ' +
49
+ 'Add @cube-dev/ui-kit/tasty/zero/babel to your Babel config.');
50
+ }
51
+ // Return placeholder - styles won't be applied without the plugin
52
+ return createStaticStyle('__TASTY_STATIC_NOT_TRANSFORMED__', stylesOrBaseOrSelector);
53
+ }
54
+
55
+
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.99.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ /**
9
+ * Create a StaticStyle object.
10
+ * Used internally by the Babel plugin to generate output.
11
+ */
12
+ export function createStaticStyle(className, styles) {
13
+ return {
14
+ className,
15
+ styles,
16
+ toString() {
17
+ return this.className;
18
+ },
19
+ };
20
+ }
21
+ /**
22
+ * Type guard to check if a value is a StaticStyle object.
23
+ */
24
+ export function isStaticStyle(value) {
25
+ return (typeof value === 'object' &&
26
+ value !== null &&
27
+ 'className' in value &&
28
+ 'styles' in value &&
29
+ 'toString' in value &&
30
+ typeof value.className === 'string' &&
31
+ typeof value.styles === 'object');
32
+ }
33
+
34
+
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.98.8
4
+ * @cube-dev/ui-kit v0.99.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.98.8
4
+ * @cube-dev/ui-kit v0.99.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
- import { DIRECTIONS, filterMods, parseStyle } from '../utils/styles';
8
+ import { DIRECTIONS, filterMods, parseStyle } from '../utils/styles.js';
9
9
  const BORDER_STYLES = [
10
10
  'none',
11
11
  'hidden',
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.98.8
4
+ * @cube-dev/ui-kit v0.99.0
5
5
  * Released under the MIT license.
6
6
  */
7
7