@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
@@ -0,0 +1,47 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.0 | Cube Dev Team */
2
+ import { BoardDragActiveContext, BoardRegistryContext } from "./board-context.js";
3
+ import { useBoardRegistry } from "./use-board-registry.js";
4
+ import { tasty } from "@tenphi/tasty";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+
7
+ //#region src/components/layout/Board/BoardProvider.tsx
8
+ const OverlayElement = tasty({
9
+ qa: "BoardDragOverlay",
10
+ styles: {
11
+ position: "fixed",
12
+ top: 0,
13
+ left: 0,
14
+ right: 0,
15
+ bottom: 0,
16
+ zIndex: 999999,
17
+ pointerEvents: "none",
18
+ overflow: "visible"
19
+ }
20
+ });
21
+ /**
22
+ * Shares a single drag context across multiple `Board`s so widgets can be
23
+ * dragged from one board to another (including out of a nested board into its
24
+ * parent). Also hosts the fixed drag overlay used to render the dragged widget
25
+ * above everything, so ancestor `overflow: hidden` never clips it.
26
+ *
27
+ * A standalone `Board` provides its own registry automatically; wrap several
28
+ * boards in a `BoardProvider` only when you need cross-board dragging.
29
+ */
30
+ function BoardProvider(props) {
31
+ const { children, onWidgetTransfer } = props;
32
+ const registry = useBoardRegistry({ onWidgetTransfer });
33
+ return /* @__PURE__ */ jsx(BoardRegistryContext.Provider, {
34
+ value: registry,
35
+ children: /* @__PURE__ */ jsxs(BoardDragActiveContext.Provider, {
36
+ value: registry.dragState != null,
37
+ children: [children, /* @__PURE__ */ jsx(OverlayElement, {
38
+ ref: registry.overlayRef,
39
+ "aria-hidden": "true"
40
+ })]
41
+ })
42
+ });
43
+ }
44
+
45
+ //#endregion
46
+ export { BoardProvider };
47
+ //# sourceMappingURL=BoardProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoardProvider.js","names":[],"sources":["../../../../src/components/layout/Board/BoardProvider.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { ReactNode } from 'react';\n\nimport {\n BoardDragActiveContext,\n BoardRegistryContext,\n WidgetTransferInfo,\n} from './board-context';\nimport { useBoardRegistry } from './use-board-registry';\n\nconst OverlayElement = tasty({\n qa: 'BoardDragOverlay',\n styles: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 999999,\n pointerEvents: 'none',\n overflow: 'visible',\n },\n});\n\nexport interface CubeBoardProviderProps {\n children?: ReactNode;\n /**\n * Fired when a widget is dropped from one board into another. Use it to move\n * the widget's `Board.Widget` declaration into the destination container when\n * the source container can unmount (e.g. an inactive `Tab`).\n */\n onWidgetTransfer?: (info: WidgetTransferInfo) => void;\n}\n\n/**\n * Shares a single drag context across multiple `Board`s so widgets can be\n * dragged from one board to another (including out of a nested board into its\n * parent). Also hosts the fixed drag overlay used to render the dragged widget\n * above everything, so ancestor `overflow: hidden` never clips it.\n *\n * A standalone `Board` provides its own registry automatically; wrap several\n * boards in a `BoardProvider` only when you need cross-board dragging.\n */\nexport function BoardProvider(props: CubeBoardProviderProps) {\n const { children, onWidgetTransfer } = props;\n const registry = useBoardRegistry({ onWidgetTransfer });\n\n return (\n <BoardRegistryContext.Provider value={registry}>\n <BoardDragActiveContext.Provider value={registry.dragState != null}>\n {children}\n <OverlayElement ref={registry.overlayRef} aria-hidden=\"true\" />\n </BoardDragActiveContext.Provider>\n </BoardRegistryContext.Provider>\n );\n}\n"],"mappings":";;;;;;;AAUA,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,KAAK;EACL,MAAM;EACN,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,eAAe;EACf,UAAU;EACX;CACF,CAAC;;;;;;;;;;AAqBF,SAAgB,cAAc,OAA+B;CAC3D,MAAM,EAAE,UAAU,qBAAqB;CACvC,MAAM,WAAW,iBAAiB,EAAE,kBAAkB,CAAC;AAEvD,QACE,oBAAC,qBAAqB;EAAS,OAAO;YACpC,qBAAC,uBAAuB;GAAS,OAAO,SAAS,aAAa;cAC3D,UACD,oBAAC;IAAe,KAAK,SAAS;IAAY,eAAY;KAAS;IAC/B;GACJ"}
@@ -0,0 +1,52 @@
1
+
2
+ import { LayoutItem } from "./grid-core/types.js";
3
+ import { CubeBoardProps } from "./Board.js";
4
+ import { BreakpointCols, Breakpoints, ResponsiveLayouts } from "./responsive-utils.js";
5
+ import * as react from "react";
6
+
7
+ //#region src/components/layout/Board/BoardResponsive.d.ts
8
+ interface CubeBoardResponsiveProps extends Omit<CubeBoardProps, 'layout' | 'defaultLayout' | 'cols' | 'onLayoutChange' | 'width' | 'breakpoints'> {
9
+ /** Map of breakpoint name -> minimum container width in pixels. */
10
+ breakpoints: Breakpoints;
11
+ /** Map of breakpoint name -> column count. */
12
+ cols: BreakpointCols;
13
+ /** Controlled per-breakpoint layouts. */
14
+ layouts?: ResponsiveLayouts;
15
+ /** Initial per-breakpoint layouts for uncontrolled usage. */
16
+ defaultLayouts?: ResponsiveLayouts;
17
+ /**
18
+ * Called when a drag or resize is committed. Receives the active breakpoint's
19
+ * layout and the full map of all breakpoint layouts.
20
+ */
21
+ onLayoutChange?: (currentLayout: LayoutItem[], allLayouts: ResponsiveLayouts) => void;
22
+ /** Called when the active breakpoint changes. */
23
+ onBreakpointChange?: (breakpoint: string, cols: number) => void;
24
+ /**
25
+ * Called when the measured container width changes, with the current column
26
+ * count for the active breakpoint. Mirrors react-grid-layout's
27
+ * `WidthProvider` `onWidthChange`. Not fired while width is unmeasured (0) or
28
+ * when an explicit `width` is provided.
29
+ */
30
+ onWidthChange?: (width: number, cols: number) => void;
31
+ /**
32
+ * Force a specific breakpoint regardless of the measured width (e.g. for a
33
+ * fixed-size screenshot or PDF export).
34
+ */
35
+ breakpoint?: string;
36
+ /**
37
+ * Explicit container width in pixels. When provided, disables automatic width
38
+ * measurement (useful for SSR, tests, and forced-size exports).
39
+ */
40
+ width?: number;
41
+ }
42
+ /**
43
+ * A responsive wrapper around `Board` that selects a layout and column count
44
+ * based on the container's width (or a forced breakpoint). Mirrors the model of
45
+ * react-grid-layout's `Responsive` + `WidthProvider`: per-breakpoint `layouts`
46
+ * and `cols`, with `onLayoutChange` reporting both the active layout and the
47
+ * full map.
48
+ */
49
+ declare const BoardResponsive: react.ForwardRefExoticComponent<CubeBoardResponsiveProps & react.RefAttributes<HTMLDivElement>>;
50
+ //#endregion
51
+ export { BoardResponsive, CubeBoardResponsiveProps };
52
+ //# sourceMappingURL=BoardResponsive.d.ts.map
@@ -0,0 +1,101 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.0 | Cube Dev Team */
2
+ import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
3
+ import { useEvent } from "../../../_internal/hooks/use-event.js";
4
+ import { getCompactor } from "./grid-core/compactors.js";
5
+ import { Board } from "./Board.js";
6
+ import { findOrGenerateResponsiveLayout, getBreakpointFromWidth, getColsFromBreakpoint } from "./responsive-utils.js";
7
+ import { forwardRef, useEffect, useMemo, useRef, useState } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ import { useResizeObserver } from "@react-aria/utils";
10
+
11
+ //#region src/components/layout/Board/BoardResponsive.tsx
12
+ function compactTypeToCore(compact) {
13
+ if (compact === "free") return null;
14
+ return compact;
15
+ }
16
+ function BoardResponsiveInner(props, ref) {
17
+ const { breakpoints, cols, layouts: controlledLayouts, defaultLayouts, onLayoutChange, onBreakpointChange, onWidthChange, breakpoint: forcedBreakpoint, width: providedWidth, compact = "vertical", allowOverlap = false, preventCollision = false, ...boardProps } = props;
18
+ const boardRef = useRef(null);
19
+ const combinedRef = useCombinedRefs(ref, boardRef);
20
+ const [measuredWidth, setMeasuredWidth] = useState(0);
21
+ useResizeObserver({
22
+ ref: boardRef,
23
+ onResize: useEvent(() => {
24
+ const next = boardRef.current?.offsetWidth ?? 0;
25
+ if (next > 0) setMeasuredWidth((prev) => prev === next ? prev : next);
26
+ })
27
+ });
28
+ const isControlled = controlledLayouts !== void 0;
29
+ const [internalLayouts, setInternalLayouts] = useState(() => controlledLayouts ?? defaultLayouts ?? {});
30
+ const currentLayouts = isControlled ? controlledLayouts : internalLayouts;
31
+ const layoutsRef = useRef(currentLayouts);
32
+ layoutsRef.current = currentLayouts;
33
+ const widthForBreakpoint = providedWidth ?? measuredWidth;
34
+ const activeBreakpoint = forcedBreakpoint ?? getBreakpointFromWidth(breakpoints, widthForBreakpoint);
35
+ const activeCols = getColsFromBreakpoint(activeBreakpoint, cols);
36
+ const lastBreakpointRef = useRef(activeBreakpoint);
37
+ const compactor = useMemo(() => getCompactor(compactTypeToCore(compact), allowOverlap, preventCollision), [
38
+ compact,
39
+ allowOverlap,
40
+ preventCollision
41
+ ]);
42
+ const currentLayout = useMemo(() => {
43
+ const existing = currentLayouts[activeBreakpoint];
44
+ if (existing) return existing;
45
+ return findOrGenerateResponsiveLayout(currentLayouts, breakpoints, activeBreakpoint, lastBreakpointRef.current, activeCols, compactor);
46
+ }, [
47
+ currentLayouts,
48
+ breakpoints,
49
+ activeBreakpoint,
50
+ activeCols,
51
+ compactor
52
+ ]);
53
+ const onBreakpointChangeEvent = useEvent(() => onBreakpointChange?.(activeBreakpoint, activeCols));
54
+ const bpInitializedRef = useRef(false);
55
+ useEffect(() => {
56
+ if (!bpInitializedRef.current) {
57
+ bpInitializedRef.current = true;
58
+ lastBreakpointRef.current = activeBreakpoint;
59
+ return;
60
+ }
61
+ onBreakpointChangeEvent();
62
+ lastBreakpointRef.current = activeBreakpoint;
63
+ }, [activeBreakpoint]);
64
+ const onWidthChangeEvent = useEvent(() => onWidthChange?.(widthForBreakpoint, activeCols));
65
+ useEffect(() => {
66
+ if (providedWidth != null) return;
67
+ if (measuredWidth <= 0) return;
68
+ onWidthChangeEvent();
69
+ }, [measuredWidth, activeCols]);
70
+ return /* @__PURE__ */ jsx(Board, {
71
+ ref: combinedRef,
72
+ layout: currentLayout,
73
+ cols: activeCols,
74
+ width: providedWidth,
75
+ compact,
76
+ allowOverlap,
77
+ preventCollision,
78
+ onLayoutChange: useEvent((next) => {
79
+ const merged = {
80
+ ...layoutsRef.current,
81
+ [activeBreakpoint]: next
82
+ };
83
+ layoutsRef.current = merged;
84
+ if (!isControlled) setInternalLayouts(merged);
85
+ onLayoutChange?.(next, merged);
86
+ }),
87
+ ...boardProps
88
+ });
89
+ }
90
+ /**
91
+ * A responsive wrapper around `Board` that selects a layout and column count
92
+ * based on the container's width (or a forced breakpoint). Mirrors the model of
93
+ * react-grid-layout's `Responsive` + `WidthProvider`: per-breakpoint `layouts`
94
+ * and `cols`, with `onLayoutChange` reporting both the active layout and the
95
+ * full map.
96
+ */
97
+ const BoardResponsive = forwardRef(BoardResponsiveInner);
98
+
99
+ //#endregion
100
+ export { BoardResponsive };
101
+ //# sourceMappingURL=BoardResponsive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoardResponsive.js","names":[],"sources":["../../../../src/components/layout/Board/BoardResponsive.tsx"],"sourcesContent":["import { useResizeObserver } from '@react-aria/utils';\nimport { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useCombinedRefs } from '../../../utils/react';\n\nimport { Board } from './Board';\nimport { Compactor, CompactType, getCompactor, LayoutItem } from './grid-core';\nimport {\n BreakpointCols,\n Breakpoints,\n findOrGenerateResponsiveLayout,\n getBreakpointFromWidth,\n getColsFromBreakpoint,\n ResponsiveLayouts,\n} from './responsive-utils';\n\nimport type { BoardCompactType, CubeBoardProps } from './Board';\n\nexport interface CubeBoardResponsiveProps\n extends Omit<\n CubeBoardProps,\n | 'layout'\n | 'defaultLayout'\n | 'cols'\n | 'onLayoutChange'\n | 'width'\n | 'breakpoints'\n > {\n /** Map of breakpoint name -> minimum container width in pixels. */\n breakpoints: Breakpoints;\n /** Map of breakpoint name -> column count. */\n cols: BreakpointCols;\n /** Controlled per-breakpoint layouts. */\n layouts?: ResponsiveLayouts;\n /** Initial per-breakpoint layouts for uncontrolled usage. */\n defaultLayouts?: ResponsiveLayouts;\n /**\n * Called when a drag or resize is committed. Receives the active breakpoint's\n * layout and the full map of all breakpoint layouts.\n */\n onLayoutChange?: (\n currentLayout: LayoutItem[],\n allLayouts: ResponsiveLayouts,\n ) => void;\n /** Called when the active breakpoint changes. */\n onBreakpointChange?: (breakpoint: string, cols: number) => void;\n /**\n * Called when the measured container width changes, with the current column\n * count for the active breakpoint. Mirrors react-grid-layout's\n * `WidthProvider` `onWidthChange`. Not fired while width is unmeasured (0) or\n * when an explicit `width` is provided.\n */\n onWidthChange?: (width: number, cols: number) => void;\n /**\n * Force a specific breakpoint regardless of the measured width (e.g. for a\n * fixed-size screenshot or PDF export).\n */\n breakpoint?: string;\n /**\n * Explicit container width in pixels. When provided, disables automatic width\n * measurement (useful for SSR, tests, and forced-size exports).\n */\n width?: number;\n}\n\nfunction compactTypeToCore(compact: BoardCompactType): CompactType {\n if (compact === 'free') return null;\n return compact;\n}\n\nfunction BoardResponsiveInner(\n props: CubeBoardResponsiveProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n breakpoints,\n cols,\n layouts: controlledLayouts,\n defaultLayouts,\n onLayoutChange,\n onBreakpointChange,\n onWidthChange,\n breakpoint: forcedBreakpoint,\n width: providedWidth,\n compact = 'vertical',\n allowOverlap = false,\n preventCollision = false,\n ...boardProps\n } = props;\n\n const boardRef = useRef<HTMLDivElement | null>(null);\n const combinedRef = useCombinedRefs(ref, boardRef);\n const [measuredWidth, setMeasuredWidth] = useState(0);\n\n const onResizeElement = useEvent(() => {\n const next = boardRef.current?.offsetWidth ?? 0;\n if (next > 0) setMeasuredWidth((prev) => (prev === next ? prev : next));\n });\n useResizeObserver({ ref: boardRef, onResize: onResizeElement });\n\n const isControlled = controlledLayouts !== undefined;\n const [internalLayouts, setInternalLayouts] = useState<ResponsiveLayouts>(\n () => controlledLayouts ?? defaultLayouts ?? {},\n );\n const currentLayouts = isControlled ? controlledLayouts! : internalLayouts;\n const layoutsRef = useRef(currentLayouts);\n layoutsRef.current = currentLayouts;\n\n const widthForBreakpoint = providedWidth ?? measuredWidth;\n const activeBreakpoint =\n forcedBreakpoint ?? getBreakpointFromWidth(breakpoints, widthForBreakpoint);\n const activeCols = getColsFromBreakpoint(activeBreakpoint, cols);\n\n // Previous breakpoint, used as the preferred source when synthesizing a layout\n // for a breakpoint that has none yet.\n const lastBreakpointRef = useRef(activeBreakpoint);\n\n // This compactor is only used to synthesize a layout for a breakpoint that has\n // none yet (compaction/bounds correction), so `preventCollision` has no effect\n // here - the drag-time behavior comes from the child `Board`'s own compactor\n // (see the free-mode note in `Board.tsx`).\n const compactor = useMemo<Compactor>(\n () =>\n getCompactor(compactTypeToCore(compact), allowOverlap, preventCollision),\n [compact, allowOverlap, preventCollision],\n );\n\n // Keep a stable reference for an existing breakpoint's layout so the child\n // `Board` (which syncs controlled layout by reference) is not reset every\n // render or mid-drag. Only a genuinely missing breakpoint is synthesized.\n const currentLayout = useMemo(() => {\n const existing = currentLayouts[activeBreakpoint];\n if (existing) return existing;\n return findOrGenerateResponsiveLayout(\n currentLayouts,\n breakpoints,\n activeBreakpoint,\n lastBreakpointRef.current,\n activeCols,\n compactor,\n );\n }, [currentLayouts, breakpoints, activeBreakpoint, activeCols, compactor]);\n\n // Remember the last breakpoint (for synthesizing a missing one) and emit\n // breakpoint changes after commit, skipping the initial mount.\n const onBreakpointChangeEvent = useEvent(() =>\n onBreakpointChange?.(activeBreakpoint, activeCols),\n );\n const bpInitializedRef = useRef(false);\n useEffect(() => {\n if (!bpInitializedRef.current) {\n bpInitializedRef.current = true;\n lastBreakpointRef.current = activeBreakpoint;\n return;\n }\n onBreakpointChangeEvent();\n lastBreakpointRef.current = activeBreakpoint;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeBreakpoint]);\n\n // Report width changes (measured widths only; an explicit `width` disables\n // measurement, and an unmeasured board reports 0 which we skip).\n const onWidthChangeEvent = useEvent(() =>\n onWidthChange?.(widthForBreakpoint, activeCols),\n );\n useEffect(() => {\n if (providedWidth != null) return;\n if (measuredWidth <= 0) return;\n onWidthChangeEvent();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [measuredWidth, activeCols]);\n\n const handleLayoutChange = useEvent((next: LayoutItem[]) => {\n const merged = { ...layoutsRef.current, [activeBreakpoint]: next };\n layoutsRef.current = merged;\n if (!isControlled) setInternalLayouts(merged);\n onLayoutChange?.(next, merged);\n });\n\n return (\n <Board\n ref={combinedRef}\n layout={currentLayout}\n cols={activeCols}\n width={providedWidth}\n compact={compact}\n allowOverlap={allowOverlap}\n preventCollision={preventCollision}\n onLayoutChange={handleLayoutChange}\n {...boardProps}\n />\n );\n}\n\n/**\n * A responsive wrapper around `Board` that selects a layout and column count\n * based on the container's width (or a forced breakpoint). Mirrors the model of\n * react-grid-layout's `Responsive` + `WidthProvider`: per-breakpoint `layouts`\n * and `cols`, with `onLayoutChange` reporting both the active layout and the\n * full map.\n */\nexport const BoardResponsive = forwardRef(BoardResponsiveInner);\n"],"mappings":";;;;;;;;;;;AAkEA,SAAS,kBAAkB,SAAwC;AACjE,KAAI,YAAY,OAAQ,QAAO;AAC/B,QAAO;;AAGT,SAAS,qBACP,OACA,KACA;CACA,MAAM,EACJ,aACA,MACA,SAAS,mBACT,gBACA,gBACA,oBACA,eACA,YAAY,kBACZ,OAAO,eACP,UAAU,YACV,eAAe,OACf,mBAAmB,OACnB,GAAG,eACD;CAEJ,MAAM,WAAW,OAA8B,KAAK;CACpD,MAAM,cAAc,gBAAgB,KAAK,SAAS;CAClD,MAAM,CAAC,eAAe,oBAAoB,SAAS,EAAE;AAMrD,mBAAkB;EAAE,KAAK;EAAU,UAJX,eAAe;GACrC,MAAM,OAAO,SAAS,SAAS,eAAe;AAC9C,OAAI,OAAO,EAAG,mBAAkB,SAAU,SAAS,OAAO,OAAO,KAAM;IACvE;EAC4D,CAAC;CAE/D,MAAM,eAAe,sBAAsB;CAC3C,MAAM,CAAC,iBAAiB,sBAAsB,eACtC,qBAAqB,kBAAkB,EAAE,CAChD;CACD,MAAM,iBAAiB,eAAe,oBAAqB;CAC3D,MAAM,aAAa,OAAO,eAAe;AACzC,YAAW,UAAU;CAErB,MAAM,qBAAqB,iBAAiB;CAC5C,MAAM,mBACJ,oBAAoB,uBAAuB,aAAa,mBAAmB;CAC7E,MAAM,aAAa,sBAAsB,kBAAkB,KAAK;CAIhE,MAAM,oBAAoB,OAAO,iBAAiB;CAMlD,MAAM,YAAY,cAEd,aAAa,kBAAkB,QAAQ,EAAE,cAAc,iBAAiB,EAC1E;EAAC;EAAS;EAAc;EAAiB,CAC1C;CAKD,MAAM,gBAAgB,cAAc;EAClC,MAAM,WAAW,eAAe;AAChC,MAAI,SAAU,QAAO;AACrB,SAAO,+BACL,gBACA,aACA,kBACA,kBAAkB,SAClB,YACA,UACD;IACA;EAAC;EAAgB;EAAa;EAAkB;EAAY;EAAU,CAAC;CAI1E,MAAM,0BAA0B,eAC9B,qBAAqB,kBAAkB,WAAW,CACnD;CACD,MAAM,mBAAmB,OAAO,MAAM;AACtC,iBAAgB;AACd,MAAI,CAAC,iBAAiB,SAAS;AAC7B,oBAAiB,UAAU;AAC3B,qBAAkB,UAAU;AAC5B;;AAEF,2BAAyB;AACzB,oBAAkB,UAAU;IAE3B,CAAC,iBAAiB,CAAC;CAItB,MAAM,qBAAqB,eACzB,gBAAgB,oBAAoB,WAAW,CAChD;AACD,iBAAgB;AACd,MAAI,iBAAiB,KAAM;AAC3B,MAAI,iBAAiB,EAAG;AACxB,sBAAoB;IAEnB,CAAC,eAAe,WAAW,CAAC;AAS/B,QACE,oBAAC;EACC,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACE;EACK;EACI;EAClB,gBAhBuB,UAAU,SAAuB;GAC1D,MAAM,SAAS;IAAE,GAAG,WAAW;KAAU,mBAAmB;IAAM;AAClE,cAAW,UAAU;AACrB,OAAI,CAAC,aAAc,oBAAmB,OAAO;AAC7C,oBAAiB,MAAM,OAAO;IAC9B;EAYE,GAAI;GACJ;;;;;;;;;AAWN,MAAa,kBAAkB,WAAW,qBAAqB"}
@@ -0,0 +1,69 @@
1
+
2
+ import { LayoutConstraint, ResizeHandleAxis } from "./grid-core/types.js";
3
+ import { ContainerStyleProps, Styles } from "@tenphi/tasty";
4
+ import { ReactNode } from "react";
5
+
6
+ //#region src/components/layout/Board/Widget.d.ts
7
+ interface CubeBoardWidgetProps extends ContainerStyleProps {
8
+ /** Unique id, must match the `i` of a layout item in a `Board`. */
9
+ id: string;
10
+ /** Widget content. */
11
+ children?: ReactNode;
12
+ /** Disable dragging for this widget. */
13
+ isDraggable?: boolean;
14
+ /** Disable resizing for this widget. */
15
+ isResizable?: boolean;
16
+ /** Which resize handles to show (overrides the board default). */
17
+ resizeHandles?: ResizeHandleAxis[];
18
+ /**
19
+ * Render this widget as a card by adding a border. Widgets are always filled
20
+ * (`#surface-2`) and rounded; `isCard` adds the border on top. Defaults to
21
+ * `false` (borderless) unless the owning `Board`'s `widgetProps.isCard` opts
22
+ * in. Override per widget to enable or disable.
23
+ */
24
+ isCard?: boolean;
25
+ /** Minimum width in grid columns (used when the layout item omits `minW`). */
26
+ minW?: number;
27
+ /** Maximum width in grid columns (used when the layout item omits `maxW`). */
28
+ maxW?: number;
29
+ /** Minimum height in grid rows (used when the layout item omits `minH`). */
30
+ minH?: number;
31
+ /** Maximum height in grid rows (used when the layout item omits `maxH`). */
32
+ maxH?: number;
33
+ /** Per-widget layout constraints. */
34
+ constraints?: LayoutConstraint[];
35
+ /** Test id applied to the rendered widget element. */
36
+ qa?: string;
37
+ /**
38
+ * Style overrides applied to the rendered widget element. Individual style
39
+ * props (`fill`, `padding`, `radius`, `border`, ...) can also be passed
40
+ * directly on `Board.Widget`, just like on `Board`; they are merged into
41
+ * these styles (a direct prop wins over the same key in the `styles` object).
42
+ */
43
+ styles?: Styles;
44
+ /**
45
+ * Grow this widget's height in its board to fit its content (only ever
46
+ * increases). Pair with a nested `Board isAligned` to make the container
47
+ * expand until the inner board's rows fit at the parent's row height.
48
+ */
49
+ isAutoHeight?: boolean;
50
+ /**
51
+ * CSS selector for elements that must not start a pointer drag inside this
52
+ * widget (overrides the board's `dragCancel`).
53
+ */
54
+ dragCancel?: string;
55
+ /**
56
+ * CSS selector for the only elements from which a pointer drag may start
57
+ * inside this widget (overrides the board's `dragHandle`).
58
+ */
59
+ dragHandle?: string;
60
+ }
61
+ /**
62
+ * Declares a widget's content and per-widget options. Rendering and positioning
63
+ * are performed by the owning `Board` (the component itself renders nothing),
64
+ * which is what allows a widget to be transferred between boards.
65
+ */
66
+ declare function Widget(props: CubeBoardWidgetProps): null;
67
+ //#endregion
68
+ export { CubeBoardWidgetProps, Widget };
69
+ //# sourceMappingURL=Widget.d.ts.map
@@ -0,0 +1,68 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.145.0 | Cube Dev Team */
2
+ import { extractStyles } from "../../../utils/styles.js";
3
+ import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
+ import { useBoardRegistry } from "./board-context.js";
5
+ import { CONTAINER_STYLES } from "@tenphi/tasty";
6
+ import { useEffect, useRef } from "react";
7
+
8
+ //#region src/components/layout/Board/Widget.tsx
9
+ /**
10
+ * Shallow-compare two style maps by their top-level keys. Direct style props
11
+ * (e.g. `fill`) are primitives, so this reliably detects a real change while
12
+ * ignoring the fresh object identity `extractStyles` produces each render.
13
+ */
14
+ function shallowEqualStyles(a, b) {
15
+ if (a === b) return true;
16
+ if (!a || !b) return false;
17
+ const aKeys = Object.keys(a);
18
+ const bKeys = Object.keys(b);
19
+ if (aKeys.length !== bKeys.length) return false;
20
+ for (const key of aKeys) if (a[key] !== b[key]) return false;
21
+ return true;
22
+ }
23
+ /**
24
+ * Declares a widget's content and per-widget options. Rendering and positioning
25
+ * are performed by the owning `Board` (the component itself renders nothing),
26
+ * which is what allows a widget to be transferred between boards.
27
+ */
28
+ function Widget(props) {
29
+ const { id, children, isDraggable, isResizable, resizeHandles, isCard, minW, maxW, minH, maxH, constraints, qa, isAutoHeight, dragCancel, dragHandle } = props;
30
+ const registry = useBoardRegistry();
31
+ const extractedStyles = extractStyles(props, CONTAINER_STYLES);
32
+ const nextStyles = Object.keys(extractedStyles).length > 0 ? extractedStyles : void 0;
33
+ const stylesRef = useRef(void 0);
34
+ if (!shallowEqualStyles(stylesRef.current, nextStyles)) stylesRef.current = nextStyles;
35
+ const styles = stylesRef.current;
36
+ const ownerRef = useRef({});
37
+ useLayoutEffect$1(() => {
38
+ registry?.store.register({
39
+ id,
40
+ content: children,
41
+ isDraggable,
42
+ isResizable,
43
+ resizeHandles,
44
+ isCard,
45
+ minW,
46
+ maxW,
47
+ minH,
48
+ maxH,
49
+ constraints,
50
+ qa,
51
+ styles,
52
+ isAutoHeight,
53
+ dragCancel,
54
+ dragHandle
55
+ }, ownerRef.current);
56
+ });
57
+ useEffect(() => {
58
+ const owner = ownerRef.current;
59
+ return () => {
60
+ registry?.store.unregister(id, owner);
61
+ };
62
+ }, [id]);
63
+ return null;
64
+ }
65
+
66
+ //#endregion
67
+ export { Widget };
68
+ //# sourceMappingURL=Widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Widget.js","names":[],"sources":["../../../../src/components/layout/Board/Widget.tsx"],"sourcesContent":["import { CONTAINER_STYLES, ContainerStyleProps, Styles } from '@tenphi/tasty';\nimport { ReactNode, useEffect, useRef } from 'react';\n\nimport { useLayoutEffect } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { useBoardRegistry } from './board-context';\nimport { LayoutConstraint, ResizeHandleAxis } from './grid-core';\n\nexport interface CubeBoardWidgetProps extends ContainerStyleProps {\n /** Unique id, must match the `i` of a layout item in a `Board`. */\n id: string;\n /** Widget content. */\n children?: ReactNode;\n /** Disable dragging for this widget. */\n isDraggable?: boolean;\n /** Disable resizing for this widget. */\n isResizable?: boolean;\n /** Which resize handles to show (overrides the board default). */\n resizeHandles?: ResizeHandleAxis[];\n /**\n * Render this widget as a card by adding a border. Widgets are always filled\n * (`#surface-2`) and rounded; `isCard` adds the border on top. Defaults to\n * `false` (borderless) unless the owning `Board`'s `widgetProps.isCard` opts\n * in. Override per widget to enable or disable.\n */\n isCard?: boolean;\n /** Minimum width in grid columns (used when the layout item omits `minW`). */\n minW?: number;\n /** Maximum width in grid columns (used when the layout item omits `maxW`). */\n maxW?: number;\n /** Minimum height in grid rows (used when the layout item omits `minH`). */\n minH?: number;\n /** Maximum height in grid rows (used when the layout item omits `maxH`). */\n maxH?: number;\n /** Per-widget layout constraints. */\n constraints?: LayoutConstraint[];\n /** Test id applied to the rendered widget element. */\n qa?: string;\n /**\n * Style overrides applied to the rendered widget element. Individual style\n * props (`fill`, `padding`, `radius`, `border`, ...) can also be passed\n * directly on `Board.Widget`, just like on `Board`; they are merged into\n * these styles (a direct prop wins over the same key in the `styles` object).\n */\n styles?: Styles;\n /**\n * Grow this widget's height in its board to fit its content (only ever\n * increases). Pair with a nested `Board isAligned` to make the container\n * expand until the inner board's rows fit at the parent's row height.\n */\n isAutoHeight?: boolean;\n /**\n * CSS selector for elements that must not start a pointer drag inside this\n * widget (overrides the board's `dragCancel`).\n */\n dragCancel?: string;\n /**\n * CSS selector for the only elements from which a pointer drag may start\n * inside this widget (overrides the board's `dragHandle`).\n */\n dragHandle?: string;\n}\n\n/**\n * Shallow-compare two style maps by their top-level keys. Direct style props\n * (e.g. `fill`) are primitives, so this reliably detects a real change while\n * ignoring the fresh object identity `extractStyles` produces each render.\n */\nfunction shallowEqualStyles(a?: Styles, b?: Styles): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (\n (a as Record<string, unknown>)[key] !==\n (b as Record<string, unknown>)[key]\n ) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Declares a widget's content and per-widget options. Rendering and positioning\n * are performed by the owning `Board` (the component itself renders nothing),\n * which is what allows a widget to be transferred between boards.\n */\nexport function Widget(props: CubeBoardWidgetProps) {\n const {\n id,\n children,\n isDraggable,\n isResizable,\n resizeHandles,\n isCard,\n minW,\n maxW,\n minH,\n maxH,\n constraints,\n qa,\n isAutoHeight,\n dragCancel,\n dragHandle,\n } = props;\n const registry = useBoardRegistry();\n\n // Collect direct style props (e.g. `fill`, `padding`, `radius`) and merge them\n // with the explicit `styles` prop, mirroring how `Board` extracts its own\n // styles. Fall back to `undefined` when nothing was provided so widgets with\n // no styling keep a stable registration (avoids needless store churn).\n const extractedStyles = extractStyles(props, CONTAINER_STYLES);\n const nextStyles =\n Object.keys(extractedStyles).length > 0 ? extractedStyles : undefined;\n\n // `extractStyles` returns a fresh object every render, so passing it straight\n // to `register` would make the store treat every render as a style change,\n // bump its version, and re-render the hosting board in a loop. Keep a stable\n // reference across renders and only swap it when the shallow style values\n // actually change (direct props are primitives; a `styles` object is compared\n // per top-level key).\n const stylesRef = useRef<Styles | undefined>(undefined);\n if (!shallowEqualStyles(stylesRef.current, nextStyles)) {\n stylesRef.current = nextStyles;\n }\n const styles = stylesRef.current;\n\n // Stable per-instance token so a stale unregister (from an unmounting copy of\n // this widget) can't wipe out a newer instance's registration.\n const ownerRef = useRef({});\n\n // Register/update content on every render so content stays fresh in the store.\n useLayoutEffect(() => {\n registry?.store.register(\n {\n id,\n content: children,\n isDraggable,\n isResizable,\n resizeHandles,\n isCard,\n minW,\n maxW,\n minH,\n maxH,\n constraints,\n qa,\n styles,\n isAutoHeight,\n dragCancel,\n dragHandle,\n },\n ownerRef.current,\n );\n });\n\n // Remove from the store on unmount.\n useEffect(() => {\n const owner = ownerRef.current;\n return () => {\n registry?.store.unregister(id, owner);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id]);\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;AAqEA,SAAS,mBAAmB,GAAY,GAAqB;AAC3D,KAAI,MAAM,EAAG,QAAO;AACpB,KAAI,CAAC,KAAK,CAAC,EAAG,QAAO;CACrB,MAAM,QAAQ,OAAO,KAAK,EAAE;CAC5B,MAAM,QAAQ,OAAO,KAAK,EAAE;AAC5B,KAAI,MAAM,WAAW,MAAM,OAAQ,QAAO;AAC1C,MAAK,MAAM,OAAO,MAChB,KACG,EAA8B,SAC9B,EAA8B,KAE/B,QAAO;AAGX,QAAO;;;;;;;AAQT,SAAgB,OAAO,OAA6B;CAClD,MAAM,EACJ,IACA,UACA,aACA,aACA,eACA,QACA,MACA,MACA,MACA,MACA,aACA,IACA,cACA,YACA,eACE;CACJ,MAAM,WAAW,kBAAkB;CAMnC,MAAM,kBAAkB,cAAc,OAAO,iBAAiB;CAC9D,MAAM,aACJ,OAAO,KAAK,gBAAgB,CAAC,SAAS,IAAI,kBAAkB;CAQ9D,MAAM,YAAY,OAA2B,OAAU;AACvD,KAAI,CAAC,mBAAmB,UAAU,SAAS,WAAW,CACpD,WAAU,UAAU;CAEtB,MAAM,SAAS,UAAU;CAIzB,MAAM,WAAW,OAAO,EAAE,CAAC;AAG3B,yBAAsB;AACpB,YAAU,MAAM,SACd;GACE;GACA,SAAS;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,EACD,SAAS,QACV;GACD;AAGF,iBAAgB;EACd,MAAM,QAAQ,SAAS;AACvB,eAAa;AACX,aAAU,MAAM,WAAW,IAAI,MAAM;;IAGtC,CAAC,GAAG,CAAC;AAER,QAAO"}