@cube-dev/ui-kit 0.143.1 → 0.145.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 (479) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +19 -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 +1 -1
  72. package/dist/components/content/Layout/LayoutPane.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  75. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  76. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  77. package/dist/components/content/Layout/index.js +1 -1
  78. package/dist/components/content/Layout/utils.js +1 -1
  79. package/dist/components/content/Paragraph.js +1 -1
  80. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  81. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  82. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  83. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  84. package/dist/components/content/Result/Result.js +1 -1
  85. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  86. package/dist/components/content/Tag/Tag.js +1 -1
  87. package/dist/components/content/Text.js +1 -1
  88. package/dist/components/content/TextItem/TextItem.js +1 -1
  89. package/dist/components/content/Title.js +1 -1
  90. package/dist/components/content/Tree/Tree.js +1 -1
  91. package/dist/components/content/Tree/TreeNode.js +1 -1
  92. package/dist/components/content/Tree/styled.js +1 -1
  93. package/dist/components/content/Tree/tree-index.js +1 -1
  94. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  95. package/dist/components/content/Tree/use-load-data.js +1 -1
  96. package/dist/components/content/highlightText.js +1 -1
  97. package/dist/components/content/use-auto-tooltip.js +1 -1
  98. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  99. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  100. package/dist/components/fields/Checkbox/context.js +1 -1
  101. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  102. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  103. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  104. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  105. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  106. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  107. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  109. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  110. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  111. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  112. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  113. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  114. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  115. package/dist/components/fields/DatePicker/intl.js +1 -1
  116. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  117. package/dist/components/fields/DatePicker/props.js +1 -1
  118. package/dist/components/fields/DatePicker/utils.js +1 -1
  119. package/dist/components/fields/FileInput/FileInput.js +1 -1
  120. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  121. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  122. package/dist/components/fields/Input/Input.js +1 -1
  123. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  124. package/dist/components/fields/ListBox/ListBox.js +1 -1
  125. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  126. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  127. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  128. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  129. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  130. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  131. package/dist/components/fields/Picker/Picker.js +1 -1
  132. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  133. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  134. package/dist/components/fields/RadioGroup/context.js +1 -1
  135. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  136. package/dist/components/fields/Select/Select.js +1 -1
  137. package/dist/components/fields/Slider/Gradation.js +1 -1
  138. package/dist/components/fields/Slider/HueSlider.js +1 -1
  139. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  140. package/dist/components/fields/Slider/Slider.js +1 -1
  141. package/dist/components/fields/Slider/SliderBase.js +1 -1
  142. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  143. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  144. package/dist/components/fields/Slider/elements.js +1 -1
  145. package/dist/components/fields/Slider/index.js +1 -1
  146. package/dist/components/fields/Switch/Switch.js +1 -1
  147. package/dist/components/fields/TextArea/TextArea.js +1 -1
  148. package/dist/components/fields/TextInput/TextInput.js +1 -1
  149. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  150. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  151. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  152. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  153. package/dist/components/form/Form/Field.js +1 -1
  154. package/dist/components/form/Form/Form.js +1 -1
  155. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  156. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  157. package/dist/components/form/Form/SubmitError.js +1 -1
  158. package/dist/components/form/Form/index.js +1 -1
  159. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  160. package/dist/components/form/Form/use-field/use-field.js +1 -1
  161. package/dist/components/form/Form/use-form.js +1 -1
  162. package/dist/components/form/Form/validation.js +1 -1
  163. package/dist/components/form/Label.js +1 -1
  164. package/dist/components/form/wrapper.js +1 -1
  165. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  166. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  167. package/dist/components/layout/Board/Board.d.ts +129 -0
  168. package/dist/components/layout/Board/Board.js +478 -0
  169. package/dist/components/layout/Board/Board.js.map +1 -0
  170. package/dist/components/layout/Board/BoardProvider.d.ts +28 -0
  171. package/dist/components/layout/Board/BoardProvider.js +47 -0
  172. package/dist/components/layout/Board/BoardProvider.js.map +1 -0
  173. package/dist/components/layout/Board/BoardResponsive.d.ts +52 -0
  174. package/dist/components/layout/Board/BoardResponsive.js +101 -0
  175. package/dist/components/layout/Board/BoardResponsive.js.map +1 -0
  176. package/dist/components/layout/Board/Widget.d.ts +69 -0
  177. package/dist/components/layout/Board/Widget.js +68 -0
  178. package/dist/components/layout/Board/Widget.js.map +1 -0
  179. package/dist/components/layout/Board/WidgetHost.js +432 -0
  180. package/dist/components/layout/Board/WidgetHost.js.map +1 -0
  181. package/dist/components/layout/Board/board-context.d.ts +16 -0
  182. package/dist/components/layout/Board/board-context.js +42 -0
  183. package/dist/components/layout/Board/board-context.js.map +1 -0
  184. package/dist/components/layout/Board/board-store.d.ts +3 -0
  185. package/dist/components/layout/Board/board-store.js +49 -0
  186. package/dist/components/layout/Board/board-store.js.map +1 -0
  187. package/dist/components/layout/Board/grid-core/calculate.js +90 -0
  188. package/dist/components/layout/Board/grid-core/calculate.js.map +1 -0
  189. package/dist/components/layout/Board/grid-core/collision.js +35 -0
  190. package/dist/components/layout/Board/grid-core/collision.js.map +1 -0
  191. package/dist/components/layout/Board/grid-core/compactors.d.ts +23 -0
  192. package/dist/components/layout/Board/grid-core/compactors.js +166 -0
  193. package/dist/components/layout/Board/grid-core/compactors.js.map +1 -0
  194. package/dist/components/layout/Board/grid-core/constraints.d.ts +35 -0
  195. package/dist/components/layout/Board/grid-core/constraints.js +155 -0
  196. package/dist/components/layout/Board/grid-core/constraints.js.map +1 -0
  197. package/dist/components/layout/Board/grid-core/layout.js +176 -0
  198. package/dist/components/layout/Board/grid-core/layout.js.map +1 -0
  199. package/dist/components/layout/Board/grid-core/sort.js +37 -0
  200. package/dist/components/layout/Board/grid-core/sort.js.map +1 -0
  201. package/dist/components/layout/Board/grid-core/types.d.ts +168 -0
  202. package/dist/components/layout/Board/index.d.ts +21 -0
  203. package/dist/components/layout/Board/index.js +18 -0
  204. package/dist/components/layout/Board/index.js.map +1 -0
  205. package/dist/components/layout/Board/responsive-utils.d.ts +13 -0
  206. package/dist/components/layout/Board/responsive-utils.js +55 -0
  207. package/dist/components/layout/Board/responsive-utils.js.map +1 -0
  208. package/dist/components/layout/Board/use-board-layout.js +52 -0
  209. package/dist/components/layout/Board/use-board-layout.js.map +1 -0
  210. package/dist/components/layout/Board/use-board-registry.js +373 -0
  211. package/dist/components/layout/Board/use-board-registry.js.map +1 -0
  212. package/dist/components/layout/Flex.js +1 -1
  213. package/dist/components/layout/Flow.js +1 -1
  214. package/dist/components/layout/Grid.js +1 -1
  215. package/dist/components/layout/Panel.js +1 -1
  216. package/dist/components/layout/Prefix.js +1 -1
  217. package/dist/components/layout/ResizablePanel.js +1 -1
  218. package/dist/components/layout/Space.js +1 -1
  219. package/dist/components/layout/Suffix.js +1 -1
  220. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  221. package/dist/components/navigation/Tabs/TabButton.js +36 -4
  222. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  223. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  224. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  225. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  226. package/dist/components/navigation/Tabs/Tabs.js +6 -3
  227. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  228. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  229. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  230. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  231. package/dist/components/navigation/Tabs/styled.js +3 -2
  232. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  233. package/dist/components/navigation/Tabs/types.js +1 -1
  234. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  235. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  236. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  237. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  238. package/dist/components/other/Calendar/Calendar.js +1 -1
  239. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  240. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  241. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  242. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  243. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  244. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  245. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  246. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  247. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  248. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  249. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  250. package/dist/components/overlays/Dialog/context.js +1 -1
  251. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  252. package/dist/components/overlays/Modal/Modal.js +1 -1
  253. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  254. package/dist/components/overlays/Modal/Overlay.js +1 -1
  255. package/dist/components/overlays/Modal/Popover.js +1 -1
  256. package/dist/components/overlays/Modal/Tray.js +1 -1
  257. package/dist/components/overlays/Modal/Underlay.js +1 -1
  258. package/dist/components/overlays/Notifications/Notification.js +1 -1
  259. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  260. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  261. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  262. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  263. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  264. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  265. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  266. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  267. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  268. package/dist/components/overlays/Notifications/index.js +1 -1
  269. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  270. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  271. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  272. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  273. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  274. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  275. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  276. package/dist/components/overlays/Toast/index.js +1 -1
  277. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  278. package/dist/components/overlays/Toast/useToast.js +1 -1
  279. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  280. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  281. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  282. package/dist/components/overlays/Tooltip/context.js +1 -1
  283. package/dist/components/portal/Portal.js +1 -1
  284. package/dist/components/portal/PortalProvider.js +1 -1
  285. package/dist/components/portal/usePortal.js +1 -1
  286. package/dist/components/shared/DraggableCollection.js +1 -1
  287. package/dist/components/shared/InvalidIcon.js +1 -1
  288. package/dist/components/shared/ValidIcon.js +1 -1
  289. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  290. package/dist/components/status/Spin/Cube.js +1 -1
  291. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  292. package/dist/components/status/Spin/Spin.js +1 -1
  293. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  294. package/dist/data/item-themes.js +1 -1
  295. package/dist/data/themes.js +1 -1
  296. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  297. package/dist/icons/AdjustmentsIcon.js +1 -1
  298. package/dist/icons/AiIcon.js +1 -1
  299. package/dist/icons/AreaChartIcon.js +1 -1
  300. package/dist/icons/BackwardIcon.js +1 -1
  301. package/dist/icons/BarChartIcon.js +1 -1
  302. package/dist/icons/BellFilledIcon.js +1 -1
  303. package/dist/icons/BellIcon.js +1 -1
  304. package/dist/icons/BooleanIcon.js +1 -1
  305. package/dist/icons/CalendarEditIcon.js +1 -1
  306. package/dist/icons/CalendarIcon.js +1 -1
  307. package/dist/icons/CaretDownIcon.js +1 -1
  308. package/dist/icons/CaretUpIcon.js +1 -1
  309. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  310. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  311. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  312. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  313. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  314. package/dist/icons/ChartBarLineIcon.js +1 -1
  315. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  316. package/dist/icons/ChartBarStackedIcon.js +1 -1
  317. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  318. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  319. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  320. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  321. package/dist/icons/ChartBubbleIcon.js +1 -1
  322. package/dist/icons/ChartDonut2Icon.js +1 -1
  323. package/dist/icons/ChartFunnelIcon.js +1 -1
  324. package/dist/icons/ChartHeatmapIcon.js +1 -1
  325. package/dist/icons/ChartKPIIcon.js +1 -1
  326. package/dist/icons/ChartPie2Icon.js +1 -1
  327. package/dist/icons/ChartScatterIcon.js +1 -1
  328. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  329. package/dist/icons/CheckCircleIcon.js +1 -1
  330. package/dist/icons/CheckIcon.js +1 -1
  331. package/dist/icons/CircleFilledIcon.js +1 -1
  332. package/dist/icons/ClearIcon.js +1 -1
  333. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  334. package/dist/icons/CloseCircleIcon.js +1 -1
  335. package/dist/icons/CloseIcon.js +1 -1
  336. package/dist/icons/CodeIcon.js +1 -1
  337. package/dist/icons/ColumnTotalIcon.js +1 -1
  338. package/dist/icons/CopyIcon.js +1 -1
  339. package/dist/icons/CountIcon.js +1 -1
  340. package/dist/icons/CubeIcon.js +1 -1
  341. package/dist/icons/CubePauseIcon.js +1 -1
  342. package/dist/icons/CubePlayIcon.js +1 -1
  343. package/dist/icons/CurrencyDollarIcon.js +1 -1
  344. package/dist/icons/DangerIcon.js +1 -1
  345. package/dist/icons/DashboardIcon.js +1 -1
  346. package/dist/icons/DatabaseIcon.js +1 -1
  347. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  348. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  349. package/dist/icons/DirectionIcon.js +1 -1
  350. package/dist/icons/DonutIcon.js +1 -1
  351. package/dist/icons/DownIcon.js +1 -1
  352. package/dist/icons/EditIcon.js +1 -1
  353. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  354. package/dist/icons/ExclamationCircleIcon.js +1 -1
  355. package/dist/icons/ExclamationIcon.js +1 -1
  356. package/dist/icons/EyeIcon.js +1 -1
  357. package/dist/icons/EyeInvisibleIcon.js +1 -1
  358. package/dist/icons/FilterIcon.js +1 -1
  359. package/dist/icons/FolderFilledIcon.js +1 -1
  360. package/dist/icons/FolderIcon.js +1 -1
  361. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  362. package/dist/icons/FolderOpenIcon.js +1 -1
  363. package/dist/icons/ForwardIcon.js +1 -1
  364. package/dist/icons/GripVerticalIcon.js +1 -1
  365. package/dist/icons/HierarchyIcon.js +1 -1
  366. package/dist/icons/HierarchyOpenIcon.js +1 -1
  367. package/dist/icons/Icon.js +1 -1
  368. package/dist/icons/InfoCircleIcon.js +1 -1
  369. package/dist/icons/InfoIcon.js +1 -1
  370. package/dist/icons/KeyIcon.js +1 -1
  371. package/dist/icons/LeftIcon.js +1 -1
  372. package/dist/icons/LineChartIcon.js +1 -1
  373. package/dist/icons/LoadingIcon.js +1 -1
  374. package/dist/icons/LockFilledIcon.js +1 -1
  375. package/dist/icons/LockIcon.js +1 -1
  376. package/dist/icons/MoreIcon.js +1 -1
  377. package/dist/icons/NotAllowedIcon.js +1 -1
  378. package/dist/icons/Number123Icon.js +1 -1
  379. package/dist/icons/NumberIcon.js +1 -1
  380. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  381. package/dist/icons/PauseCircleIcon.js +1 -1
  382. package/dist/icons/PauseIcon.js +1 -1
  383. package/dist/icons/PercentageIcon.js +1 -1
  384. package/dist/icons/PieChartIcon.js +1 -1
  385. package/dist/icons/PlayCircleIcon.js +1 -1
  386. package/dist/icons/PlayIcon.js +1 -1
  387. package/dist/icons/PlusIcon.js +1 -1
  388. package/dist/icons/ProgressBarIcon.js +1 -1
  389. package/dist/icons/ReloadIcon.js +1 -1
  390. package/dist/icons/ReportIcon.js +1 -1
  391. package/dist/icons/ReturnIcon.js +1 -1
  392. package/dist/icons/RightIcon.js +1 -1
  393. package/dist/icons/RowTotalsIcon.js +1 -1
  394. package/dist/icons/SchemeIcon.js +1 -1
  395. package/dist/icons/SearchIcon.js +1 -1
  396. package/dist/icons/SemanticQueryIcon.js +1 -1
  397. package/dist/icons/SettingsIcon.js +1 -1
  398. package/dist/icons/ShieldFilledIcon.js +1 -1
  399. package/dist/icons/ShieldIcon.js +1 -1
  400. package/dist/icons/SlashIcon.js +1 -1
  401. package/dist/icons/SparklesIcon.js +1 -1
  402. package/dist/icons/SqlIcon.js +1 -1
  403. package/dist/icons/StatsIcon.js +1 -1
  404. package/dist/icons/StopIcon.js +1 -1
  405. package/dist/icons/StringIcon.js +1 -1
  406. package/dist/icons/SubtotalsIcon.js +1 -1
  407. package/dist/icons/SwitchIcon.js +1 -1
  408. package/dist/icons/TableIcon.js +1 -1
  409. package/dist/icons/ThumbsDownIcon.js +1 -1
  410. package/dist/icons/ThumbsUpIcon.js +1 -1
  411. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  412. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  413. package/dist/icons/ThunderboltIcon.js +1 -1
  414. package/dist/icons/TimeIcon.js +1 -1
  415. package/dist/icons/TrashIcon.js +1 -1
  416. package/dist/icons/UnlockIcon.js +1 -1
  417. package/dist/icons/UpIcon.js +1 -1
  418. package/dist/icons/UserGroupIcon.js +1 -1
  419. package/dist/icons/UserIcon.js +1 -1
  420. package/dist/icons/UserLockIcon.js +1 -1
  421. package/dist/icons/ViewIcon.js +1 -1
  422. package/dist/icons/WarningFilledIcon.js +1 -1
  423. package/dist/icons/WarningIcon.js +1 -1
  424. package/dist/icons/wrap-icon.js +1 -1
  425. package/dist/index.d.ts +12 -2
  426. package/dist/index.js +8 -2
  427. package/dist/index.js.map +1 -1
  428. package/dist/provider.js +1 -1
  429. package/dist/providers/TrackingProvider.js +1 -1
  430. package/dist/providers/navigationAdapter.default.js +1 -1
  431. package/dist/tokens/base.js +1 -1
  432. package/dist/tokens/colors.js +1 -1
  433. package/dist/tokens/index.js +1 -1
  434. package/dist/tokens/layout.js +1 -1
  435. package/dist/tokens/palette.js +1 -1
  436. package/dist/tokens/shadows.js +1 -1
  437. package/dist/tokens/sizes.js +1 -1
  438. package/dist/tokens/spacing.js +1 -1
  439. package/dist/tokens/typography.js +1 -1
  440. package/dist/utils/ResizeSensor.js +1 -1
  441. package/dist/utils/is-dev-env.js +1 -1
  442. package/dist/utils/modules.js +1 -1
  443. package/dist/utils/promise.js +1 -1
  444. package/dist/utils/raf.js +1 -1
  445. package/dist/utils/random.js +1 -1
  446. package/dist/utils/range.js +1 -1
  447. package/dist/utils/react/RenderCache.js +1 -1
  448. package/dist/utils/react/Slots.js +1 -1
  449. package/dist/utils/react/chain.js +1 -1
  450. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  451. package/dist/utils/react/index.js +1 -1
  452. package/dist/utils/react/interactions.js +1 -1
  453. package/dist/utils/react/isTextOnly.js +1 -1
  454. package/dist/utils/react/mapProps.js +1 -1
  455. package/dist/utils/react/mergeProps.js +1 -1
  456. package/dist/utils/react/nullableValue.js +1 -1
  457. package/dist/utils/react/resolveIcon.js +1 -1
  458. package/dist/utils/react/sharedStore.js +1 -1
  459. package/dist/utils/react/useCombinedRefs.js +1 -1
  460. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  461. package/dist/utils/react/useEventBus.js +1 -1
  462. package/dist/utils/react/useId.js +1 -1
  463. package/dist/utils/react/useIsDarwin.js +1 -1
  464. package/dist/utils/react/useKeySymbols.js +1 -1
  465. package/dist/utils/react/useLayoutEffect.js +1 -1
  466. package/dist/utils/react/useLocalStorage.js +1 -1
  467. package/dist/utils/react/useMergeStyles.js +1 -1
  468. package/dist/utils/react/usePopoverSync.js +1 -1
  469. package/dist/utils/react/useQaProps.js +1 -1
  470. package/dist/utils/react/useViewportSize.js +1 -1
  471. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  472. package/dist/utils/selection.js +1 -1
  473. package/dist/utils/styles.js +1 -1
  474. package/dist/utils/tree.js +1 -1
  475. package/dist/utils/warnings.js +1 -1
  476. package/dist/version.js +2 -2
  477. package/docs/components/layout/Board.md +247 -0
  478. package/docs/components/navigation/Tabs.md +18 -2
  479. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.0 | Cube Dev Team */
2
2
  import { useState } from "react";
3
3
  import { useFocus, useFocusVisible } from "react-aria";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.0 | Cube Dev Team */
2
2
  import { Children, isValidElement } from "react";
3
3
 
4
4
  //#region src/utils/react/isTextOnly.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.143.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.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.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.0 | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.143.1";
3
+ const VERSION = "0.145.0";
4
4
  const TASTY_VERSION = "2.8.0";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
@@ -0,0 +1,247 @@
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`, or to `[0, 0]` for an aligned nested board (`isAligned`) so its grid lines up with the ancestor board's.
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. A nested board that does not set this inherits an enabled ancestor's grid lines, showing its own while a drag is in progress.
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, every cell matches the parent's cell size exactly: 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 uses the parent's row height verbatim. It never shrinks rows to fit — pair it with an `isAutoHeight` container so the widget grows to fit its rows at that height. `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
+ - **`widgetProps`** `Partial<Board.Widget props>` — Default props applied to every widget this board hosts (per-widget `Board.Widget` props override these). Use it to add a card border to every widget (`widgetProps={{ isCard: true }}`) or set shared `styles`/sizing defaults without repeating them on each widget.
64
+ - **`place`** `Styles['place']` — Style prop shorthand for `place-items`/`place-content`.
65
+ - **`scrollMargin`** `Styles['scrollMargin']` — Style prop for scroll margin.
66
+
67
+ ### Board.Widget
68
+
69
+ - **`id`** `string` (required) — Must match the `i` of a layout item.
70
+ - **`isCard`** `boolean` (default: `false`) — Render this widget as a card by adding a border. Widgets are always filled (`#surface-2`) and rounded (`1cr`); `isCard` adds the border on top. Defaults to `false` (borderless) unless the owning `Board`'s `widgetProps.isCard` opts in; set it per widget to override that default.
71
+ - **`isDraggable`** `boolean` — Disable dragging for this widget.
72
+ - **`isResizable`** `boolean` — Disable resizing for this widget.
73
+ - **`resizeHandles`** `ResizeHandleAxis[]` — Override the board's handles.
74
+ - **`minW`** `number` — Minimum width in grid columns. Used when the layout item omits `minW`; the resize handle stops here.
75
+ - **`maxW`** `number` — Maximum width in grid columns. Used when the layout item omits `maxW`.
76
+ - **`minH`** `number` — Minimum height in grid rows. Used when the layout item omits `minH`.
77
+ - **`maxH`** `number` — Maximum height in grid rows. Used when the layout item omits `maxH`.
78
+ - **`constraints`** `LayoutConstraint[]` — Per-widget constraints.
79
+ - **`qa`** `string` — Test id for the rendered widget element.
80
+ - **`styles`** `Styles` — Style overrides for the rendered widget element.
81
+ - **Style properties** — `Board.Widget` also accepts container style props directly (e.g. `fill`, `padding`, `radius`, `border`, `shadow`, `color`, `flow`, `gap`), just like `Board`. They are merged into `styles` (a direct prop wins over the same key in the `styles` object). Shared `widgetProps.styles` from the owning `Board` are merged underneath, so a per-widget style only overrides the matching keys instead of replacing the whole default.
82
+ - **`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.
83
+ - **`dragCancel`** `string` — Override the board's `dragCancel` selector for this widget.
84
+ - **`dragHandle`** `string` — Override the board's `dragHandle` selector for this widget.
85
+
86
+ ### Board.Provider
87
+
88
+ Shares one drag context across multiple boards. A standalone `Board` provides its
89
+ own automatically; only use `Board.Provider` when you need cross-board dragging.
90
+
91
+ - **`onWidgetTransfer`** `(info: { widgetId, fromBoardId, toBoardId, item }) => void` —
92
+ Fired when a widget is dropped from one board into another.
93
+
94
+ Dragging a widget across a container that can unmount (for example, out of an
95
+ inactive `Tab`) requires controlled ownership: a widget's content is declared by
96
+ its `Board.Widget`, so if that declaration unmounts the content is lost. Keep
97
+ each board's `layout` controlled and, in response to `onWidgetTransfer`, move the
98
+ `Board.Widget` declaration into the destination container so the content follows
99
+ the widget. The [Boards inside Tabs](#boards-inside-tabs) example shows the
100
+ pattern.
101
+
102
+ ### Board.Responsive
103
+
104
+ A wrapper around `Board` that selects a layout and column count based on the
105
+ container's measured width, mirroring react-grid-layout's `Responsive` +
106
+ `WidthProvider`. It accepts all `Board` props except `layout`, `defaultLayout`,
107
+ `cols`, `onLayoutChange`, and `width` (which it manages), plus:
108
+
109
+ - **`breakpoints`** `Record<string, number>` — Breakpoint name to minimum container width (px).
110
+ - **`cols`** `Record<string, number>` — Breakpoint name to column count.
111
+ - **`layouts`** `Record<string, LayoutItem[]>` — Controlled per-breakpoint layouts.
112
+ - **`defaultLayouts`** `Record<string, LayoutItem[]>` — Initial per-breakpoint layouts for uncontrolled usage.
113
+ - **`onLayoutChange`** `(currentLayout: LayoutItem[], allLayouts: Record<string, LayoutItem[]>) => void` — Called on commit with the active breakpoint's layout and the full map.
114
+ - **`onBreakpointChange`** `(breakpoint: string, cols: number) => void` — Called when the active breakpoint changes.
115
+ - **`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.
116
+ - **`breakpoint`** `string` — Force a specific breakpoint regardless of width (e.g. for a fixed-size screenshot or PDF export).
117
+ - **`width`** `number` — Explicit width; disables measurement (SSR/tests/forced-size exports).
118
+
119
+ A breakpoint with no layout is synthesized from the nearest available one,
120
+ corrected into bounds and compacted for the target column count.
121
+
122
+ ### Base Properties
123
+
124
+ Supports [Base properties](../../BaseProperties.md).
125
+
126
+ ### Style Properties
127
+
128
+ These properties allow direct style application without using the `styles` prop.
129
+ Note: `margin` is repurposed as the grid gap (see Properties above) rather than a
130
+ CSS margin.
131
+
132
+ - **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
133
+ - **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
134
+ - **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
135
+ - **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
136
+ - **Color:** `color`, `fill`, `fade`, `image`
137
+ - **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
138
+
139
+ ## Examples
140
+
141
+ ### Controlled layout
142
+
143
+ ### Free positioning
144
+
145
+ A widget stays exactly where you drop it and never shuffles its neighbours.
146
+ Dropping onto an occupied cell is blocked, so the widget stays at its last free
147
+ spot.
148
+
149
+ ### Free positioning (overlap)
150
+
151
+ Add `allowOverlap` to let widgets stack on top of each other instead of being
152
+ blocked from occupied cells.
153
+
154
+ ### Horizontal compaction
155
+
156
+ ### Non-resizable
157
+
158
+ ### Min/max widget size
159
+
160
+ Bound resizing with per-widget `minW`/`maxW` (columns) and `minH`/`maxH` (rows).
161
+
162
+ ### Grid lines
163
+
164
+ Show grid lines behind the widgets while dragging or resizing (or always).
165
+
166
+ ### Card widgets
167
+
168
+ Widgets are filled (`#surface-2`) and rounded by default, but borderless. Add a
169
+ card border per widget with `isCard`, or for the whole board at once with
170
+ `widgetProps={{ isCard: true }}`. Per-widget `isCard` overrides the board default.
171
+
172
+ ### Drag cancel
173
+
174
+ Keep interactive controls inside a widget clickable by excluding them from the
175
+ drag gesture with `dragCancel`.
176
+
177
+ ### Responsive
178
+
179
+ `Board.Responsive` swaps the layout and column count per breakpoint.
180
+
181
+ ### Cross-board dragging
182
+
183
+ Wrap boards in `Board.Provider` to drag widgets between them.
184
+
185
+ ### Nested boards
186
+
187
+ A `Board` can be placed inside a `Board.Widget`, making the whole container
188
+ draggable while its children can be dragged out into sibling boards.
189
+
190
+ Set `isAligned` on the nested board to align it with the surrounding layout:
191
+ every cell matches the parent's cell size exactly. Its columns keep the parent's
192
+ pixel pitch (so resizing the container adds or removes columns instead of
193
+ stretching them) and its rows use the parent's row height verbatim.
194
+
195
+ Because an aligned board never shrinks its rows to fit, add `isAutoHeight` to the
196
+ container `Board.Widget` so it grows (only ever taller) until the inner board's
197
+ rows fit at the parent's row height. It also stops the container's resize handle
198
+ at that height, so you can't drag it shorter than the inner board needs.
199
+
200
+ ### Aligned nested boards
201
+
202
+ A nested `Board` with `isAligned` and no padding, fill, border, or radius of its
203
+ own — only a header above the grid — inherits the parent column pitch with zero
204
+ offset, so its columns line up exactly with the outer board. Grid lines are
205
+ shown on both boards while dragging to verify the alignment.
206
+
207
+ ### Boards inside Tabs
208
+
209
+ A `Board.Widget` can host a `Tabs` where each tab renders its own `Board`, all
210
+ under a shared `Board.Provider` so widgets can be dragged between tabs and out
211
+ into the surrounding board. Because an inactive tab unmounts, this example is
212
+ fully controlled: each board's `layout` is controlled and `onWidgetTransfer`
213
+ moves a widget's declaration into the destination container so its content
214
+ survives dragging out of (and switching away from) a tab.
215
+
216
+ When a `Tabs` sits inside a `Board`, tab switching becomes "spring-loaded"
217
+ automatically: while you drag a widget, hovering a tab header for a moment opens
218
+ that tab so you can drop into it (or move a widget between tabs). This needs no
219
+ setup - `Tabs` detects the active Board drag and, for its duration, keeps panels
220
+ mounted so the tab a widget is dragged out of (and the board owning the in-flight
221
+ drag) is not unmounted mid-gesture. Spring-loading works with mouse and pen;
222
+ touch drags capture the pointer, so they do not trigger it.
223
+
224
+ ## Accessibility
225
+
226
+ - Widgets are focusable when draggable. Press <kbd>Tab</kbd> to focus a widget,
227
+ then use the arrow keys to move it one cell at a time.
228
+ - Dragging, resizing, and keyboard movement are all handled by React Aria's
229
+ `useMove`, which normalizes mouse, touch, and keyboard interactions.
230
+
231
+ ## Not yet supported
232
+
233
+ - **External drag-in from a palette** — dragging a brand-new widget from an
234
+ element outside any board into the grid (react-grid-layout's
235
+ `isDroppable`/`onDrop`/`droppingItem`) is not implemented. Board's drag engine
236
+ is built entirely on React Aria's `useMove` over registered widgets; drag-in
237
+ is a separate HTML5 drag-and-drop modality (pixel-to-grid mapping, a dropping
238
+ placeholder, and new `onDrop`/`droppingItem` props). Add widgets
239
+ programmatically (render a new `Board.Widget` and add its layout item), or drag
240
+ between boards with `Board.Provider`.
241
+
242
+ ## Attribution
243
+
244
+ The layout engine in `grid-core/` is a vendored, trimmed copy of
245
+ [react-grid-layout](https://github.com/react-grid-layout/react-grid-layout)
246
+ (MIT). The React layer is a UI Kit-native reimplementation on top of tasty and
247
+ 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.1",
3
+ "version": "0.145.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",
@@ -106,7 +106,7 @@
106
106
  "dedent": "^0.7.0",
107
107
  "husky": "^6.0.0",
108
108
  "jsdom": "^29.1.1",
109
- "lint-staged": "^10.0.0",
109
+ "lint-staged": "^17.0.8",
110
110
  "markdown-table": "^3.0.3",
111
111
  "npm-run-all": "^4.1.5",
112
112
  "oxlint": "^1.72.0",
@@ -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": {