@cube-dev/ui-kit 0.99.3 → 0.101.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 (641) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/CollectionItem.js +1 -1
  18. package/es/components/GlobalStyles.js +1 -1
  19. package/es/components/GridProvider.js +1 -1
  20. package/es/components/HiddenInput.js +1 -1
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +1 -1
  23. package/es/components/actions/Action/Action.js +1 -1
  24. package/es/components/actions/Button/Button.js +1 -1
  25. package/es/components/actions/Button/index.js +1 -1
  26. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  27. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/es/components/actions/CommandMenu/index.js +1 -1
  29. package/es/components/actions/CommandMenu/styled.js +1 -1
  30. package/es/components/actions/ItemAction/ItemAction.js +6 -3
  31. package/es/components/actions/ItemAction/index.js +1 -1
  32. package/es/components/actions/ItemActionContext.js +3 -2
  33. package/es/components/actions/ItemButton/ItemButton.js +14 -5
  34. package/es/components/actions/ItemButton/index.js +1 -1
  35. package/es/components/actions/Link/Link.js +1 -1
  36. package/es/components/actions/Menu/Menu.js +1 -1
  37. package/es/components/actions/Menu/MenuItem.js +1 -1
  38. package/es/components/actions/Menu/MenuSection.js +1 -1
  39. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  40. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  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 +1 -1
  44. package/es/components/actions/Menu/styled.js +1 -1
  45. package/es/components/actions/index.js +1 -1
  46. package/es/components/actions/use-action.js +1 -1
  47. package/es/components/actions/use-anchored-menu.js +1 -1
  48. package/es/components/actions/use-context-menu.js +1 -1
  49. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  50. package/es/components/content/Alert/Alert.js +1 -1
  51. package/es/components/content/Alert/index.js +1 -1
  52. package/es/components/content/Alert/types.js +1 -1
  53. package/es/components/content/Alert/use-alert.js +1 -1
  54. package/es/components/content/Avatar/Avatar.js +1 -1
  55. package/es/components/content/Badge/Badge.js +1 -1
  56. package/es/components/content/Card/Card.js +1 -1
  57. package/es/components/content/Content.js +1 -1
  58. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  59. package/es/components/content/CopyPasteBlock/index.js +1 -1
  60. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  61. package/es/components/content/CopySnippet/index.js +1 -1
  62. package/es/components/content/Disclosure/Disclosure.js +1 -1
  63. package/es/components/content/Disclosure/index.js +1 -1
  64. package/es/components/content/Divider.js +1 -1
  65. package/es/components/content/Footer.js +1 -1
  66. package/es/components/content/Header.js +1 -1
  67. package/es/components/content/HotKeys/HotKeys.js +1 -1
  68. package/es/components/content/HotKeys/index.js +1 -1
  69. package/es/components/content/Item/Item.js +12 -8
  70. package/es/components/content/Item/index.js +1 -1
  71. package/es/components/content/ItemBadge/ItemBadge.js +1 -1
  72. package/es/components/content/ItemBadge/index.js +1 -1
  73. package/es/components/content/Layout/GridLayout.js +1 -1
  74. package/es/components/content/Layout/Layout.js +1 -1
  75. package/es/components/content/Layout/LayoutBlock.js +1 -1
  76. package/es/components/content/Layout/LayoutCenter.js +1 -1
  77. package/es/components/content/Layout/LayoutContainer.js +1 -1
  78. package/es/components/content/Layout/LayoutContent.js +1 -1
  79. package/es/components/content/Layout/LayoutContext.js +1 -1
  80. package/es/components/content/Layout/LayoutFlex.js +1 -1
  81. package/es/components/content/Layout/LayoutFooter.js +1 -1
  82. package/es/components/content/Layout/LayoutGrid.js +1 -1
  83. package/es/components/content/Layout/LayoutHeader.js +1 -1
  84. package/es/components/content/Layout/LayoutPane.js +1 -1
  85. package/es/components/content/Layout/LayoutPanel.js +1 -1
  86. package/es/components/content/Layout/LayoutPanelHeader.js +1 -1
  87. package/es/components/content/Layout/LayoutToolbar.js +1 -1
  88. package/es/components/content/Layout/hooks/useTinyScrollbar.js +13 -1
  89. package/es/components/content/Layout/index.js +1 -1
  90. package/es/components/content/Layout/utils.js +1 -1
  91. package/es/components/content/List/SectionHeading.js +1 -1
  92. package/es/components/content/List/index.js +1 -1
  93. package/es/components/content/Paragraph.js +1 -1
  94. package/es/components/content/Placeholder/Placeholder.js +1 -1
  95. package/es/components/content/PrismCode/PrismCode.js +1 -1
  96. package/es/components/content/PrismCode/prismSetup.js +1 -1
  97. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  98. package/es/components/content/Result/Result.js +1 -1
  99. package/es/components/content/Skeleton/Skeleton.js +1 -1
  100. package/es/components/content/Tag/Tag.js +1 -1
  101. package/es/components/content/Text.js +1 -1
  102. package/es/components/content/TextItem/TextItem.js +1 -1
  103. package/es/components/content/TextItem/index.js +1 -1
  104. package/es/components/content/Title.js +1 -1
  105. package/es/components/content/highlightText.js +1 -1
  106. package/es/components/content/use-auto-tooltip.js +1 -1
  107. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  108. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  109. package/es/components/fields/Checkbox/context.js +1 -1
  110. package/es/components/fields/Checkbox/index.js +1 -1
  111. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  112. package/es/components/fields/ComboBox/index.js +1 -1
  113. package/es/components/fields/DatePicker/DateInput.js +1 -1
  114. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  115. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  116. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  117. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  118. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  119. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  120. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  121. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  122. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  123. package/es/components/fields/DatePicker/index.js +1 -1
  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 +1 -1
  130. package/es/components/fields/FilterListBox/FilterListBox.js +49 -2
  131. package/es/components/fields/FilterListBox/index.js +1 -1
  132. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  133. package/es/components/fields/FilterPicker/index.js +1 -1
  134. package/es/components/fields/Input/Input.js +1 -1
  135. package/es/components/fields/Input/index.js +1 -1
  136. package/es/components/fields/ListBox/ListBox.js +11 -4
  137. package/es/components/fields/ListBox/index.js +1 -1
  138. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  139. package/es/components/fields/NumberInput/StepButton.js +1 -1
  140. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  141. package/es/components/fields/Picker/Picker.js +1 -1
  142. package/es/components/fields/Picker/index.js +1 -1
  143. package/es/components/fields/RadioGroup/Radio.js +1 -1
  144. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  145. package/es/components/fields/RadioGroup/context.js +1 -1
  146. package/es/components/fields/RadioGroup/index.js +1 -1
  147. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  148. package/es/components/fields/SearchInput/index.js +1 -1
  149. package/es/components/fields/Select/Select.js +1 -1
  150. package/es/components/fields/Select/index.js +1 -1
  151. package/es/components/fields/Slider/Gradation.js +1 -1
  152. package/es/components/fields/Slider/Header.js +1 -1
  153. package/es/components/fields/Slider/RangeSlider.js +1 -1
  154. package/es/components/fields/Slider/Slider.js +1 -1
  155. package/es/components/fields/Slider/SliderBase.js +1 -1
  156. package/es/components/fields/Slider/SliderInput.js +1 -1
  157. package/es/components/fields/Slider/SliderThumb.js +1 -1
  158. package/es/components/fields/Slider/SliderTrack.js +1 -1
  159. package/es/components/fields/Slider/elements.js +1 -1
  160. package/es/components/fields/Slider/index.js +1 -1
  161. package/es/components/fields/Slider/types.js +1 -1
  162. package/es/components/fields/Switch/Switch.js +1 -1
  163. package/es/components/fields/Switch/index.js +1 -1
  164. package/es/components/fields/TextArea/TextArea.js +1 -1
  165. package/es/components/fields/TextArea/index.js +1 -1
  166. package/es/components/fields/TextInput/TextInput.js +1 -1
  167. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  168. package/es/components/fields/TextInput/index.js +1 -1
  169. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  170. package/es/components/fields/TextInputMapper/index.js +1 -1
  171. package/es/components/fields/index.js +1 -1
  172. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  173. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  174. package/es/components/form/FieldWrapper/index.js +1 -1
  175. package/es/components/form/FieldWrapper/types.js +1 -1
  176. package/es/components/form/Form/Field.js +1 -1
  177. package/es/components/form/Form/Form.js +1 -1
  178. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  179. package/es/components/form/Form/ResetButton/index.js +1 -1
  180. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  181. package/es/components/form/Form/SubmitButton/index.js +1 -1
  182. package/es/components/form/Form/SubmitError.js +1 -1
  183. package/es/components/form/Form/index.js +1 -1
  184. package/es/components/form/Form/types.js +1 -1
  185. package/es/components/form/Form/use-field/index.js +1 -1
  186. package/es/components/form/Form/use-field/types.js +1 -1
  187. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  188. package/es/components/form/Form/use-field/use-field.js +1 -1
  189. package/es/components/form/Form/use-form.js +1 -1
  190. package/es/components/form/Form/validation.js +1 -1
  191. package/es/components/form/Label.js +1 -1
  192. package/es/components/form/index.js +1 -1
  193. package/es/components/form/wrapper.js +1 -1
  194. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  195. package/es/components/helpers/DisplayTransition/index.js +1 -1
  196. package/es/components/helpers/IconSwitch/IconSwitch.js +1 -1
  197. package/es/components/helpers/index.js +1 -1
  198. package/es/components/layout/Flex.js +1 -1
  199. package/es/components/layout/Flow.js +1 -1
  200. package/es/components/layout/Grid.js +1 -1
  201. package/es/components/layout/Panel.js +1 -1
  202. package/es/components/layout/Prefix.js +1 -1
  203. package/es/components/layout/ResizablePanel.js +1 -1
  204. package/es/components/layout/Space.js +1 -1
  205. package/es/components/layout/Suffix.js +1 -1
  206. package/es/components/navigation/Tabs/Tabs.js +920 -0
  207. package/es/components/navigation/Tabs/index.js +10 -0
  208. package/es/components/navigation/index.js +10 -0
  209. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  210. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  211. package/es/components/other/Calendar/Calendar.js +1 -1
  212. package/es/components/other/Calendar/CalendarCell.js +1 -1
  213. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  214. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  215. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  216. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  217. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  218. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  219. package/es/components/overlays/AlertDialog/index.js +1 -1
  220. package/es/components/overlays/AlertDialog/types.js +1 -1
  221. package/es/components/overlays/Dialog/Dialog.js +1 -1
  222. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  223. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  224. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  225. package/es/components/overlays/Dialog/context.js +1 -1
  226. package/es/components/overlays/Dialog/index.js +1 -1
  227. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  228. package/es/components/overlays/Modal/Modal.js +1 -1
  229. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  230. package/es/components/overlays/Modal/Overlay.js +1 -1
  231. package/es/components/overlays/Modal/Popover.js +1 -1
  232. package/es/components/overlays/Modal/Tray.js +1 -1
  233. package/es/components/overlays/Modal/Underlay.js +1 -1
  234. package/es/components/overlays/Modal/index.js +1 -1
  235. package/es/components/overlays/Modal/types.js +1 -1
  236. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  237. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  238. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  239. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  240. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  241. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  242. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  243. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  244. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  245. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  246. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  247. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  248. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  249. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  250. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  251. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  252. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  253. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  254. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  255. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  256. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  257. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  258. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  259. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  260. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  261. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  262. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  263. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  264. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  265. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  266. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  267. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  268. package/es/components/overlays/NewNotifications/index.js +1 -1
  269. package/es/components/overlays/NewNotifications/types.js +1 -1
  270. package/es/components/overlays/Notification/Notification.js +1 -1
  271. package/es/components/overlays/OverlayWrapper.js +1 -1
  272. package/es/components/overlays/Toasts/Toast.js +1 -1
  273. package/es/components/overlays/Toasts/index.js +1 -1
  274. package/es/components/overlays/Toasts/types.js +1 -1
  275. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  276. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  277. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  278. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  279. package/es/components/overlays/Tooltip/context.js +1 -1
  280. package/es/components/overlays/Tooltip/index.js +1 -1
  281. package/es/components/portal/Portal.js +1 -1
  282. package/es/components/portal/PortalProvider.js +1 -1
  283. package/es/components/portal/index.js +1 -1
  284. package/es/components/portal/types.js +1 -1
  285. package/es/components/portal/usePortal.js +1 -1
  286. package/es/components/shared/InvalidIcon.js +1 -1
  287. package/es/components/shared/ValidIcon.js +1 -1
  288. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  289. package/es/components/status/LoadingAnimation/index.js +1 -1
  290. package/es/components/status/Spin/Cube.js +1 -1
  291. package/es/components/status/Spin/InternalSpinner.js +1 -1
  292. package/es/components/status/Spin/Spin.js +1 -1
  293. package/es/components/status/Spin/SpinsContainer.js +1 -1
  294. package/es/components/status/Spin/index.js +1 -1
  295. package/es/components/status/Spin/types.js +1 -1
  296. package/es/components/status/index.js +1 -1
  297. package/es/data/item-themes.js +10 -19
  298. package/es/data/themes.js +1 -1
  299. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  300. package/es/icons/AdjustmentsIcon.js +1 -1
  301. package/es/icons/AiIcon.js +1 -1
  302. package/es/icons/AreaChartIcon.js +1 -1
  303. package/es/icons/BackwardIcon.js +1 -1
  304. package/es/icons/BarChartIcon.js +1 -1
  305. package/es/icons/BellFilledIcon.js +1 -1
  306. package/es/icons/BellIcon.js +1 -1
  307. package/es/icons/BooleanIcon.js +1 -1
  308. package/es/icons/CalendarEditIcon.js +1 -1
  309. package/es/icons/CalendarIcon.js +1 -1
  310. package/es/icons/CaretDownIcon.js +1 -1
  311. package/es/icons/CaretUpIcon.js +1 -1
  312. package/es/icons/ChartAreaStackedIcon.js +1 -1
  313. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  314. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  315. package/es/icons/ChartBarGroupedIcon.js +1 -1
  316. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  317. package/es/icons/ChartBarLineIcon.js +1 -1
  318. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  319. package/es/icons/ChartBarStackedIcon.js +1 -1
  320. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  321. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  322. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  323. package/es/icons/ChartBoxPlotIcon.js +1 -1
  324. package/es/icons/ChartBubbleIcon.js +1 -1
  325. package/es/icons/ChartDonut2Icon.js +1 -1
  326. package/es/icons/ChartFunnelIcon.js +1 -1
  327. package/es/icons/ChartHeatmapIcon.js +1 -1
  328. package/es/icons/ChartKPIIcon.js +1 -1
  329. package/es/icons/ChartPie2Icon.js +1 -1
  330. package/es/icons/ChartScatterIcon.js +1 -1
  331. package/es/icons/CheckCircleFilledIcon.js +1 -1
  332. package/es/icons/CheckCircleIcon.js +1 -1
  333. package/es/icons/CheckIcon.js +1 -1
  334. package/es/icons/CircleFilledIcon.js +1 -1
  335. package/es/icons/ClearIcon.js +1 -1
  336. package/es/icons/CloseCircleFilledIcon.js +1 -1
  337. package/es/icons/CloseCircleIcon.js +1 -1
  338. package/es/icons/CloseIcon.js +1 -1
  339. package/es/icons/CodeIcon.js +1 -1
  340. package/es/icons/ColumnTotalIcon.js +1 -1
  341. package/es/icons/CopyIcon.js +1 -1
  342. package/es/icons/CountIcon.js +1 -1
  343. package/es/icons/CubeIcon.js +1 -1
  344. package/es/icons/CubePauseIcon.js +1 -1
  345. package/es/icons/CubePlayIcon.js +1 -1
  346. package/es/icons/CurrencyDollarIcon.js +1 -1
  347. package/es/icons/DangerIcon.js +1 -1
  348. package/es/icons/DashboardIcon.js +1 -1
  349. package/es/icons/DatabaseIcon.js +1 -1
  350. package/es/icons/DecimalDecreaseIcon.js +1 -1
  351. package/es/icons/DecimalIncreaseIcon.js +1 -1
  352. package/es/icons/DirectionIcon.js +1 -1
  353. package/es/icons/DonutIcon.js +1 -1
  354. package/es/icons/DownIcon.js +1 -1
  355. package/es/icons/EditIcon.js +1 -1
  356. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  357. package/es/icons/ExclamationCircleIcon.js +1 -1
  358. package/es/icons/ExclamationIcon.js +1 -1
  359. package/es/icons/EyeIcon.js +1 -1
  360. package/es/icons/EyeInvisibleIcon.js +1 -1
  361. package/es/icons/FilterIcon.js +1 -1
  362. package/es/icons/FolderFilledIcon.js +1 -1
  363. package/es/icons/FolderIcon.js +1 -1
  364. package/es/icons/FolderOpenFilledIcon.js +1 -1
  365. package/es/icons/FolderOpenIcon.js +1 -1
  366. package/es/icons/ForwardIcon.js +1 -1
  367. package/es/icons/HierarchyIcon.js +1 -1
  368. package/es/icons/HierarchyOpenIcon.js +1 -1
  369. package/es/icons/Icon.js +1 -1
  370. package/es/icons/InfoCircleIcon.js +1 -1
  371. package/es/icons/InfoIcon.js +1 -1
  372. package/es/icons/KeyIcon.js +1 -1
  373. package/es/icons/LeftIcon.js +1 -1
  374. package/es/icons/LineChartIcon.js +1 -1
  375. package/es/icons/LoadingIcon.js +1 -1
  376. package/es/icons/LockFilledIcon.js +1 -1
  377. package/es/icons/LockIcon.js +1 -1
  378. package/es/icons/MoreIcon.js +1 -1
  379. package/es/icons/NotAllowedIcon.js +1 -1
  380. package/es/icons/Number123Icon.js +1 -1
  381. package/es/icons/NumberIcon.js +1 -1
  382. package/es/icons/PauseCircleFilledIcon.js +1 -1
  383. package/es/icons/PauseCircleIcon.js +1 -1
  384. package/es/icons/PauseIcon.js +1 -1
  385. package/es/icons/PercentageIcon.js +1 -1
  386. package/es/icons/PieChartIcon.js +1 -1
  387. package/es/icons/PlayCircleIcon.js +1 -1
  388. package/es/icons/PlayIcon.js +1 -1
  389. package/es/icons/PlusIcon.js +1 -1
  390. package/es/icons/ProgressBarIcon.js +1 -1
  391. package/es/icons/ReloadIcon.js +1 -1
  392. package/es/icons/ReportIcon.js +1 -1
  393. package/es/icons/ReturnIcon.js +1 -1
  394. package/es/icons/RightIcon.js +1 -1
  395. package/es/icons/RowTotalsIcon.js +1 -1
  396. package/es/icons/SchemeIcon.js +1 -1
  397. package/es/icons/SearchIcon.js +1 -1
  398. package/es/icons/SemanticQueryIcon.js +1 -1
  399. package/es/icons/SettingsIcon.js +1 -1
  400. package/es/icons/ShieldFilledIcon.js +1 -1
  401. package/es/icons/ShieldIcon.js +1 -1
  402. package/es/icons/SlashIcon.js +1 -1
  403. package/es/icons/SparklesIcon.js +1 -1
  404. package/es/icons/SqlIcon.js +1 -1
  405. package/es/icons/StatsIcon.js +1 -1
  406. package/es/icons/StopIcon.js +1 -1
  407. package/es/icons/StringIcon.js +1 -1
  408. package/es/icons/SubtotalsIcon.js +1 -1
  409. package/es/icons/SwitchIcon.js +1 -1
  410. package/es/icons/TableIcon.js +1 -1
  411. package/es/icons/ThumbsDownIcon.js +1 -1
  412. package/es/icons/ThumbsUpIcon.js +1 -1
  413. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  414. package/es/icons/ThunderboltFilledIcon.js +1 -1
  415. package/es/icons/ThunderboltIcon.js +1 -1
  416. package/es/icons/TimeIcon.js +1 -1
  417. package/es/icons/TrashIcon.js +1 -1
  418. package/es/icons/UnlockIcon.js +1 -1
  419. package/es/icons/UpIcon.js +1 -1
  420. package/es/icons/UserGroupIcon.js +1 -1
  421. package/es/icons/UserIcon.js +1 -1
  422. package/es/icons/UserLockIcon.js +1 -1
  423. package/es/icons/ViewIcon.js +1 -1
  424. package/es/icons/WarningFilledIcon.js +1 -1
  425. package/es/icons/WarningIcon.js +1 -1
  426. package/es/icons/index.js +1 -1
  427. package/es/icons/wrap-icon.js +1 -1
  428. package/es/index.js +15 -1
  429. package/es/provider.js +1 -1
  430. package/es/providers/TrackingProvider.js +1 -1
  431. package/es/providers/navigation.types.js +1 -1
  432. package/es/providers/navigationAdapter.default.js +1 -1
  433. package/es/services/notification.js +1 -1
  434. package/es/shared/form.js +1 -1
  435. package/es/shared/index.js +1 -1
  436. package/es/stories/Form.legacy-stories.js +1 -1
  437. package/es/stories/FormFieldArgs.js +1 -1
  438. package/es/stories/SimpleLayout.stories.js +1 -1
  439. package/es/stories/Tasty.stories.js +1 -1
  440. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  441. package/es/stories/components/DialogFormApp.js +1 -1
  442. package/es/stories/components/StyledButton.js +1 -1
  443. package/es/stories/lists/baseProps.js +1 -1
  444. package/es/stories/playground/PlaygroundEditor.js +1 -1
  445. package/es/stories/playground/PlaygroundLayout.js +1 -1
  446. package/es/stories/playground/PlaygroundOutput.js +1 -1
  447. package/es/stories/playground/PlaygroundPreview.js +1 -1
  448. package/es/stories/playground/components/Button.js +1 -1
  449. package/es/stories/playground/components/Card.js +1 -1
  450. package/es/stories/playground/components/ScrollProgress.js +1 -1
  451. package/es/stories/playground/examples.js +1 -1
  452. package/es/tasty/chunks/cacheKey.js +1 -1
  453. package/es/tasty/chunks/definitions.js +97 -45
  454. package/es/tasty/chunks/index.js +2 -2
  455. package/es/tasty/chunks/renderChunk.js +1 -1
  456. package/es/tasty/config.js +88 -4
  457. package/es/tasty/debug.js +5 -5
  458. package/es/tasty/hooks/index.js +3 -1
  459. package/es/tasty/hooks/useGlobalStyles.js +1 -1
  460. package/es/tasty/hooks/useKeyframes.js +82 -0
  461. package/es/tasty/hooks/useProperty.js +100 -0
  462. package/es/tasty/hooks/useRawCSS.js +1 -1
  463. package/es/tasty/hooks/useStyles.js +16 -2
  464. package/es/tasty/index.js +3 -3
  465. package/es/tasty/injector/index.js +39 -1
  466. package/es/tasty/injector/injector.js +67 -16
  467. package/es/tasty/injector/sheet-manager.js +2 -2
  468. package/es/tasty/injector/types.js +1 -1
  469. package/es/tasty/keyframes/index.js +1 -1
  470. package/es/tasty/parser/classify.js +174 -4
  471. package/es/tasty/parser/const.js +3 -1
  472. package/es/tasty/parser/lru.js +1 -1
  473. package/es/tasty/parser/parser.js +51 -22
  474. package/es/tasty/parser/tokenizer.js +31 -12
  475. package/es/tasty/parser/types.js +29 -4
  476. package/es/tasty/pipeline/conditions.js +1 -1
  477. package/es/tasty/pipeline/exclusive.js +1 -1
  478. package/es/tasty/pipeline/index.js +1 -1
  479. package/es/tasty/pipeline/materialize.js +1 -1
  480. package/es/tasty/pipeline/parseStateKey.js +1 -1
  481. package/es/tasty/pipeline/simplify.js +1 -1
  482. package/es/tasty/plugins/index.js +1 -1
  483. package/es/tasty/plugins/okhsl-plugin.js +1 -1
  484. package/es/tasty/plugins/types.js +1 -1
  485. package/es/tasty/properties/index.js +211 -0
  486. package/es/tasty/states/index.js +8 -2
  487. package/es/tasty/static/index.js +1 -1
  488. package/es/tasty/static/tastyStatic.js +1 -1
  489. package/es/tasty/static/types.js +1 -1
  490. package/es/tasty/styles/align.js +1 -1
  491. package/es/tasty/styles/border.js +114 -20
  492. package/es/tasty/styles/boxShadow.combinator.js +2 -2
  493. package/es/tasty/styles/color.js +2 -2
  494. package/es/tasty/styles/createStyle.js +1 -1
  495. package/es/tasty/styles/dimension.js +100 -53
  496. package/es/tasty/styles/display.js +84 -4
  497. package/es/tasty/styles/fade.js +46 -13
  498. package/es/tasty/styles/fill.js +58 -9
  499. package/es/tasty/styles/flow.js +1 -1
  500. package/es/tasty/styles/gap.js +1 -1
  501. package/es/tasty/styles/height.js +4 -4
  502. package/es/tasty/styles/index.js +4 -3
  503. package/es/tasty/styles/inset.js +173 -23
  504. package/es/tasty/styles/justify.js +1 -1
  505. package/es/tasty/styles/list.js +2 -2
  506. package/es/tasty/styles/margin.js +1 -1
  507. package/es/tasty/styles/outline.js +48 -21
  508. package/es/tasty/styles/padding.js +1 -1
  509. package/es/tasty/styles/place.js +1 -1
  510. package/es/tasty/styles/predefined.js +245 -37
  511. package/es/tasty/styles/preset.js +140 -40
  512. package/es/tasty/styles/radius.js +2 -2
  513. package/es/tasty/styles/reset.js +1 -1
  514. package/es/tasty/styles/scrollbar.js +1 -1
  515. package/es/tasty/styles/shadow.js +2 -2
  516. package/es/tasty/styles/styledScrollbar.js +1 -1
  517. package/es/tasty/styles/transition.js +20 -2
  518. package/es/tasty/styles/types.js +1 -1
  519. package/es/tasty/styles/width.js +4 -4
  520. package/es/tasty/tasty.js +94 -113
  521. package/es/tasty/types.js +1 -1
  522. package/es/tasty/utils/cache-wrapper.js +1 -1
  523. package/es/tasty/utils/case-converter.js +1 -1
  524. package/es/tasty/utils/colors.js +1 -1
  525. package/es/tasty/utils/dotize.js +1 -1
  526. package/es/tasty/utils/filterBaseProps.js +1 -1
  527. package/es/tasty/utils/getDisplayName.js +1 -1
  528. package/es/tasty/utils/isDevEnv.js +1 -1
  529. package/es/tasty/utils/mergeStyles.js +1 -1
  530. package/es/tasty/utils/modAttrs.js +1 -1
  531. package/es/tasty/utils/processTokens.js +1 -1
  532. package/es/tasty/utils/string.js +1 -1
  533. package/es/tasty/utils/styles.js +51 -12
  534. package/es/tasty/utils/typography.js +1 -1
  535. package/es/tasty/utils/warnings.js +1 -1
  536. package/es/tasty/zero/babel.js +5 -22
  537. package/es/tasty/zero/css-writer.js +1 -1
  538. package/es/tasty/zero/extractor.js +1 -1
  539. package/es/tasty/zero/index.js +1 -1
  540. package/es/tasty/zero/next.js +1 -1
  541. package/es/tokens/base.js +5 -1
  542. package/es/tokens/colors.js +1 -1
  543. package/es/tokens/index.js +1 -1
  544. package/es/tokens/layout.js +1 -1
  545. package/es/tokens/shadows.js +1 -1
  546. package/es/tokens/sizes.js +1 -1
  547. package/es/tokens/spacing.js +1 -1
  548. package/es/tokens/typography.js +1 -1
  549. package/es/utils/ResizeSensor.js +1 -1
  550. package/es/utils/index.js +1 -1
  551. package/es/utils/modules.js +1 -1
  552. package/es/utils/promise.js +1 -1
  553. package/es/utils/raf.js +1 -1
  554. package/es/utils/random.js +1 -1
  555. package/es/utils/range.js +1 -1
  556. package/es/utils/react/RenderCache.js +1 -1
  557. package/es/utils/react/Slots.js +1 -1
  558. package/es/utils/react/chain.js +1 -1
  559. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  560. package/es/utils/react/index.js +1 -1
  561. package/es/utils/react/interactions.js +1 -1
  562. package/es/utils/react/isTextOnly.js +1 -1
  563. package/es/utils/react/mapProps.js +1 -1
  564. package/es/utils/react/mergeProps.js +1 -1
  565. package/es/utils/react/nullableValue.js +1 -1
  566. package/es/utils/react/resolveIcon.js +1 -1
  567. package/es/utils/react/sharedStore.js +1 -1
  568. package/es/utils/react/useCombinedRefs.js +1 -1
  569. package/es/utils/react/useControlledFocusVisible.js +1 -1
  570. package/es/utils/react/useEventBus.js +1 -1
  571. package/es/utils/react/useId.js +1 -1
  572. package/es/utils/react/useIsDarwin.js +1 -1
  573. package/es/utils/react/useKeySymbols.js +1 -1
  574. package/es/utils/react/useLayoutEffect.js +1 -1
  575. package/es/utils/react/useLocalStorage.js +1 -1
  576. package/es/utils/react/useQaProps.js +1 -1
  577. package/es/utils/react/useViewportSize.js +1 -1
  578. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  579. package/es/utils/tree.js +1 -1
  580. package/es/utils/warnings.js +1 -1
  581. package/es/version.js +2 -2
  582. package/package.json +1 -1
  583. package/types/components/HiddenInput.d.ts +6 -5
  584. package/types/components/actions/Button/Button.d.ts +18 -16
  585. package/types/components/actions/CommandMenu/styled.d.ts +30 -25
  586. package/types/components/actions/ItemActionContext.d.ts +3 -1
  587. package/types/components/actions/Menu/styled.d.ts +549 -541
  588. package/types/components/content/Item/Item.d.ts +7 -0
  589. package/types/components/content/Layout/hooks/useTinyScrollbar.d.ts +6 -0
  590. package/types/components/content/List/SectionHeading.d.ts +173 -172
  591. package/types/components/content/Text.d.ts +1197 -1190
  592. package/types/components/fields/DatePicker/DatePickerElement.d.ts +173 -172
  593. package/types/components/fields/Select/Select.d.ts +6 -5
  594. package/types/components/fields/Slider/elements.d.ts +36 -30
  595. package/types/components/navigation/Tabs/Tabs.d.ts +236 -0
  596. package/types/components/navigation/Tabs/index.d.ts +2 -0
  597. package/types/components/navigation/index.d.ts +2 -0
  598. package/types/index.d.ts +1 -0
  599. package/types/tasty/chunks/definitions.d.ts +63 -18
  600. package/types/tasty/chunks/index.d.ts +1 -1
  601. package/types/tasty/config.d.ts +97 -1
  602. package/types/tasty/hooks/index.d.ts +3 -0
  603. package/types/tasty/hooks/useKeyframes.d.ts +52 -0
  604. package/types/tasty/hooks/useProperty.d.ts +75 -0
  605. package/types/tasty/index.d.ts +3 -2
  606. package/types/tasty/injector/index.d.ts +57 -1
  607. package/types/tasty/injector/injector.d.ts +19 -7
  608. package/types/tasty/injector/types.d.ts +14 -2
  609. package/types/tasty/parser/const.d.ts +1 -0
  610. package/types/tasty/parser/parser.d.ts +6 -0
  611. package/types/tasty/parser/tokenizer.d.ts +1 -1
  612. package/types/tasty/parser/types.d.ts +31 -1
  613. package/types/tasty/plugins/types.d.ts +20 -1
  614. package/types/tasty/properties/index.d.ts +90 -0
  615. package/types/tasty/styles/border.d.ts +11 -3
  616. package/types/tasty/styles/boxShadow.combinator.d.ts +2 -2
  617. package/types/tasty/styles/color.d.ts +2 -2
  618. package/types/tasty/styles/dimension.d.ts +16 -1
  619. package/types/tasty/styles/display.d.ts +24 -6
  620. package/types/tasty/styles/fade.d.ts +3 -3
  621. package/types/tasty/styles/fill.d.ts +16 -6
  622. package/types/tasty/styles/height.d.ts +7 -3
  623. package/types/tasty/styles/index.d.ts +3 -1
  624. package/types/tasty/styles/inset.d.ts +35 -3
  625. package/types/tasty/styles/list.d.ts +3 -3
  626. package/types/tasty/styles/outline.d.ts +17 -11
  627. package/types/tasty/styles/predefined.d.ts +98 -1
  628. package/types/tasty/styles/preset.d.ts +23 -4
  629. package/types/tasty/styles/radius.d.ts +2 -2
  630. package/types/tasty/styles/shadow.d.ts +2 -2
  631. package/types/tasty/styles/types.d.ts +74 -22
  632. package/types/tasty/styles/width.d.ts +7 -3
  633. package/types/tasty/tasty.d.ts +6 -5
  634. package/types/tasty/utils/styles.d.ts +27 -4
  635. package/types/tasty/zero/babel.d.ts +47 -0
  636. package/es/tasty/styles/font.js +0 -23
  637. package/es/tasty/styles/fontStyle.js +0 -19
  638. package/es/tasty/styles/groupRadius.js +0 -61
  639. package/types/tasty/styles/font.d.ts +0 -9
  640. package/types/tasty/styles/fontStyle.d.ts +0 -8
  641. package/types/tasty/styles/groupRadius.d.ts +0 -11
@@ -1,16 +1,17 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  import { useInsertionEffect, useMemo, useRef } from 'react';
9
9
  import { categorizeStyleKeys, CHUNK_NAMES, generateChunkCacheKey, renderStylesForChunk, } from '../chunks/index.js';
10
10
  import { getGlobalKeyframes, hasGlobalKeyframes } from '../config.js';
11
- import { allocateClassName, inject, keyframes } from '../injector/index.js';
11
+ import { allocateClassName, inject, keyframes, property } from '../injector/index.js';
12
12
  import { extractAnimationNamesFromStyles, extractLocalKeyframes, filterUsedKeyframes, hasLocalKeyframes, mergeKeyframes, replaceAnimationNames, } from '../keyframes/index.js';
13
13
  import { renderStyles } from '../pipeline/index.js';
14
+ import { extractLocalProperties, hasLocalProperties } from '../properties/index.js';
14
15
  import { stringifyStyles } from '../utils/styles.js';
15
16
  /**
16
17
  * Check if styles contain @starting-style rules.
@@ -173,6 +174,19 @@ export function useStyles(styles) {
173
174
  nameMap = null;
174
175
  }
175
176
  }
177
+ // Register local @properties if defined (no dispose needed - properties are permanent)
178
+ // Token formats: $name → --name, #name → --name-color (with auto syntax: '<color>')
179
+ // The injector.property() handles token parsing and auto-settings internally
180
+ // Note: Global properties are injected once when styles are first generated (see markStylesGenerated)
181
+ if (currentStyles && hasLocalProperties(currentStyles)) {
182
+ const localProperties = extractLocalProperties(currentStyles);
183
+ if (localProperties) {
184
+ for (const [token, definition] of Object.entries(localProperties)) {
185
+ // Pass the token directly - injector handles parsing
186
+ property(token, definition);
187
+ }
188
+ }
189
+ }
176
190
  // Inject each chunk
177
191
  for (const chunk of processedChunks) {
178
192
  if (chunk.renderResult.rules.length > 0) {
package/es/tasty/index.js CHANGED
@@ -1,15 +1,14 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
- // Register built-in plugins at module load time
9
8
  import { configure } from './config.js';
10
9
  import { okhslPlugin } from './plugins/index.js';
11
10
  export { tasty, Element } from './tasty.js';
12
- export { useStyles, useGlobalStyles, useRawCSS } from './hooks/index.js';
11
+ export { useStyles, useGlobalStyles, useRawCSS, useProperty, useKeyframes, } from './hooks/index.js';
13
12
  // Configuration API
14
13
  export { configure, getConfig, isConfigLocked, hasStylesGenerated, resetConfig, isTestEnvironment, hasGlobalKeyframes, getGlobalKeyframes, } from './config.js';
15
14
  // Plugins
@@ -25,6 +24,7 @@ export * from './utils/filterBaseProps.js';
25
24
  export * from './utils/colors.js';
26
25
  export * from './utils/styles.js';
27
26
  export * from './utils/modAttrs.js';
27
+ export { styleHandlers } from './styles/index.js';
28
28
  export { renderStyles, isSelector } from './pipeline/index.js';
29
29
  export * from './utils/dotize.js';
30
30
  export * from './styles/list.js';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -59,6 +59,44 @@ export function getRawCSSText(options) {
59
59
  export function keyframes(steps, nameOrOptions) {
60
60
  return getGlobalInjector().keyframes(steps, nameOrOptions);
61
61
  }
62
+ /**
63
+ * Define a CSS @property custom property.
64
+ * This enables advanced features like animating custom properties.
65
+ *
66
+ * Note: @property rules are global and persistent once defined.
67
+ * Re-registering the same property name is a no-op.
68
+ *
69
+ * @param name - The custom property name (must start with --)
70
+ * @param options - Property configuration
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * // Define a color property that can be animated
75
+ * property('--my-color', {
76
+ * syntax: '<color>',
77
+ * initialValue: 'red',
78
+ * });
79
+ *
80
+ * // Define an angle property
81
+ * property('--rotation', {
82
+ * syntax: '<angle>',
83
+ * inherits: false,
84
+ * initialValue: '0deg',
85
+ * });
86
+ * ```
87
+ */
88
+ export function property(name, options) {
89
+ return getGlobalInjector().property(name, options);
90
+ }
91
+ /**
92
+ * Check if a CSS @property has already been defined
93
+ *
94
+ * @param name - The custom property name to check
95
+ * @param options - Options including root
96
+ */
97
+ export function isPropertyDefined(name, options) {
98
+ return getGlobalInjector().isPropertyDefined(name, options);
99
+ }
62
100
  /**
63
101
  * Get CSS text from all sheets (for SSR)
64
102
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -9,6 +9,8 @@
9
9
  * Style injector that works with structured style objects
10
10
  * Eliminates CSS string parsing for better performance
11
11
  */
12
+ import { getEffectiveDefinition, normalizePropertyDefinition, } from '../properties/index.js';
13
+ import { isDevEnv } from '../utils/isDevEnv.js';
12
14
  import { parseStyle } from '../utils/styles.js';
13
15
  import { SheetManager } from './sheet-manager.js';
14
16
  /**
@@ -315,56 +317,105 @@ export class StyleInjector {
315
317
  this.sheetManager.resetMetrics(registry);
316
318
  }
317
319
  /**
318
- * Define a CSS @property custom property
320
+ * Define a CSS @property custom property.
321
+ *
322
+ * Accepts tasty token syntax for the property name:
323
+ * - `$name` → defines `--name`
324
+ * - `#name` → defines `--name-color` (auto-sets syntax: '<color>', defaults initialValue: 'transparent')
325
+ * - `--name` → defines `--name` (legacy format)
326
+ *
319
327
  * Example:
320
328
  * @property --rotation { syntax: "<angle>"; inherits: false; initial-value: 45deg; }
329
+ *
321
330
  * Note: No caching or dispose — this defines a global property.
331
+ *
332
+ * If the same property is registered with different options, a warning is emitted
333
+ * but the original definition is preserved (CSS @property cannot be redefined).
322
334
  */
323
335
  property(name, options) {
324
336
  const root = options?.root || document;
325
337
  const registry = this.sheetManager.getRegistry(root);
326
- // Check if already defined to avoid duplicates
327
- if (registry.injectedProperties.has(name)) {
338
+ // Parse the token and get effective definition
339
+ // This handles $name, #name, --name formats and auto-sets syntax for colors
340
+ const userDefinition = {
341
+ syntax: options?.syntax,
342
+ inherits: options?.inherits,
343
+ initialValue: options?.initialValue,
344
+ };
345
+ const effectiveResult = getEffectiveDefinition(name, userDefinition);
346
+ if (!effectiveResult.isValid) {
347
+ if (isDevEnv()) {
348
+ console.warn(`[Tasty] property(): ${effectiveResult.error}. Got: "${name}"`);
349
+ }
350
+ return;
351
+ }
352
+ const cssName = effectiveResult.cssName;
353
+ const definition = effectiveResult.definition;
354
+ // Normalize the definition for comparison
355
+ const normalizedDef = normalizePropertyDefinition(definition);
356
+ // Check if already defined
357
+ const existingDef = registry.injectedProperties.get(cssName);
358
+ if (existingDef !== undefined) {
359
+ // Property already exists - check if definitions match
360
+ if (existingDef !== normalizedDef) {
361
+ // Different definition - warn but don't replace (CSS @property can't be redefined)
362
+ if (isDevEnv()) {
363
+ console.warn(`[Tasty] @property ${cssName} was already defined with a different declaration. ` +
364
+ `The new declaration will be ignored. ` +
365
+ `Original: ${existingDef}, New: ${normalizedDef}`);
366
+ }
367
+ }
368
+ // Either exact match or warned - skip injection
328
369
  return;
329
370
  }
330
371
  const parts = [];
331
- if (options?.syntax != null) {
332
- let syntax = String(options.syntax).trim();
372
+ if (definition.syntax != null) {
373
+ let syntax = String(definition.syntax).trim();
333
374
  if (!/^['"]/u.test(syntax))
334
375
  syntax = `"${syntax}"`;
335
376
  parts.push(`syntax: ${syntax};`);
336
377
  }
337
378
  // inherits is required by the CSS @property spec - default to true
338
- const inherits = options?.inherits ?? true;
379
+ const inherits = definition.inherits ?? true;
339
380
  parts.push(`inherits: ${inherits ? 'true' : 'false'};`);
340
- if (options?.initialValue != null) {
381
+ if (definition.initialValue != null) {
341
382
  let initialValueStr;
342
- if (typeof options.initialValue === 'number') {
343
- initialValueStr = String(options.initialValue);
383
+ if (typeof definition.initialValue === 'number') {
384
+ initialValueStr = String(definition.initialValue);
344
385
  }
345
386
  else {
346
387
  // Process via tasty parser to resolve custom units/functions
347
- initialValueStr = parseStyle(options.initialValue).output;
388
+ initialValueStr = parseStyle(definition.initialValue).output;
348
389
  }
349
390
  parts.push(`initial-value: ${initialValueStr};`);
350
391
  }
351
392
  const declarations = parts.join(' ').trim();
352
393
  const rule = {
353
- selector: `@property ${name}`,
394
+ selector: `@property ${cssName}`,
354
395
  declarations,
355
396
  };
356
397
  // Insert as a global rule; ignore returned info (no tracking/dispose)
357
398
  this.sheetManager.insertGlobalRule(registry, [rule], `property:${name}`, root);
358
- // Track that this property was injected
359
- registry.injectedProperties.add(name);
399
+ // Track that this property was injected with its normalized definition
400
+ registry.injectedProperties.set(cssName, normalizedDef);
360
401
  }
361
402
  /**
362
- * Check whether a given @property name was already injected by this injector
403
+ * Check whether a given @property name was already injected by this injector.
404
+ *
405
+ * Accepts tasty token syntax:
406
+ * - `$name` → checks `--name`
407
+ * - `#name` → checks `--name-color`
408
+ * - `--name` → checks `--name` (legacy format)
363
409
  */
364
410
  isPropertyDefined(name, options) {
365
411
  const root = options?.root || document;
366
412
  const registry = this.sheetManager.getRegistry(root);
367
- return registry.injectedProperties.has(name);
413
+ // Parse the token to get the CSS property name
414
+ const effectiveResult = getEffectiveDefinition(name, {});
415
+ if (!effectiveResult.isValid) {
416
+ return false;
417
+ }
418
+ return registry.injectedProperties.has(effectiveResult.cssName);
368
419
  }
369
420
  /**
370
421
  * Inject keyframes and return object with toString() and dispose()
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -49,7 +49,7 @@ export class SheetManager {
49
49
  keyframesCache: new Map(),
50
50
  keyframesNameToContent: new Map(),
51
51
  keyframesCounter: 0,
52
- injectedProperties: new Set(),
52
+ injectedProperties: new Map(),
53
53
  globalRules: new Map(),
54
54
  };
55
55
  this.rootRegistries.set(root, registry);
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
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.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,13 +1,38 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
- import { COLOR_FUNCS, RE_HEX, RE_NUMBER, RE_UNIT_NUM, VALUE_KEYWORDS, } from './const.js';
8
+ import { getGlobalPredefinedTokens } from '../utils/styles.js';
9
+ import { COLOR_FUNCS, RE_HEX, RE_NUMBER, RE_RAW_UNIT, RE_UNIT_NUM, VALUE_KEYWORDS, } from './const.js';
9
10
  import { StyleParser } from './parser.js';
10
11
  import { Bucket } from './types.js';
12
+ /**
13
+ * Re-parses a value through the parser until it stabilizes (no changes)
14
+ * or max iterations reached. This allows units to reference other units.
15
+ * Example: { x: '8px', y: '2x' } -> '1y' resolves to '16px'
16
+ */
17
+ function resolveUntilStable(value, opts, recurse, maxIterations = 10) {
18
+ let current = value;
19
+ for (let i = 0; i < maxIterations; i++) {
20
+ // Check if the current value contains a custom unit that needs resolution
21
+ const unitMatch = current.match(RE_UNIT_NUM);
22
+ if (!unitMatch)
23
+ break; // Not a unit number, no resolution needed
24
+ const unitName = unitMatch[1];
25
+ // Only recurse if the unit is a custom unit we know about
26
+ // Any unit not in opts.units is assumed to be a native CSS unit
27
+ if (!opts.units || !(unitName in opts.units))
28
+ break;
29
+ const result = recurse(current);
30
+ if (result.output === current)
31
+ break; // Stable
32
+ current = result.output;
33
+ }
34
+ return current;
35
+ }
11
36
  export function classify(raw, opts, recurse) {
12
37
  const token = raw.trim();
13
38
  if (!token)
@@ -47,6 +72,140 @@ export function classify(raw, opts, recurse) {
47
72
  (token.startsWith("'") && token.endsWith("'"))) {
48
73
  return { bucket: Bucket.Value, processed: token };
49
74
  }
75
+ // 0. Double prefix for literal CSS property names ($$name -> --name, ##name -> --name-color)
76
+ // Used in transitions and animations to reference the property name itself, not its value
77
+ if (token.startsWith('$$')) {
78
+ const name = token.slice(2);
79
+ if (/^[a-z_][a-z0-9-_]*$/i.test(name)) {
80
+ return { bucket: Bucket.Value, processed: `--${name}` };
81
+ }
82
+ }
83
+ if (token.startsWith('##')) {
84
+ const name = token.slice(2);
85
+ if (/^[a-z_][a-z0-9-_]*$/i.test(name)) {
86
+ return { bucket: Bucket.Value, processed: `--${name}-color` };
87
+ }
88
+ }
89
+ // 0a. Check for predefined tokens (configured via configure({ tokens: {...} }))
90
+ // Must happen before default $ and # handling to allow overriding
91
+ if (token[0] === '$' || token[0] === '#') {
92
+ const predefinedTokens = getGlobalPredefinedTokens();
93
+ if (predefinedTokens) {
94
+ // Exact match
95
+ if (token in predefinedTokens) {
96
+ const tokenValue = predefinedTokens[token];
97
+ // Lowercase the token value to match parser behavior (parser lowercases input)
98
+ return classify(tokenValue.toLowerCase(), opts, recurse);
99
+ }
100
+ // Check for color token with alpha suffix: #token.alpha
101
+ if (token[0] === '#') {
102
+ const alphaMatch = token.match(/^(#[a-z0-9-]+)\.([0-9]+)$/i);
103
+ if (alphaMatch) {
104
+ const [, baseToken, rawAlpha] = alphaMatch;
105
+ if (baseToken in predefinedTokens) {
106
+ const resolvedValue = predefinedTokens[baseToken];
107
+ // If resolved value starts with # (color token), use standard alpha syntax
108
+ if (resolvedValue.startsWith('#')) {
109
+ // Lowercase to match parser behavior
110
+ return classify(`${resolvedValue.toLowerCase()}.${rawAlpha}`, opts, recurse);
111
+ }
112
+ // For color functions like rgb(), rgba(), hsl(), hwb(), etc., inject alpha
113
+ // Includes all standard CSS color functions plus okhsl (plugin)
114
+ const funcMatch = resolvedValue.match(/^(rgba?|hsla?|hwb|oklab|oklch|lab|lch|color|okhsl|device-cmyk|gray|color-mix|color-contrast)\((.+)\)$/i);
115
+ if (funcMatch) {
116
+ const [, funcName, args] = funcMatch;
117
+ const alpha = rawAlpha === '0' ? '0' : `.${rawAlpha}`;
118
+ // Normalize function name: rgba->rgb, hsla->hsl (modern syntax doesn't need 'a' suffix)
119
+ const normalizedFunc = funcName.replace(/a$/i, '').toLowerCase();
120
+ // Normalize to modern syntax: replace top-level commas with spaces
121
+ // Preserves commas inside nested functions like min(), max(), clamp()
122
+ const normalizeArgs = (a) => {
123
+ let result = '';
124
+ let depth = 0;
125
+ for (let i = 0; i < a.length; i++) {
126
+ const c = a[i];
127
+ if (c === '(') {
128
+ depth++;
129
+ result += c;
130
+ }
131
+ else if (c === ')') {
132
+ depth = Math.max(0, depth - 1);
133
+ result += c;
134
+ }
135
+ else if (c === ',' && depth === 0) {
136
+ // Skip comma and any following whitespace at top level
137
+ while (i + 1 < a.length && /\s/.test(a[i + 1]))
138
+ i++;
139
+ result += ' ';
140
+ }
141
+ else {
142
+ result += c;
143
+ }
144
+ }
145
+ return result;
146
+ };
147
+ // Helper: find last top-level occurrence of a character (ignores parentheses)
148
+ const findLastTopLevel = (str, ch) => {
149
+ let depth = 0;
150
+ for (let i = str.length - 1; i >= 0; i--) {
151
+ const c = str[i];
152
+ if (c === ')')
153
+ depth++;
154
+ else if (c === '(')
155
+ depth = Math.max(0, depth - 1);
156
+ else if (c === ch && depth === 0)
157
+ return i;
158
+ }
159
+ return -1;
160
+ };
161
+ // Check if already has alpha:
162
+ // - Modern syntax: has `/` separator at top level (works with dynamic alpha like var()/calc())
163
+ // - Legacy syntax: function ends with 'a' (rgba, hsla) and has exactly 4 top-level comma-separated values
164
+ const slashIdx = findLastTopLevel(args, '/');
165
+ const hasModernAlpha = slashIdx !== -1;
166
+ // Count top-level commas to avoid commas inside nested functions
167
+ let topLevelCommaCount = 0;
168
+ let lastTopLevelComma = -1;
169
+ {
170
+ let depth = 0;
171
+ for (let i = 0; i < args.length; i++) {
172
+ const c = args[i];
173
+ if (c === '(')
174
+ depth++;
175
+ else if (c === ')')
176
+ depth = Math.max(0, depth - 1);
177
+ else if (c === ',' && depth === 0) {
178
+ topLevelCommaCount++;
179
+ lastTopLevelComma = i;
180
+ }
181
+ }
182
+ }
183
+ const hasLegacyAlpha = !hasModernAlpha &&
184
+ /a$/i.test(funcName) &&
185
+ topLevelCommaCount === 3;
186
+ if (hasModernAlpha || hasLegacyAlpha) {
187
+ // Strip existing alpha (numeric or dynamic) before applying suffix
188
+ const withoutAlpha = hasModernAlpha
189
+ ? args.slice(0, slashIdx).trim()
190
+ : args.slice(0, lastTopLevelComma).trim();
191
+ return {
192
+ bucket: Bucket.Color,
193
+ processed: `${normalizedFunc}(${normalizeArgs(withoutAlpha)} / ${alpha})`,
194
+ };
195
+ }
196
+ // Add alpha using modern syntax
197
+ return {
198
+ bucket: Bucket.Color,
199
+ processed: `${normalizedFunc}(${normalizeArgs(args)} / ${alpha})`,
200
+ };
201
+ }
202
+ // Fallback: try appending .alpha (may not work for all cases)
203
+ return classify(`${resolvedValue}.${rawAlpha}`, opts, recurse);
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
50
209
  // 0. Direct var(--*-color) token
51
210
  const varColorMatch = token.match(/^var\(--([a-z0-9-]+)-color\)$/);
52
211
  if (varColorMatch) {
@@ -162,8 +321,19 @@ export function classify(raw, opts, recurse) {
162
321
  const handler = opts.units && opts.units[unit];
163
322
  if (handler) {
164
323
  if (typeof handler === 'string') {
165
- // Special-case the common `x` gap mapping used by tests.
166
- const base = unit === 'x' ? 'var(--gap)' : handler;
324
+ // Check if this is a raw CSS unit (e.g., "8px", "1rem")
325
+ const rawMatch = handler.match(RE_RAW_UNIT);
326
+ if (rawMatch) {
327
+ // Raw unit: calculate directly instead of using calc()
328
+ const [, baseNum, cssUnit] = rawMatch;
329
+ const result = numericPart * parseFloat(baseNum);
330
+ const processed = `${result}${cssUnit}`;
331
+ // Re-parse to resolve any nested units (e.g., units referencing other units)
332
+ const resolved = resolveUntilStable(processed, opts, recurse);
333
+ return { bucket: Bucket.Value, processed: resolved };
334
+ }
335
+ // Non-raw handler (e.g., "var(--gap)", "calc(...)"): use calc() wrapping
336
+ const base = handler;
167
337
  if (numericPart === 1) {
168
338
  return { bucket: Bucket.Value, processed: base };
169
339
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -32,5 +32,7 @@ export const COLOR_FUNCS = new Set([
32
32
  export const RE_UNIT_NUM = /^[+-]?(?:\d*\.\d+|\d+)([a-z][a-z0-9]*)$/;
33
33
  export const RE_NUMBER = /^[+-]?(?:\d*\.\d+|\d+)$/;
34
34
  export const RE_HEX = /^(?:[0-9a-f]{3,4}|[0-9a-f]{6}(?:[0-9a-f]{2})?)$/;
35
+ // Matches raw CSS unit values like "8px", "1rem", "0.5em" - captures number and unit separately
36
+ export const RE_RAW_UNIT = /^([+-]?(?:\d*\.\d+|\d+))([a-z%]+)$/;
35
37
 
36
38
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.99.3
4
+ * @cube-dev/ui-kit v0.101.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  import { classify } from './classify.js';
9
9
  import { Lru } from './lru.js';
10
10
  import { scan } from './tokenizer.js';
11
- import { Bucket, finalizeGroup, makeEmptyDetails, } from './types.js';
11
+ import { Bucket, finalizeGroup, finalizePart, makeEmptyDetails, makeEmptyPart, } from './types.js';
12
12
  export class StyleParser {
13
13
  opts;
14
14
  cache;
@@ -27,7 +27,9 @@ export class StyleParser {
27
27
  .replace(/\/\*[^*]*\*+(?:[^/*][^*]*\*+)*\//g, '')
28
28
  .toLowerCase();
29
29
  const groups = [];
30
- let current = makeEmptyDetails();
30
+ let currentGroup = makeEmptyDetails();
31
+ let currentPart = makeEmptyPart();
32
+ let parts = [];
31
33
  const pushToken = (bucket, processed) => {
32
34
  if (!processed)
33
35
  return;
@@ -35,13 +37,13 @@ export class StyleParser {
35
37
  // background layer segments like "url(img) no-repeat center/cover" are kept
36
38
  // as a single value entry.
37
39
  const mergeIntoPrevUrl = () => {
38
- const lastIdx = current.values.length - 1;
39
- current.values[lastIdx] += ` ${processed}`;
40
- const lastAllIdx = current.all.length - 1;
41
- current.all[lastAllIdx] += ` ${processed}`;
40
+ const lastIdx = currentPart.values.length - 1;
41
+ currentPart.values[lastIdx] += ` ${processed}`;
42
+ const lastAllIdx = currentPart.all.length - 1;
43
+ currentPart.all[lastAllIdx] += ` ${processed}`;
42
44
  };
43
- const prevIsUrlValue = current.values.length > 0 &&
44
- current.values[current.values.length - 1].startsWith('url(');
45
+ const prevIsUrlValue = currentPart.values.length > 0 &&
46
+ currentPart.values[currentPart.values.length - 1].startsWith('url(');
45
47
  if (prevIsUrlValue) {
46
48
  // Extend the existing url(...) value regardless of current bucket.
47
49
  mergeIntoPrevUrl();
@@ -51,39 +53,58 @@ export class StyleParser {
51
53
  }
52
54
  switch (bucket) {
53
55
  case Bucket.Color:
54
- current.colors.push(processed);
56
+ currentPart.colors.push(processed);
55
57
  break;
56
58
  case Bucket.Value:
57
- current.values.push(processed);
59
+ currentPart.values.push(processed);
58
60
  break;
59
61
  case Bucket.Mod:
60
- current.mods.push(processed);
62
+ currentPart.mods.push(processed);
61
63
  break;
62
64
  }
63
- current.all.push(processed);
65
+ currentPart.all.push(processed);
66
+ };
67
+ const endPart = () => {
68
+ // Only add non-empty parts
69
+ if (currentPart.all.length > 0) {
70
+ finalizePart(currentPart);
71
+ parts.push(currentPart);
72
+ }
73
+ currentPart = makeEmptyPart();
64
74
  };
65
75
  const endGroup = () => {
66
- finalizeGroup(current);
67
- groups.push(current);
68
- current = makeEmptyDetails();
76
+ endPart(); // finalize last part
77
+ // Ensure at least one part exists (even if empty) for backward compat
78
+ if (parts.length === 0) {
79
+ parts.push(makeEmptyPart());
80
+ finalizePart(parts[0]);
81
+ }
82
+ finalizeGroup(currentGroup, parts);
83
+ groups.push(currentGroup);
84
+ // Reset for next group
85
+ currentGroup = makeEmptyDetails();
86
+ parts = [];
87
+ currentPart = makeEmptyPart();
69
88
  };
70
- scan(stripped, (tok, isComma, prevChar) => {
89
+ scan(stripped, (tok, isComma, isSlash, prevChar) => {
71
90
  if (tok) {
72
- // Accumulate raw token into current.input
73
- if (current.input) {
74
- current.input += ` ${tok}`;
91
+ // Accumulate raw token into currentGroup.input
92
+ if (currentGroup.input) {
93
+ currentGroup.input += ` ${tok}`;
75
94
  }
76
95
  else {
77
- current.input = tok;
96
+ currentGroup.input = tok;
78
97
  }
79
98
  const { bucket, processed } = classify(tok, this.opts, (sub) => this.process(sub));
80
99
  pushToken(bucket, processed);
81
100
  }
101
+ if (isSlash)
102
+ endPart();
82
103
  if (isComma)
83
104
  endGroup();
84
105
  });
85
106
  // push final group if not already
86
- if (current.all.length || !groups.length)
107
+ if (currentPart.all.length || parts.length || !groups.length)
87
108
  endGroup();
88
109
  const output = groups.map((g) => g.output).join(', ');
89
110
  const result = { output, groups };
@@ -106,6 +127,14 @@ export class StyleParser {
106
127
  else
107
128
  this.cache.clear();
108
129
  }
130
+ /**
131
+ * Clear the parser cache.
132
+ * Call this when external state that affects parsing results has changed
133
+ * (e.g., predefined tokens).
134
+ */
135
+ clearCache() {
136
+ this.cache.clear();
137
+ }
109
138
  /**
110
139
  * Get the current units configuration.
111
140
  */