@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,10 +1,11 @@
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 { isDevEnv } from '../utils/isDevEnv.js';
8
9
  import { alignStyle } from './align.js';
9
10
  import { borderStyle } from './border.js';
10
11
  import { colorStyle } from './color.js';
@@ -13,10 +14,9 @@ import { displayStyle } from './display.js';
13
14
  import { fadeStyle } from './fade.js';
14
15
  import { fillStyle, svgFillStyle } from './fill.js';
15
16
  import { flowStyle } from './flow.js';
16
- import { fontStyle } from './font.js';
17
- import { fontStyleStyle } from './fontStyle.js';
17
+ // Note: fontStyle (font.ts) and fontStyleStyle (fontStyle.ts) removed
18
+ // Both font and fontStyle props are now handled by presetStyle
18
19
  import { gapStyle } from './gap.js';
19
- import { groupRadiusAttr } from './groupRadius.js';
20
20
  import { heightStyle } from './height.js';
21
21
  import { insetStyle } from './inset.js';
22
22
  import { justifyStyle } from './justify.js';
@@ -31,6 +31,7 @@ import { shadowStyle } from './shadow.js';
31
31
  import { styledScrollbarStyle } from './styledScrollbar.js';
32
32
  import { transitionStyle } from './transition.js';
33
33
  import { widthStyle } from './width.js';
34
+ const devMode = isDevEnv();
34
35
  const numberConverter = (val) => {
35
36
  if (typeof val === 'number') {
36
37
  return `${val}px`;
@@ -50,6 +51,37 @@ const rowsConverter = (val) => {
50
51
  return;
51
52
  };
52
53
  export const STYLE_HANDLER_MAP = {};
54
+ // Store initial handler state for reset functionality
55
+ let initialHandlerMapSnapshot = null;
56
+ /**
57
+ * Capture a snapshot of the current STYLE_HANDLER_MAP.
58
+ * Called after predefine() to preserve built-in handler state.
59
+ */
60
+ function captureInitialHandlerState() {
61
+ initialHandlerMapSnapshot = {};
62
+ for (const key of Object.keys(STYLE_HANDLER_MAP)) {
63
+ // Shallow copy the array - handlers themselves are immutable
64
+ initialHandlerMapSnapshot[key] = [...STYLE_HANDLER_MAP[key]];
65
+ }
66
+ }
67
+ /**
68
+ * Reset STYLE_HANDLER_MAP to the initial built-in state.
69
+ * Called by resetConfig() to restore handlers after tests.
70
+ */
71
+ export function resetHandlers() {
72
+ if (!initialHandlerMapSnapshot) {
73
+ // predefine() hasn't been called yet, nothing to reset
74
+ return;
75
+ }
76
+ // Clear current map
77
+ for (const key of Object.keys(STYLE_HANDLER_MAP)) {
78
+ delete STYLE_HANDLER_MAP[key];
79
+ }
80
+ // Restore initial state
81
+ for (const key of Object.keys(initialHandlerMapSnapshot)) {
82
+ STYLE_HANDLER_MAP[key] = [...initialHandlerMapSnapshot[key]];
83
+ }
84
+ }
53
85
  export function defineCustomStyle(names, handler) {
54
86
  let handlerWithLookup;
55
87
  if (typeof names === 'function') {
@@ -81,34 +113,6 @@ export function defineStyleAlias(styleName, cssStyleName, converter) {
81
113
  STYLE_HANDLER_MAP[styleName].push(styleHandler);
82
114
  }
83
115
  export function predefine() {
84
- // Manually define styles that are used in other custom styles.
85
- // Otherwise, they won't be handled as expected.
86
- defineStyleAlias('fontSize', 'font-size', numberConverter);
87
- defineStyleAlias('lineHeight', 'line-height', numberConverter);
88
- defineStyleAlias('fontWeight', 'font-weight', numberConverter);
89
- defineStyleAlias('fontStyle');
90
- defineStyleAlias('letterSpacing', 'letter-spacing', numberConverter);
91
- defineStyleAlias('textTransform');
92
- defineStyleAlias('fontFamily');
93
- defineStyleAlias('overflow');
94
- defineStyleAlias('paddingTop', 'padding-top', numberConverter);
95
- defineStyleAlias('paddingRight', 'padding-right', numberConverter);
96
- defineStyleAlias('paddingBottom', 'padding-bottom', numberConverter);
97
- defineStyleAlias('paddingLeft', 'padding-left', numberConverter);
98
- defineStyleAlias('marginTop', 'margin-top', numberConverter);
99
- defineStyleAlias('marginRight', 'margin-right', numberConverter);
100
- defineStyleAlias('marginBottom', 'margin-bottom', numberConverter);
101
- defineStyleAlias('marginLeft', 'margin-left', numberConverter);
102
- // Coordinates
103
- defineStyleAlias('top', 'top', numberConverter);
104
- defineStyleAlias('right', 'right', numberConverter);
105
- defineStyleAlias('bottom', 'bottom', numberConverter);
106
- defineStyleAlias('left', 'left', numberConverter);
107
- // Dimensions
108
- defineStyleAlias('minWidth', 'min-width', numberConverter);
109
- defineStyleAlias('maxWidth', 'max-width', numberConverter);
110
- defineStyleAlias('minHeight', 'min-height', numberConverter);
111
- defineStyleAlias('maxHeight', 'max-height', numberConverter);
112
116
  // Style aliases
113
117
  defineStyleAlias('gridAreas', 'grid-template-areas');
114
118
  defineStyleAlias('gridColumns', 'grid-template-columns', columnsConverter);
@@ -121,8 +125,7 @@ export function predefine() {
121
125
  .map((s, i) => (i ? columnsConverter : rowsConverter)(s))
122
126
  .join('/');
123
127
  });
124
- // Other styles
125
- defineStyleAlias('outlineOffset', 'outline-offset', numberConverter);
128
+ // Note: outlineOffset is now handled by outlineStyle
126
129
  [
127
130
  displayStyle,
128
131
  transitionStyle,
@@ -143,9 +146,6 @@ export function predefine() {
143
146
  justifyStyle,
144
147
  presetStyle,
145
148
  outlineStyle,
146
- fontStyle,
147
- fontStyleStyle,
148
- groupRadiusAttr,
149
149
  // DEPRECATED: `styledScrollbar` is deprecated, use `scrollbar` instead
150
150
  styledScrollbarStyle,
151
151
  scrollbarStyle,
@@ -154,7 +154,215 @@ export function predefine() {
154
154
  ]
155
155
  // @ts-ignore
156
156
  .forEach((handler) => defineCustomStyle(handler));
157
+ // Capture initial state after all built-in handlers are registered
158
+ captureInitialHandlerState();
157
159
  return { STYLE_HANDLER_MAP, defineCustomStyle, defineStyleAlias };
158
160
  }
161
+ // ============================================================================
162
+ // Handler Registration API (for configure())
163
+ // ============================================================================
164
+ /**
165
+ * Normalize a handler definition to a StyleHandler with __lookupStyles.
166
+ * - Function only: lookup styles inferred from key name
167
+ * - [string, fn]: single lookup style
168
+ * - [string[], fn]: multiple lookup styles
169
+ */
170
+ export function normalizeHandlerDefinition(keyName, definition) {
171
+ let handler;
172
+ let lookupStyles;
173
+ if (typeof definition === 'function') {
174
+ // Function only - lookup styles inferred from key name
175
+ handler = definition;
176
+ lookupStyles = [keyName];
177
+ }
178
+ else if (Array.isArray(definition)) {
179
+ const [first, fn] = definition;
180
+ if (typeof fn !== 'function') {
181
+ throw new Error(`[Tasty] Invalid handler definition for "${keyName}". ` +
182
+ 'Tuple must have a function as the second element: [string, function] or [string[], function].');
183
+ }
184
+ handler = fn;
185
+ if (typeof first === 'string') {
186
+ // [string, fn] - single lookup style
187
+ lookupStyles = [first];
188
+ }
189
+ else if (Array.isArray(first)) {
190
+ // [string[], fn] - multiple lookup styles
191
+ lookupStyles = first;
192
+ }
193
+ else {
194
+ throw new Error(`[Tasty] Invalid handler definition for "${keyName}". ` +
195
+ 'First element must be a string or string array.');
196
+ }
197
+ }
198
+ else {
199
+ throw new Error(`[Tasty] Invalid handler definition for "${keyName}". ` +
200
+ 'Expected function, [string, function], or [string[], function].');
201
+ }
202
+ // Validate handler in dev mode
203
+ validateHandler(keyName, handler, lookupStyles);
204
+ // Wrap the handler to avoid mutation issues when the same function
205
+ // is reused for multiple handler definitions. Each registration
206
+ // gets its own function identity with its own __lookupStyles.
207
+ const wrappedHandler = ((props) => handler(props));
208
+ wrappedHandler.__lookupStyles = lookupStyles;
209
+ return wrappedHandler;
210
+ }
211
+ /**
212
+ * Validate a handler definition in development mode.
213
+ */
214
+ function validateHandler(name, handler, lookupStyles) {
215
+ if (!devMode)
216
+ return;
217
+ if (typeof handler !== 'function') {
218
+ console.warn(`[Tasty] Handler "${name}" is not a function. ` +
219
+ 'Handlers must be functions that return CSSMap, CSSMap[], or void.');
220
+ }
221
+ if (!lookupStyles ||
222
+ !Array.isArray(lookupStyles) ||
223
+ lookupStyles.length === 0) {
224
+ console.warn(`[Tasty] Handler "${name}" has invalid lookupStyles. ` +
225
+ 'Expected non-empty array of style names.');
226
+ }
227
+ }
228
+ /**
229
+ * Validate a handler result in development mode.
230
+ * Call this after invoking a handler to check the return value.
231
+ */
232
+ export function validateHandlerResult(name, result) {
233
+ if (!devMode)
234
+ return;
235
+ if (result === undefined || result === null)
236
+ return; // void is valid
237
+ // Check for empty string (migration from old pattern)
238
+ if (result === '') {
239
+ console.warn(`[Tasty] Handler "${name}" returned empty string. ` +
240
+ 'Return void/undefined instead for no output.');
241
+ return;
242
+ }
243
+ // Check result is object (CSSMap or CSSMap[])
244
+ if (typeof result !== 'object') {
245
+ console.warn(`[Tasty] Handler "${name}" returned invalid type: ${typeof result}. ` +
246
+ 'Expected CSSMap, CSSMap[], or void.');
247
+ }
248
+ }
249
+ /**
250
+ * Register a custom handler, replacing any existing handlers for the same lookup styles.
251
+ * This is called by configure() to process user-defined handlers.
252
+ *
253
+ * When registering a handler for style X, any existing handler that processes X
254
+ * is removed from ALL its lookup styles to prevent double-processing.
255
+ * For example, if gapStyle handles ['display', 'flow', 'gap'] and a new handler
256
+ * is registered for just ['gap'], gapStyle is removed from display and flow too.
257
+ */
258
+ export function registerHandler(handler) {
259
+ const lookupStyles = handler.__lookupStyles;
260
+ if (!lookupStyles || lookupStyles.length === 0) {
261
+ if (devMode) {
262
+ console.warn('[Tasty] Cannot register handler without __lookupStyles property.');
263
+ }
264
+ return;
265
+ }
266
+ // Find and remove existing handlers that would conflict
267
+ // A handler conflicts if it handles any of the same styles as the new handler
268
+ const handlersToRemove = new Set();
269
+ for (const styleName of lookupStyles) {
270
+ const existing = STYLE_HANDLER_MAP[styleName];
271
+ if (existing) {
272
+ for (const existingHandler of existing) {
273
+ handlersToRemove.add(existingHandler);
274
+ }
275
+ }
276
+ }
277
+ // Remove conflicting handlers from ALL their lookup styles
278
+ for (const oldHandler of handlersToRemove) {
279
+ const oldLookupStyles = oldHandler.__lookupStyles;
280
+ if (oldLookupStyles) {
281
+ for (const oldStyleName of oldLookupStyles) {
282
+ const handlers = STYLE_HANDLER_MAP[oldStyleName];
283
+ if (handlers) {
284
+ const filtered = handlers.filter((h) => h !== oldHandler);
285
+ if (filtered.length === 0) {
286
+ delete STYLE_HANDLER_MAP[oldStyleName];
287
+ }
288
+ else {
289
+ STYLE_HANDLER_MAP[oldStyleName] = filtered;
290
+ }
291
+ }
292
+ }
293
+ }
294
+ }
295
+ // Register the new handler under its lookup styles
296
+ for (const styleName of lookupStyles) {
297
+ const existing = STYLE_HANDLER_MAP[styleName];
298
+ if (existing) {
299
+ existing.push(handler);
300
+ }
301
+ else {
302
+ STYLE_HANDLER_MAP[styleName] = [handler];
303
+ }
304
+ }
305
+ }
306
+ // ============================================================================
307
+ // Wrapped Style Handlers Export
308
+ // ============================================================================
309
+ /**
310
+ * Create a wrapped handler that can be safely called by users.
311
+ * The wrapper preserves __lookupStyles for proper registration.
312
+ */
313
+ function wrapHandler(handler) {
314
+ const fn = handler;
315
+ const wrapped = ((props) => fn(props));
316
+ wrapped.__lookupStyles = handler.__lookupStyles;
317
+ return wrapped;
318
+ }
319
+ /**
320
+ * Exported object containing wrapped predefined style handlers.
321
+ * Users can import and call these to extend or delegate to built-in behavior.
322
+ *
323
+ * Internal handlers use *Style suffix for searchability.
324
+ * External API uses short names for convenience.
325
+ *
326
+ * @example
327
+ * ```ts
328
+ * import { styleHandlers, configure } from '@cube-dev/ui-kit';
329
+ *
330
+ * configure({
331
+ * handlers: {
332
+ * fill: ({ fill }) => {
333
+ * if (fill?.startsWith('gradient:')) {
334
+ * return { background: fill.slice(9) };
335
+ * }
336
+ * return styleHandlers.fill({ fill });
337
+ * },
338
+ * },
339
+ * });
340
+ * ```
341
+ */
342
+ export const styleHandlers = {
343
+ align: wrapHandler(alignStyle),
344
+ border: wrapHandler(borderStyle),
345
+ color: wrapHandler(colorStyle),
346
+ display: wrapHandler(displayStyle),
347
+ fade: wrapHandler(fadeStyle),
348
+ fill: wrapHandler(fillStyle),
349
+ svgFill: wrapHandler(svgFillStyle),
350
+ flow: wrapHandler(flowStyle),
351
+ gap: wrapHandler(gapStyle),
352
+ height: wrapHandler(heightStyle),
353
+ inset: wrapHandler(insetStyle),
354
+ justify: wrapHandler(justifyStyle),
355
+ margin: wrapHandler(marginStyle),
356
+ outline: wrapHandler(outlineStyle),
357
+ padding: wrapHandler(paddingStyle),
358
+ preset: wrapHandler(presetStyle),
359
+ radius: wrapHandler(radiusStyle),
360
+ reset: wrapHandler(resetStyle),
361
+ scrollbar: wrapHandler(scrollbarStyle),
362
+ shadow: wrapHandler(shadowStyle),
363
+ styledScrollbar: wrapHandler(styledScrollbarStyle),
364
+ transition: wrapHandler(transitionStyle),
365
+ width: wrapHandler(widthStyle),
366
+ };
159
367
 
160
368
 
@@ -1,11 +1,24 @@
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 { parseStyle } from '../utils/styles.js';
9
+ /**
10
+ * Convert a value to CSS, handling numbers as pixels for numeric properties
11
+ */
12
+ function toCSS(value, isNumeric) {
13
+ if (value == null)
14
+ return null;
15
+ if (typeof value === 'number') {
16
+ return isNumeric ? `${value}px` : String(value);
17
+ }
18
+ // Parse through style parser to handle custom units like 1x, 2r, etc.
19
+ const processed = parseStyle(String(value));
20
+ return processed.groups[0]?.values[0] || String(value);
21
+ }
9
22
  function setCSSValue(styles, styleName, presetName, isPropOnly = false) {
10
23
  styles[`--${styleName}`] = (() => {
11
24
  if (presetName === 'inherit') {
@@ -26,55 +39,141 @@ function setCSSValue(styles, styleName, presetName, isPropOnly = false) {
26
39
  styles[styleName] = styles[`--${styleName}`];
27
40
  }
28
41
  }
29
- export function presetStyle({ preset, fontSize, lineHeight, textTransform, letterSpacing, fontWeight, fontStyle, font, }) {
30
- if (!preset)
31
- return '';
32
- if (preset === true)
33
- preset = '';
34
- const processed = parseStyle(preset);
35
- let { mods } = processed.groups[0] ?? { mods: [] };
36
- const isStrong = mods.includes('strong');
37
- const isItalic = mods.includes('italic');
38
- const isIcon = mods.includes('icon');
39
- const isTight = mods.includes('tight');
40
- mods = mods.filter((mod) => mod !== 'bold' && mod !== 'italic' && mod !== 'icon' && mod !== 'tight');
41
- const name = mods[0] || 'default';
42
- const styles = {};
43
- if (!fontSize) {
44
- setCSSValue(styles, 'font-size', name);
42
+ /**
43
+ * Resolve font/fontFamily value to CSS font-family string.
44
+ *
45
+ * - `font="monospace"` → var(--monospace-font)
46
+ * - `font={true}` → var(--font)
47
+ * - `font="CustomFont"` → CustomFont, var(--font)
48
+ * - `fontFamily="Arial"` Arial (direct, no fallback)
49
+ */
50
+ function resolveFontFamily(font, fontFamily) {
51
+ // fontFamily takes precedence as a direct value
52
+ if (fontFamily) {
53
+ return { value: fontFamily, setVar: false };
45
54
  }
46
- if (!lineHeight) {
47
- setCSSValue(styles, 'line-height', name);
55
+ if (font == null || font === false) {
56
+ return null;
48
57
  }
49
- if (!letterSpacing) {
50
- setCSSValue(styles, 'letter-spacing', name);
58
+ if (font === 'monospace') {
59
+ return { value: 'var(--monospace-font)', setVar: true };
51
60
  }
52
- if (!fontWeight) {
53
- setCSSValue(styles, 'font-weight', name);
61
+ if (font === true) {
62
+ return { value: 'var(--font)', setVar: true };
54
63
  }
55
- if (!fontStyle) {
56
- setCSSValue(styles, 'font-style', name);
64
+ return { value: `${font}, var(--font)`, setVar: true };
65
+ }
66
+ /**
67
+ * Handles typography preset and individual font properties.
68
+ *
69
+ * When `preset` is defined, it sets up CSS custom properties for typography.
70
+ * Individual font props can be used with or without `preset`:
71
+ * - With `preset`: overrides the preset value for that property
72
+ * - Without `preset`: outputs the CSS directly
73
+ *
74
+ * Number values are converted to pixels for fontSize, lineHeight, letterSpacing.
75
+ * fontWeight accepts numbers directly (e.g., 400, 700).
76
+ *
77
+ * font vs fontFamily:
78
+ * - `font` is the recommended prop with special handling (monospace, boolean, fallback)
79
+ * - `fontFamily` is a direct value without special handling
80
+ */
81
+ export function presetStyle({ preset, fontSize, lineHeight, textTransform, letterSpacing, fontWeight, fontStyle, fontFamily, font, }) {
82
+ const styles = {};
83
+ const hasPreset = preset != null && preset !== false;
84
+ // Handle preset if defined
85
+ if (hasPreset) {
86
+ let presetValue = preset === true ? '' : String(preset);
87
+ const processed = parseStyle(presetValue);
88
+ let { mods } = processed.groups[0] ?? { mods: [] };
89
+ const isStrong = mods.includes('strong');
90
+ const isItalic = mods.includes('italic');
91
+ const isIcon = mods.includes('icon');
92
+ const isTight = mods.includes('tight');
93
+ mods = mods.filter((mod) => mod !== 'bold' && mod !== 'italic' && mod !== 'icon' && mod !== 'tight');
94
+ const name = mods[0] || 'default';
95
+ // Set preset values for properties not explicitly overridden
96
+ if (fontSize == null) {
97
+ setCSSValue(styles, 'font-size', name);
98
+ }
99
+ if (lineHeight == null) {
100
+ setCSSValue(styles, 'line-height', name);
101
+ }
102
+ if (letterSpacing == null) {
103
+ setCSSValue(styles, 'letter-spacing', name);
104
+ }
105
+ if (fontWeight == null) {
106
+ setCSSValue(styles, 'font-weight', name);
107
+ }
108
+ if (fontStyle == null) {
109
+ setCSSValue(styles, 'font-style', name);
110
+ }
111
+ if (textTransform == null) {
112
+ setCSSValue(styles, 'text-transform', name);
113
+ }
114
+ if (fontFamily == null && font == null) {
115
+ setCSSValue(styles, 'font-family', name);
116
+ }
117
+ setCSSValue(styles, 'bold-font-weight', name, true);
118
+ setCSSValue(styles, 'icon-size', name, true);
119
+ if (isStrong) {
120
+ styles['font-weight'] = 'var(--bold-font-weight)';
121
+ }
122
+ if (isItalic) {
123
+ styles['font-style'] = 'italic';
124
+ }
125
+ if (isIcon) {
126
+ styles['font-size'] = 'var(--icon-size)';
127
+ styles['line-height'] = 'var(--icon-size)';
128
+ }
129
+ if (isTight) {
130
+ styles['line-height'] = 'var(--font-size)';
131
+ }
57
132
  }
58
- if (!textTransform) {
59
- setCSSValue(styles, 'text-transform', name);
133
+ // Handle individual font properties (work with or without preset)
134
+ const fontSizeVal = toCSS(fontSize, true);
135
+ if (fontSizeVal) {
136
+ styles['font-size'] = fontSizeVal;
60
137
  }
61
- if (!font) {
62
- setCSSValue(styles, 'font-family', name);
138
+ const lineHeightVal = toCSS(lineHeight, true);
139
+ if (lineHeightVal) {
140
+ styles['line-height'] = lineHeightVal;
63
141
  }
64
- setCSSValue(styles, 'bold-font-weight', name, true);
65
- setCSSValue(styles, 'icon-size', name, true);
66
- if (isStrong) {
67
- styles['font-weight'] = 'var(--bold-font-weight)';
142
+ const letterSpacingVal = toCSS(letterSpacing, true);
143
+ if (letterSpacingVal) {
144
+ styles['letter-spacing'] = letterSpacingVal;
68
145
  }
69
- if (isItalic) {
70
- styles['font-style'] = 'italic';
146
+ // fontWeight: numbers should NOT get 'px' suffix
147
+ const fontWeightVal = toCSS(fontWeight, false);
148
+ if (fontWeightVal) {
149
+ styles['font-weight'] = fontWeightVal;
71
150
  }
72
- if (isIcon) {
73
- styles['font-size'] = 'var(--icon-size)';
74
- styles['line-height'] = 'var(--icon-size)';
151
+ // fontStyle: handle boolean (true → italic) and string values
152
+ if (fontStyle != null) {
153
+ if (fontStyle === true) {
154
+ styles['font-style'] = 'italic';
155
+ }
156
+ else if (fontStyle !== 'inherit') {
157
+ styles['font-style'] = fontStyle ? 'italic' : 'normal';
158
+ }
159
+ else {
160
+ styles['font-style'] = 'inherit';
161
+ }
162
+ }
163
+ if (textTransform) {
164
+ styles['text-transform'] = textTransform;
165
+ }
166
+ // Handle font/fontFamily (font has special handling, fontFamily is direct)
167
+ const fontResult = resolveFontFamily(font, fontFamily);
168
+ if (fontResult) {
169
+ styles['font-family'] = fontResult.value;
170
+ if (fontResult.setVar) {
171
+ styles['--font-family'] = fontResult.value;
172
+ }
75
173
  }
76
- if (isTight) {
77
- styles['line-height'] = 'var(--font-size)';
174
+ // Return undefined if no styles to apply
175
+ if (Object.keys(styles).length === 0) {
176
+ return;
78
177
  }
79
178
  return styles;
80
179
  }
@@ -86,6 +185,7 @@ presetStyle.__lookupStyles = [
86
185
  'textTransform',
87
186
  'fontWeight',
88
187
  'fontStyle',
188
+ 'fontFamily',
89
189
  'font',
90
190
  ];
91
191
 
@@ -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
 
@@ -13,7 +13,7 @@ export function radiusStyle({ radius }) {
13
13
  radius = `${radius}px`;
14
14
  }
15
15
  if (!radius)
16
- return '';
16
+ return;
17
17
  if (radius === true)
18
18
  radius = '1r';
19
19
  const processed = parseStyle(radius);
@@ -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,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
 
@@ -15,7 +15,7 @@ function toBoxShadow(shadow) {
15
15
  }
16
16
  export function shadowStyle({ shadow }) {
17
17
  if (!shadow)
18
- return '';
18
+ return;
19
19
  if (shadow === true)
20
20
  shadow = 'var(--card-shadow)';
21
21
  return {
@@ -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
 
@@ -13,6 +13,25 @@ const MAP = {
13
13
  scale: ['transform', 'scale'],
14
14
  placeSelf: ['transform', 'top', 'right', 'bottom', 'left'],
15
15
  fill: ['background-color'],
16
+ image: [
17
+ 'background-image',
18
+ 'background-position',
19
+ 'background-size',
20
+ 'background-repeat',
21
+ 'background-attachment',
22
+ 'background-origin',
23
+ 'background-clip',
24
+ ],
25
+ background: [
26
+ 'background-color',
27
+ 'background-image',
28
+ 'background-position',
29
+ 'background-size',
30
+ 'background-repeat',
31
+ 'background-attachment',
32
+ 'background-origin',
33
+ 'background-clip',
34
+ ],
16
35
  border: ['border', 'box-shadow'],
17
36
  filter: ['filter', 'backdrop-filter'],
18
37
  radius: ['border-radius'],
@@ -40,7 +59,6 @@ const MAP = {
40
59
  height: ['max-height', 'min-height', 'height'],
41
60
  gap: ['gap', 'margin'],
42
61
  zIndex: ['z-index'],
43
- image: ['background-image', 'background-position', 'background-size'],
44
62
  };
45
63
  export const DEFAULT_TIMING = 'var(--transition)';
46
64
  const DEFAULT_EASING = 'linear';
@@ -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