@cube-dev/ui-kit 0.0.0-canary-1e090a8 → 0.0.0-canary-2397690

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 (562) hide show
  1. package/es/_internal/hooks/index.js +1 -1
  2. package/es/_internal/hooks/use-chained-callback.js +1 -1
  3. package/es/_internal/hooks/use-debounced-value.js +1 -1
  4. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/es/_internal/hooks/use-effect-once.js +1 -1
  6. package/es/_internal/hooks/use-event.js +1 -1
  7. package/es/_internal/hooks/use-is-first-render.js +1 -1
  8. package/es/_internal/hooks/use-sync-ref.js +1 -1
  9. package/es/_internal/hooks/use-timer/index.js +1 -1
  10. package/es/_internal/hooks/use-timer/timer.js +1 -1
  11. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/es/_internal/hooks/use-update-effect.js +1 -1
  13. package/es/_internal/hooks/use-warn.js +1 -1
  14. package/es/_internal/index.js +1 -1
  15. package/es/components/Block.js +1 -1
  16. package/es/components/CollectionItem.js +1 -1
  17. package/es/components/GlobalStyles.js +1 -1
  18. package/es/components/GridProvider.js +1 -1
  19. package/es/components/HiddenInput.js +1 -1
  20. package/es/components/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +1 -1
  22. package/es/components/actions/Action/Action.js +1 -1
  23. package/es/components/actions/Button/Button.js +74 -30
  24. package/es/components/actions/Button/index.js +1 -1
  25. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  26. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/es/components/actions/CommandMenu/index.js +1 -1
  28. package/es/components/actions/CommandMenu/styled.js +1 -1
  29. package/es/components/actions/ItemAction/ItemAction.js +1 -1
  30. package/es/components/actions/ItemAction/index.js +1 -1
  31. package/es/components/actions/ItemActionContext.js +5 -2
  32. package/es/components/actions/ItemButton/ItemButton.js +28 -11
  33. package/es/components/actions/ItemButton/index.js +1 -1
  34. package/es/components/actions/Link/Link.js +1 -1
  35. package/es/components/actions/Menu/Menu.js +1 -1
  36. package/es/components/actions/Menu/MenuItem.js +1 -1
  37. package/es/components/actions/Menu/MenuSection.js +1 -1
  38. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  39. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  40. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  41. package/es/components/actions/Menu/context.js +1 -1
  42. package/es/components/actions/Menu/index.js +1 -1
  43. package/es/components/actions/Menu/styled.js +1 -1
  44. package/es/components/actions/index.js +1 -1
  45. package/es/components/actions/use-action.js +1 -1
  46. package/es/components/actions/use-anchored-menu.js +1 -1
  47. package/es/components/actions/use-context-menu.js +1 -1
  48. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  49. package/es/components/content/Alert/Alert.js +1 -1
  50. package/es/components/content/Alert/index.js +1 -1
  51. package/es/components/content/Alert/types.js +1 -1
  52. package/es/components/content/Alert/use-alert.js +1 -1
  53. package/es/components/content/Avatar/Avatar.js +1 -1
  54. package/es/components/content/Badge/Badge.js +1 -1
  55. package/es/components/content/Card/Card.js +1 -1
  56. package/es/components/content/Content.js +1 -1
  57. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  58. package/es/components/content/CopyPasteBlock/index.js +1 -1
  59. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  60. package/es/components/content/CopySnippet/index.js +1 -1
  61. package/es/components/content/Disclosure/Disclosure.js +7 -3
  62. package/es/components/content/Disclosure/index.js +1 -1
  63. package/es/components/content/Divider.js +1 -1
  64. package/es/components/content/Footer.js +1 -1
  65. package/es/components/content/Header.js +1 -1
  66. package/es/components/content/HotKeys/HotKeys.js +1 -1
  67. package/es/components/content/HotKeys/index.js +1 -1
  68. package/es/components/content/Item/Item.js +156 -54
  69. package/es/components/content/Item/index.js +1 -1
  70. package/es/components/content/ItemBadge/ItemBadge.js +1 -1
  71. package/es/components/content/ItemBadge/index.js +1 -1
  72. package/es/components/content/Layout/GridLayout.js +1 -1
  73. package/es/components/content/Layout/Layout.js +13 -8
  74. package/es/components/content/Layout/LayoutBlock.js +1 -1
  75. package/es/components/content/Layout/LayoutCenter.js +1 -1
  76. package/es/components/content/Layout/LayoutContainer.js +8 -5
  77. package/es/components/content/Layout/LayoutContent.js +11 -9
  78. package/es/components/content/Layout/LayoutContext.js +1 -1
  79. package/es/components/content/Layout/LayoutFlex.js +1 -1
  80. package/es/components/content/Layout/LayoutFooter.js +5 -1
  81. package/es/components/content/Layout/LayoutGrid.js +1 -1
  82. package/es/components/content/Layout/LayoutHeader.js +1 -1
  83. package/es/components/content/Layout/LayoutPane.js +9 -7
  84. package/es/components/content/Layout/LayoutPanel.js +6 -2
  85. package/es/components/content/Layout/LayoutPanelHeader.js +3 -6
  86. package/es/components/content/Layout/LayoutToolbar.js +2 -1
  87. package/es/components/content/Layout/hooks/useTinyScrollbar.js +14 -5
  88. package/es/components/content/Layout/index.js +1 -1
  89. package/es/components/content/Layout/utils.js +1 -1
  90. package/es/components/content/List/SectionHeading.js +1 -1
  91. package/es/components/content/List/index.js +1 -1
  92. package/es/components/content/Paragraph.js +1 -1
  93. package/es/components/content/Placeholder/Placeholder.js +1 -1
  94. package/es/components/content/PrismCode/PrismCode.js +1 -1
  95. package/es/components/content/PrismCode/prismSetup.js +1 -1
  96. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  97. package/es/components/content/Result/Result.js +1 -1
  98. package/es/components/content/Skeleton/Skeleton.js +1 -1
  99. package/es/components/content/Tag/Tag.js +1 -1
  100. package/es/components/content/Text.js +3 -2
  101. package/es/components/content/TextItem/TextItem.js +1 -1
  102. package/es/components/content/TextItem/index.js +1 -1
  103. package/es/components/content/Title.js +1 -1
  104. package/es/components/content/highlightText.js +1 -1
  105. package/es/components/content/use-auto-tooltip.js +1 -1
  106. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  107. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  108. package/es/components/fields/Checkbox/context.js +1 -1
  109. package/es/components/fields/Checkbox/index.js +1 -1
  110. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  111. package/es/components/fields/ComboBox/index.js +1 -1
  112. package/es/components/fields/DatePicker/DateInput.js +1 -1
  113. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  114. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  115. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  116. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  117. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  118. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  119. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  120. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  121. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  122. package/es/components/fields/DatePicker/index.js +1 -1
  123. package/es/components/fields/DatePicker/intl.js +1 -1
  124. package/es/components/fields/DatePicker/parseDate.js +1 -1
  125. package/es/components/fields/DatePicker/props.js +1 -1
  126. package/es/components/fields/DatePicker/types.js +1 -1
  127. package/es/components/fields/DatePicker/utils.js +1 -1
  128. package/es/components/fields/FileInput/FileInput.js +1 -1
  129. package/es/components/fields/FilterListBox/FilterListBox.js +6 -7
  130. package/es/components/fields/FilterListBox/index.js +1 -1
  131. package/es/components/fields/FilterPicker/FilterPicker.js +3 -3
  132. package/es/components/fields/FilterPicker/index.js +1 -1
  133. package/es/components/fields/Input/Input.js +1 -1
  134. package/es/components/fields/Input/index.js +1 -1
  135. package/es/components/fields/ListBox/ListBox.js +1 -1
  136. package/es/components/fields/ListBox/index.js +1 -1
  137. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  138. package/es/components/fields/NumberInput/StepButton.js +1 -1
  139. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  140. package/es/components/fields/Picker/Picker.js +3 -3
  141. package/es/components/fields/Picker/index.js +1 -1
  142. package/es/components/fields/RadioGroup/Radio.js +1 -1
  143. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  144. package/es/components/fields/RadioGroup/context.js +1 -1
  145. package/es/components/fields/RadioGroup/index.js +1 -1
  146. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  147. package/es/components/fields/SearchInput/index.js +1 -1
  148. package/es/components/fields/Select/Select.js +3 -3
  149. package/es/components/fields/Select/index.js +1 -1
  150. package/es/components/fields/Slider/Gradation.js +1 -1
  151. package/es/components/fields/Slider/Header.js +1 -1
  152. package/es/components/fields/Slider/RangeSlider.js +1 -1
  153. package/es/components/fields/Slider/Slider.js +1 -1
  154. package/es/components/fields/Slider/SliderBase.js +1 -1
  155. package/es/components/fields/Slider/SliderInput.js +1 -1
  156. package/es/components/fields/Slider/SliderThumb.js +1 -1
  157. package/es/components/fields/Slider/SliderTrack.js +1 -1
  158. package/es/components/fields/Slider/elements.js +1 -1
  159. package/es/components/fields/Slider/index.js +1 -1
  160. package/es/components/fields/Slider/types.js +1 -1
  161. package/es/components/fields/Switch/Switch.js +1 -1
  162. package/es/components/fields/Switch/index.js +1 -1
  163. package/es/components/fields/TextArea/TextArea.js +1 -1
  164. package/es/components/fields/TextArea/index.js +1 -1
  165. package/es/components/fields/TextInput/TextInput.js +1 -1
  166. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  167. package/es/components/fields/TextInput/index.js +1 -1
  168. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  169. package/es/components/fields/TextInputMapper/index.js +1 -1
  170. package/es/components/fields/index.js +1 -1
  171. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  172. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  173. package/es/components/form/FieldWrapper/index.js +1 -1
  174. package/es/components/form/FieldWrapper/types.js +1 -1
  175. package/es/components/form/Form/Field.js +1 -1
  176. package/es/components/form/Form/Form.js +1 -1
  177. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  178. package/es/components/form/Form/ResetButton/index.js +1 -1
  179. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  180. package/es/components/form/Form/SubmitButton/index.js +1 -1
  181. package/es/components/form/Form/SubmitError.js +1 -1
  182. package/es/components/form/Form/index.js +1 -1
  183. package/es/components/form/Form/types.js +1 -1
  184. package/es/components/form/Form/use-field/index.js +1 -1
  185. package/es/components/form/Form/use-field/types.js +1 -1
  186. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  187. package/es/components/form/Form/use-field/use-field.js +1 -1
  188. package/es/components/form/Form/use-form.js +1 -1
  189. package/es/components/form/Form/validation.js +1 -1
  190. package/es/components/form/Label.js +1 -1
  191. package/es/components/form/index.js +1 -1
  192. package/es/components/form/wrapper.js +1 -1
  193. package/es/components/helpers/DisplayTransition/DisplayTransition.js +17 -3
  194. package/es/components/helpers/IconSwitch/IconSwitch.js +86 -0
  195. package/es/components/helpers/index.js +2 -1
  196. package/es/components/layout/Flex.js +1 -1
  197. package/es/components/layout/Flow.js +1 -1
  198. package/es/components/layout/Grid.js +1 -1
  199. package/es/components/layout/Panel.js +1 -1
  200. package/es/components/layout/Prefix.js +1 -1
  201. package/es/components/layout/ResizablePanel.js +2 -2
  202. package/es/components/layout/Space.js +1 -1
  203. package/es/components/layout/Suffix.js +1 -1
  204. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  205. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  206. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  207. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  208. package/es/components/other/Calendar/Calendar.js +1 -1
  209. package/es/components/other/Calendar/CalendarCell.js +1 -1
  210. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  211. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  212. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  213. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  214. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  215. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  216. package/es/components/overlays/AlertDialog/index.js +1 -1
  217. package/es/components/overlays/AlertDialog/types.js +1 -1
  218. package/es/components/overlays/Dialog/Dialog.js +8 -8
  219. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  220. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  221. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  222. package/es/components/overlays/Dialog/context.js +1 -1
  223. package/es/components/overlays/Dialog/index.js +1 -1
  224. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  225. package/es/components/overlays/Modal/Modal.js +3 -3
  226. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  227. package/es/components/overlays/Modal/Overlay.js +1 -1
  228. package/es/components/overlays/Modal/Popover.js +1 -1
  229. package/es/components/overlays/Modal/Tray.js +1 -1
  230. package/es/components/overlays/Modal/Underlay.js +1 -1
  231. package/es/components/overlays/Modal/index.js +1 -1
  232. package/es/components/overlays/Modal/types.js +1 -1
  233. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  234. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  235. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  236. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  237. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  238. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  239. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  240. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  241. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  242. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  243. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  244. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  245. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  246. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  247. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  248. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  249. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  250. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  251. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  252. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  253. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  254. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  255. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  256. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  257. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  258. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  259. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  260. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  261. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  262. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  263. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  264. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  265. package/es/components/overlays/NewNotifications/index.js +1 -1
  266. package/es/components/overlays/NewNotifications/types.js +1 -1
  267. package/es/components/overlays/Notification/Notification.js +1 -1
  268. package/es/components/overlays/OverlayWrapper.js +1 -1
  269. package/es/components/overlays/Toasts/Toast.js +1 -1
  270. package/es/components/overlays/Toasts/index.js +1 -1
  271. package/es/components/overlays/Toasts/types.js +1 -1
  272. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  273. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  274. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  275. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  276. package/es/components/overlays/Tooltip/context.js +1 -1
  277. package/es/components/overlays/Tooltip/index.js +1 -1
  278. package/es/components/portal/Portal.js +1 -1
  279. package/es/components/portal/PortalProvider.js +1 -1
  280. package/es/components/portal/index.js +1 -1
  281. package/es/components/portal/types.js +1 -1
  282. package/es/components/portal/usePortal.js +1 -1
  283. package/es/components/shared/InvalidIcon.js +1 -1
  284. package/es/components/shared/ValidIcon.js +1 -1
  285. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  286. package/es/components/status/LoadingAnimation/index.js +1 -1
  287. package/es/components/status/Spin/Cube.js +1 -1
  288. package/es/components/status/Spin/InternalSpinner.js +1 -1
  289. package/es/components/status/Spin/Spin.js +1 -1
  290. package/es/components/status/Spin/SpinsContainer.js +1 -1
  291. package/es/components/status/Spin/index.js +1 -1
  292. package/es/components/status/Spin/types.js +1 -1
  293. package/es/components/status/index.js +1 -1
  294. package/es/data/item-themes.js +23 -1
  295. package/es/data/themes.js +1 -1
  296. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  297. package/es/icons/AdjustmentsIcon.js +1 -1
  298. package/es/icons/AiIcon.js +1 -1
  299. package/es/icons/AreaChartIcon.js +1 -1
  300. package/es/icons/BackwardIcon.js +1 -1
  301. package/es/icons/BarChartIcon.js +1 -1
  302. package/es/icons/BellFilledIcon.js +1 -1
  303. package/es/icons/BellIcon.js +1 -1
  304. package/es/icons/BooleanIcon.js +1 -1
  305. package/es/icons/CalendarEditIcon.js +1 -1
  306. package/es/icons/CalendarIcon.js +1 -1
  307. package/es/icons/CaretDownIcon.js +1 -1
  308. package/es/icons/CaretUpIcon.js +1 -1
  309. package/es/icons/ChartAreaStackedIcon.js +1 -1
  310. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  311. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  312. package/es/icons/ChartBarGroupedIcon.js +1 -1
  313. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  314. package/es/icons/ChartBarLineIcon.js +1 -1
  315. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  316. package/es/icons/ChartBarStackedIcon.js +1 -1
  317. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  318. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  319. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  320. package/es/icons/ChartBoxPlotIcon.js +1 -1
  321. package/es/icons/ChartBubbleIcon.js +1 -1
  322. package/es/icons/ChartDonut2Icon.js +1 -1
  323. package/es/icons/ChartFunnelIcon.js +1 -1
  324. package/es/icons/ChartHeatmapIcon.js +1 -1
  325. package/es/icons/ChartKPIIcon.js +1 -1
  326. package/es/icons/ChartPie2Icon.js +1 -1
  327. package/es/icons/ChartScatterIcon.js +1 -1
  328. package/es/icons/CheckCircleFilledIcon.js +1 -1
  329. package/es/icons/CheckCircleIcon.js +1 -1
  330. package/es/icons/CheckIcon.js +1 -1
  331. package/es/icons/CircleFilledIcon.js +1 -1
  332. package/es/icons/ClearIcon.js +1 -1
  333. package/es/icons/CloseCircleFilledIcon.js +1 -1
  334. package/es/icons/CloseCircleIcon.js +1 -1
  335. package/es/icons/CloseIcon.js +1 -1
  336. package/es/icons/CodeIcon.js +1 -1
  337. package/es/icons/CopyIcon.js +1 -1
  338. package/es/icons/CountIcon.js +1 -1
  339. package/es/icons/CubeIcon.js +1 -1
  340. package/es/icons/CubePauseIcon.js +1 -1
  341. package/es/icons/CubePlayIcon.js +1 -1
  342. package/es/icons/CurrencyDollarIcon.js +1 -1
  343. package/es/icons/DangerIcon.js +1 -1
  344. package/es/icons/DashboardIcon.js +1 -1
  345. package/es/icons/DatabaseIcon.js +1 -1
  346. package/es/icons/DecimalDecreaseIcon.js +1 -1
  347. package/es/icons/DecimalIncreaseIcon.js +1 -1
  348. package/es/icons/DirectionIcon.js +1 -1
  349. package/es/icons/DonutIcon.js +1 -1
  350. package/es/icons/DownIcon.js +1 -1
  351. package/es/icons/EditIcon.js +1 -1
  352. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  353. package/es/icons/ExclamationCircleIcon.js +1 -1
  354. package/es/icons/ExclamationIcon.js +1 -1
  355. package/es/icons/EyeIcon.js +1 -1
  356. package/es/icons/EyeInvisibleIcon.js +1 -1
  357. package/es/icons/FilterIcon.js +1 -1
  358. package/es/icons/FolderFilledIcon.js +1 -1
  359. package/es/icons/FolderIcon.js +1 -1
  360. package/es/icons/FolderOpenFilledIcon.js +1 -1
  361. package/es/icons/FolderOpenIcon.js +1 -1
  362. package/es/icons/ForwardIcon.js +1 -1
  363. package/es/icons/HierarchyIcon.js +1 -1
  364. package/es/icons/HierarchyOpenIcon.js +1 -1
  365. package/es/icons/Icon.js +1 -1
  366. package/es/icons/InfoCircleIcon.js +1 -1
  367. package/es/icons/InfoIcon.js +1 -1
  368. package/es/icons/KeyIcon.js +1 -1
  369. package/es/icons/LeftIcon.js +1 -1
  370. package/es/icons/LineChartIcon.js +1 -1
  371. package/es/icons/LoadingIcon.js +1 -1
  372. package/es/icons/LockFilledIcon.js +1 -1
  373. package/es/icons/LockIcon.js +1 -1
  374. package/es/icons/MoreIcon.js +1 -1
  375. package/es/icons/NotAllowedIcon.js +1 -1
  376. package/es/icons/Number123Icon.js +1 -1
  377. package/es/icons/NumberIcon.js +1 -1
  378. package/es/icons/PauseCircleFilledIcon.js +1 -1
  379. package/es/icons/PauseCircleIcon.js +1 -1
  380. package/es/icons/PauseIcon.js +1 -1
  381. package/es/icons/PercentageIcon.js +1 -1
  382. package/es/icons/PieChartIcon.js +1 -1
  383. package/es/icons/PlayCircleIcon.js +1 -1
  384. package/es/icons/PlayIcon.js +1 -1
  385. package/es/icons/PlusIcon.js +1 -1
  386. package/es/icons/ProgressBarIcon.js +1 -1
  387. package/es/icons/ReloadIcon.js +1 -1
  388. package/es/icons/ReportIcon.js +1 -1
  389. package/es/icons/ReturnIcon.js +1 -1
  390. package/es/icons/RightIcon.js +1 -1
  391. package/es/icons/SchemeIcon.js +1 -1
  392. package/es/icons/SearchIcon.js +1 -1
  393. package/es/icons/SettingsIcon.js +1 -1
  394. package/es/icons/ShieldFilledIcon.js +1 -1
  395. package/es/icons/ShieldIcon.js +1 -1
  396. package/es/icons/SlashIcon.js +1 -1
  397. package/es/icons/SparklesIcon.js +1 -1
  398. package/es/icons/SqlIcon.js +1 -1
  399. package/es/icons/StatsIcon.js +1 -1
  400. package/es/icons/StopIcon.js +1 -1
  401. package/es/icons/StringIcon.js +1 -1
  402. package/es/icons/SwitchIcon.js +1 -1
  403. package/es/icons/TableIcon.js +1 -1
  404. package/es/icons/ThumbsDownIcon.js +1 -1
  405. package/es/icons/ThumbsUpIcon.js +1 -1
  406. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  407. package/es/icons/ThunderboltFilledIcon.js +1 -1
  408. package/es/icons/ThunderboltIcon.js +1 -1
  409. package/es/icons/TimeIcon.js +1 -1
  410. package/es/icons/TrashIcon.js +1 -1
  411. package/es/icons/UnlockIcon.js +1 -1
  412. package/es/icons/UpIcon.js +1 -1
  413. package/es/icons/UserGroupIcon.js +1 -1
  414. package/es/icons/UserIcon.js +1 -1
  415. package/es/icons/UserLockIcon.js +1 -1
  416. package/es/icons/ViewIcon.js +1 -1
  417. package/es/icons/WarningFilledIcon.js +1 -1
  418. package/es/icons/WarningIcon.js +1 -1
  419. package/es/icons/add-new-icon.js +1 -1
  420. package/es/icons/index.js +1 -1
  421. package/es/icons/wrap-icon.js +1 -1
  422. package/es/index.js +1 -1
  423. package/es/provider.js +1 -1
  424. package/es/providers/TrackingProvider.js +1 -1
  425. package/es/providers/navigation.types.js +1 -1
  426. package/es/providers/navigationAdapter.default.js +1 -1
  427. package/es/services/notification.js +1 -1
  428. package/es/shared/form.js +1 -1
  429. package/es/shared/index.js +1 -1
  430. package/es/stories/Form.legacy-stories.js +1 -1
  431. package/es/stories/FormFieldArgs.js +1 -1
  432. package/es/stories/SimpleLayout.stories.js +1 -1
  433. package/es/stories/Tasty.stories.js +1 -1
  434. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  435. package/es/stories/components/DialogFormApp.js +1 -1
  436. package/es/stories/components/StyledButton.js +1 -1
  437. package/es/stories/lists/baseProps.js +1 -1
  438. package/es/tasty/debug.js +1 -1
  439. package/es/tasty/index.js +2 -1
  440. package/es/tasty/injector/index.js +1 -1
  441. package/es/tasty/injector/injector.js +1 -1
  442. package/es/tasty/injector/sheet-manager.js +1 -1
  443. package/es/tasty/injector/types.js +1 -1
  444. package/es/tasty/parser/classify.js +1 -1
  445. package/es/tasty/parser/const.js +1 -1
  446. package/es/tasty/parser/lru.js +1 -1
  447. package/es/tasty/parser/parser.js +1 -1
  448. package/es/tasty/parser/tokenizer.js +1 -1
  449. package/es/tasty/parser/types.js +1 -1
  450. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  451. package/es/tasty/styles/align.js +1 -1
  452. package/es/tasty/styles/border.js +1 -1
  453. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  454. package/es/tasty/styles/color.js +1 -1
  455. package/es/tasty/styles/createStyle.js +1 -1
  456. package/es/tasty/styles/dimension.js +2 -2
  457. package/es/tasty/styles/display.js +1 -1
  458. package/es/tasty/styles/fade.js +1 -1
  459. package/es/tasty/styles/fill.js +1 -1
  460. package/es/tasty/styles/flow.js +1 -1
  461. package/es/tasty/styles/font.js +1 -1
  462. package/es/tasty/styles/fontStyle.js +1 -1
  463. package/es/tasty/styles/gap.js +1 -1
  464. package/es/tasty/styles/groupRadius.js +1 -1
  465. package/es/tasty/styles/height.js +1 -1
  466. package/es/tasty/styles/index.js +1 -1
  467. package/es/tasty/styles/inset.js +1 -1
  468. package/es/tasty/styles/justify.js +1 -1
  469. package/es/tasty/styles/list.js +1 -1
  470. package/es/tasty/styles/margin.js +1 -1
  471. package/es/tasty/styles/outline.js +1 -1
  472. package/es/tasty/styles/padding.js +1 -1
  473. package/es/tasty/styles/place.js +1 -1
  474. package/es/tasty/styles/predefined.js +1 -1
  475. package/es/tasty/styles/preset.js +1 -1
  476. package/es/tasty/styles/radius.js +1 -1
  477. package/es/tasty/styles/reset.js +1 -1
  478. package/es/tasty/styles/scrollbar.js +1 -1
  479. package/es/tasty/styles/shadow.js +1 -1
  480. package/es/tasty/styles/styledScrollbar.js +1 -1
  481. package/es/tasty/styles/transition.js +1 -1
  482. package/es/tasty/styles/types.js +1 -1
  483. package/es/tasty/styles/width.js +1 -1
  484. package/es/tasty/tasty.js +32 -3
  485. package/es/tasty/types.js +1 -1
  486. package/es/tasty/utils/cache-wrapper.js +1 -1
  487. package/es/tasty/utils/case-converter.js +1 -1
  488. package/es/tasty/utils/colors.js +1 -1
  489. package/es/tasty/utils/dotize.js +1 -1
  490. package/es/tasty/utils/filterBaseProps.js +1 -1
  491. package/es/tasty/utils/getDisplayName.js +1 -1
  492. package/es/tasty/utils/getModCombinations.js +1 -1
  493. package/es/tasty/utils/isDevEnv.js +1 -1
  494. package/es/tasty/utils/mergeStyles.js +1 -1
  495. package/es/tasty/utils/modAttrs.js +1 -1
  496. package/es/tasty/utils/processTokens.js +124 -0
  497. package/es/tasty/utils/renderStyles.js +1 -1
  498. package/es/tasty/utils/responsive.js +1 -1
  499. package/es/tasty/utils/string.js +1 -1
  500. package/es/tasty/utils/styles.js +1 -1
  501. package/es/tasty/utils/warnings.js +1 -1
  502. package/es/tokens.js +1 -1
  503. package/es/utils/ResizeSensor.js +1 -1
  504. package/es/utils/index.js +1 -1
  505. package/es/utils/modules.js +1 -1
  506. package/es/utils/promise.js +1 -1
  507. package/es/utils/raf.js +1 -1
  508. package/es/utils/random.js +1 -1
  509. package/es/utils/range.js +1 -1
  510. package/es/utils/react/RenderCache.js +1 -1
  511. package/es/utils/react/Slots.js +1 -1
  512. package/es/utils/react/chain.js +1 -1
  513. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  514. package/es/utils/react/index.js +2 -1
  515. package/es/utils/react/interactions.js +1 -1
  516. package/es/utils/react/isTextOnly.js +1 -1
  517. package/es/utils/react/mapProps.js +1 -1
  518. package/es/utils/react/mergeProps.js +1 -1
  519. package/es/utils/react/nullableValue.js +1 -1
  520. package/es/utils/react/resolveIcon.js +34 -0
  521. package/es/utils/react/sharedStore.js +1 -1
  522. package/es/utils/react/useCombinedRefs.js +1 -1
  523. package/es/utils/react/useControlledFocusVisible.js +1 -1
  524. package/es/utils/react/useEventBus.js +1 -1
  525. package/es/utils/react/useId.js +1 -1
  526. package/es/utils/react/useIsDarwin.js +1 -1
  527. package/es/utils/react/useKeySymbols.js +1 -1
  528. package/es/utils/react/useLayoutEffect.js +1 -1
  529. package/es/utils/react/useLocalStorage.js +1 -1
  530. package/es/utils/react/useQaProps.js +1 -1
  531. package/es/utils/react/useViewportSize.js +1 -1
  532. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  533. package/es/utils/tree.js +1 -1
  534. package/es/utils/warnings.js +1 -1
  535. package/es/version.js +2 -2
  536. package/package.json +1 -1
  537. package/types/components/HiddenInput.d.ts +827 -1
  538. package/types/components/actions/Button/Button.d.ts +27 -9
  539. package/types/components/actions/CommandMenu/styled.d.ts +4135 -5
  540. package/types/components/actions/Menu/styled.d.ts +4159 -20
  541. package/types/components/content/Item/Item.d.ts +30 -11
  542. package/types/components/content/Layout/Layout.d.ts +5 -1
  543. package/types/components/content/Layout/LayoutContainer.d.ts +5 -1
  544. package/types/components/content/Layout/LayoutContent.d.ts +5 -1
  545. package/types/components/content/Layout/LayoutPane.d.ts +5 -1
  546. package/types/components/content/Layout/LayoutPanelHeader.d.ts +2 -4
  547. package/types/components/content/List/SectionHeading.d.ts +8 -5
  548. package/types/components/content/Text.d.ts +56 -35
  549. package/types/components/fields/DatePicker/DatePickerElement.d.ts +8 -5
  550. package/types/components/fields/Select/Select.d.ts +827 -5
  551. package/types/components/fields/Slider/elements.d.ts +4962 -6
  552. package/types/components/form/FieldWrapper/types.d.ts +1 -1
  553. package/types/components/helpers/DisplayTransition/DisplayTransition.d.ts +3 -1
  554. package/types/components/helpers/IconSwitch/IconSwitch.d.ts +20 -0
  555. package/types/components/helpers/index.d.ts +1 -0
  556. package/types/data/item-themes.d.ts +5 -1
  557. package/types/tasty/index.d.ts +3 -2
  558. package/types/tasty/tasty.d.ts +857 -5
  559. package/types/tasty/types.d.ts +27 -5
  560. package/types/tasty/utils/processTokens.d.ts +15 -0
  561. package/types/utils/react/index.d.ts +2 -0
  562. package/types/utils/react/resolveIcon.d.ts +23 -0
@@ -1,24 +1,33 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- import { forwardRef, useMemo, } from 'react';
9
+ import { forwardRef, isValidElement, useMemo, } from 'react';
10
10
  import { useHotkeys } from 'react-hotkeys-hook';
11
- import { DANGER_CLEAR_STYLES, DANGER_ITEM_STYLES, DANGER_LINK_STYLES, DANGER_NEUTRAL_STYLES, DANGER_OUTLINE_STYLES, DANGER_PRIMARY_STYLES, DANGER_SECONDARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_ITEM_STYLES, DEFAULT_LINK_STYLES, DEFAULT_NEUTRAL_STYLES, DEFAULT_OUTLINE_STYLES, DEFAULT_PRIMARY_STYLES, DEFAULT_SECONDARY_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_ITEM_STYLES, SPECIAL_LINK_STYLES, SPECIAL_NEUTRAL_STYLES, SPECIAL_OUTLINE_STYLES, SPECIAL_PRIMARY_STYLES, SPECIAL_SECONDARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_ITEM_STYLES, SUCCESS_LINK_STYLES, SUCCESS_NEUTRAL_STYLES, SUCCESS_OUTLINE_STYLES, SUCCESS_PRIMARY_STYLES, SUCCESS_SECONDARY_STYLES, } from '../../../data/item-themes';
11
+ import { useWarn } from '../../../_internal/hooks/use-warn';
12
+ import { DANGER_ALERT_STYLES, DANGER_CLEAR_STYLES, DANGER_ITEM_STYLES, DANGER_LINK_STYLES, DANGER_NEUTRAL_STYLES, DANGER_OUTLINE_STYLES, DANGER_PRIMARY_STYLES, DANGER_SECONDARY_STYLES, DEFAULT_ALERT_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_ITEM_STYLES, DEFAULT_LINK_STYLES, DEFAULT_NEUTRAL_STYLES, DEFAULT_OUTLINE_STYLES, DEFAULT_PRIMARY_STYLES, DEFAULT_SECONDARY_STYLES, NOTE_ALERT_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_ITEM_STYLES, SPECIAL_LINK_STYLES, SPECIAL_NEUTRAL_STYLES, SPECIAL_OUTLINE_STYLES, SPECIAL_PRIMARY_STYLES, SPECIAL_SECONDARY_STYLES, SUCCESS_ALERT_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_ITEM_STYLES, SUCCESS_LINK_STYLES, SUCCESS_NEUTRAL_STYLES, SUCCESS_OUTLINE_STYLES, SUCCESS_PRIMARY_STYLES, SUCCESS_SECONDARY_STYLES, } from '../../../data/item-themes';
12
13
  import { CheckIcon } from '../../../icons/CheckIcon';
13
14
  import { LoadingIcon } from '../../../icons/LoadingIcon';
14
15
  import { CONTAINER_STYLES, tasty, } from '../../../tasty';
15
- import { mergeProps } from '../../../utils/react';
16
+ import { mergeProps, resolveIcon } from '../../../utils/react';
16
17
  import { ItemAction } from '../../actions/ItemAction';
17
18
  import { ItemActionProvider } from '../../actions/ItemActionContext';
19
+ import { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';
18
20
  import { highlightText } from '../highlightText';
19
21
  import { HotKeys } from '../HotKeys';
20
22
  import { ItemBadge } from '../ItemBadge';
21
23
  import { useAutoTooltip } from '../use-auto-tooltip';
24
+ const ITEM_SIZE_VALUES = [
25
+ 'xsmall',
26
+ 'small',
27
+ 'medium',
28
+ 'large',
29
+ 'xlarge',
30
+ ];
22
31
  const DEFAULT_ICON_STYLES = {
23
32
  $: '>',
24
33
  display: 'grid',
@@ -72,7 +81,10 @@ const ItemElement = tasty({
72
81
  'menuitem | listboxitem': 0,
73
82
  },
74
83
  position: 'relative',
75
- padding: 0,
84
+ padding: {
85
+ '': 0,
86
+ 'type=alert': '.5x',
87
+ },
76
88
  margin: 0,
77
89
  radius: {
78
90
  '': true,
@@ -106,11 +118,14 @@ const ItemElement = tasty({
106
118
  },
107
119
  preset: {
108
120
  '': 't3',
109
- button: 't3m',
121
+ '!type=item': 't3m',
110
122
  'size=xsmall': 't4',
111
123
  'size=xlarge': 't2',
112
- 'size=xlarge & button': 't2m',
124
+ 'size=xlarge & !type=item': 't2m',
113
125
  'size=inline': 'tag',
126
+ '(type=title | type=alert) & (size=xsmall | size=small | size=medium)': 'h6',
127
+ '(type=title | type=alert) & size=large': 'h5',
128
+ '(type=title | type=alert) & size=xlarge': 'h4',
114
129
  },
115
130
  boxSizing: 'border-box',
116
131
  textDecoration: 'none',
@@ -118,7 +133,7 @@ const ItemElement = tasty({
118
133
  reset: 'button',
119
134
  outlineOffset: 1,
120
135
  cursor: {
121
- '': 'default',
136
+ '': 'inherit',
122
137
  ':is(a)': 'pointer',
123
138
  ':is(button) | listboxitem | menuitem': '$pointer',
124
139
  disabled: 'not-allowed',
@@ -130,16 +145,11 @@ const ItemElement = tasty({
130
145
  'size=medium': '$size-md',
131
146
  'size=large': '$size-lg',
132
147
  'size=xlarge': '$size-xl',
133
- 'size=inline': '1lh',
134
- },
135
- '$inline-padding': {
136
- '': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',
137
- 'size=inline': '.25x',
138
148
  },
149
+ '$inline-padding': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',
139
150
  '$block-padding': {
140
151
  '': '.5x',
141
152
  'size=xsmall | size=small': '.25x',
142
- 'size=inline': 0,
143
153
  },
144
154
  '$inline-compensation': '.5x',
145
155
  '$min-inline-padding': '(1x - 1bw)',
@@ -190,7 +200,10 @@ const ItemElement = tasty({
190
200
  Description: {
191
201
  $: '>',
192
202
  gridArea: 'description',
193
- preset: 't4',
203
+ preset: {
204
+ '': 't4',
205
+ 'type=alert | type=title': 't3',
206
+ },
194
207
  color: 'inherit',
195
208
  opacity: 0.75,
196
209
  overflow: 'hidden',
@@ -253,6 +266,7 @@ const ItemElement = tasty({
253
266
  'default.clear': DEFAULT_CLEAR_STYLES,
254
267
  'default.link': DEFAULT_LINK_STYLES,
255
268
  'default.item': DEFAULT_ITEM_STYLES,
269
+ 'default.alert': DEFAULT_ALERT_STYLES,
256
270
  // Danger theme
257
271
  'danger.primary': DANGER_PRIMARY_STYLES,
258
272
  'danger.secondary': DANGER_SECONDARY_STYLES,
@@ -261,6 +275,7 @@ const ItemElement = tasty({
261
275
  'danger.clear': DANGER_CLEAR_STYLES,
262
276
  'danger.link': DANGER_LINK_STYLES,
263
277
  'danger.item': DANGER_ITEM_STYLES,
278
+ 'danger.alert': DANGER_ALERT_STYLES,
264
279
  // Success theme
265
280
  'success.primary': SUCCESS_PRIMARY_STYLES,
266
281
  'success.secondary': SUCCESS_SECONDARY_STYLES,
@@ -269,6 +284,7 @@ const ItemElement = tasty({
269
284
  'success.clear': SUCCESS_CLEAR_STYLES,
270
285
  'success.link': SUCCESS_LINK_STYLES,
271
286
  'success.item': SUCCESS_ITEM_STYLES,
287
+ 'success.alert': SUCCESS_ALERT_STYLES,
272
288
  // Special theme
273
289
  'special.primary': SPECIAL_PRIMARY_STYLES,
274
290
  'special.secondary': SPECIAL_SECONDARY_STYLES,
@@ -277,32 +293,135 @@ const ItemElement = tasty({
277
293
  'special.clear': SPECIAL_CLEAR_STYLES,
278
294
  'special.link': SPECIAL_LINK_STYLES,
279
295
  'special.item': SPECIAL_ITEM_STYLES,
296
+ // Note theme (alert type only)
297
+ 'note.alert': NOTE_ALERT_STYLES,
280
298
  },
281
299
  styleProps: CONTAINER_STYLES,
282
300
  });
283
301
  const Item = (props, ref) => {
284
- let { children, size = 'medium', type = 'item', theme = 'default', mods, icon, rightIcon, prefix, suffix, description, descriptionPlacement = 'inline', labelProps, descriptionProps, keyboardShortcutProps, styles, htmlType, isSelected, hotkeys, tooltip = true, isDisabled, style, loadingSlot = 'auto', isLoading = false, isCard = false, actions, showActionsOnHover = false, disableActionsFocus = false, isButton = false, shape = 'button', defaultTooltipPlacement = 'top', highlight, highlightCaseSensitive = false, highlightStyles, ...rest } = props;
302
+ let { children, size = 'medium', type = 'item', theme = 'default', mods, icon: iconProp, rightIcon: rightIconProp, prefix, suffix, description, descriptionPlacement, labelProps, descriptionProps, keyboardShortcutProps, styles, htmlType, isSelected, hotkeys, tooltip = true, isDisabled, style, loadingSlot = 'auto', isLoading = false, isCard = false, actions, showActionsOnHover = false, disableActionsFocus = false, shape, defaultTooltipPlacement = 'top', highlight, highlightCaseSensitive = false, highlightStyles, ...rest } = props;
303
+ // Set default descriptionPlacement based on type
304
+ const finalDescriptionPlacement = descriptionPlacement ??
305
+ (type === 'alert' || type === 'title' ? 'block' : 'inline');
306
+ // Set default shape based on type
307
+ const finalShape = shape ?? (type === 'alert' ? 'card' : 'button');
285
308
  // Loading state makes the component disabled
286
309
  const finalIsDisabled = isDisabled === true || (isLoading && isDisabled !== false);
310
+ // Validate type+theme combinations
311
+ const STANDARD_THEMES = ['default', 'success', 'danger', 'special'];
312
+ const ALERT_THEMES = ['default', 'success', 'danger', 'note'];
313
+ const TITLE_THEMES = ['default'];
314
+ const isInvalidCombination = (type === 'title' && !TITLE_THEMES.includes(theme)) ||
315
+ (type === 'alert' && !ALERT_THEMES.includes(theme)) ||
316
+ (!['title', 'alert'].includes(type) && !STANDARD_THEMES.includes(theme));
317
+ useWarn(isInvalidCombination, {
318
+ key: ['Item', 'invalid-type-theme', type, theme],
319
+ args: [
320
+ `Item: Invalid type+theme combination. type="${type}" does not support theme="${theme}".` +
321
+ (type === 'title'
322
+ ? ' The "title" type only supports theme: default.'
323
+ : type === 'alert'
324
+ ? ' The "alert" type only supports themes: default, success, danger, note.'
325
+ : ' Standard types support themes: default, success, danger, special.'),
326
+ ],
327
+ });
328
+ // Warn if link type is used with icons or loading state
329
+ const hasLinkWithIcons = type === 'link' && (iconProp || rightIconProp);
330
+ const hasLinkWithLoading = type === 'link' && isLoading;
331
+ const hasLinkRestrictions = hasLinkWithIcons || hasLinkWithLoading;
332
+ const linkRestrictionMessages = [];
333
+ if (hasLinkWithIcons) {
334
+ linkRestrictionMessages.push('icons (`icon` or `rightIcon` props)');
335
+ }
336
+ if (hasLinkWithLoading) {
337
+ linkRestrictionMessages.push('loading state (`isLoading` prop)');
338
+ }
339
+ useWarn(hasLinkRestrictions, {
340
+ key: ['Item', 'link-restrictions'],
341
+ args: [
342
+ `Item: The "link" type does not support ${linkRestrictionMessages.join(' or ')}. Remove these props when using type="link".`,
343
+ ],
344
+ });
287
345
  // Determine if we should show checkbox instead of icon
288
- const hasCheckbox = icon === 'checkbox';
346
+ const hasCheckbox = iconProp === 'checkbox';
347
+ // Determine if size is custom (number or unrecognized string)
348
+ const isCustomSize = typeof size === 'number' ||
349
+ !ITEM_SIZE_VALUES.includes(size);
350
+ const sizeTokenValue = typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;
351
+ // Base mods for icon resolution (without icon-dependent mods)
352
+ const baseMods = useMemo(() => ({
353
+ disabled: finalIsDisabled,
354
+ selected: isSelected === true,
355
+ loading: isLoading,
356
+ card: isCard === true,
357
+ ...(!isCustomSize && { size: size }),
358
+ type,
359
+ theme,
360
+ shape: finalShape,
361
+ ...mods,
362
+ }), [
363
+ finalIsDisabled,
364
+ isSelected,
365
+ isLoading,
366
+ isCard,
367
+ size,
368
+ isCustomSize,
369
+ type,
370
+ theme,
371
+ finalShape,
372
+ mods,
373
+ ]);
374
+ // Resolve dynamic icon props (skip resolution for 'checkbox' special value)
375
+ const resolvedIcon = useMemo(() => {
376
+ if (hasCheckbox) {
377
+ return { content: null, hasSlot: true };
378
+ }
379
+ return resolveIcon(iconProp, baseMods);
380
+ }, [iconProp, baseMods, hasCheckbox]);
381
+ const resolvedRightIcon = useMemo(() => resolveIcon(rightIconProp, baseMods), [rightIconProp, baseMods]);
289
382
  // Determine which slot to use for loading when "auto" is selected
383
+ // Must be computed before hasIconSlot/hasRightIconSlot since they depend on it
290
384
  const resolvedLoadingSlot = useMemo(() => {
291
385
  if (loadingSlot !== 'auto')
292
386
  return loadingSlot;
293
387
  // Auto logic: prefer icon if present, then rightIcon, fallback to icon
294
- if (rightIcon && !icon)
388
+ if (resolvedRightIcon.hasSlot && !resolvedIcon.hasSlot)
295
389
  return 'rightIcon';
296
390
  return 'icon'; // fallback
297
- }, [loadingSlot, icon, rightIcon]);
391
+ }, [loadingSlot, resolvedIcon.hasSlot, resolvedRightIcon.hasSlot]);
392
+ // Determine if icon slots should render (original slot OR loading state targets this slot)
393
+ const hasIconSlot = resolvedIcon.hasSlot || (isLoading && resolvedLoadingSlot === 'icon');
394
+ const hasRightIconSlot = resolvedRightIcon.hasSlot ||
395
+ (isLoading && resolvedLoadingSlot === 'rightIcon');
298
396
  const showDescription = useMemo(() => {
299
397
  const copyProps = { ...descriptionProps };
300
398
  delete copyProps.id;
301
399
  return !!(description || Object.keys(copyProps).length > 0);
302
400
  }, [description, descriptionProps]);
303
401
  // Apply loading state to appropriate slots
304
- const finalIcon = isLoading && resolvedLoadingSlot === 'icon' ? _jsx(LoadingIcon, {}) : icon;
305
- const finalRightIcon = isLoading && resolvedLoadingSlot === 'rightIcon' ? (_jsx(LoadingIcon, {})) : (rightIcon);
402
+ const finalIcon = isLoading && resolvedLoadingSlot === 'icon' ? (_jsx(LoadingIcon, {})) : (resolvedIcon.content);
403
+ const finalRightIcon = isLoading && resolvedLoadingSlot === 'rightIcon' ? (_jsx(LoadingIcon, {})) : (resolvedRightIcon.content);
404
+ // Generate stable keys for icon transitions based on icon type
405
+ const iconKey = hasCheckbox
406
+ ? 'checkbox'
407
+ : isLoading && resolvedLoadingSlot === 'icon'
408
+ ? 'loading'
409
+ : isValidElement(finalIcon)
410
+ ? finalIcon.type?.displayName ||
411
+ finalIcon.type?.name ||
412
+ 'icon'
413
+ : finalIcon
414
+ ? 'icon'
415
+ : 'empty';
416
+ const rightIconKey = isLoading && resolvedLoadingSlot === 'rightIcon'
417
+ ? 'loading'
418
+ : isValidElement(finalRightIcon)
419
+ ? finalRightIcon.type?.displayName ||
420
+ finalRightIcon.type?.name ||
421
+ 'icon'
422
+ : finalRightIcon
423
+ ? 'icon'
424
+ : 'empty';
306
425
  const finalPrefix = isLoading && resolvedLoadingSlot === 'prefix' ? _jsx(LoadingIcon, {}) : prefix;
307
426
  // Build final suffix: loading icon, custom suffix, or HotKeys hint
308
427
  const finalSuffix = isLoading && resolvedLoadingSlot === 'suffix' ? (_jsx(LoadingIcon, {})) : (suffix ??
@@ -323,12 +442,13 @@ const Item = (props, ref) => {
323
442
  preventDefault: true,
324
443
  enableOnFormTags: true,
325
444
  }, [hotkeys, finalIsDisabled]);
326
- mods = useMemo(() => {
445
+ const finalMods = useMemo(() => {
327
446
  return {
328
- 'has-icon': !!finalIcon,
329
- 'has-start-content': !!(finalIcon || finalPrefix),
330
- 'has-end-content': !!(finalRightIcon || finalSuffix || actions),
331
- 'has-right-icon': !!finalRightIcon,
447
+ ...baseMods,
448
+ 'has-icon': hasIconSlot,
449
+ 'has-start-content': !!(hasIconSlot || finalPrefix),
450
+ 'has-end-content': !!(hasRightIconSlot || finalSuffix || actions),
451
+ 'has-right-icon': hasRightIconSlot,
332
452
  'has-label': !!(children || labelProps),
333
453
  'has-prefix': !!finalPrefix,
334
454
  'has-suffix': !!finalSuffix,
@@ -337,37 +457,21 @@ const Item = (props, ref) => {
337
457
  'has-actions-content': !!(actions && actions !== true),
338
458
  'show-actions-on-hover': showActionsOnHover === true,
339
459
  checkbox: hasCheckbox,
340
- disabled: finalIsDisabled,
341
- selected: isSelected === true,
342
- loading: isLoading,
343
- card: isCard === true,
344
- button: isButton === true,
345
- ...(typeof size === 'number' ? {} : { size }),
346
- description: showDescription ? descriptionPlacement : 'none',
347
- type,
348
- theme,
349
- shape,
350
- ...mods,
460
+ description: showDescription ? finalDescriptionPlacement : 'none',
351
461
  };
352
462
  }, [
353
- finalIcon,
354
- finalRightIcon,
463
+ baseMods,
464
+ hasIconSlot,
465
+ hasRightIconSlot,
355
466
  finalPrefix,
356
467
  finalSuffix,
357
468
  showDescription,
358
- descriptionPlacement,
469
+ finalDescriptionPlacement,
359
470
  hasCheckbox,
360
- isSelected,
361
- isLoading,
362
- isCard,
363
- isButton,
364
- shape,
365
471
  actions,
366
472
  showActionsOnHover,
367
- size,
368
- type,
369
- theme,
370
- mods,
473
+ children,
474
+ labelProps,
371
475
  ]);
372
476
  const { labelProps: finalLabelProps, labelRef, renderWithTooltip, } = useAutoTooltip({
373
477
  tooltip,
@@ -398,11 +502,9 @@ const Item = (props, ref) => {
398
502
  tooltipRef.current = element;
399
503
  }
400
504
  };
401
- // Merge custom size style with provided style
402
- const finalStyle = typeof size === 'number'
403
- ? { ...style, '--size': `${size}px` }
404
- : style;
405
- return (_jsxs(ItemElement, { ref: handleRef, variant: theme && type ? `${theme}.${type}` : undefined, disabled: finalIsDisabled, "aria-disabled": finalIsDisabled, "aria-selected": isSelected, mods: mods, styles: styles, type: htmlType, ...mergeProps(rest, tooltipTriggerProps || {}), style: finalStyle, children: [finalIcon && (_jsx("div", { "data-element": "Icon", children: hasCheckbox ? _jsx(CheckIcon, {}) : finalIcon })), finalPrefix && _jsx("div", { "data-element": "Prefix", children: finalPrefix }), children || labelProps ? (_jsx("div", { "data-element": "Label", ...finalLabelProps, ref: labelRef, children: processedChildren })) : null, showDescription ? (_jsx("div", { "data-element": "Description", ...descriptionProps, children: description })) : null, finalSuffix && _jsx("div", { "data-element": "Suffix", children: finalSuffix }), finalRightIcon && _jsx("div", { "data-element": "RightIcon", children: finalRightIcon }), actions && (_jsx("div", { "data-element": "Actions", ...ACTIONS_EVENT_HANDLERS, children: actions !== true ? (_jsx(ItemActionProvider, { type: type, theme: theme, disableActionsFocus: disableActionsFocus, children: actions })) : null }))] }));
505
+ return (_jsxs(ItemElement, { ref: handleRef, variant: theme && type
506
+ ? `${type === 'title' ? 'default' : theme}.${type === 'title' ? 'item' : type}`
507
+ : undefined, disabled: finalIsDisabled, "aria-disabled": finalIsDisabled, "aria-selected": isSelected, mods: finalMods, styles: styles, tokens: sizeTokenValue ? { $size: sizeTokenValue } : undefined, type: htmlType, ...mergeProps(rest, tooltipTriggerProps || {}), style: style, children: [hasIconSlot && (_jsx("div", { "data-element": "Icon", children: _jsx(IconSwitch, { noWrapper: true, contentKey: iconKey, children: hasCheckbox ? _jsx(CheckIcon, {}) : finalIcon }) })), finalPrefix && _jsx("div", { "data-element": "Prefix", children: finalPrefix }), children || labelProps ? (_jsx("div", { "data-element": "Label", ...finalLabelProps, ref: labelRef, children: processedChildren })) : null, showDescription ? (_jsx("div", { "data-element": "Description", ...descriptionProps, children: description })) : null, finalSuffix && _jsx("div", { "data-element": "Suffix", children: finalSuffix }), hasRightIconSlot && (_jsx("div", { "data-element": "RightIcon", children: _jsx(IconSwitch, { noWrapper: true, contentKey: rightIconKey, children: finalRightIcon }) })), actions && (_jsx("div", { "data-element": "Actions", ...ACTIONS_EVENT_HANDLERS, children: actions !== true ? (_jsx(ItemActionProvider, { type: type, theme: theme, disableActionsFocus: disableActionsFocus, children: actions })) : null }))] }));
406
508
  };
407
509
  return renderWithTooltip(renderItemElement, defaultTooltipPlacement);
408
510
  };
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
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.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
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.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
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.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
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.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -9,6 +9,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
9
9
  import { Children, forwardRef, isValidElement, useCallback, useEffect, useMemo, useRef, useState, } from 'react';
10
10
  import { extractStyles, filterBaseProps, INNER_STYLES, mergeStyles, OUTER_STYLES, tasty, } from '../../../tasty';
11
11
  import { isDevEnv } from '../../../tasty/utils/isDevEnv';
12
+ import { useCombinedRefs } from '../../../utils/react';
12
13
  import { Alert } from '../Alert';
13
14
  import { LayoutProvider, useLayoutContext } from './LayoutContext';
14
15
  const LayoutElement = tasty({
@@ -39,6 +40,8 @@ const LayoutElement = tasty({
39
40
  display: 'flex',
40
41
  flow: 'column',
41
42
  overflow: 'hidden',
43
+ placeContent: 'stretch',
44
+ placeItems: 'stretch',
42
45
  // Disable transition during panel resize for snappy feedback
43
46
  // Also disable transition when not ready to prevent initial animation
44
47
  // Only animate when has-transition is enabled (and not dragging/not-ready)
@@ -61,7 +64,8 @@ function LayoutInner(props) {
61
64
  const localRef = useRef(null);
62
65
  const [isAutoHeight, setIsAutoHeight] = useState(false);
63
66
  const [isCollapsed, setIsCollapsed] = useState(false);
64
- const { isGrid, columns, rows, template, contentPadding, hasTransition = false, styles, children, style, forwardedRef, _forceShowDevWarning, ...otherProps } = props;
67
+ const { isGrid, columns, rows, template, contentPadding, hasTransition = false, styles, children, style, forwardedRef, innerRef: innerRefProp, innerProps, _forceShowDevWarning, ...otherProps } = props;
68
+ const combinedInnerRef = useCombinedRefs(innerRefProp);
65
69
  // Separate panels from other children
66
70
  const { panels, content } = useMemo(() => {
67
71
  const panelElements = [];
@@ -80,12 +84,13 @@ function LayoutInner(props) {
80
84
  const outerStyles = extractStyles(otherProps, OUTER_STYLES);
81
85
  const innerStyles = extractStyles(otherProps, INNER_STYLES);
82
86
  // Calculate if the layout flow is vertical (for auto-border feature)
83
- // Default flow is 'column' (vertical), check if user overrides it
87
+ // Default flow is 'column' (vertical), only horizontal when explicitly set to 'row'
84
88
  const isVertical = useMemo(() => {
85
- const providedFlow = styles?.Inner?.flow;
86
- const flowValue = typeof providedFlow === 'string' ? providedFlow : 'column';
87
- return flowValue.startsWith('column');
88
- }, [styles?.Inner]);
89
+ const flowFromProp = innerStyles?.flow;
90
+ const flowFromStyles = styles?.Inner?.flow;
91
+ const flowValue = flowFromProp ?? flowFromStyles;
92
+ return typeof flowValue !== 'string' || !flowValue.startsWith('row');
93
+ }, [innerStyles?.flow, styles?.Inner]);
89
94
  // Merge styles using the same pattern as LayoutPane
90
95
  const finalStyles = useMemo(() => {
91
96
  // Handle grid mode and grid properties
@@ -210,7 +215,7 @@ function LayoutInner(props) {
210
215
  dismissOverlayPanels?.();
211
216
  }
212
217
  }, [hasOverlayPanels, dismissOverlayPanels]);
213
- return (_jsx(LayoutElement, { ref: setRefs, ...filterBaseProps(otherProps, { eventProps: true }), mods: mods, styles: finalStyles, style: insetStyle, onKeyDown: hasOverlayPanels ? handleKeyDown : undefined, children: showDevWarning ? (_jsxs(Alert, { theme: "danger", children: [_jsx("b", { children: "UIKit:" }), " ", _jsx("b", { children: "<Layout/>" }), " has collapsed to ", _jsx("b", { children: "0" }), " height. Ensure the parent container has a defined height or use the", ' ', _jsx("b", { children: "height" }), " prop on ", _jsx("b", { children: "<Layout/>" }), "."] })) : (_jsxs(_Fragment, { children: [panels, _jsx("div", { "data-element": "Inner", onFocus: handleInnerFocus, children: content })] })) }));
218
+ return (_jsx(LayoutElement, { ref: setRefs, ...filterBaseProps(otherProps, { eventProps: true }), mods: mods, styles: finalStyles, style: insetStyle, onKeyDown: hasOverlayPanels ? handleKeyDown : undefined, children: showDevWarning ? (_jsxs(Alert, { theme: "danger", children: [_jsx("b", { children: "UIKit:" }), " ", _jsx("b", { children: "<Layout/>" }), " has collapsed to ", _jsx("b", { children: "0" }), " height. Ensure the parent container has a defined height or use the", ' ', _jsx("b", { children: "height" }), " prop on ", _jsx("b", { children: "<Layout/>" }), "."] })) : (_jsxs(_Fragment, { children: [panels, _jsx("div", { ref: combinedInnerRef, "data-element": "Inner", onFocus: handleInnerFocus, ...innerProps, children: content })] })) }));
214
219
  }
215
220
  /**
216
221
  * Layout component provides a vertical flex layout with overflow-safe content.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
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.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
- import { forwardRef, useMemo } from 'react';
9
+ import { forwardRef, useMemo, } from 'react';
10
10
  import { CONTAINER_STYLES, extractStyles, filterBaseProps, mergeStyles, tasty, } from '../../../tasty';
11
+ import { useCombinedRefs } from '../../../utils/react';
11
12
  import { LayoutContextReset } from './LayoutContext';
12
13
  const ContainerElement = tasty({
13
14
  as: 'div',
@@ -26,7 +27,7 @@ const ContainerElement = tasty({
26
27
  width: '100%',
27
28
  border: {
28
29
  '': 0,
29
- '!:last-child': '$layout-border-size solid #border bottom',
30
+ '!:last-child': '($layout-border-size, 1bw) solid #border bottom',
30
31
  },
31
32
  Inner: {
32
33
  $: '>',
@@ -35,17 +36,19 @@ const ContainerElement = tasty({
35
36
  flow: 'column',
36
37
  width: '40x 100% 120x',
37
38
  boxSizing: 'border-box',
39
+ '$layout-border-size': '0',
38
40
  },
39
41
  },
40
42
  });
41
43
  function LayoutContainer(props, ref) {
42
- const { children, styles, innerStyles: innerStylesProp, ...otherProps } = props;
44
+ const { children, styles, innerStyles: innerStylesProp, innerRef: innerRefProp, innerProps, ...otherProps } = props;
43
45
  const innerStyles = extractStyles(otherProps, CONTAINER_STYLES, innerStylesProp);
44
46
  const hasInnerStyles = Object.keys(innerStyles).length > 0;
45
47
  const finalStyles = useMemo(() => {
46
48
  return mergeStyles(styles, hasInnerStyles ? { Inner: innerStyles } : null);
47
49
  }, [styles, hasInnerStyles, innerStyles]);
48
- return (_jsx(ContainerElement, { ref: ref, ...filterBaseProps(otherProps, { eventProps: true }), styles: finalStyles, children: _jsx("div", { "data-element": "Inner", children: _jsx(LayoutContextReset, { children: children }) }) }));
50
+ const combinedInnerRef = useCombinedRefs(innerRefProp);
51
+ return (_jsx(ContainerElement, { ref: ref, ...filterBaseProps(otherProps, { eventProps: true }), styles: finalStyles, children: _jsx("div", { ref: combinedInnerRef, "data-element": "Inner", ...innerProps, children: _jsx(LayoutContextReset, { children: children }) }) }));
49
52
  }
50
53
  const _LayoutContainer = forwardRef(LayoutContainer);
51
54
  _LayoutContainer.displayName = 'Layout.Container';
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- import { forwardRef, useMemo, useRef } from 'react';
9
+ import { forwardRef, useMemo, useRef, } from 'react';
10
10
  import { useHover } from 'react-aria';
11
11
  import { extractStyles, filterBaseProps, INNER_STYLES, mergeStyles, OUTER_STYLES, tasty, } from '../../../tasty';
12
12
  import { useCombinedRefs } from '../../../utils/react';
@@ -30,7 +30,7 @@ const ContentElement = tasty({
30
30
  boxSizing: 'content-box',
31
31
  border: {
32
32
  '': 0,
33
- '!:last-child': '$layout-border-size solid #border bottom',
33
+ '!:last-child': '($layout-border-size, 1bw) solid #border bottom',
34
34
  },
35
35
  Inner: {
36
36
  $: '>',
@@ -46,6 +46,7 @@ const ContentElement = tasty({
46
46
  '': 'thin',
47
47
  'scrollbar=tiny | scrollbar=none': 'none',
48
48
  },
49
+ '$layout-border-size': '0',
49
50
  },
50
51
  // Custom scrollbar handles (when scrollbar="tiny")
51
52
  ScrollbarV: {
@@ -58,7 +59,7 @@ const ContentElement = tasty({
58
59
  fill: '#dark.35',
59
60
  opacity: {
60
61
  '': 0,
61
- '(hovered | focused | scrolling) & scrollbar=tiny': 1,
62
+ '(focused | scrolling) & scrollbar=tiny': 1,
62
63
  },
63
64
  transition: 'opacity 0.15s',
64
65
  pointerEvents: 'none',
@@ -73,7 +74,7 @@ const ContentElement = tasty({
73
74
  fill: '#dark.35',
74
75
  opacity: {
75
76
  '': 0,
76
- '(hovered | focused | scrolling) & scrollbar=tiny': 1,
77
+ '(focused | scrolling) & scrollbar=tiny': 1,
77
78
  },
78
79
  transition: 'opacity 0.15s',
79
80
  pointerEvents: 'none',
@@ -81,14 +82,15 @@ const ContentElement = tasty({
81
82
  },
82
83
  });
83
84
  function LayoutContent(props, ref) {
84
- const { children, scrollbar = 'thin', styles, mods: externalMods, ...otherProps } = props;
85
+ const { children, scrollbar = 'thin', styles, mods: externalMods, innerRef: innerRefProp, innerProps, ...otherProps } = props;
85
86
  const outerStyles = extractStyles(otherProps, OUTER_STYLES);
86
87
  const innerStyles = extractStyles(otherProps, INNER_STYLES);
87
- const innerRef = useRef(null);
88
+ const internalInnerRef = useRef(null);
89
+ const combinedInnerRef = useCombinedRefs(innerRefProp, internalInnerRef);
88
90
  const combinedRef = useCombinedRefs(ref);
89
91
  const isTinyScrollbar = scrollbar === 'tiny';
90
92
  const { hoverProps, isHovered } = useHover({});
91
- const { handleVStyle, handleHStyle, hasOverflowY, hasOverflowX, isScrolling, } = useTinyScrollbar(innerRef, isTinyScrollbar);
93
+ const { handleVStyle, handleHStyle, hasOverflowY, hasOverflowX, isScrolling, } = useTinyScrollbar(internalInnerRef, isTinyScrollbar);
92
94
  const scrollbarStyle = useMemo(() => {
93
95
  if (!isTinyScrollbar)
94
96
  return {};
@@ -107,7 +109,7 @@ function LayoutContent(props, ref) {
107
109
  const finalStyles = useMemo(() => {
108
110
  return mergeStyles(styles, outerStyles, innerStyles ? { Inner: innerStyles } : null);
109
111
  }, [styles, outerStyles, innerStyles]);
110
- return (_jsxs(ContentElement, { ref: combinedRef, ...filterBaseProps(otherProps, { eventProps: true }), ...hoverProps, mods: mods, styles: finalStyles, style: scrollbarStyle, children: [_jsx("div", { ref: innerRef, "data-element": "Inner", children: _jsx(LayoutContextReset, { children: children }) }), isTinyScrollbar && hasOverflowY && _jsx("div", { "data-element": "ScrollbarV" }), isTinyScrollbar && hasOverflowX && _jsx("div", { "data-element": "ScrollbarH" })] }));
112
+ return (_jsxs(ContentElement, { ref: combinedRef, ...filterBaseProps(otherProps, { eventProps: true }), ...hoverProps, mods: mods, styles: finalStyles, style: scrollbarStyle, children: [_jsx("div", { ref: combinedInnerRef, "data-element": "Inner", ...innerProps, children: _jsx(LayoutContextReset, { children: children }) }), isTinyScrollbar && hasOverflowY && _jsx("div", { "data-element": "ScrollbarV" }), isTinyScrollbar && hasOverflowX && _jsx("div", { "data-element": "ScrollbarH" })] }));
111
113
  }
112
114
  const _LayoutContent = forwardRef(LayoutContent);
113
115
  _LayoutContent.displayName = 'Layout.Content';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
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.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
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.0.0-canary-1e090a8
4
+ * @cube-dev/ui-kit v0.0.0-canary-2397690
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -20,6 +20,10 @@ const FooterElement = tasty(LayoutContent, {
20
20
  flexShrink: 0,
21
21
  flexGrow: 0,
22
22
  whiteSpace: 'nowrap',
23
+ border: {
24
+ '': 0,
25
+ '!:last-child': '($layout-border-size, 1bw) solid #border bottom',
26
+ },
23
27
  Inner: {
24
28
  display: 'flex',
25
29
  flow: {