@cube-dev/ui-kit 0.143.0 → 0.144.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 (480) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +12 -0
  3. package/dist/README.md +1 -1
  4. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  5. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  6. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  7. package/dist/_internal/hooks/use-event.js +1 -1
  8. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  9. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  10. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  11. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/dist/_internal/hooks/use-warn.js +1 -1
  13. package/dist/components/Block.js +1 -1
  14. package/dist/components/CollectionItem.js +1 -1
  15. package/dist/components/GlobalStyles.js +1 -1
  16. package/dist/components/GridProvider.js +1 -1
  17. package/dist/components/HiddenInput.js +1 -1
  18. package/dist/components/Root.js +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +1 -1
  59. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  60. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  61. package/dist/components/content/Layout/GridLayout.js +1 -1
  62. package/dist/components/content/Layout/Layout.js +1 -1
  63. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  64. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  65. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  66. package/dist/components/content/Layout/LayoutContent.js +1 -1
  67. package/dist/components/content/Layout/LayoutContext.js +1 -1
  68. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  69. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  70. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  71. package/dist/components/content/Layout/LayoutHeader.js +9 -8
  72. package/dist/components/content/Layout/LayoutHeader.js.map +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.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  100. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  101. package/dist/components/fields/Checkbox/context.js +1 -1
  102. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  103. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  104. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  105. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  106. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  107. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  109. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  110. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  111. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  112. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  113. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  114. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  115. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  116. package/dist/components/fields/DatePicker/intl.js +1 -1
  117. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  118. package/dist/components/fields/DatePicker/props.js +1 -1
  119. package/dist/components/fields/DatePicker/utils.js +1 -1
  120. package/dist/components/fields/FileInput/FileInput.js +1 -1
  121. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  122. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  123. package/dist/components/fields/Input/Input.js +1 -1
  124. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  125. package/dist/components/fields/ListBox/ListBox.js +1 -1
  126. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  127. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  128. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  129. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  130. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  131. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  132. package/dist/components/fields/Picker/Picker.js +1 -1
  133. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  134. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  135. package/dist/components/fields/RadioGroup/context.js +1 -1
  136. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  137. package/dist/components/fields/Select/Select.js +1 -1
  138. package/dist/components/fields/Slider/Gradation.js +1 -1
  139. package/dist/components/fields/Slider/HueSlider.js +1 -1
  140. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  141. package/dist/components/fields/Slider/Slider.js +1 -1
  142. package/dist/components/fields/Slider/SliderBase.js +1 -1
  143. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  144. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  145. package/dist/components/fields/Slider/elements.js +1 -1
  146. package/dist/components/fields/Slider/index.js +1 -1
  147. package/dist/components/fields/Switch/Switch.js +1 -1
  148. package/dist/components/fields/TextArea/TextArea.js +1 -1
  149. package/dist/components/fields/TextInput/TextInput.js +1 -1
  150. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  151. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  152. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  153. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  154. package/dist/components/form/Form/Field.js +1 -1
  155. package/dist/components/form/Form/Form.js +1 -1
  156. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  157. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  158. package/dist/components/form/Form/SubmitError.js +1 -1
  159. package/dist/components/form/Form/index.js +1 -1
  160. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  161. package/dist/components/form/Form/use-field/use-field.js +1 -1
  162. package/dist/components/form/Form/use-form.js +1 -1
  163. package/dist/components/form/Form/validation.js +1 -1
  164. package/dist/components/form/Label.js +1 -1
  165. package/dist/components/form/wrapper.js +1 -1
  166. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  167. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  168. package/dist/components/layout/Board/Board.d.ts +110 -0
  169. package/dist/components/layout/Board/Board.js +455 -0
  170. package/dist/components/layout/Board/Board.js.map +1 -0
  171. package/dist/components/layout/Board/BoardProvider.d.ts +28 -0
  172. package/dist/components/layout/Board/BoardProvider.js +47 -0
  173. package/dist/components/layout/Board/BoardProvider.js.map +1 -0
  174. package/dist/components/layout/Board/BoardResponsive.d.ts +52 -0
  175. package/dist/components/layout/Board/BoardResponsive.js +101 -0
  176. package/dist/components/layout/Board/BoardResponsive.js.map +1 -0
  177. package/dist/components/layout/Board/Widget.d.ts +49 -0
  178. package/dist/components/layout/Board/Widget.js +42 -0
  179. package/dist/components/layout/Board/Widget.js.map +1 -0
  180. package/dist/components/layout/Board/WidgetHost.js +423 -0
  181. package/dist/components/layout/Board/WidgetHost.js.map +1 -0
  182. package/dist/components/layout/Board/board-context.d.ts +16 -0
  183. package/dist/components/layout/Board/board-context.js +32 -0
  184. package/dist/components/layout/Board/board-context.js.map +1 -0
  185. package/dist/components/layout/Board/board-store.d.ts +3 -0
  186. package/dist/components/layout/Board/board-store.js +49 -0
  187. package/dist/components/layout/Board/board-store.js.map +1 -0
  188. package/dist/components/layout/Board/grid-core/calculate.js +90 -0
  189. package/dist/components/layout/Board/grid-core/calculate.js.map +1 -0
  190. package/dist/components/layout/Board/grid-core/collision.js +35 -0
  191. package/dist/components/layout/Board/grid-core/collision.js.map +1 -0
  192. package/dist/components/layout/Board/grid-core/compactors.d.ts +23 -0
  193. package/dist/components/layout/Board/grid-core/compactors.js +166 -0
  194. package/dist/components/layout/Board/grid-core/compactors.js.map +1 -0
  195. package/dist/components/layout/Board/grid-core/constraints.d.ts +35 -0
  196. package/dist/components/layout/Board/grid-core/constraints.js +155 -0
  197. package/dist/components/layout/Board/grid-core/constraints.js.map +1 -0
  198. package/dist/components/layout/Board/grid-core/layout.js +176 -0
  199. package/dist/components/layout/Board/grid-core/layout.js.map +1 -0
  200. package/dist/components/layout/Board/grid-core/sort.js +37 -0
  201. package/dist/components/layout/Board/grid-core/sort.js.map +1 -0
  202. package/dist/components/layout/Board/grid-core/types.d.ts +168 -0
  203. package/dist/components/layout/Board/index.d.ts +21 -0
  204. package/dist/components/layout/Board/index.js +18 -0
  205. package/dist/components/layout/Board/index.js.map +1 -0
  206. package/dist/components/layout/Board/responsive-utils.d.ts +13 -0
  207. package/dist/components/layout/Board/responsive-utils.js +55 -0
  208. package/dist/components/layout/Board/responsive-utils.js.map +1 -0
  209. package/dist/components/layout/Board/use-board-layout.js +52 -0
  210. package/dist/components/layout/Board/use-board-layout.js.map +1 -0
  211. package/dist/components/layout/Board/use-board-registry.js +372 -0
  212. package/dist/components/layout/Board/use-board-registry.js.map +1 -0
  213. package/dist/components/layout/Flex.js +1 -1
  214. package/dist/components/layout/Flow.js +1 -1
  215. package/dist/components/layout/Grid.js +1 -1
  216. package/dist/components/layout/Panel.js +1 -1
  217. package/dist/components/layout/Prefix.js +1 -1
  218. package/dist/components/layout/ResizablePanel.js +1 -1
  219. package/dist/components/layout/Space.js +1 -1
  220. package/dist/components/layout/Suffix.js +1 -1
  221. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  222. package/dist/components/navigation/Tabs/TabButton.js +36 -4
  223. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  224. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  225. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  226. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  227. package/dist/components/navigation/Tabs/Tabs.js +6 -3
  228. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  229. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  230. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  231. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  232. package/dist/components/navigation/Tabs/styled.js +3 -2
  233. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  234. package/dist/components/navigation/Tabs/types.js +1 -1
  235. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  236. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  237. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  238. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  239. package/dist/components/other/Calendar/Calendar.js +1 -1
  240. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  241. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  242. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  243. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  244. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  245. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  246. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  247. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  248. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  249. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  250. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  251. package/dist/components/overlays/Dialog/context.js +1 -1
  252. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  253. package/dist/components/overlays/Modal/Modal.js +1 -1
  254. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  255. package/dist/components/overlays/Modal/Overlay.js +1 -1
  256. package/dist/components/overlays/Modal/Popover.js +1 -1
  257. package/dist/components/overlays/Modal/Tray.js +1 -1
  258. package/dist/components/overlays/Modal/Underlay.js +1 -1
  259. package/dist/components/overlays/Notifications/Notification.js +1 -1
  260. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  261. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  262. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  263. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  264. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  265. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  266. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  267. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  268. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  269. package/dist/components/overlays/Notifications/index.js +1 -1
  270. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  271. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  272. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  273. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  274. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  275. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  276. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  277. package/dist/components/overlays/Toast/index.js +1 -1
  278. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  279. package/dist/components/overlays/Toast/useToast.js +1 -1
  280. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  281. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  282. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  283. package/dist/components/overlays/Tooltip/context.js +1 -1
  284. package/dist/components/portal/Portal.js +1 -1
  285. package/dist/components/portal/PortalProvider.js +1 -1
  286. package/dist/components/portal/usePortal.js +1 -1
  287. package/dist/components/shared/DraggableCollection.js +1 -1
  288. package/dist/components/shared/InvalidIcon.js +1 -1
  289. package/dist/components/shared/ValidIcon.js +1 -1
  290. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  291. package/dist/components/status/Spin/Cube.js +1 -1
  292. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  293. package/dist/components/status/Spin/Spin.js +1 -1
  294. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  295. package/dist/data/item-themes.js +1 -1
  296. package/dist/data/themes.js +1 -1
  297. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  298. package/dist/icons/AdjustmentsIcon.js +1 -1
  299. package/dist/icons/AiIcon.js +1 -1
  300. package/dist/icons/AreaChartIcon.js +1 -1
  301. package/dist/icons/BackwardIcon.js +1 -1
  302. package/dist/icons/BarChartIcon.js +1 -1
  303. package/dist/icons/BellFilledIcon.js +1 -1
  304. package/dist/icons/BellIcon.js +1 -1
  305. package/dist/icons/BooleanIcon.js +1 -1
  306. package/dist/icons/CalendarEditIcon.js +1 -1
  307. package/dist/icons/CalendarIcon.js +1 -1
  308. package/dist/icons/CaretDownIcon.js +1 -1
  309. package/dist/icons/CaretUpIcon.js +1 -1
  310. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  311. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  312. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  313. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  314. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  315. package/dist/icons/ChartBarLineIcon.js +1 -1
  316. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  317. package/dist/icons/ChartBarStackedIcon.js +1 -1
  318. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  319. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  320. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  321. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  322. package/dist/icons/ChartBubbleIcon.js +1 -1
  323. package/dist/icons/ChartDonut2Icon.js +1 -1
  324. package/dist/icons/ChartFunnelIcon.js +1 -1
  325. package/dist/icons/ChartHeatmapIcon.js +1 -1
  326. package/dist/icons/ChartKPIIcon.js +1 -1
  327. package/dist/icons/ChartPie2Icon.js +1 -1
  328. package/dist/icons/ChartScatterIcon.js +1 -1
  329. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  330. package/dist/icons/CheckCircleIcon.js +1 -1
  331. package/dist/icons/CheckIcon.js +1 -1
  332. package/dist/icons/CircleFilledIcon.js +1 -1
  333. package/dist/icons/ClearIcon.js +1 -1
  334. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  335. package/dist/icons/CloseCircleIcon.js +1 -1
  336. package/dist/icons/CloseIcon.js +1 -1
  337. package/dist/icons/CodeIcon.js +1 -1
  338. package/dist/icons/ColumnTotalIcon.js +1 -1
  339. package/dist/icons/CopyIcon.js +1 -1
  340. package/dist/icons/CountIcon.js +1 -1
  341. package/dist/icons/CubeIcon.js +1 -1
  342. package/dist/icons/CubePauseIcon.js +1 -1
  343. package/dist/icons/CubePlayIcon.js +1 -1
  344. package/dist/icons/CurrencyDollarIcon.js +1 -1
  345. package/dist/icons/DangerIcon.js +1 -1
  346. package/dist/icons/DashboardIcon.js +1 -1
  347. package/dist/icons/DatabaseIcon.js +1 -1
  348. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  349. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  350. package/dist/icons/DirectionIcon.js +1 -1
  351. package/dist/icons/DonutIcon.js +1 -1
  352. package/dist/icons/DownIcon.js +1 -1
  353. package/dist/icons/EditIcon.js +1 -1
  354. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  355. package/dist/icons/ExclamationCircleIcon.js +1 -1
  356. package/dist/icons/ExclamationIcon.js +1 -1
  357. package/dist/icons/EyeIcon.js +1 -1
  358. package/dist/icons/EyeInvisibleIcon.js +1 -1
  359. package/dist/icons/FilterIcon.js +1 -1
  360. package/dist/icons/FolderFilledIcon.js +1 -1
  361. package/dist/icons/FolderIcon.js +1 -1
  362. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  363. package/dist/icons/FolderOpenIcon.js +1 -1
  364. package/dist/icons/ForwardIcon.js +1 -1
  365. package/dist/icons/GripVerticalIcon.js +1 -1
  366. package/dist/icons/HierarchyIcon.js +1 -1
  367. package/dist/icons/HierarchyOpenIcon.js +1 -1
  368. package/dist/icons/Icon.js +1 -1
  369. package/dist/icons/InfoCircleIcon.js +1 -1
  370. package/dist/icons/InfoIcon.js +1 -1
  371. package/dist/icons/KeyIcon.js +1 -1
  372. package/dist/icons/LeftIcon.js +1 -1
  373. package/dist/icons/LineChartIcon.js +1 -1
  374. package/dist/icons/LoadingIcon.js +1 -1
  375. package/dist/icons/LockFilledIcon.js +1 -1
  376. package/dist/icons/LockIcon.js +1 -1
  377. package/dist/icons/MoreIcon.js +1 -1
  378. package/dist/icons/NotAllowedIcon.js +1 -1
  379. package/dist/icons/Number123Icon.js +1 -1
  380. package/dist/icons/NumberIcon.js +1 -1
  381. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  382. package/dist/icons/PauseCircleIcon.js +1 -1
  383. package/dist/icons/PauseIcon.js +1 -1
  384. package/dist/icons/PercentageIcon.js +1 -1
  385. package/dist/icons/PieChartIcon.js +1 -1
  386. package/dist/icons/PlayCircleIcon.js +1 -1
  387. package/dist/icons/PlayIcon.js +1 -1
  388. package/dist/icons/PlusIcon.js +1 -1
  389. package/dist/icons/ProgressBarIcon.js +1 -1
  390. package/dist/icons/ReloadIcon.js +1 -1
  391. package/dist/icons/ReportIcon.js +1 -1
  392. package/dist/icons/ReturnIcon.js +1 -1
  393. package/dist/icons/RightIcon.js +1 -1
  394. package/dist/icons/RowTotalsIcon.js +1 -1
  395. package/dist/icons/SchemeIcon.js +1 -1
  396. package/dist/icons/SearchIcon.js +1 -1
  397. package/dist/icons/SemanticQueryIcon.js +1 -1
  398. package/dist/icons/SettingsIcon.js +1 -1
  399. package/dist/icons/ShieldFilledIcon.js +1 -1
  400. package/dist/icons/ShieldIcon.js +1 -1
  401. package/dist/icons/SlashIcon.js +1 -1
  402. package/dist/icons/SparklesIcon.js +1 -1
  403. package/dist/icons/SqlIcon.js +1 -1
  404. package/dist/icons/StatsIcon.js +1 -1
  405. package/dist/icons/StopIcon.js +1 -1
  406. package/dist/icons/StringIcon.js +1 -1
  407. package/dist/icons/SubtotalsIcon.js +1 -1
  408. package/dist/icons/SwitchIcon.js +1 -1
  409. package/dist/icons/TableIcon.js +1 -1
  410. package/dist/icons/ThumbsDownIcon.js +1 -1
  411. package/dist/icons/ThumbsUpIcon.js +1 -1
  412. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  413. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  414. package/dist/icons/ThunderboltIcon.js +1 -1
  415. package/dist/icons/TimeIcon.js +1 -1
  416. package/dist/icons/TrashIcon.js +1 -1
  417. package/dist/icons/UnlockIcon.js +1 -1
  418. package/dist/icons/UpIcon.js +1 -1
  419. package/dist/icons/UserGroupIcon.js +1 -1
  420. package/dist/icons/UserIcon.js +1 -1
  421. package/dist/icons/UserLockIcon.js +1 -1
  422. package/dist/icons/ViewIcon.js +1 -1
  423. package/dist/icons/WarningFilledIcon.js +1 -1
  424. package/dist/icons/WarningIcon.js +1 -1
  425. package/dist/icons/wrap-icon.js +1 -1
  426. package/dist/index.d.ts +12 -2
  427. package/dist/index.js +8 -2
  428. package/dist/index.js.map +1 -1
  429. package/dist/provider.js +1 -1
  430. package/dist/providers/TrackingProvider.js +1 -1
  431. package/dist/providers/navigationAdapter.default.js +1 -1
  432. package/dist/tokens/base.js +1 -1
  433. package/dist/tokens/colors.js +1 -1
  434. package/dist/tokens/index.js +1 -1
  435. package/dist/tokens/layout.js +1 -1
  436. package/dist/tokens/palette.js +1 -1
  437. package/dist/tokens/shadows.js +1 -1
  438. package/dist/tokens/sizes.js +1 -1
  439. package/dist/tokens/spacing.js +1 -1
  440. package/dist/tokens/typography.js +1 -1
  441. package/dist/utils/ResizeSensor.js +1 -1
  442. package/dist/utils/is-dev-env.js +1 -1
  443. package/dist/utils/modules.js +1 -1
  444. package/dist/utils/promise.js +1 -1
  445. package/dist/utils/raf.js +1 -1
  446. package/dist/utils/random.js +1 -1
  447. package/dist/utils/range.js +1 -1
  448. package/dist/utils/react/RenderCache.js +1 -1
  449. package/dist/utils/react/Slots.js +1 -1
  450. package/dist/utils/react/chain.js +1 -1
  451. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  452. package/dist/utils/react/index.js +1 -1
  453. package/dist/utils/react/interactions.js +1 -1
  454. package/dist/utils/react/isTextOnly.js +1 -1
  455. package/dist/utils/react/mapProps.js +1 -1
  456. package/dist/utils/react/mergeProps.js +1 -1
  457. package/dist/utils/react/nullableValue.js +1 -1
  458. package/dist/utils/react/resolveIcon.js +1 -1
  459. package/dist/utils/react/sharedStore.js +1 -1
  460. package/dist/utils/react/useCombinedRefs.js +1 -1
  461. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  462. package/dist/utils/react/useEventBus.js +1 -1
  463. package/dist/utils/react/useId.js +1 -1
  464. package/dist/utils/react/useIsDarwin.js +1 -1
  465. package/dist/utils/react/useKeySymbols.js +1 -1
  466. package/dist/utils/react/useLayoutEffect.js +1 -1
  467. package/dist/utils/react/useLocalStorage.js +1 -1
  468. package/dist/utils/react/useMergeStyles.js +1 -1
  469. package/dist/utils/react/usePopoverSync.js +1 -1
  470. package/dist/utils/react/useQaProps.js +1 -1
  471. package/dist/utils/react/useViewportSize.js +1 -1
  472. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  473. package/dist/utils/selection.js +1 -1
  474. package/dist/utils/styles.js +1 -1
  475. package/dist/utils/tree.js +1 -1
  476. package/dist/utils/warnings.js +1 -1
  477. package/dist/version.js +2 -2
  478. package/docs/components/layout/Board.md +224 -0
  479. package/docs/components/navigation/Tabs.md +18 -2
  480. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.0 | Cube Dev Team */
2
2
  //#region src/utils/react/mapProps.ts
3
3
  /** Converts AriaButtonProps to CubeButtonProps */
4
4
  function ariaToCubeButtonProps(props) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.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,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.144.0 | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.143.0";
3
+ const VERSION = "0.144.0";
4
4
  const TASTY_VERSION = "2.8.0";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
@@ -0,0 +1,224 @@
1
+ # Board
2
+
3
+ A draggable and resizable widget grid for building dashboards. Widgets are
4
+ declared with `Board.Widget` and positioned via a `layout` (grid units). Wrap
5
+ multiple boards in a `BoardProvider` (`Board.Provider`) to drag widgets between
6
+ them, including out of a nested board into its parent.
7
+
8
+ Dragging and resizing are powered by React Aria's `useMove`, so they work with
9
+ mouse, touch, and keyboard (focus a widget and use the arrow keys). While a
10
+ widget is dragged with a pointer it renders into a fixed overlay so it is never
11
+ clipped by an ancestor's `overflow: hidden`.
12
+
13
+ ## When to Use
14
+
15
+ - Customizable dashboards where users arrange widgets
16
+ - Report/analytics layouts with resizable tiles
17
+ - Multi-panel workspaces where items move between areas
18
+ - Nested containers whose children can be dragged out
19
+
20
+ ## Component
21
+
22
+ ---
23
+
24
+ ## Concepts
25
+
26
+ - **Layout** — an array of items `{ i, x, y, w, h }` in grid units. `i` matches a
27
+ `Board.Widget` `id`.
28
+ - **Content vs. position** — `Board.Widget` declares content; the owning `Board`
29
+ positions it. This decoupling is what lets a widget be transferred between
30
+ boards.
31
+ - **Compaction** — `vertical` (default), `horizontal`, or `free`. In `free` mode a
32
+ widget is placed exactly where you drop it and its neighbours are never pushed
33
+ or swapped; without `allowOverlap` a drop onto an occupied cell is blocked, and
34
+ with `allowOverlap` widgets may stack for a fully free canvas.
35
+
36
+ ## Properties
37
+
38
+ ### Board
39
+
40
+ - **`layout`** `LayoutItem[]` — Controlled layout.
41
+ - **`defaultLayout`** `LayoutItem[]` — Initial layout for uncontrolled usage.
42
+ - **`onLayoutChange`** `(layout: LayoutItem[]) => void` — Called when a drag or resize is committed.
43
+ - **`onDragStart` / `onDrag` / `onDragStop`** `(info: BoardInteractionInfo) => void` — Drag lifecycle callbacks. `onDrag` fires on every step; `onDragStop` fires after the layout is committed.
44
+ - **`onResizeStart` / `onResize` / `onResizeStop`** `(info: BoardInteractionInfo) => void` — Resize lifecycle callbacks, mirroring the drag ones.
45
+ - **`cols`** `number` (default: `12`) — Number of columns.
46
+ - **`rowHeight`** `number` (default: `100`) — Row height in pixels.
47
+ - **`margin`** `[number, number]` (default: `[8, 8]`) — Horizontal/vertical gap between widgets.
48
+ - **`containerPadding`** `[number, number]` — Inner padding. Defaults to `margin`.
49
+ - **`maxRows`** `number` (default: `Infinity`) — Maximum number of rows.
50
+ - **`compact`** `'vertical' | 'horizontal' | 'free' | null` (default: `'vertical'`) — Compaction behavior. `'vertical'`/`'horizontal'` reflow widgets to remove gaps; `'free'` places each widget exactly where dropped and never pushes its neighbours (blocked from occupied cells unless `allowOverlap`); `null` disables compaction but still resolves collisions the legacy react-grid-layout way.
51
+ - **`allowOverlap`** `boolean` (default: `false`) — Allow widgets to overlap (stack). In `'free'` mode this is what distinguishes stacking from blocking a drop onto an occupied cell.
52
+ - **`preventCollision`** `boolean` (default: `false`) — Block movement into occupied cells instead of pushing.
53
+ - **`isDraggable`** `boolean` (default: `true`) — Enable dragging for all widgets.
54
+ - **`isResizable`** `boolean` (default: `true`) — Enable resizing for all widgets.
55
+ - **`isDroppable`** `boolean` (default: `true`) — Whether the board accepts widgets dropped from other boards.
56
+ - **`resizeHandles`** `ResizeHandleAxis[]` (default: `['se']`) — Which resize handles to show. Corner handles (`ne`/`nw`/`se`/`sw`) show an angle grip; edge handles (`n`/`s`/`e`/`w`) show a dotted grip. Both are revealed on hover/focus/resize. A single edge (e.g. `['e']` or `['s']`) gives a horizontally- or vertically-only resizable widget.
57
+ - **`dragCancel`** `string` — CSS selector for elements that must not start a pointer drag (e.g. form controls inside a widget: `"input,textarea,button,a,.no-drag"`). Keyboard moves are unaffected. Can be overridden per widget.
58
+ - **`dragHandle`** `string` — CSS selector for the only elements from which a pointer drag may start. Can be overridden per widget.
59
+ - **`showGridLines`** `boolean | 'drag'` (default: `false`) — Show grid lines behind the widgets. `true` always, `'drag'` only while a widget is being dragged or resized.
60
+ - **`isAligned`** `boolean` (default: `false`) — Align a nested board with its ancestor `Board`'s layout. Only takes effect when the board is nested inside another `Board`'s widget. When set, the board inherits the parent's column pitch (deriving its own column count from its measured width so cells stay parent-sized as the container is resized) and inherits the parent's row height as a target, shrinking rows slightly when needed to fit the height the container widget grants it. `cols`/`rowHeight` then act as fallbacks used only until the parent metrics resolve.
61
+ - **`constraints`** `LayoutConstraint[]` — Grid/item layout constraints.
62
+ - **`width`** `number` — Explicit width (disables measurement; useful for SSR/tests).
63
+ - **`place`** `Styles['place']` — Style prop shorthand for `place-items`/`place-content`.
64
+ - **`scrollMargin`** `Styles['scrollMargin']` — Style prop for scroll margin.
65
+
66
+ ### Board.Widget
67
+
68
+ - **`id`** `string` (required) — Must match the `i` of a layout item.
69
+ - **`isDraggable`** `boolean` — Disable dragging for this widget.
70
+ - **`isResizable`** `boolean` — Disable resizing for this widget.
71
+ - **`resizeHandles`** `ResizeHandleAxis[]` — Override the board's handles.
72
+ - **`constraints`** `LayoutConstraint[]` — Per-widget constraints.
73
+ - **`qa`** `string` — Test id for the rendered widget element.
74
+ - **`styles`** `Styles` — Style overrides for the rendered widget element.
75
+ - **`isAutoHeight`** `boolean` (default: `false`) — Grow this widget's height in its board to fit its content (only ever increases, never shrinks). Pair it with a nested `Board isAligned` so the container expands until the inner board's rows fit at the parent's row height. It also pins the widget's resize floor: you cannot drag the widget shorter than the height its content currently needs.
76
+ - **`dragCancel`** `string` — Override the board's `dragCancel` selector for this widget.
77
+ - **`dragHandle`** `string` — Override the board's `dragHandle` selector for this widget.
78
+
79
+ ### Board.Provider
80
+
81
+ Shares one drag context across multiple boards. A standalone `Board` provides its
82
+ own automatically; only use `Board.Provider` when you need cross-board dragging.
83
+
84
+ - **`onWidgetTransfer`** `(info: { widgetId, fromBoardId, toBoardId, item }) => void` —
85
+ Fired when a widget is dropped from one board into another.
86
+
87
+ Dragging a widget across a container that can unmount (for example, out of an
88
+ inactive `Tab`) requires controlled ownership: a widget's content is declared by
89
+ its `Board.Widget`, so if that declaration unmounts the content is lost. Keep
90
+ each board's `layout` controlled and, in response to `onWidgetTransfer`, move the
91
+ `Board.Widget` declaration into the destination container so the content follows
92
+ the widget. The [Boards inside Tabs](#boards-inside-tabs) example shows the
93
+ pattern.
94
+
95
+ ### Board.Responsive
96
+
97
+ A wrapper around `Board` that selects a layout and column count based on the
98
+ container's measured width, mirroring react-grid-layout's `Responsive` +
99
+ `WidthProvider`. It accepts all `Board` props except `layout`, `defaultLayout`,
100
+ `cols`, `onLayoutChange`, and `width` (which it manages), plus:
101
+
102
+ - **`breakpoints`** `Record<string, number>` — Breakpoint name to minimum container width (px).
103
+ - **`cols`** `Record<string, number>` — Breakpoint name to column count.
104
+ - **`layouts`** `Record<string, LayoutItem[]>` — Controlled per-breakpoint layouts.
105
+ - **`defaultLayouts`** `Record<string, LayoutItem[]>` — Initial per-breakpoint layouts for uncontrolled usage.
106
+ - **`onLayoutChange`** `(currentLayout: LayoutItem[], allLayouts: Record<string, LayoutItem[]>) => void` — Called on commit with the active breakpoint's layout and the full map.
107
+ - **`onBreakpointChange`** `(breakpoint: string, cols: number) => void` — Called when the active breakpoint changes.
108
+ - **`onWidthChange`** `(width: number, cols: number) => void` — Called when the measured container width changes, with the active breakpoint's column count. Mirrors react-grid-layout's `WidthProvider` `onWidthChange`. Not fired while width is unmeasured or when an explicit `width` is provided.
109
+ - **`breakpoint`** `string` — Force a specific breakpoint regardless of width (e.g. for a fixed-size screenshot or PDF export).
110
+ - **`width`** `number` — Explicit width; disables measurement (SSR/tests/forced-size exports).
111
+
112
+ A breakpoint with no layout is synthesized from the nearest available one,
113
+ corrected into bounds and compacted for the target column count.
114
+
115
+ ### Base Properties
116
+
117
+ Supports [Base properties](../../BaseProperties.md).
118
+
119
+ ### Style Properties
120
+
121
+ These properties allow direct style application without using the `styles` prop.
122
+ Note: `margin` is repurposed as the grid gap (see Properties above) rather than a
123
+ CSS margin.
124
+
125
+ - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
126
+ - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
127
+ - **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
128
+ - **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
129
+ - **Color:** `color`, `fill`, `fade`, `image`
130
+ - **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
131
+
132
+ ## Examples
133
+
134
+ ### Controlled layout
135
+
136
+ ### Free positioning
137
+
138
+ A widget stays exactly where you drop it and never shuffles its neighbours.
139
+ Dropping onto an occupied cell is blocked, so the widget stays at its last free
140
+ spot.
141
+
142
+ ### Free positioning (overlap)
143
+
144
+ Add `allowOverlap` to let widgets stack on top of each other instead of being
145
+ blocked from occupied cells.
146
+
147
+ ### Horizontal compaction
148
+
149
+ ### Non-resizable
150
+
151
+ ### Grid lines
152
+
153
+ Show grid lines behind the widgets while dragging or resizing (or always).
154
+
155
+ ### Drag cancel
156
+
157
+ Keep interactive controls inside a widget clickable by excluding them from the
158
+ drag gesture with `dragCancel`.
159
+
160
+ ### Responsive
161
+
162
+ `Board.Responsive` swaps the layout and column count per breakpoint.
163
+
164
+ ### Cross-board dragging
165
+
166
+ Wrap boards in `Board.Provider` to drag widgets between them.
167
+
168
+ ### Nested boards
169
+
170
+ A `Board` can be placed inside a `Board.Widget`, making the whole container
171
+ draggable while its children can be dragged out into sibling boards.
172
+
173
+ Set `isAligned` on the nested board to align it with the surrounding layout: its
174
+ columns keep the parent's pixel pitch (so resizing the container adds or removes
175
+ columns instead of stretching them), and its rows inherit the parent's row
176
+ height, shrinking slightly when needed to fit the space the container widget
177
+ gives it.
178
+
179
+ Add `isAutoHeight` to the container `Board.Widget` to grow it (only ever taller)
180
+ until the inner board's rows fit at the parent's row height, so an aligned board
181
+ never has to squeeze its rows. It also stops the container's resize handle at
182
+ that height, so you can't drag it shorter than the inner board needs.
183
+
184
+ ### Boards inside Tabs
185
+
186
+ A `Board.Widget` can host a `Tabs` where each tab renders its own `Board`, all
187
+ under a shared `Board.Provider` so widgets can be dragged between tabs and out
188
+ into the surrounding board. Because an inactive tab unmounts, this example is
189
+ fully controlled: each board's `layout` is controlled and `onWidgetTransfer`
190
+ moves a widget's declaration into the destination container so its content
191
+ survives dragging out of (and switching away from) a tab.
192
+
193
+ When a `Tabs` sits inside a `Board`, tab switching becomes "spring-loaded"
194
+ automatically: while you drag a widget, hovering a tab header for a moment opens
195
+ that tab so you can drop into it (or move a widget between tabs). This needs no
196
+ setup - `Tabs` detects the active Board drag and, for its duration, keeps panels
197
+ mounted so the tab a widget is dragged out of (and the board owning the in-flight
198
+ drag) is not unmounted mid-gesture. Spring-loading works with mouse and pen;
199
+ touch drags capture the pointer, so they do not trigger it.
200
+
201
+ ## Accessibility
202
+
203
+ - Widgets are focusable when draggable. Press <kbd>Tab</kbd> to focus a widget,
204
+ then use the arrow keys to move it one cell at a time.
205
+ - Dragging, resizing, and keyboard movement are all handled by React Aria's
206
+ `useMove`, which normalizes mouse, touch, and keyboard interactions.
207
+
208
+ ## Not yet supported
209
+
210
+ - **External drag-in from a palette** — dragging a brand-new widget from an
211
+ element outside any board into the grid (react-grid-layout's
212
+ `isDroppable`/`onDrop`/`droppingItem`) is not implemented. Board's drag engine
213
+ is built entirely on React Aria's `useMove` over registered widgets; drag-in
214
+ is a separate HTML5 drag-and-drop modality (pixel-to-grid mapping, a dropping
215
+ placeholder, and new `onDrop`/`droppingItem` props). Add widgets
216
+ programmatically (render a new `Board.Widget` and add its layout item), or drag
217
+ between boards with `Board.Provider`.
218
+
219
+ ## Attribution
220
+
221
+ The layout engine in `grid-core/` is a vendored, trimmed copy of
222
+ [react-grid-layout](https://github.com/react-grid-layout/react-grid-layout)
223
+ (MIT). The React layer is a UI Kit-native reimplementation on top of tasty and
224
+ React Aria. See `grid-core/NOTICE.md`.
@@ -131,8 +131,12 @@ DOM order is always "bar then panels" — visual order is controlled internally
131
131
 
132
132
  ```jsx
133
133
  <Tabs placement="left" defaultActiveKey="overview">
134
- <Tab key="overview" title="Overview">Overview content</Tab>
135
- <Tab key="settings" title="Settings">Settings content</Tab>
134
+ <Tab key="overview" title="Overview">
135
+ Overview content
136
+ </Tab>
137
+ <Tab key="settings" title="Settings">
138
+ Settings content
139
+ </Tab>
136
140
  </Tabs>
137
141
  ```
138
142
 
@@ -827,6 +831,18 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
827
831
  - Tab panels use `display: contents`, allowing children to participate in parent flex layout
828
832
  - Nested Layout components with `flexGrow: 1` (default) stretch to fill remaining space
829
833
 
834
+ ### Inside a Board (spring-loaded switching)
835
+
836
+ When `Tabs` is rendered inside a [`Board`](../layout/Board.md), tab
837
+ switching becomes spring-loaded automatically: while a Board widget is being
838
+ dragged, hovering a tab header for a moment opens that tab, so a widget can be
839
+ dropped into it or moved between tabs. This requires no configuration - `Tabs`
840
+ detects the active Board drag and, for its duration, keeps panels mounted so the
841
+ tab a widget is dragged out of (and the board owning the in-flight gesture) is
842
+ not unmounted mid-drag. Spring-loading works with mouse and pen; touch drags
843
+ capture the pointer and do not trigger it. Outside a `Board` this behavior is
844
+ inert.
845
+
830
846
  ## Accessibility
831
847
 
832
848
  ### Keyboard Navigation
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.143.0",
3
+ "version": "0.144.0",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {
@@ -91,7 +91,7 @@
91
91
  "@testing-library/user-event": "14.6.1",
92
92
  "@types/babel__core": "^7.20.5",
93
93
  "@types/babel__helper-plugin-utils": "^7.10.3",
94
- "@types/node": "^22.17.2",
94
+ "@types/node": "^24.0.0",
95
95
  "@types/react": "^19.1.10",
96
96
  "@types/react-dom": "^19.1.7",
97
97
  "@types/react-is": "^18.2.4",
@@ -133,7 +133,7 @@
133
133
  ],
134
134
  "license": "MIT",
135
135
  "engines": {
136
- "node": ">=22.14.0",
136
+ "node": ">=24.0.0",
137
137
  "pnpm": "^10.0.0"
138
138
  },
139
139
  "scripts": {