@cube-dev/ui-kit 0.154.0 → 0.155.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 (526) hide show
  1. package/dist/CHANGELOG.md +53 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  57. package/dist/components/content/Item/Item.d.ts +2 -1
  58. package/dist/components/content/Item/Item.js +1 -1
  59. package/dist/components/content/Item/Item.js.map +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.d.ts +21 -42
  89. package/dist/components/content/Text.js +4 -5
  90. package/dist/components/content/Text.js.map +1 -1
  91. package/dist/components/content/TextItem/TextItem.js +1 -1
  92. package/dist/components/content/Title.js +2 -3
  93. package/dist/components/content/Title.js.map +1 -1
  94. package/dist/components/content/Tree/Tree.js +1 -1
  95. package/dist/components/content/Tree/TreeNode.js +1 -1
  96. package/dist/components/content/Tree/styled.js +1 -1
  97. package/dist/components/content/Tree/tree-index.js +1 -1
  98. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  99. package/dist/components/content/Tree/use-load-data.js +1 -1
  100. package/dist/components/content/highlightText.js +1 -1
  101. package/dist/components/content/use-auto-tooltip.d.ts +0 -1
  102. package/dist/components/content/use-auto-tooltip.js +1 -1
  103. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  104. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  105. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  106. package/dist/components/fields/Checkbox/context.js +1 -1
  107. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  108. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  109. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  110. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  111. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  112. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  113. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  114. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  115. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  116. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  117. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  118. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  119. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  120. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  121. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  122. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  123. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  124. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  125. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  126. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  127. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  128. package/dist/components/fields/DatePicker/period.js +1 -1
  129. package/dist/components/fields/DatePicker/props.js +1 -1
  130. package/dist/components/fields/DatePicker/utils.js +1 -1
  131. package/dist/components/fields/FileInput/FileInput.d.ts +2 -1
  132. package/dist/components/fields/FileInput/FileInput.js +1 -1
  133. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  134. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  135. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  136. package/dist/components/fields/Input/Input.js +1 -1
  137. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  138. package/dist/components/fields/ListBox/ListBox.js +1 -1
  139. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  140. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  141. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  142. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  143. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  144. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  145. package/dist/components/fields/Picker/Picker.js +1 -1
  146. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  147. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  148. package/dist/components/fields/RadioGroup/context.js +1 -1
  149. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  150. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  151. package/dist/components/fields/Select/Select.d.ts +2 -1
  152. package/dist/components/fields/Select/Select.js +1 -1
  153. package/dist/components/fields/Select/Select.js.map +1 -1
  154. package/dist/components/fields/Slider/Gradation.js +1 -1
  155. package/dist/components/fields/Slider/HueSlider.js +1 -1
  156. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  157. package/dist/components/fields/Slider/Slider.js +1 -1
  158. package/dist/components/fields/Slider/SliderBase.js +1 -1
  159. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  160. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  161. package/dist/components/fields/Slider/elements.js +1 -1
  162. package/dist/components/fields/Slider/index.js +1 -1
  163. package/dist/components/fields/Switch/Switch.js +1 -1
  164. package/dist/components/fields/TextArea/TextArea.js +1 -1
  165. package/dist/components/fields/TextInput/TextInput.js +1 -1
  166. package/dist/components/fields/TextInput/TextInputBase.d.ts +2 -1
  167. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  168. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  169. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  170. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +2 -1
  171. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  172. package/dist/components/form/FieldWrapper/types.d.ts +2 -1
  173. package/dist/components/form/Form/Field.js +1 -1
  174. package/dist/components/form/Form/Form.js +1 -1
  175. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  176. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  177. package/dist/components/form/Form/SubmitError.js +1 -1
  178. package/dist/components/form/Form/index.js +1 -1
  179. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  180. package/dist/components/form/Form/use-field/use-field.js +1 -1
  181. package/dist/components/form/Form/use-form.js +1 -1
  182. package/dist/components/form/Form/validation.js +1 -1
  183. package/dist/components/form/Label.js +1 -1
  184. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  185. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  186. package/dist/components/form/validation/use-validation-props.js +1 -1
  187. package/dist/components/form/wrapper.js +1 -1
  188. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  189. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  190. package/dist/components/layout/Board/Board.js +1 -1
  191. package/dist/components/layout/Board/BoardProvider.js +1 -1
  192. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  193. package/dist/components/layout/Board/Widget.js +1 -1
  194. package/dist/components/layout/Board/WidgetHost.js +1 -1
  195. package/dist/components/layout/Board/board-context.js +1 -1
  196. package/dist/components/layout/Board/board-store.js +1 -1
  197. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  198. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  199. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  200. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  201. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  202. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  203. package/dist/components/layout/Board/index.js +1 -1
  204. package/dist/components/layout/Board/responsive-utils.js +1 -1
  205. package/dist/components/layout/Board/use-board-layout.js +1 -1
  206. package/dist/components/layout/Board/use-board-registry.js +1 -1
  207. package/dist/components/layout/Flex.js +1 -1
  208. package/dist/components/layout/Flow.js +1 -1
  209. package/dist/components/layout/Grid.js +1 -1
  210. package/dist/components/layout/Panel.js +1 -1
  211. package/dist/components/layout/Prefix.js +1 -1
  212. package/dist/components/layout/ResizablePanel.js +1 -1
  213. package/dist/components/layout/Space.js +1 -1
  214. package/dist/components/layout/Suffix.js +1 -1
  215. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  216. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  217. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  218. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  219. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  220. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  221. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  222. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  223. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  224. package/dist/components/navigation/Tabs/styled.js +1 -1
  225. package/dist/components/navigation/Tabs/types.js +1 -1
  226. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  227. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  228. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  229. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  230. package/dist/components/other/Calendar/Calendar.js +1 -1
  231. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  232. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  233. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  234. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  235. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  236. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  237. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  238. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  239. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  240. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  241. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  242. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  243. package/dist/components/overlays/Dialog/context.js +1 -1
  244. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  245. package/dist/components/overlays/Modal/Modal.js +1 -1
  246. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  247. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  248. package/dist/components/overlays/Modal/Overlay.js +1 -1
  249. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  250. package/dist/components/overlays/Modal/Popover.js +1 -1
  251. package/dist/components/overlays/Modal/Tray.js +1 -1
  252. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  253. package/dist/components/overlays/Modal/Underlay.js +1 -1
  254. package/dist/components/overlays/Notifications/Notification.js +1 -1
  255. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  256. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  257. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  258. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  259. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  260. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  261. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  262. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  263. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  264. package/dist/components/overlays/Notifications/index.js +1 -1
  265. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  266. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  267. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  268. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  269. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  270. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  271. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  272. package/dist/components/overlays/Toast/index.js +1 -1
  273. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  274. package/dist/components/overlays/Toast/useToast.js +1 -1
  275. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  276. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  277. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  278. package/dist/components/overlays/Tooltip/context.js +1 -1
  279. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  280. package/dist/components/portal/Portal.js +1 -1
  281. package/dist/components/portal/PortalProvider.js +1 -1
  282. package/dist/components/portal/usePortal.js +1 -1
  283. package/dist/components/shared/DraggableCollection.js +1 -1
  284. package/dist/components/shared/InvalidIcon.js +1 -1
  285. package/dist/components/shared/ValidIcon.js +1 -1
  286. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  287. package/dist/components/status/Spin/Cube.js +1 -1
  288. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  289. package/dist/components/status/Spin/Spin.js +1 -1
  290. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  291. package/dist/data/item-themes.js +1 -1
  292. package/dist/data/themes.js +1 -1
  293. package/dist/eslint-plugin/defaults.generated.js +1 -1
  294. package/dist/eslint-plugin/index.js +1 -1
  295. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  296. package/dist/i18n/I18nProvider.js +1 -1
  297. package/dist/i18n/createFormatter.js +1 -1
  298. package/dist/i18n/index.js +1 -1
  299. package/dist/i18n/instance.js +1 -1
  300. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  301. package/dist/i18n/locales/en-US/uikit.js +1 -1
  302. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  303. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  304. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  305. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  306. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  307. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  308. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  309. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  310. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  311. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  312. package/dist/i18n/locales.js +1 -1
  313. package/dist/i18n/useFormatter.js +1 -1
  314. package/dist/i18n/useI18n.js +1 -1
  315. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  316. package/dist/icons/AdjustmentsIcon.js +1 -1
  317. package/dist/icons/AiIcon.js +1 -1
  318. package/dist/icons/AreaChartIcon.js +1 -1
  319. package/dist/icons/BackwardIcon.js +1 -1
  320. package/dist/icons/BarChartIcon.js +1 -1
  321. package/dist/icons/BellFilledIcon.js +1 -1
  322. package/dist/icons/BellIcon.js +1 -1
  323. package/dist/icons/BooleanIcon.js +1 -1
  324. package/dist/icons/CalendarEditIcon.js +1 -1
  325. package/dist/icons/CalendarIcon.js +1 -1
  326. package/dist/icons/CaretDownIcon.js +1 -1
  327. package/dist/icons/CaretUpIcon.js +1 -1
  328. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  329. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  330. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  331. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  332. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  333. package/dist/icons/ChartBarLineIcon.js +1 -1
  334. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  335. package/dist/icons/ChartBarStackedIcon.js +1 -1
  336. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  337. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  338. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  339. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  340. package/dist/icons/ChartBubbleIcon.js +1 -1
  341. package/dist/icons/ChartDonut2Icon.js +1 -1
  342. package/dist/icons/ChartFunnelIcon.js +1 -1
  343. package/dist/icons/ChartHeatmapIcon.js +1 -1
  344. package/dist/icons/ChartKPIIcon.js +1 -1
  345. package/dist/icons/ChartPie2Icon.js +1 -1
  346. package/dist/icons/ChartScatterIcon.js +1 -1
  347. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  348. package/dist/icons/CheckCircleIcon.js +1 -1
  349. package/dist/icons/CheckIcon.js +1 -1
  350. package/dist/icons/CircleFilledIcon.js +1 -1
  351. package/dist/icons/ClearIcon.js +1 -1
  352. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  353. package/dist/icons/CloseCircleIcon.js +1 -1
  354. package/dist/icons/CloseIcon.js +1 -1
  355. package/dist/icons/CodeIcon.js +1 -1
  356. package/dist/icons/ColumnTotalIcon.js +1 -1
  357. package/dist/icons/CopyIcon.js +1 -1
  358. package/dist/icons/CountIcon.js +1 -1
  359. package/dist/icons/CubeIcon.js +1 -1
  360. package/dist/icons/CubePauseIcon.js +1 -1
  361. package/dist/icons/CubePlayIcon.js +1 -1
  362. package/dist/icons/CurrencyDollarIcon.js +1 -1
  363. package/dist/icons/DangerIcon.js +1 -1
  364. package/dist/icons/DashboardIcon.js +1 -1
  365. package/dist/icons/DatabaseIcon.js +1 -1
  366. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  367. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  368. package/dist/icons/DirectionIcon.js +1 -1
  369. package/dist/icons/DonutIcon.js +1 -1
  370. package/dist/icons/DownIcon.js +1 -1
  371. package/dist/icons/EditIcon.js +1 -1
  372. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  373. package/dist/icons/ExclamationCircleIcon.js +1 -1
  374. package/dist/icons/ExclamationIcon.js +1 -1
  375. package/dist/icons/EyeIcon.js +1 -1
  376. package/dist/icons/EyeInvisibleIcon.js +1 -1
  377. package/dist/icons/FilterIcon.js +1 -1
  378. package/dist/icons/FolderFilledIcon.js +1 -1
  379. package/dist/icons/FolderIcon.js +1 -1
  380. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  381. package/dist/icons/FolderOpenIcon.js +1 -1
  382. package/dist/icons/ForwardIcon.js +1 -1
  383. package/dist/icons/GripVerticalIcon.js +1 -1
  384. package/dist/icons/HierarchyIcon.js +1 -1
  385. package/dist/icons/HierarchyOpenIcon.js +1 -1
  386. package/dist/icons/Icon.js +1 -1
  387. package/dist/icons/InfoCircleIcon.js +1 -1
  388. package/dist/icons/InfoIcon.js +1 -1
  389. package/dist/icons/KeyIcon.js +1 -1
  390. package/dist/icons/LeftIcon.js +1 -1
  391. package/dist/icons/LineChartIcon.js +1 -1
  392. package/dist/icons/LoadingIcon.js +1 -1
  393. package/dist/icons/LockFilledIcon.js +1 -1
  394. package/dist/icons/LockIcon.js +1 -1
  395. package/dist/icons/MoreIcon.js +1 -1
  396. package/dist/icons/NotAllowedIcon.js +1 -1
  397. package/dist/icons/Number123Icon.js +1 -1
  398. package/dist/icons/NumberIcon.js +1 -1
  399. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  400. package/dist/icons/PauseCircleIcon.js +1 -1
  401. package/dist/icons/PauseIcon.js +1 -1
  402. package/dist/icons/PercentageIcon.js +1 -1
  403. package/dist/icons/PieChartIcon.js +1 -1
  404. package/dist/icons/PlayCircleIcon.js +1 -1
  405. package/dist/icons/PlayIcon.js +1 -1
  406. package/dist/icons/PlusIcon.js +1 -1
  407. package/dist/icons/ProgressBarIcon.js +1 -1
  408. package/dist/icons/ReloadIcon.js +1 -1
  409. package/dist/icons/ReportIcon.js +1 -1
  410. package/dist/icons/ReturnIcon.js +1 -1
  411. package/dist/icons/RightIcon.js +1 -1
  412. package/dist/icons/RowTotalsIcon.js +1 -1
  413. package/dist/icons/SchemeIcon.js +1 -1
  414. package/dist/icons/SearchIcon.js +1 -1
  415. package/dist/icons/SemanticQueryIcon.js +1 -1
  416. package/dist/icons/SettingsIcon.js +1 -1
  417. package/dist/icons/ShieldFilledIcon.js +1 -1
  418. package/dist/icons/ShieldIcon.js +1 -1
  419. package/dist/icons/SlashIcon.js +1 -1
  420. package/dist/icons/SparklesIcon.js +1 -1
  421. package/dist/icons/SqlIcon.js +1 -1
  422. package/dist/icons/StatsIcon.js +1 -1
  423. package/dist/icons/StopIcon.js +1 -1
  424. package/dist/icons/StringIcon.js +1 -1
  425. package/dist/icons/SubtotalsIcon.js +1 -1
  426. package/dist/icons/SwitchIcon.js +1 -1
  427. package/dist/icons/TableIcon.js +1 -1
  428. package/dist/icons/ThumbsDownIcon.js +1 -1
  429. package/dist/icons/ThumbsUpIcon.js +1 -1
  430. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  431. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  432. package/dist/icons/ThunderboltIcon.js +1 -1
  433. package/dist/icons/TimeIcon.js +1 -1
  434. package/dist/icons/TrashIcon.js +1 -1
  435. package/dist/icons/UnlockIcon.js +1 -1
  436. package/dist/icons/UpIcon.js +1 -1
  437. package/dist/icons/UserGroupIcon.js +1 -1
  438. package/dist/icons/UserIcon.js +1 -1
  439. package/dist/icons/UserLockIcon.js +1 -1
  440. package/dist/icons/ViewIcon.js +1 -1
  441. package/dist/icons/WarningFilledIcon.js +1 -1
  442. package/dist/icons/WarningIcon.js +1 -1
  443. package/dist/icons/wrap-icon.js +1 -1
  444. package/dist/index.d.ts +2 -1
  445. package/dist/index.js +1 -1
  446. package/dist/index.js.map +1 -1
  447. package/dist/props.d.ts +13 -0
  448. package/dist/provider.d.ts +1 -1
  449. package/dist/provider.js +1 -1
  450. package/dist/provider.js.map +1 -1
  451. package/dist/providers/TrackingProvider.js +1 -1
  452. package/dist/providers/navigationAdapter.default.js +1 -1
  453. package/dist/shared/form.d.ts +2 -1
  454. package/dist/tokens/base.js +1 -1
  455. package/dist/tokens/colors.js +1 -1
  456. package/dist/tokens/index.js +1 -1
  457. package/dist/tokens/layout.js +1 -1
  458. package/dist/tokens/lazy-styles.js +1 -1
  459. package/dist/tokens/palette-config.d.ts +12 -5
  460. package/dist/tokens/palette-config.js +1 -1
  461. package/dist/tokens/palette-config.js.map +1 -1
  462. package/dist/tokens/palette.js +21 -7
  463. package/dist/tokens/palette.js.map +1 -1
  464. package/dist/tokens/shadows.js +1 -1
  465. package/dist/tokens/sizes.js +1 -1
  466. package/dist/tokens/spacing.js +1 -1
  467. package/dist/tokens/typography.js +1 -1
  468. package/dist/utils/ResizeSensor.js +1 -1
  469. package/dist/utils/is-dev-env.js +1 -1
  470. package/dist/utils/modules.js +1 -1
  471. package/dist/utils/promise.js +1 -1
  472. package/dist/utils/raf.js +1 -1
  473. package/dist/utils/random.js +1 -1
  474. package/dist/utils/range.js +1 -1
  475. package/dist/utils/react/RenderCache.js +1 -1
  476. package/dist/utils/react/Slots.js +1 -1
  477. package/dist/utils/react/chain.js +1 -1
  478. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  479. package/dist/utils/react/index.js +1 -1
  480. package/dist/utils/react/interactions.js +1 -1
  481. package/dist/utils/react/isTextOnly.js +1 -1
  482. package/dist/utils/react/mapProps.js +1 -1
  483. package/dist/utils/react/mergeProps.d.ts +1 -1
  484. package/dist/utils/react/mergeProps.js +1 -1
  485. package/dist/utils/react/mergeProps.js.map +1 -1
  486. package/dist/utils/react/nullableValue.d.ts +1 -1
  487. package/dist/utils/react/nullableValue.js +1 -1
  488. package/dist/utils/react/nullableValue.js.map +1 -1
  489. package/dist/utils/react/resolveIcon.js +1 -1
  490. package/dist/utils/react/sharedStore.js +1 -1
  491. package/dist/utils/react/useCombinedRefs.js +1 -1
  492. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  493. package/dist/utils/react/useEventBus.js +1 -1
  494. package/dist/utils/react/useId.js +1 -1
  495. package/dist/utils/react/useIsDarwin.js +1 -1
  496. package/dist/utils/react/useKeySymbols.js +1 -1
  497. package/dist/utils/react/useLayoutEffect.js +1 -1
  498. package/dist/utils/react/useLocalStorage.js +1 -1
  499. package/dist/utils/react/useMergeStyles.js +1 -1
  500. package/dist/utils/react/usePopoverSync.js +1 -1
  501. package/dist/utils/react/useQaProps.js +1 -1
  502. package/dist/utils/react/useViewportSize.js +1 -1
  503. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  504. package/dist/utils/selection.js +1 -1
  505. package/dist/utils/styles.js +1 -1
  506. package/dist/utils/tree.js +1 -1
  507. package/dist/utils/warnings.js +1 -1
  508. package/dist/version.js +3 -3
  509. package/docs/Theming.md +34 -30
  510. package/docs/components/content/Text.md +1 -2
  511. package/docs/tasty/README.md +3 -1
  512. package/docs/tasty/ai-agents.md +21 -7
  513. package/docs/tasty/configuration.md +220 -30
  514. package/docs/tasty/debug.md +7 -7
  515. package/docs/tasty/design-system.md +2 -2
  516. package/docs/tasty/dsl.md +68 -8
  517. package/docs/tasty/injector.md +31 -4
  518. package/docs/tasty/methodology.md +1 -1
  519. package/docs/tasty/migration-v3.md +285 -0
  520. package/docs/tasty/pipeline.md +3 -3
  521. package/docs/tasty/plugins.md +349 -0
  522. package/docs/tasty/react-api.md +61 -1
  523. package/docs/tasty/ssr.md +41 -33
  524. package/docs/tasty/styles.md +27 -9
  525. package/docs/tasty/tasty-static.md +8 -6
  526. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/modules.ts
3
3
  function extractModule(promise) {
4
4
  return promise.then((module) => module.default || module);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/promise.ts
3
3
  function timeout(ms = 30) {
4
4
  return new Promise((resolve) => {
package/dist/utils/raf.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/raf.ts
3
3
  /**
4
4
  * Chains N requestAnimationFrame calls and returns a cancel function.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/random.ts
3
3
  function random(min, max) {
4
4
  const realMin = min < max ? min : max;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/range.ts
3
3
  function range(count) {
4
4
  return Array.from({ length: count }, (_, i) => i);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { mergeProps } from "./mergeProps.js";
3
3
  import { Children, cloneElement, createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/react/chain.ts
3
3
  /**
4
4
  * Calls all functions in the order they were chained with the same arguments.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/react/forwardRefWithGenerics.tsx
3
3
  /**
4
4
  * A helper for creating forwardRef components with generic types.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { forwardRefWithGenerics } from "./forwardRefWithGenerics.js";
4
4
  import { isTextOnly } from "./isTextOnly.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useState } from "react";
3
3
  import { useFocus, useFocusVisible } from "react-aria";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { Children, isValidElement } from "react";
3
3
 
4
4
  //#region src/utils/react/isTextOnly.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/react/mapProps.ts
3
3
  /** Converts AriaButtonProps to CubeButtonProps */
4
4
  function ariaToCubeButtonProps(props) {
@@ -1,5 +1,5 @@
1
1
 
2
- import { Props } from "@tenphi/tasty";
2
+ import { Props } from "../../props.js";
3
3
 
4
4
  //#region src/utils/react/mergeProps.d.ts
5
5
  type Merge<T> = T extends [infer F, ...infer R] ? F extends undefined ? Merge<R> : F & Merge<R> : T extends [infer L] ? L : unknown;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { mergeIds } from "./useId.js";
4
4
  import { mergeStyles } from "@tenphi/tasty";
@@ -1 +1 @@
1
- {"version":3,"file":"mergeProps.js","names":[],"sources":["../../../src/utils/react/mergeProps.tsx"],"sourcesContent":["import { mergeStyles, Props } from '@tenphi/tasty';\nimport clsx from 'clsx';\n\nimport { chain } from './chain';\nimport { mergeIds } from './useId';\n\ntype Merge<T> = T extends [infer F, ...infer R]\n ? F extends undefined\n ? Merge<R>\n : F & Merge<R>\n : T extends [infer L]\n ? L\n : unknown;\n\n/**\n * Merges multiple props objects together. Event handlers are chained,\n * classNames are combined, and ids are deduplicated - different ids\n * will trigger a side-effect and re-render components hooked up with `useId`.\n * For all other props, the last prop object overrides all previous ones.\n * @param args - Multiple sets of props to merge together.\n */\nexport function mergeProps<T extends (Props | undefined)[], K = Merge<T>>(\n ...args: T\n): K {\n let result: any = {};\n\n for (let props of args) {\n for (let key in result) {\n // Chain events\n if (\n /^on[A-Z]/.test(key) &&\n typeof result[key] === 'function' &&\n props &&\n typeof props[key] === 'function'\n ) {\n result[key] = chain(result[key], props[key]);\n\n // Merge classnames, sometimes classNames are empty string which eval to false, so we just need to do a type check\n } else if (\n key === 'className' &&\n typeof result.className === 'string' &&\n props &&\n typeof props.className === 'string'\n ) {\n result[key] = clsx(result.className, props.className);\n } else if (\n (key === 'styles' || key.endsWith('Styles')) &&\n typeof result.styles === 'object' &&\n props &&\n typeof props.styles === 'object'\n ) {\n result[key] = mergeStyles(result[key], props[key]);\n } else if (key === 'mods' && result.mods && props?.mods) {\n result.mods = { ...result.mods, ...props?.mods };\n } else if (key === 'id' && result.id && props?.id) {\n result.id = mergeIds(result.id, props?.id);\n // Override others\n } else {\n result[key] =\n props && props[key] !== undefined ? props[key] : result[key];\n }\n }\n\n // Add props from b that are not in a\n for (let key in props) {\n if (result[key] === undefined) {\n result[key] = props[key];\n }\n }\n }\n\n return result as K;\n}\n"],"mappings":";;;;;;;;;;;;;;AAqBA,SAAgB,WACd,GAAG,MACA;CACH,IAAI,SAAc,EAAE;AAEpB,MAAK,IAAI,SAAS,MAAM;AACtB,OAAK,IAAI,OAAO,OAEd,KACE,WAAW,KAAK,IAAI,IACpB,OAAO,OAAO,SAAS,cACvB,SACA,OAAO,MAAM,SAAS,WAEtB,QAAO,OAAO,MAAM,OAAO,MAAM,MAAM,KAAK;WAI5C,QAAQ,eACR,OAAO,OAAO,cAAc,YAC5B,SACA,OAAO,MAAM,cAAc,SAE3B,QAAO,OAAO,KAAK,OAAO,WAAW,MAAM,UAAU;YAEpD,QAAQ,YAAY,IAAI,SAAS,SAAS,KAC3C,OAAO,OAAO,WAAW,YACzB,SACA,OAAO,MAAM,WAAW,SAExB,QAAO,OAAO,YAAY,OAAO,MAAM,MAAM,KAAK;WACzC,QAAQ,UAAU,OAAO,QAAQ,OAAO,KACjD,QAAO,OAAO;GAAE,GAAG,OAAO;GAAM,GAAG,OAAO;GAAM;WACvC,QAAQ,QAAQ,OAAO,MAAM,OAAO,GAC7C,QAAO,KAAK,SAAS,OAAO,IAAI,OAAO,GAAG;MAG1C,QAAO,OACL,SAAS,MAAM,SAAS,SAAY,MAAM,OAAO,OAAO;AAK9D,OAAK,IAAI,OAAO,MACd,KAAI,OAAO,SAAS,OAClB,QAAO,OAAO,MAAM;;AAK1B,QAAO"}
1
+ {"version":3,"file":"mergeProps.js","names":[],"sources":["../../../src/utils/react/mergeProps.tsx"],"sourcesContent":["import { mergeStyles } from '@tenphi/tasty';\nimport clsx from 'clsx';\n\nimport { chain } from './chain';\nimport { mergeIds } from './useId';\n\nimport type { Props } from '../../props';\n\ntype Merge<T> = T extends [infer F, ...infer R]\n ? F extends undefined\n ? Merge<R>\n : F & Merge<R>\n : T extends [infer L]\n ? L\n : unknown;\n\n/**\n * Merges multiple props objects together. Event handlers are chained,\n * classNames are combined, and ids are deduplicated - different ids\n * will trigger a side-effect and re-render components hooked up with `useId`.\n * For all other props, the last prop object overrides all previous ones.\n * @param args - Multiple sets of props to merge together.\n */\nexport function mergeProps<T extends (Props | undefined)[], K = Merge<T>>(\n ...args: T\n): K {\n let result: any = {};\n\n for (let props of args) {\n for (let key in result) {\n // Chain events\n if (\n /^on[A-Z]/.test(key) &&\n typeof result[key] === 'function' &&\n props &&\n typeof props[key] === 'function'\n ) {\n result[key] = chain(result[key], props[key]);\n\n // Merge classnames, sometimes classNames are empty string which eval to false, so we just need to do a type check\n } else if (\n key === 'className' &&\n typeof result.className === 'string' &&\n props &&\n typeof props.className === 'string'\n ) {\n result[key] = clsx(result.className, props.className);\n } else if (\n (key === 'styles' || key.endsWith('Styles')) &&\n typeof result.styles === 'object' &&\n props &&\n typeof props.styles === 'object'\n ) {\n result[key] = mergeStyles(result[key], props[key]);\n } else if (key === 'mods' && result.mods && props?.mods) {\n result.mods = { ...result.mods, ...props?.mods };\n } else if (key === 'id' && result.id && props?.id) {\n result.id = mergeIds(result.id, props?.id);\n // Override others\n } else {\n result[key] =\n props && props[key] !== undefined ? props[key] : result[key];\n }\n }\n\n // Add props from b that are not in a\n for (let key in props) {\n if (result[key] === undefined) {\n result[key] = props[key];\n }\n }\n }\n\n return result as K;\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,SAAgB,WACd,GAAG,MACA;CACH,IAAI,SAAc,EAAE;AAEpB,MAAK,IAAI,SAAS,MAAM;AACtB,OAAK,IAAI,OAAO,OAEd,KACE,WAAW,KAAK,IAAI,IACpB,OAAO,OAAO,SAAS,cACvB,SACA,OAAO,MAAM,SAAS,WAEtB,QAAO,OAAO,MAAM,OAAO,MAAM,MAAM,KAAK;WAI5C,QAAQ,eACR,OAAO,OAAO,cAAc,YAC5B,SACA,OAAO,MAAM,cAAc,SAE3B,QAAO,OAAO,KAAK,OAAO,WAAW,MAAM,UAAU;YAEpD,QAAQ,YAAY,IAAI,SAAS,SAAS,KAC3C,OAAO,OAAO,WAAW,YACzB,SACA,OAAO,MAAM,WAAW,SAExB,QAAO,OAAO,YAAY,OAAO,MAAM,MAAM,KAAK;WACzC,QAAQ,UAAU,OAAO,QAAQ,OAAO,KACjD,QAAO,OAAO;GAAE,GAAG,OAAO;GAAM,GAAG,OAAO;GAAM;WACvC,QAAQ,QAAQ,OAAO,MAAM,OAAO,GAC7C,QAAO,KAAK,SAAS,OAAO,IAAI,OAAO,GAAG;MAG1C,QAAO,OACL,SAAS,MAAM,SAAS,SAAY,MAAM,OAAO,OAAO;AAK9D,OAAK,IAAI,OAAO,MACd,KAAI,OAAO,SAAS,OAClB,QAAO,OAAO,MAAM;;AAK1B,QAAO"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { Props } from "@tenphi/tasty";
2
+ import { Props } from "../../props.js";
3
3
 
4
4
  //#region src/utils/react/nullableValue.d.ts
5
5
  type WithNullableValue<T extends Props> = Omit<T, 'value' | 'defaultValue'> & {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/react/nullableValue.ts
3
3
  function castNullableStringValue(props) {
4
4
  return castNullableField(props, ["value", "defaultValue"], "string", (v) => String(v));
@@ -1 +1 @@
1
- {"version":3,"file":"nullableValue.js","names":[],"sources":["../../../src/utils/react/nullableValue.ts"],"sourcesContent":["import { Props } from '@tenphi/tasty';\n\nexport function castNullableStringValue<T>(props: T): T {\n return castNullableField(props, ['value', 'defaultValue'], 'string', (v) =>\n String(v),\n );\n}\n\nexport function castNullableNumberValue<T>(props: T): T {\n return castNullableField(props, ['value', 'defaultValue'], 'number', (v) =>\n Number(v),\n );\n}\n\nexport function castNullableArrayValue<T>(props: T): T {\n return castNullableField(props, ['value', 'defaultValue'], 'object', (v) =>\n Array.isArray(v) ? v : [],\n );\n}\n\nexport function castNullableIsSelected<T>(props: T): T {\n return castNullableField(\n props,\n ['isSelected', 'defaultSelected'],\n 'boolean',\n (v) => !!v,\n );\n}\n\nexport function castNullableSelectedKey<T>(props: T): T {\n return castNullableField(props, ['selectedKey', 'defaultSelectedKey']);\n}\n\nexport function castNullableField<T>(\n props: T,\n keys: string[],\n type?: string,\n cast?: (k: any) => any,\n): T {\n props = { ...props };\n\n keys.forEach((key) => {\n if (props[key] === null) {\n props[key] = undefined;\n }\n\n if (type && cast && props[key] != null && typeof props[key] != type) {\n props[key] = cast(props[key]);\n\n console.warn(\n 'Wrong value type in',\n props,\n 'in keys',\n JSON.stringify(keys),\n );\n }\n });\n\n return props;\n}\n\nexport type WithNullableValue<T extends Props> = Omit<\n T,\n 'value' | 'defaultValue'\n> & {\n value?: T['value'] | any;\n defaultValue?: T['defaultValue'] | any;\n};\n\nexport type WithNullableSelected<T extends Props> = Omit<\n T,\n 'isSelected' | 'defaultSelected'\n> & {\n isSelected?: T['isSelected'] | any;\n defaultSelected?: T['defaultSelected'] | any;\n};\n\nexport type WithNullableSelectedKey<T extends Props> = Omit<\n T,\n 'selectedKey' | 'defaultSelectedKey'\n> & {\n selectedKey?: T['selectedKey'] | any;\n defaultSelectedKey?: T['defaultSelectedKey'] | any;\n};\n"],"mappings":";;AAEA,SAAgB,wBAA2B,OAAa;AACtD,QAAO,kBAAkB,OAAO,CAAC,SAAS,eAAe,EAAE,WAAW,MACpE,OAAO,EAAE,CACV;;AAGH,SAAgB,wBAA2B,OAAa;AACtD,QAAO,kBAAkB,OAAO,CAAC,SAAS,eAAe,EAAE,WAAW,MACpE,OAAO,EAAE,CACV;;AAGH,SAAgB,uBAA0B,OAAa;AACrD,QAAO,kBAAkB,OAAO,CAAC,SAAS,eAAe,EAAE,WAAW,MACpE,MAAM,QAAQ,EAAE,GAAG,IAAI,EAAE,CAC1B;;AAGH,SAAgB,uBAA0B,OAAa;AACrD,QAAO,kBACL,OACA,CAAC,cAAc,kBAAkB,EACjC,YACC,MAAM,CAAC,CAAC,EACV;;AAOH,SAAgB,kBACd,OACA,MACA,MACA,MACG;AACH,SAAQ,EAAE,GAAG,OAAO;AAEpB,MAAK,SAAS,QAAQ;AACpB,MAAI,MAAM,SAAS,KACjB,OAAM,OAAO;AAGf,MAAI,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,OAAO,MAAM,QAAQ,MAAM;AACnE,SAAM,OAAO,KAAK,MAAM,KAAK;AAE7B,WAAQ,KACN,uBACA,OACA,WACA,KAAK,UAAU,KAAK,CACrB;;GAEH;AAEF,QAAO"}
1
+ {"version":3,"file":"nullableValue.js","names":[],"sources":["../../../src/utils/react/nullableValue.ts"],"sourcesContent":["import type { Props } from '../../props';\n\nexport function castNullableStringValue<T>(props: T): T {\n return castNullableField(props, ['value', 'defaultValue'], 'string', (v) =>\n String(v),\n );\n}\n\nexport function castNullableNumberValue<T>(props: T): T {\n return castNullableField(props, ['value', 'defaultValue'], 'number', (v) =>\n Number(v),\n );\n}\n\nexport function castNullableArrayValue<T>(props: T): T {\n return castNullableField(props, ['value', 'defaultValue'], 'object', (v) =>\n Array.isArray(v) ? v : [],\n );\n}\n\nexport function castNullableIsSelected<T>(props: T): T {\n return castNullableField(\n props,\n ['isSelected', 'defaultSelected'],\n 'boolean',\n (v) => !!v,\n );\n}\n\nexport function castNullableSelectedKey<T>(props: T): T {\n return castNullableField(props, ['selectedKey', 'defaultSelectedKey']);\n}\n\nexport function castNullableField<T>(\n props: T,\n keys: string[],\n type?: string,\n cast?: (k: any) => any,\n): T {\n props = { ...props };\n\n keys.forEach((key) => {\n if (props[key] === null) {\n props[key] = undefined;\n }\n\n if (type && cast && props[key] != null && typeof props[key] != type) {\n props[key] = cast(props[key]);\n\n console.warn(\n 'Wrong value type in',\n props,\n 'in keys',\n JSON.stringify(keys),\n );\n }\n });\n\n return props;\n}\n\nexport type WithNullableValue<T extends Props> = Omit<\n T,\n 'value' | 'defaultValue'\n> & {\n value?: T['value'] | any;\n defaultValue?: T['defaultValue'] | any;\n};\n\nexport type WithNullableSelected<T extends Props> = Omit<\n T,\n 'isSelected' | 'defaultSelected'\n> & {\n isSelected?: T['isSelected'] | any;\n defaultSelected?: T['defaultSelected'] | any;\n};\n\nexport type WithNullableSelectedKey<T extends Props> = Omit<\n T,\n 'selectedKey' | 'defaultSelectedKey'\n> & {\n selectedKey?: T['selectedKey'] | any;\n defaultSelectedKey?: T['defaultSelectedKey'] | any;\n};\n"],"mappings":";;AAEA,SAAgB,wBAA2B,OAAa;AACtD,QAAO,kBAAkB,OAAO,CAAC,SAAS,eAAe,EAAE,WAAW,MACpE,OAAO,EAAE,CACV;;AAGH,SAAgB,wBAA2B,OAAa;AACtD,QAAO,kBAAkB,OAAO,CAAC,SAAS,eAAe,EAAE,WAAW,MACpE,OAAO,EAAE,CACV;;AAGH,SAAgB,uBAA0B,OAAa;AACrD,QAAO,kBAAkB,OAAO,CAAC,SAAS,eAAe,EAAE,WAAW,MACpE,MAAM,QAAQ,EAAE,GAAG,IAAI,EAAE,CAC1B;;AAGH,SAAgB,uBAA0B,OAAa;AACrD,QAAO,kBACL,OACA,CAAC,cAAc,kBAAkB,EACjC,YACC,MAAM,CAAC,CAAC,EACV;;AAOH,SAAgB,kBACd,OACA,MACA,MACA,MACG;AACH,SAAQ,EAAE,GAAG,OAAO;AAEpB,MAAK,SAAS,QAAQ;AACpB,MAAI,MAAM,SAAS,KACjB,OAAM,OAAO;AAGf,MAAI,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,OAAO,MAAM,QAAQ,MAAM;AACnE,SAAM,OAAO,KAAK,MAAM,KAAK;AAE7B,WAAQ,KACN,uBACA,OACA,WACA,KAAK,UAAU,KAAK,CACrB;;GAEH;AAEF,QAAO"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/react/resolveIcon.ts
3
3
  /**
4
4
  * Resolves a dynamic icon prop to its content and slot state.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useEffect, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useCombinedRefs.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { createSharedStore } from "./sharedStore.js";
3
3
  import { useEffect } from "react";
4
4
  import { useFocusVisible } from "react-aria";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useEventBus.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "./useLayoutEffect.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { useSSRSafeId } from "@react-aria/ssr";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useIsDarwin.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useIsDarwin } from "./useIsDarwin.js";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import * as React$1 from "react";
3
3
 
4
4
  //#region src/utils/react/useLayoutEffect.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useCallback, useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { mergeStyles } from "@tenphi/tasty";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { EventBusContext, useEventBus } from "./useEventBus.js";
3
3
  import { useCallback, useContext, useEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/react/useQaProps.ts
3
3
  /**
4
4
  * Processes QA props.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useViewportSize.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  import { isValidElement } from "react";
3
3
  import { isFragment } from "react-is";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/selection.ts
3
3
  /**
4
4
  * Deduplicate/toggle keys in a selection: if a key appears twice it is
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/styles.ts
3
3
  /**
4
4
  * Split properties into style and non-style properties.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/tree.ts
3
3
  function toFlatTree(tree, includingFolders) {
4
4
  return tree.reduce((result, node) => {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/utils/warnings.ts
3
3
  const SUGGESTED_PROP_MAP = {
4
4
  disabled: "isDisabled",
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.155.0 | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.154.0";
4
- const TASTY_VERSION = "2.11.2";
3
+ const VERSION = "0.155.0";
4
+ const TASTY_VERSION = "3.0.1";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
7
7
  const tastyVersion = TASTY_VERSION;
package/docs/Theming.md CHANGED
@@ -21,16 +21,16 @@ value so this stays true.
21
21
 
22
22
  ## What is tunable
23
23
 
24
- | Option | Scope | Default |
25
- | --- | --- | --- |
26
- | `hue` | **Accent** hue in degrees — the brand. Drives the `accent-*` family, `primary` / `purple` / `special`, and the brand-tinted `focus`, loading faces and disabled chip. | `280.3` |
27
- | `baseHue` | **Base** hue in degrees — the neutral chrome: `surface` and its ladder, the `surface-text*` ramp, `border`, `placeholder`. | inherits `hue` |
28
- | `saturation` | Seed saturation (0–100) for the `default` theme, and the fallback for every theme that sets none. | `80` |
29
- | `themes.<status>.hue` | Hue for `success` / `danger` / `warning` / `note`. | `156.9` / `23.1` / `84.3` / `302.3` |
30
- | `themes.<status>.saturation` | Saturation for that status theme. | inherits `saturation` |
31
- | `themes.code.saturation` | Saturation for the `code-*` syntax family. Hues are fixed, and this does **not** inherit `saturation`. | `80` |
32
- | `pastel` | Global. Relaxes the sRGB-safe chroma limit. | `false` |
33
- | `contrastLevel` | Global. `'auto'`, or a manual `0`–`100` level. | `'auto'` |
24
+ | Option | Scope | Default |
25
+ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
26
+ | `hue` | **Accent** hue in degrees — the brand. Drives the `accent-*` family, `primary` / `purple` / `special`, and the brand-tinted `focus`, loading faces and disabled chip. | `280.3` |
27
+ | `baseHue` | **Base** hue in degrees — the neutral chrome: `surface` and its ladder, the `surface-text*` ramp, `border`, `placeholder`. | inherits `hue` |
28
+ | `saturation` | Seed saturation (0–100) for the `default` theme, and the fallback for every theme that sets none. | `80` |
29
+ | `themes.<status>.hue` | Hue for `success` / `danger` / `warning` / `note`. | `156.9` / `23.1` / `84.3` / `302.3` |
30
+ | `themes.<status>.saturation` | Saturation for that status theme. | inherits `saturation` |
31
+ | `themes.code.saturation` | Saturation for the `code-*` syntax family. Hues are fixed, and this does **not** inherit `saturation`. | `80` |
32
+ | `pastel` | Global. Relaxes the sRGB-safe chroma limit. Every theme except `code`. | `false` |
33
+ | `contrastLevel` | Global. `'auto'`, or a manual `0`–`100` level. | `'auto'` |
34
34
 
35
35
  ### The setter replaces
36
36
 
@@ -81,15 +81,15 @@ setPaletteConfig({ hue: 235, baseHue: 60 });
81
81
  ```
82
82
 
83
83
  Only the `default` theme is affected. A colored theme's tinted `surface`
84
- deliberately follows *its own* hue, because a danger banner should read as red.
84
+ deliberately follows _its own_ hue, because a danger banner should read as red.
85
85
 
86
86
  ### One saturation scale per theme
87
87
 
88
- Saturation is *not* split, deliberately: `saturation` is the theme's **seed**, and
88
+ Saturation is _not_ split, deliberately: `saturation` is the theme's **seed**, and
89
89
  every color's own `saturation` is a 0–1 factor of it. `surface` sits at `0.12`,
90
90
  `border` at `0.175`, the text ramp at `0.2`, the accent family at ~`1.0`.
91
91
 
92
- So the palette has one saturation *scale*, and everything on it keeps its
92
+ So the palette has one saturation _scale_, and everything on it keeps its
93
93
  proportions: turning `saturation` down mutes the brand fills and the neutral tint
94
94
  together, in the ratios the palette was designed around. That is the point — the
95
95
  relationship between a subtle surface tint and a saturated accent is part of the
@@ -101,13 +101,17 @@ Syntax colors are their own theme with their own seed, so neither the brand hue
101
101
  the palette saturation reaches them. Hues are absolute literals — a brand re-seeded
102
102
  toward green would otherwise collide `code-string` with `code-number` (156°) — and
103
103
  the saturation is fixed at `80` rather than inheriting, so muting the app cannot
104
- wash out a code block. Tune it on its own:
104
+ wash out a code block. `pastel` skips them for the same reason: it lowers the chroma
105
+ ceiling far enough to take `code-keyword` from ~0.19 to ~0.07, collapsing the spread
106
+ that keeps the syntax hues apart.
107
+
108
+ So `themes.code.saturation` is the only thing that moves them. Tune it on its own:
105
109
 
106
110
  ```ts
107
111
  setPaletteConfig({ themes: { code: { saturation: 60 } } });
108
112
  ```
109
113
 
110
- They are still *adaptive*: each one is anchored to the real `surface` with an
114
+ They are still _adaptive_: each one is anchored to the real `surface` with an
111
115
  `['AA','AAA']` floor, so they re-solve for light, dark and high contrast. Only hue
112
116
  and saturation are pinned.
113
117
 
@@ -147,7 +151,7 @@ const pinned = getPaletteConfigInput().baseHue !== undefined;
147
151
 
148
152
  Pinning a field to the value it already inherited resolves to the same colors but
149
153
  still counts as a change, so a UI reading the sparse config re-renders. Re-applying
150
- an *already pinned* value is a true no-op and costs nothing.
154
+ an _already pinned_ value is a true no-op and costs nothing.
151
155
 
152
156
  ## Palette playground
153
157
 
@@ -194,8 +198,8 @@ result into a single region: pick **Light / Dark**, then either a contrast **mod
194
198
  variant while the page around it stays as it is.
195
199
 
196
200
  There is no `Auto` for scheme or contrast mode, on purpose. `Auto` means "follow
197
- the OS" — a *preference*, and a flat token value cannot express one. A preview
198
- renders one concrete variant, so it has to name which. The contrast *level* keeps
201
+ the OS" — a _preference_, and a flat token value cannot express one. A preview
202
+ renders one concrete variant, so it has to name which. The contrast _level_ keeps
199
203
  its `Auto`, because there the choice is between the two-tier model and a hand-set
200
204
  number rather than between following and not following the system.
201
205
 
@@ -229,11 +233,11 @@ The reason this needs its own API: the document palette emits **state maps**
229
233
  time — that is what `@dark` means. Collapsing the palette to a chosen scheme
230
234
  removes the conditionality, so several themes can coexist.
231
235
 
232
- | Option | Meaning |
233
- | --- | --- |
236
+ | Option | Meaning |
237
+ | --------------------------- | --------------------------------------------------------------------------------------------- |
234
238
  | every `PaletteConfig` field | merged over the **current** config, so `{ scheme: 'dark' }` previews the active theme in dark |
235
- | `scheme` | `'light'` (default) or `'dark'` |
236
- | `highContrast` | resolve that scheme's high-contrast variant. Default `false` |
239
+ | `scheme` | `'light'` (default) or `'dark'` |
240
+ | `highContrast` | resolve that scheme's high-contrast variant. Default `false` |
237
241
 
238
242
  Nothing is applied globally — the live palette and the stored config are
239
243
  untouched, so previews are safe to render anywhere.
@@ -261,7 +265,7 @@ Notes:
261
265
  reproduces the normal tier and `100` the high-contrast tier exactly, in both
262
266
  schemes. Because a manual level leaves no separate high-contrast tier,
263
267
  `highContrast: true` correctly returns the same colors as the normal variant.
264
- Note that tokens carrying a contrast *floor* (most text) can sit still over part
268
+ Note that tokens carrying a contrast _floor_ (most text) can sit still over part
265
269
  of the ramp — the floor is solved, not approximated, so the value only moves once
266
270
  the interpolated target does. Tokens positioned by a plain tone pair, like
267
271
  `#border`, step at every level.
@@ -315,7 +319,7 @@ Because the setter replaces, the prop describes the **whole** palette: drop a
315
319
  field from the object and that customization goes away on the next render, which
316
320
  is what you want from a declarative prop.
317
321
 
318
- Removing the prop entirely is the one thing that does *not* reset the palette —
322
+ Removing the prop entirely is the one thing that does _not_ reset the palette —
319
323
  `<Root>` with no `palette` leaves whatever is configured alone, so that the common
320
324
  case cannot clobber a host's imperative `setPaletteConfig()` call. Pass
321
325
  `palette={{}}` if you do want the default.
@@ -333,11 +337,11 @@ and not per request:
333
337
 
334
338
  ## Caveats
335
339
 
336
- **`pastel: true` is a redesign, not a filter.** It changes every resolved color.
337
- The per-color saturation factors in this palette were tuned for the non-pastel
338
- space — pastel equalizes chroma across hues, so a pastel palette on the shipped
339
- seeds resolves more saturated than you may expect. Re-tune the seeds alongside
340
- it.
340
+ **`pastel: true` is a redesign, not a filter.** It changes every resolved color
341
+ outside the `code-*` family. The per-color saturation factors in this palette were
342
+ tuned for the non-pastel space — pastel equalizes chroma across hues, so a pastel
343
+ palette on the shipped seeds resolves more saturated than you may expect. Re-tune
344
+ the seeds alongside it.
341
345
 
342
346
  **Re-seeding costs about 10 ms.** Rebuilding the eight themes and re-solving
343
347
  ~156 tokens across four scheme variants is not free, though it is inside a frame.
@@ -366,7 +370,7 @@ it.
366
370
  **Some things are not tunable at all.** Tasty locks its configuration on the
367
371
  first style injection, so the `@dark` / `@hc` state definitions and the
368
372
  `colorSpace` (both set in `Root`) are fixed for the lifetime of the page. Only
369
- token *values* stay mutable — which is all re-seeding needs.
373
+ token _values_ stay mutable — which is all re-seeding needs.
370
374
 
371
375
  ## See also
372
376
 
@@ -14,14 +14,13 @@ A flexible text component for inline or block text. Renders as `<span>` by defau
14
14
  - **`monospace`** `boolean` — Use monospace font
15
15
  - **`ellipsis`** `boolean` — Truncate overflow with ellipsis (sets `display: block`, `nowrap`, `overflow: hidden`)
16
16
  - **`nowrap`** `boolean` — Prevent text wrapping
17
- - **`block`** `boolean` — Display as block element
18
17
  - **`italic`** `string` — Font style (maps to `fontStyle`)
19
18
  - **`weight`** `string | number` — Font weight (maps to `fontWeight`)
20
19
  - **`transform`** `string` — Text transform (maps to `textTransform`)
21
20
 
22
21
  ### Style Defaults
23
22
 
24
- - `display` — `inline` (switches to `block` when `ellipsis` or `block`)
23
+ - `display` — `inline` (switches to `block` when `ellipsis`). Pass `display="block"` to override.
25
24
  - `margin` — `0`
26
25
  - `padding` — `0`
27
26
 
@@ -20,13 +20,15 @@ Tasty is a styling engine for design systems that turns component state into det
20
20
  - **React components**: [React API](react-api.md)
21
21
  - **Zero-runtime / build-time extraction**: [Zero Runtime (tastyStatic)](tasty-static.md)
22
22
  - **Runtime `tasty()` with server collection and hydration**: [Server-Side Rendering](ssr.md)
23
+ - **Upgrading from v2**: [Migration Guide (v2 → v3)](migration-v3.md)
23
24
 
24
25
  ## By Task
25
26
 
26
27
  - **Learn the style language**: [Style DSL](dsl.md)
27
28
  - **Brief an AI agent (or yourself) on writing correct styles**: [Style Rules for AI Agents](ai-agents.md)
28
29
  - **Look up a property handler**: [Style Properties](styles.md)
29
- - **Define tokens, units, recipes, keyframes, or properties globally**: [Configuration](configuration.md)
30
+ - **Define tokens, units, recipes, keyframes, properties, functions, or polyfills globally**: [Configuration](configuration.md)
31
+ - **Extend Tasty with a plugin, custom handler, or custom prop**: [Plugins & Extension Points](plugins.md)
30
32
  - **Debug generated CSS or cache behavior**: [Debug Utilities](debug.md)
31
33
  - **Understand how selector generation works internally**: [Style rendering pipeline](pipeline.md)
32
34
  - **Understand runtime injection internals**: [Style Injector](injector.md)
@@ -1,6 +1,6 @@
1
1
  # Tasty Style Rules for AI Agents
2
2
 
3
- A compact ruleset for **writing correct `@tenphi/tasty` styles**. It is not an API tour — every rule here is machine-checked by [`@tenphi/eslint-plugin-tasty`](https://www.npmjs.com/package/@tenphi/eslint-plugin-tasty), so following it means clean lint output. For explanations and the complete API, see [Style DSL](dsl.md), [Style Properties](styles.md), [React API](react-api.md).
3
+ A compact ruleset for **writing correct `@tenphi/tasty` styles**. It is not an API tour — most rules here are machine-checked by [`@tenphi/eslint-plugin-tasty`](https://www.npmjs.com/package/@tenphi/eslint-plugin-tasty), so following it generally means clean lint output. The plugin ships separately and can lag a new DSL rule, so treat this page as the source of truth and the plugin as the enforcement that catches most of it. For explanations and the complete API, see [Style DSL](dsl.md), [Style Properties](styles.md), [React API](react-api.md).
4
4
 
5
5
  Notation: ❌ wrong → ✅ correct.
6
6
 
@@ -64,7 +64,8 @@ The last row goes the other way — longhands over the shorthand — because `fl
64
64
  | `#clear` / `#current` | `transparent` / `currentcolor` |
65
65
  | `$name` | custom property → `var(--name)` |
66
66
  | `(#a, #b)` | fallback chain |
67
- | `$$name` / `##name` | the property *name* — only inside `transition` |
67
+ | `$$name` / `##name` | the custom property *name* (not its value) — inside `transition` |
68
+ | `$$name(…)` | call a CSS `@function` declared via `@function`, `useFunction`, or config |
68
69
 
69
70
  - ❌ `#f5f5f5`, `rgb(0 0 0)`, `oklch(…)`, `okhsl(…)`, `red` → ✅ `#surface` (add the token to the config if it doesn't exist).
70
71
  - ❌ `var(--gap)` → ✅ `$gap` · ❌ `$accent-color` → ✅ `#accent` · ❌ `transparent` → ✅ `#clear` · ❌ `currentColor` → ✅ `#current`.
@@ -82,7 +83,7 @@ Prefer units over raw pixels: `8px` → `1x` … `64px` → `8x`; `radius: '6px'
82
83
 
83
84
  ### `true`
84
85
 
85
- `true` means "the design-system default" and is accepted **only** by: `border`, `radius`, `outline`, `shadow`, `padding`, `margin`, `gap`, `inset`, `width`, `height`, `fill`, `color`, `preset`, `font`, `scrollbar`, `hide`. Anywhere else it is an error.
86
+ `true` means "the design-system default" and is accepted **only** by: `border`, `radius`, `outline`, `shadow`, `padding`, `margin`, `gap`, `inset`, `width`, `height`, `fill`, `color`, `fade`, `preset`, `font`, `scrollbar`, `hide`. Anywhere else it is an error.
86
87
 
87
88
  ### `!important`
88
89
 
@@ -90,7 +91,7 @@ Never use it. Tasty owns specificity through doubled selectors and state orderin
90
91
 
91
92
  ### Modifiers
92
93
 
93
- A value is `[values…] [modifiers…]`, and several groups can be comma-separated (later groups override earlier ones). Only the modifiers a property knows are valid:
94
+ A value is `[values…] [modifiers…]`, and several groups can be comma-separated (later groups override earlier ones). A group that names **direction** modifiers takes a **single** value, applied to every direction it names — per-side values come from comma groups. A group naming no direction keeps plain CSS shorthand order (1–4 values). (`inset` + `dock` is the one exception: a second value insets the spanned sides.) Only the modifiers a property knows are valid:
94
95
 
95
96
  | Property | Modifiers |
96
97
  |----------|-----------|
@@ -111,6 +112,8 @@ Directional modifiers beat placeholder zeros:
111
112
  - ❌ `padding: '0 0 2x 0'` → ✅ `padding: '2x bottom'`
112
113
  - ❌ `padding: '1x 1x 2x 1x'` → ✅ `padding: '1x, 2x bottom'`
113
114
  - ❌ `border: '0 0 1bw 0'` — four tokens parse as *one* border value, so this renders no border at all → ✅ `border: '1bw bottom'`
115
+ - ❌ `padding: '2x 4x top right'` — a directional group takes one value, so `4x` is dropped → ✅ `padding: '2x top, 4x right'`
116
+ - ❌ `fade: '3x 1x top bottom'` → ✅ `fade: '3x top, 1x bottom'`
114
117
 
115
118
  Value-only properties reject both colors and modifiers: `gap`, `columnGap`, `rowGap`, `opacity`, `zIndex`, `order`, `flexGrow`, `flexShrink`, `flexBasis`, `aspectRatio`, `lineClamp`, `tabSize`, `paddingInline`, `paddingBlock`. `fill` and `color` take a color (plus `none` / `transparent`); `caretColor` and `accentColor` take a color only.
116
119
 
@@ -184,11 +187,21 @@ styles: { Title: { preset: 'h3' }, Icon: { $: '>@:last-child', color: '#accent'
184
187
  | Key | Shape |
185
188
  |-----|-------|
186
189
  | `@keyframes` | `{ name: { '0%': styles, … } }` |
187
- | `@properties` | `{ '$name': { syntax, inherits, initialValue } }` |
188
- | `@fontFace` | `{ 'Family Name': descriptors \| descriptors[] }` |
189
- | `@counterStyle` | `{ name: descriptors }` |
190
+ | `@property` | `{ '$name': { syntax, inherits, initialValue } }` |
191
+ | `@font-face` | `{ 'Family Name': descriptors \| descriptors[] }` |
192
+ | `@counter-style` | `{ name: descriptors }` |
193
+ | `@function` | `{ '$$name': { args, returns?, result, '$local'? } }` |
190
194
  | `recipe` | a **string** of configured recipe names: `'card elevated'`, `'reset input / autofill'`, `'none / disabled'` |
191
195
 
196
+ At-rule keys match the real CSS at-rule names, so they are kebab-case, not camelCase. Inside `@function`, the callable is `$$name` but its parameters and local variables are `$name`:
197
+
198
+ ```jsx
199
+ styles: {
200
+ '@function': { $$negative: { args: ['$value'], result: '(-1 * $value)' } },
201
+ marginTop: '$$negative(2x)',
202
+ }
203
+ ```
204
+
192
205
  ## 7. `tastyStatic()`
193
206
 
194
207
  The selector must be a string literal and valid CSS. Values must be static — strings, numbers, booleans, `null`, or objects/arrays of those. No variables, template literals, function calls, or spreads.
@@ -203,4 +216,5 @@ The selector must be a string literal and valid CSS. Values must be static — s
203
216
  - Modifiers valid for the property; directional shorthand instead of placeholder zeros.
204
217
  - Every state map starts with `''` (or `_`), is flat, and lives inside a property value.
205
218
  - `@own()` only inside sub-elements; sub-element keys are capitalized and hold objects.
219
+ - At-rule keys are kebab-case (`@property`, `@font-face`, `@counter-style`, `@function`); `@function` names use `$$`, their args and locals use `$`.
206
220
  - Values are static; dynamic behavior comes from `mods` / `tokens` / `styleProps`.