@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
@@ -0,0 +1,236 @@
1
+ import { Key } from '@react-types/shared';
2
+ import { ReactElement, ReactNode } from 'react';
3
+ import { BaseProps, OuterStyleProps, Styles } from '../../../tasty';
4
+ import { CubeItemProps } from '../../content/Item';
5
+ /** Visual appearance type for tabs */
6
+ export type TabType = 'default' | 'file' | 'panel' | 'radio';
7
+ /** Tab size options */
8
+ export type TabSize = 'medium' | 'large';
9
+ /** Common props for panel rendering behavior */
10
+ interface PanelBehaviorProps {
11
+ /** If true, panel is rendered but hidden when not active. */
12
+ prerender?: boolean;
13
+ /** If true, once visited the panel stays in DOM. */
14
+ keepMounted?: boolean;
15
+ }
16
+ /** Common props for QA attributes */
17
+ interface QAProps {
18
+ /** QA selector attribute. */
19
+ qa?: string;
20
+ /** Additional QA value attribute. */
21
+ qaVal?: string;
22
+ }
23
+ /** Props from CubeItemProps that don't apply to Tab */
24
+ type OmittedItemProps = 'id' | 'type' | 'size' | 'theme' | 'shape' | 'icon' | 'rightIcon' | 'prefix' | 'suffix' | 'description' | 'descriptionPlacement' | 'descriptionProps' | 'tooltip' | 'defaultTooltipPlacement' | 'hotkeys' | 'keyboardShortcutProps' | 'loadingSlot' | 'isLoading' | 'labelProps' | 'labelRef' | 'level' | 'highlight' | 'highlightCaseSensitive' | 'highlightStyles' | 'variant' | 'htmlType' | 'isSelected' | 'preserveActionsSpace' | 'disableActionsFocus' | 'actions' | 'showActionsOnHover';
25
+ /** Common styling props for tabs - inherits style props from CubeItemProps */
26
+ interface TabStyleProps extends Omit<CubeItemProps, OmittedItemProps> {
27
+ /** Tab size. Large uses `t2m` preset, medium uses `t3m`. */
28
+ size?: TabSize;
29
+ /** Visual appearance type. */
30
+ type?: TabType;
31
+ /** Whether to show actions only on hover. */
32
+ showActionsOnHover?: boolean;
33
+ }
34
+ export interface CubeTabsProps extends BaseProps, OuterStyleProps, PanelBehaviorProps {
35
+ /** Controlled active tab key. When provided, component is controlled. */
36
+ activeKey?: Key;
37
+ /** Initial active tab key for uncontrolled mode. */
38
+ defaultActiveKey?: Key;
39
+ /**
40
+ * Visual appearance type for tabs.
41
+ * - `default` - Standard tabs with selection indicator below (default)
42
+ * - `file` - File-style tabs with fill highlight on selection, delimiter between tabs
43
+ * - `panel` - Panel-style tabs with border bottom highlight on selection, delimiter between tabs
44
+ * - `radio` - Radio button style for tab selection
45
+ * @default 'default'
46
+ */
47
+ type?: TabType;
48
+ /** Tab size. Large uses `t2m` preset, medium uses `t3m`. */
49
+ size?: TabSize;
50
+ /** Accessible label for the tab list. */
51
+ label?: string;
52
+ /** Content rendered before the tab list. */
53
+ prefix?: ReactNode;
54
+ /** Content rendered after the tab list. */
55
+ suffix?: ReactNode;
56
+ /** Callback when active tab changes. */
57
+ onChange?: (key: Key) => void;
58
+ /** Callback when tab delete button is clicked. Presence enables delete buttons. */
59
+ onDelete?: (key: Key) => void;
60
+ /** Callback when a tab title is changed. Enables title editing on tabs with isEditable. */
61
+ onTitleChange?: (key: Key, newTitle: string) => void;
62
+ /** Whether to show tab actions only on hover. Can be overridden per-tab. */
63
+ showActionsOnHover?: boolean;
64
+ /** Custom tasty styles for the tab bar container. */
65
+ styles?: Styles;
66
+ /** QA selector attribute. */
67
+ qa?: string;
68
+ /** Tab components or Tabs.List with Tabs.Panel. */
69
+ children?: ReactNode;
70
+ /**
71
+ * Functional content renderer for optimized lazy evaluation.
72
+ * When provided, panel content is only evaluated for the active tab,
73
+ * while inactive tabs use cached content. This prevents expensive
74
+ * re-renders of tab content on every parent render.
75
+ *
76
+ * Use with tabs that have no children for maximum optimization.
77
+ *
78
+ * @param key - The key of the tab to render content for
79
+ * @returns Panel content for the given tab
80
+ *
81
+ * @example
82
+ * ```tsx
83
+ * <Tabs
84
+ * renderPanel={(key) => {
85
+ * switch (key) {
86
+ * case 'tab1': return <ExpensiveComponent />;
87
+ * case 'tab2': return <AnotherExpensive />;
88
+ * default: return null;
89
+ * }
90
+ * }}
91
+ * >
92
+ * <Tab key="tab1" title="Tab 1" />
93
+ * <Tab key="tab2" title="Tab 2" />
94
+ * </Tabs>
95
+ * ```
96
+ */
97
+ renderPanel?: (key: Key) => ReactNode;
98
+ /**
99
+ * Cache keys for individual panels. Enables caching for specified panels.
100
+ *
101
+ * By default (without cache keys), panels re-render on every Tabs render.
102
+ * When a panel has a non-undefined cache key defined, its content is cached
103
+ * and reused until the cache key changes.
104
+ *
105
+ * **Important:**
106
+ * - Cache keys must be primitive values (string, number, boolean, null).
107
+ * - Objects/arrays will cause cache misses on every render (reference comparison).
108
+ * - Symbol tab keys are not supported for caching (use string keys instead).
109
+ * - Setting a key to `undefined` is the same as not having it (no caching).
110
+ *
111
+ * @example
112
+ * ```tsx
113
+ * // Enable caching for specific panels with their dependencies as cache keys
114
+ * <Tabs
115
+ * renderPanel={(key) => <Panel data={data[key]} />}
116
+ * panelCacheKeys={{
117
+ * tab1: data.tab1.version, // Cached, invalidates when version changes
118
+ * tab2: data.tab2.version, // Cached, invalidates when version changes
119
+ * // tab3 has no cache key - re-renders on every Tabs render
120
+ * }}
121
+ * />
122
+ * ```
123
+ */
124
+ panelCacheKeys?: Record<string | number, string | number | boolean | null | undefined>;
125
+ }
126
+ export interface CubeTabProps extends TabStyleProps, PanelBehaviorProps {
127
+ /**
128
+ * Unique identifier for the tab. Used for activeKey matching.
129
+ * Auto-injected from the React `key` prop (converted to string).
130
+ * Note: All keys are internally converted to strings for React Aria compatibility.
131
+ */
132
+ id?: string;
133
+ /** Content displayed in the tab button. */
134
+ title: ReactNode;
135
+ /** Panel content rendered when tab is active. */
136
+ children?: ReactNode;
137
+ /** Disables the tab (cannot be selected). */
138
+ isDisabled?: boolean;
139
+ /** Actions to render in the tab (e.g., icons, buttons). Rendered before delete action if tab is deletable. */
140
+ actions?: ReactNode;
141
+ /** Whether the tab title can be edited. Requires onTitleChange on Tabs or Tab. */
142
+ isEditable?: boolean;
143
+ /** Callback when this tab's title is changed. Overrides parent's onTitleChange. */
144
+ onTitleChange?: (newTitle: string) => void;
145
+ }
146
+ export interface CubeTabPanelProps extends PanelBehaviorProps, QAProps {
147
+ /**
148
+ * Panel identifier. Must match a Tab's id.
149
+ * Auto-injected from the React `key` prop (converted to string).
150
+ */
151
+ id?: string;
152
+ /** Panel content. */
153
+ children?: ReactNode;
154
+ /** Custom tasty styles for the panel container. */
155
+ styles?: Styles;
156
+ }
157
+ export interface CubeTabListProps {
158
+ /** Tab components. */
159
+ children?: ReactNode;
160
+ }
161
+ /** Ref API for programmatic control of Tabs component */
162
+ export interface CubeTabsRef {
163
+ /** The root DOM element of the Tabs component */
164
+ element: HTMLDivElement | null;
165
+ /** Start editing a tab's title by its key */
166
+ startEditing: (key: Key) => void;
167
+ /** Cancel the current editing session */
168
+ cancelEditing: () => void;
169
+ }
170
+ declare function Tab(_props: CubeTabProps): ReactElement | null;
171
+ declare namespace Tab {
172
+ var displayName: string;
173
+ }
174
+ declare function TabPanel(_props: CubeTabPanelProps): ReactElement | null;
175
+ declare namespace TabPanel {
176
+ var displayName: string;
177
+ }
178
+ declare function TabList(_props: CubeTabListProps): ReactElement | null;
179
+ declare namespace TabList {
180
+ var displayName: string;
181
+ }
182
+ /**
183
+ * Tabs component for organizing content into multiple panels.
184
+ * Built with React Aria for full accessibility support.
185
+ *
186
+ * **Note:** Tab keys are internally converted to strings for React Aria compatibility.
187
+ * When using `activeKey`, `onChange`, etc., be aware that numeric keys will be
188
+ * converted to their string equivalents.
189
+ *
190
+ * @example
191
+ * // Simple usage
192
+ * <Tabs defaultActiveKey="tab1">
193
+ * <Tab key="tab1" title="Tab 1">Content 1</Tab>
194
+ * <Tab key="tab2" title="Tab 2">Content 2</Tab>
195
+ * </Tabs>
196
+ *
197
+ * @example
198
+ * // Tabs-only (no panels)
199
+ * <Tabs activeKey={activeTab} onChange={setActiveTab}>
200
+ * <Tab key="overview" title="Overview" />
201
+ * <Tab key="settings" title="Settings" />
202
+ * </Tabs>
203
+ *
204
+ * @example
205
+ * // Explicit panels
206
+ * <Tabs defaultActiveKey="tab1">
207
+ * <Tabs.List>
208
+ * <Tab key="tab1" title="Tab 1" />
209
+ * <Tab key="tab2" title="Tab 2" />
210
+ * </Tabs.List>
211
+ * <Tabs.Panel key="tab1">Content 1</Tabs.Panel>
212
+ * <Tabs.Panel key="tab2">Content 2</Tabs.Panel>
213
+ * </Tabs>
214
+ *
215
+ * @example
216
+ * // Optimized lazy rendering with renderPanel
217
+ * <Tabs
218
+ * defaultActiveKey="tab1"
219
+ * renderPanel={(key) => {
220
+ * switch (key) {
221
+ * case 'tab1': return <ExpensiveComponent />;
222
+ * case 'tab2': return <AnotherExpensive />;
223
+ * default: return null;
224
+ * }
225
+ * }}
226
+ * >
227
+ * <Tab key="tab1" title="Tab 1" />
228
+ * <Tab key="tab2" title="Tab 2" />
229
+ * </Tabs>
230
+ */
231
+ export declare const Tabs: import("react").ForwardRefExoticComponent<CubeTabsProps & import("react").RefAttributes<CubeTabsRef>> & {
232
+ Tab: typeof Tab;
233
+ List: typeof TabList;
234
+ Panel: typeof TabPanel;
235
+ };
236
+ export { Tab, TabList, TabPanel };
@@ -0,0 +1,2 @@
1
+ export { Tabs, Tab } from './Tabs';
2
+ export type { CubeTabsProps, CubeTabsRef, CubeTabProps, CubeTabPanelProps, CubeTabListProps, } from './Tabs';
@@ -0,0 +1,2 @@
1
+ export * from './Tabs';
2
+ export type { CubeTabsProps, CubeTabProps, CubeTabPanelProps, CubeTabListProps, } from './Tabs';
package/types/index.d.ts CHANGED
@@ -98,6 +98,7 @@ export type { CubeTooltipTriggerProps } from './components/overlays/Tooltip/Tool
98
98
  export { TooltipProvider } from './components/overlays/Tooltip/TooltipProvider';
99
99
  export type { CubeTooltipProviderProps } from './components/overlays/Tooltip/TooltipProvider';
100
100
  export * from './components/content/Alert';
101
+ export * from './components/navigation';
101
102
  export { FileTabs } from './components/organisms/FileTabs/FileTabs';
102
103
  export type { CubeFileTabProps } from './components/organisms/FileTabs/FileTabs';
103
104
  export { StatsCard } from './components/organisms/StatsCard/StatsCard';
@@ -6,6 +6,37 @@
6
6
  * 2. Logical grouping - related styles grouped for better cache reuse
7
7
  *
8
8
  * See STYLE_CHUNKING_SPEC.md for detailed rationale.
9
+ *
10
+ * ============================================================================
11
+ * ⚠️ CRITICAL ARCHITECTURAL CONSTRAINT: NO CROSS-CHUNK HANDLER DEPENDENCIES
12
+ * ============================================================================
13
+ *
14
+ * Style handlers declare their dependencies via `__lookupStyles` array.
15
+ * This creates a dependency graph where handlers read multiple style props.
16
+ *
17
+ * **ALL styles in a handler's `__lookupStyles` MUST be in the SAME chunk.**
18
+ *
19
+ * Why this matters:
20
+ * 1. Each chunk computes a cache key from ONLY its own style values
21
+ * 2. If a handler reads a style from another chunk, that value isn't in the cache key
22
+ * 3. Changing the cross-chunk style won't invalidate this chunk's cache
23
+ * 4. Result: stale CSS output or incorrect cache hits
24
+ *
25
+ * Example of a violation:
26
+ * ```
27
+ * // flowStyle.__lookupStyles = ['display', 'flow']
28
+ * // If 'display' is in DISPLAY chunk and 'flow' is in LAYOUT chunk:
29
+ * // - User sets { display: 'grid', flow: 'column' }
30
+ * // - LAYOUT chunk caches CSS with flow=column, display=grid
31
+ * // - User changes to { display: 'flex', flow: 'column' }
32
+ * // - LAYOUT chunk cache key unchanged (only has 'flow')
33
+ * // - Returns stale CSS computed with display=grid!
34
+ * ```
35
+ *
36
+ * Before adding/moving styles, verify:
37
+ * 1. Find all handlers that use this style (grep for the style name in __lookupStyles)
38
+ * 2. Ensure ALL styles from each handler's __lookupStyles are in the same chunk
39
+ * ============================================================================
9
40
  */
10
41
  /**
11
42
  * Appearance chunk - visual styling with independent handlers
@@ -13,32 +44,46 @@
13
44
  export declare const APPEARANCE_CHUNK_STYLES: readonly ["fill", "color", "opacity", "border", "radius", "outline", "outlineOffset", "shadow", "fade"];
14
45
  /**
15
46
  * Font chunk - typography styles
16
- * ⚠️ presetStyle handler requires: preset, fontSize, lineHeight, letterSpacing,
17
- * textTransform, fontWeight, fontStyle, font - all MUST stay together
47
+ *
48
+ * Handler dependencies (all styles in each handler MUST stay in this chunk):
49
+ * ⚠️ presetStyle: preset, fontSize, lineHeight, letterSpacing, textTransform,
50
+ * fontWeight, fontStyle, font
18
51
  */
19
- export declare const FONT_CHUNK_STYLES: readonly ["preset", "font", "fontWeight", "fontStyle", "fontSize", "lineHeight", "letterSpacing", "textTransform", "fontFamily", "textAlign", "whiteSpace", "textDecoration", "textOverflow", "wordBreak", "wordWrap", "boldFontWeight"];
52
+ export declare const FONT_CHUNK_STYLES: readonly ["preset", "font", "fontWeight", "fontStyle", "fontSize", "lineHeight", "letterSpacing", "textTransform", "fontFamily", "textAlign", "textDecoration", "wordBreak", "wordWrap", "boldFontWeight"];
20
53
  /**
21
54
  * Dimension chunk - sizing and spacing
22
- * ⚠️ paddingStyle handler requires all padding variants together
23
- * ⚠️ marginStyle handler requires all margin variants together
55
+ *
56
+ * Handler dependencies (all styles in each handler MUST stay in this chunk):
57
+ * ⚠️ paddingStyle: padding, paddingTop/Right/Bottom/Left, paddingBlock/Inline
58
+ * ⚠️ marginStyle: margin, marginTop/Right/Bottom/Left, marginBlock/Inline
59
+ * ⚠️ widthStyle: width, minWidth, maxWidth
60
+ * ⚠️ heightStyle: height, minHeight, maxHeight
24
61
  */
25
- export declare const DIMENSION_CHUNK_STYLES: readonly ["padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "paddingBlock", "paddingInline", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "marginBlock", "marginInline", "width", "height", "minWidth", "maxWidth", "minHeight", "maxHeight", "flexBasis", "flexGrow", "flexShrink", "flex"];
62
+ export declare const DIMENSION_CHUNK_STYLES: readonly ["padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "paddingBlock", "paddingInline", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "marginBlock", "marginInline", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "flexBasis", "flexGrow", "flexShrink", "flex"];
26
63
  /**
27
- * Container chunk - display, flow, and grid layout
28
- * ⚠️ FORCED TOGETHER by transitive handler dependencies:
29
- * displayStyle(display,hide) + flowStyle(display,flow) +
30
- * gapStyle(display,flow,gap) + groupRadiusAttr(groupRadius,flow)
64
+ * Display chunk - display mode, layout flow, text overflow, and scrollbar
65
+ *
66
+ * Handler dependencies (all styles in each handler MUST stay in this chunk):
67
+ * ⚠️ displayStyle: display, hide, textOverflow, overflow, whiteSpace
68
+ * ⚠️ flowStyle: display, flow
69
+ * ⚠️ gapStyle: display, flow, gap
70
+ * ⚠️ scrollbarStyle: scrollbar, overflow
31
71
  */
32
- export declare const CONTAINER_CHUNK_STYLES: readonly ["display", "hide", "flow", "gap", "groupRadius", "placeItems", "placeContent", "alignItems", "alignContent", "justifyItems", "justifyContent", "align", "justify", "place", "columnGap", "rowGap", "gridColumns", "gridRows", "gridTemplate", "gridAreas", "gridAutoFlow", "gridAutoColumns", "gridAutoRows"];
72
+ export declare const DISPLAY_CHUNK_STYLES: readonly ["display", "hide", "textOverflow", "overflow", "whiteSpace", "flow", "gap", "scrollbar", "styledScrollbar"];
33
73
  /**
34
- * Scrollbar chunk - scrollbar and overflow
35
- * ⚠️ scrollbarStyle handler requires scrollbar ↔ overflow together
74
+ * Layout chunk - flex/grid alignment and grid templates
75
+ *
76
+ * Note: flow and gap are in DISPLAY chunk due to handler dependencies
77
+ * (flowStyle and gapStyle both require 'display' prop).
36
78
  */
37
- export declare const SCROLLBAR_CHUNK_STYLES: readonly ["scrollbar", "overflow", "styledScrollbar"];
79
+ export declare const LAYOUT_CHUNK_STYLES: readonly ["placeItems", "placeContent", "alignItems", "alignContent", "justifyItems", "justifyContent", "align", "justify", "place", "columnGap", "rowGap", "gridColumns", "gridRows", "gridTemplate", "gridAreas", "gridAutoFlow", "gridAutoColumns", "gridAutoRows"];
38
80
  /**
39
- * Position chunk - element positioning (all independent handlers)
81
+ * Position chunk - element positioning
82
+ *
83
+ * Handler dependencies (all styles in each handler MUST stay in this chunk):
84
+ * ⚠️ insetStyle: inset, insetBlock, insetInline, top, right, bottom, left
40
85
  */
41
- export declare const POSITION_CHUNK_STYLES: readonly ["position", "inset", "top", "right", "bottom", "left", "zIndex", "gridArea", "gridColumn", "gridRow", "order", "placeSelf", "alignSelf", "justifySelf", "transform", "transition", "animation"];
86
+ export declare const POSITION_CHUNK_STYLES: readonly ["position", "inset", "insetBlock", "insetInline", "top", "right", "bottom", "left", "zIndex", "gridArea", "gridColumn", "gridRow", "order", "placeSelf", "alignSelf", "justifySelf", "transform", "transition", "animation"];
42
87
  export declare const CHUNK_NAMES: {
43
88
  /** Special chunk for styles that cannot be split (e.g., @starting-style) */
44
89
  readonly COMBINED: "combined";
@@ -46,8 +91,8 @@ export declare const CHUNK_NAMES: {
46
91
  readonly APPEARANCE: "appearance";
47
92
  readonly FONT: "font";
48
93
  readonly DIMENSION: "dimension";
49
- readonly CONTAINER: "container";
50
- readonly SCROLLBAR: "scrollbar";
94
+ readonly DISPLAY: "display";
95
+ readonly LAYOUT: "layout";
51
96
  readonly POSITION: "position";
52
97
  readonly MISC: "misc";
53
98
  };
@@ -1,4 +1,4 @@
1
- export { APPEARANCE_CHUNK_STYLES, FONT_CHUNK_STYLES, DIMENSION_CHUNK_STYLES, CONTAINER_CHUNK_STYLES, SCROLLBAR_CHUNK_STYLES, POSITION_CHUNK_STYLES, CHUNK_NAMES, STYLE_TO_CHUNK, categorizeStyleKeys, } from './definitions';
1
+ export { APPEARANCE_CHUNK_STYLES, FONT_CHUNK_STYLES, DIMENSION_CHUNK_STYLES, DISPLAY_CHUNK_STYLES, LAYOUT_CHUNK_STYLES, POSITION_CHUNK_STYLES, CHUNK_NAMES, STYLE_TO_CHUNK, categorizeStyleKeys, } from './definitions';
2
2
  export type { ChunkName, ChunkInfo } from './definitions';
3
3
  export { generateChunkCacheKey } from './cacheKey';
4
4
  export { renderStylesForChunk } from './renderChunk';
@@ -10,9 +10,10 @@
10
10
  * After the first `inject()` call, configuration is locked and attempts to
11
11
  * reconfigure will emit a warning and be ignored.
12
12
  */
13
- import type { KeyframesSteps } from './injector/types';
13
+ import type { KeyframesSteps, PropertyDefinition } from './injector/types';
14
14
  import type { StyleDetails, UnitHandler } from './parser/types';
15
15
  import type { TastyPlugin } from './plugins/types';
16
+ import type { StyleHandlerDefinition } from './utils/styles';
16
17
  /**
17
18
  * Configuration options for the Tasty style system
18
19
  */
@@ -93,6 +94,90 @@ export interface TastyConfig {
93
94
  * ```
94
95
  */
95
96
  keyframes?: Record<string, KeyframesSteps>;
97
+ /**
98
+ * Global CSS @property definitions for custom properties.
99
+ * Keys use tasty token syntax ($name for properties, #name for colors).
100
+ * Properties are only injected when the component using them is rendered.
101
+ *
102
+ * For color tokens (#name), `syntax: '<color>'` is auto-set and
103
+ * `initialValue` defaults to `'transparent'` if not specified.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * configure({
108
+ * properties: {
109
+ * '$rotation': { syntax: '<angle>', initialValue: '0deg' },
110
+ * '$scale': { syntax: '<number>', inherits: false, initialValue: 1 },
111
+ * '#accent': { initialValue: 'purple' }, // syntax: '<color>' auto-set
112
+ * },
113
+ * });
114
+ *
115
+ * // Now use in styles - properties are registered when component renders:
116
+ * const Spinner = tasty({
117
+ * styles: {
118
+ * transform: 'rotate($rotation)',
119
+ * transition: '$$rotation 0.3s', // outputs: --rotation 0.3s
120
+ * },
121
+ * });
122
+ * ```
123
+ */
124
+ properties?: Record<string, PropertyDefinition>;
125
+ /**
126
+ * Custom style handlers that transform style properties into CSS declarations.
127
+ * Handlers replace built-in handlers for the same style name.
128
+ * @example
129
+ * ```ts
130
+ * import { styleHandlers } from '@cube-dev/ui-kit';
131
+ *
132
+ * configure({
133
+ * handlers: {
134
+ * // Override fill with custom behavior
135
+ * fill: ({ fill }) => {
136
+ * if (fill?.startsWith('gradient:')) {
137
+ * return { background: fill.slice(9) };
138
+ * }
139
+ * return styleHandlers.fill({ fill });
140
+ * },
141
+ * // Add new custom style
142
+ * elevation: ({ elevation }) => {
143
+ * const level = parseInt(elevation) || 1;
144
+ * return {
145
+ * 'box-shadow': `0 ${level * 2}px ${level * 4}px rgba(0,0,0,0.1)`,
146
+ * 'z-index': String(level * 100),
147
+ * };
148
+ * },
149
+ * },
150
+ * });
151
+ * ```
152
+ */
153
+ handlers?: Record<string, StyleHandlerDefinition>;
154
+ /**
155
+ * Predefined tokens that are replaced during style parsing.
156
+ * Token values are processed through the parser (like component tokens).
157
+ * Use `$name` for custom properties and `#name` for color tokens.
158
+ * @example
159
+ * ```ts
160
+ * configure({
161
+ * tokens: {
162
+ * $spacing: '2x',
163
+ * '$card-padding': '4x',
164
+ * '#accent': '#purple',
165
+ * '#surface': '#white',
166
+ * },
167
+ * });
168
+ *
169
+ * // Now use in styles - tokens are replaced at parse time:
170
+ * const Card = tasty({
171
+ * styles: {
172
+ * padding: '$card-padding', // → calc(4 * var(--gap))
173
+ * fill: '#surface', // → var(--white-color)
174
+ * },
175
+ * });
176
+ * ```
177
+ */
178
+ tokens?: {
179
+ [key: `$${string}` | `#${string}`]: string | number;
180
+ };
96
181
  }
97
182
  declare const GLOBAL_INJECTOR_KEY = "__TASTY_GLOBAL_INJECTOR__";
98
183
  declare global {
@@ -107,6 +192,7 @@ export declare function isTestEnvironment(): boolean;
107
192
  /**
108
193
  * Mark that styles have been generated (called by injector on first inject)
109
194
  * This locks the configuration - no further changes allowed.
195
+ * Also injects any global properties that were configured.
110
196
  */
111
197
  export declare function markStylesGenerated(): void;
112
198
  /**
@@ -127,6 +213,16 @@ export declare function hasGlobalKeyframes(): boolean;
127
213
  * Returns null if no keyframes configured (fast path for zero-overhead).
128
214
  */
129
215
  export declare function getGlobalKeyframes(): Record<string, KeyframesSteps> | null;
216
+ /**
217
+ * Check if any global properties are configured.
218
+ * Fast path: returns false if no properties were ever set.
219
+ */
220
+ export declare function hasGlobalProperties(): boolean;
221
+ /**
222
+ * Get global properties configuration.
223
+ * Returns null if no properties configured (fast path for zero-overhead).
224
+ */
225
+ export declare function getGlobalProperties(): Record<string, PropertyDefinition> | null;
130
226
  /**
131
227
  * Check if configuration is locked (styles have been generated)
132
228
  */
@@ -2,3 +2,6 @@ export { useStyles } from './useStyles';
2
2
  export type { UseStylesOptions, UseStylesResult } from './useStyles';
3
3
  export { useGlobalStyles } from './useGlobalStyles';
4
4
  export { useRawCSS } from './useRawCSS';
5
+ export { useKeyframes } from './useKeyframes';
6
+ export { useProperty } from './useProperty';
7
+ export type { UsePropertyOptions } from './useProperty';
@@ -0,0 +1,52 @@
1
+ import { KeyframesSteps } from '../injector/types';
2
+ type UseKeyframesOptions = {
3
+ name?: string;
4
+ root?: Document | ShadowRoot;
5
+ };
6
+ /**
7
+ * Hook to inject CSS @keyframes and return the generated animation name.
8
+ * Handles keyframes injection with proper cleanup on unmount or dependency changes.
9
+ *
10
+ * @example Basic usage - steps object is the dependency
11
+ * ```tsx
12
+ * function MyComponent() {
13
+ * const bounce = useKeyframes({
14
+ * '0%': { transform: 'scale(1)' },
15
+ * '50%': { transform: 'scale(1.1)' },
16
+ * '100%': { transform: 'scale(1)' },
17
+ * });
18
+ *
19
+ * return <div style={{ animation: `${bounce} 1s infinite` }}>Bouncing</div>;
20
+ * }
21
+ * ```
22
+ *
23
+ * @example With custom name
24
+ * ```tsx
25
+ * function MyComponent() {
26
+ * const fadeIn = useKeyframes(
27
+ * { from: { opacity: 0 }, to: { opacity: 1 } },
28
+ * { name: 'fadeIn' }
29
+ * );
30
+ *
31
+ * return <div style={{ animation: `${fadeIn} 0.3s ease-out` }}>Fading in</div>;
32
+ * }
33
+ * ```
34
+ *
35
+ * @example Factory function with dependencies
36
+ * ```tsx
37
+ * function MyComponent({ scale }: { scale: number }) {
38
+ * const pulse = useKeyframes(
39
+ * () => ({
40
+ * '0%': { transform: 'scale(1)' },
41
+ * '100%': { transform: `scale(${scale})` },
42
+ * }),
43
+ * [scale]
44
+ * );
45
+ *
46
+ * return <div style={{ animation: `${pulse} 1s infinite` }}>Pulsing</div>;
47
+ * }
48
+ * ```
49
+ */
50
+ export declare function useKeyframes(steps: KeyframesSteps, options?: UseKeyframesOptions): string;
51
+ export declare function useKeyframes(factory: () => KeyframesSteps, deps: readonly unknown[], options?: UseKeyframesOptions): string;
52
+ export {};
@@ -0,0 +1,75 @@
1
+ export interface UsePropertyOptions {
2
+ /**
3
+ * CSS syntax string for the property (e.g., '<color>', '<length>', '<angle>').
4
+ * For color tokens (#name), this is auto-set to '<color>' and cannot be overridden.
5
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@property/syntax
6
+ */
7
+ syntax?: string;
8
+ /**
9
+ * Whether the property inherits from parent elements
10
+ * @default true
11
+ */
12
+ inherits?: boolean;
13
+ /**
14
+ * Initial value for the property.
15
+ * For color tokens (#name), this defaults to 'transparent' if not specified.
16
+ */
17
+ initialValue?: string | number;
18
+ /**
19
+ * Shadow root or document to inject into
20
+ */
21
+ root?: Document | ShadowRoot;
22
+ }
23
+ /**
24
+ * Hook to register a CSS @property custom property.
25
+ * This enables advanced features like animating custom properties.
26
+ *
27
+ * Note: @property rules are global and persistent once defined.
28
+ * The hook ensures the property is only registered once per root.
29
+ *
30
+ * Accepts tasty token syntax for the property name:
31
+ * - `$name` → defines `--name`
32
+ * - `#name` → defines `--name-color` (auto-sets syntax: '<color>', defaults initialValue: 'transparent')
33
+ * - `--name` → defines `--name` (legacy format)
34
+ *
35
+ * @param name - The property token ($name, #name) or CSS property name (--name)
36
+ * @param options - Property configuration
37
+ *
38
+ * @example Basic property with token syntax
39
+ * ```tsx
40
+ * function Spinner() {
41
+ * useProperty('$rotation', {
42
+ * syntax: '<angle>',
43
+ * inherits: false,
44
+ * initialValue: '0deg',
45
+ * });
46
+ *
47
+ * return <div className="spinner" />;
48
+ * }
49
+ * ```
50
+ *
51
+ * @example Color property with token syntax (auto-sets syntax)
52
+ * ```tsx
53
+ * function MyComponent() {
54
+ * useProperty('#theme', {
55
+ * initialValue: 'red', // syntax: '<color>' is auto-set
56
+ * });
57
+ *
58
+ * // Now --theme-color can be animated with CSS transitions
59
+ * return <div style={{ '--theme-color': 'blue' } as React.CSSProperties}>Colored</div>;
60
+ * }
61
+ * ```
62
+ *
63
+ * @example Legacy format (still supported)
64
+ * ```tsx
65
+ * function ResizableBox() {
66
+ * useProperty('--box-size', {
67
+ * syntax: '<length>',
68
+ * initialValue: '100px',
69
+ * });
70
+ *
71
+ * return <div style={{ width: 'var(--box-size)' }} />;
72
+ * }
73
+ * ```
74
+ */
75
+ export declare function useProperty(name: string, options?: UsePropertyOptions): void;
@@ -1,6 +1,6 @@
1
1
  export { tasty, Element } from './tasty';
2
- export { useStyles, useGlobalStyles, useRawCSS } from './hooks';
3
- export type { UseStylesOptions, UseStylesResult } from './hooks';
2
+ export { useStyles, useGlobalStyles, useRawCSS, useProperty, useKeyframes, } from './hooks';
3
+ export type { UseStylesOptions, UseStylesResult, UsePropertyOptions, } from './hooks';
4
4
  export { configure, getConfig, isConfigLocked, hasStylesGenerated, resetConfig, isTestEnvironment, hasGlobalKeyframes, getGlobalKeyframes, } from './config';
5
5
  export type { TastyConfig } from './config';
6
6
  export { okhslPlugin, okhslFunc } from './plugins';
@@ -13,6 +13,7 @@ export * from './utils/filterBaseProps';
13
13
  export * from './utils/colors';
14
14
  export * from './utils/styles';
15
15
  export * from './utils/modAttrs';
16
+ export { styleHandlers } from './styles';
16
17
  export { renderStyles, isSelector } from './pipeline';
17
18
  export type { StyleResult, RenderResult } from './pipeline';
18
19
  export * from './utils/dotize';