@cube-dev/ui-kit 0.0.0-canary-100fa6b → 0.0.0-canary-370af60

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 (574) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.d.ts +4 -2
  19. package/dist/components/actions/Button/Button.js +8 -5
  20. package/dist/components/actions/Button/Button.js.map +1 -1
  21. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  22. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  23. package/dist/components/actions/ButtonSplit/context.js +1 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  25. package/dist/components/actions/CommandMenu/styled.js +1 -1
  26. package/dist/components/actions/ItemAction/ItemAction.d.ts +2 -2
  27. package/dist/components/actions/ItemAction/ItemAction.js +8 -5
  28. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  29. package/dist/components/actions/ItemActionContext.js +1 -1
  30. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  31. package/dist/components/actions/Link/Link.js +1 -1
  32. package/dist/components/actions/Menu/Menu.js +1 -1
  33. package/dist/components/actions/Menu/MenuItem.js +1 -1
  34. package/dist/components/actions/Menu/MenuSection.js +1 -1
  35. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  37. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  38. package/dist/components/actions/Menu/context.js +1 -1
  39. package/dist/components/actions/Menu/styled.js +1 -1
  40. package/dist/components/actions/index.js +1 -1
  41. package/dist/components/actions/use-action.js +1 -1
  42. package/dist/components/actions/use-anchored-menu.js +1 -1
  43. package/dist/components/actions/use-context-menu.js +1 -1
  44. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  45. package/dist/components/content/Alert/Alert.js +1 -1
  46. package/dist/components/content/Alert/use-alert.js +1 -1
  47. package/dist/components/content/Avatar/Avatar.js +1 -1
  48. package/dist/components/content/Badge/Badge.js +1 -1
  49. package/dist/components/content/Card/Card.js +1 -1
  50. package/dist/components/content/Content.js +1 -1
  51. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  52. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  53. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  54. package/dist/components/content/Divider.js +1 -1
  55. package/dist/components/content/Footer.js +1 -1
  56. package/dist/components/content/Header.js +1 -1
  57. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  58. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  59. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  60. package/dist/components/content/Item/Item.d.ts +2 -2
  61. package/dist/components/content/Item/Item.js +8 -10
  62. package/dist/components/content/Item/Item.js.map +1 -1
  63. package/dist/components/content/ItemBadge/ItemBadge.d.ts +2 -2
  64. package/dist/components/content/ItemBadge/ItemBadge.js +8 -5
  65. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  66. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  67. package/dist/components/content/Layout/GridLayout.js +1 -1
  68. package/dist/components/content/Layout/Layout.js +1 -1
  69. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  70. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  71. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  72. package/dist/components/content/Layout/LayoutContent.js +1 -1
  73. package/dist/components/content/Layout/LayoutContext.js +1 -1
  74. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  75. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  76. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  77. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  78. package/dist/components/content/Layout/LayoutPane.js +1 -1
  79. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  80. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  81. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  82. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  83. package/dist/components/content/Layout/index.js +1 -1
  84. package/dist/components/content/Layout/utils.js +1 -1
  85. package/dist/components/content/Paragraph.js +1 -1
  86. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  87. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  88. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  89. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  90. package/dist/components/content/Result/Result.js +1 -1
  91. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  92. package/dist/components/content/Tag/Tag.js +1 -1
  93. package/dist/components/content/Text.js +1 -1
  94. package/dist/components/content/TextItem/TextItem.js +1 -1
  95. package/dist/components/content/Title.js +1 -1
  96. package/dist/components/content/Tree/Tree.js +1 -1
  97. package/dist/components/content/Tree/TreeNode.js +1 -1
  98. package/dist/components/content/Tree/styled.js +1 -1
  99. package/dist/components/content/Tree/tree-index.js +1 -1
  100. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  101. package/dist/components/content/Tree/use-load-data.js +1 -1
  102. package/dist/components/content/highlightText.js +1 -1
  103. package/dist/components/content/use-auto-tooltip.js +1 -1
  104. package/dist/components/data/DataTable/DataTable.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  106. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  108. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  109. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  110. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  111. package/dist/components/data/TableBase/RowCollection.js +1 -1
  112. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  113. package/dist/components/data/TableBase/TableRow.js +1 -1
  114. package/dist/components/data/TableBase/TableView.js +1 -1
  115. package/dist/components/data/TableBase/column-menu.js +1 -1
  116. package/dist/components/data/TableBase/column-tint.js +1 -1
  117. package/dist/components/data/TableBase/row-menu.js +1 -1
  118. package/dist/components/data/TableBase/styled.d.ts +2 -1
  119. package/dist/components/data/TableBase/styled.js +1 -1
  120. package/dist/components/data/TableBase/types.js +1 -1
  121. package/dist/components/data/TableBase/use-cell-selection.d.ts +1 -0
  122. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  123. package/dist/components/data/TableBase/use-column-order.js +1 -1
  124. package/dist/components/data/TableBase/use-container-width.js +1 -1
  125. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  126. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  127. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  128. package/dist/components/data/TableBase/use-table-search.js +1 -1
  129. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  130. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  131. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  132. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  133. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  134. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  135. package/dist/components/fields/Checkbox/context.js +1 -1
  136. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  137. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  138. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  139. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  140. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  141. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  142. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  143. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  144. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  145. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  148. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  149. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  150. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  151. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  152. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  157. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  158. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  159. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  160. package/dist/components/fields/DatePicker/period.js +1 -1
  161. package/dist/components/fields/DatePicker/props.js +1 -1
  162. package/dist/components/fields/DatePicker/utils.js +1 -1
  163. package/dist/components/fields/FileInput/FileInput.js +1 -1
  164. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  165. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  166. package/dist/components/fields/Input/Input.js +1 -1
  167. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  168. package/dist/components/fields/ListBox/ListBox.js +1 -1
  169. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  170. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
  171. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  172. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  173. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  174. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  175. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  176. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  177. package/dist/components/fields/Picker/Picker.js +1 -1
  178. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  179. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  180. package/dist/components/fields/RadioGroup/context.js +1 -1
  181. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  182. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  183. package/dist/components/fields/Select/Select.js +1 -1
  184. package/dist/components/fields/Slider/Gradation.js +1 -1
  185. package/dist/components/fields/Slider/HueSlider.js +1 -1
  186. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  187. package/dist/components/fields/Slider/Slider.js +1 -1
  188. package/dist/components/fields/Slider/SliderBase.js +1 -1
  189. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  190. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  191. package/dist/components/fields/Slider/elements.js +1 -1
  192. package/dist/components/fields/Slider/index.js +1 -1
  193. package/dist/components/fields/Switch/Switch.js +1 -1
  194. package/dist/components/fields/TextArea/TextArea.js +1 -1
  195. package/dist/components/fields/TextInput/TextInput.js +1 -1
  196. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  197. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  198. package/dist/components/fields/color/ColorPanel.js +1 -1
  199. package/dist/components/fields/color/channels.js +1 -1
  200. package/dist/components/fields/color/color.js +1 -1
  201. package/dist/components/fields/color/context.js +1 -1
  202. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  203. package/dist/components/form/Form/Field.js +1 -1
  204. package/dist/components/form/Form/Form.js +1 -1
  205. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  206. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  207. package/dist/components/form/Form/SubmitError.js +1 -1
  208. package/dist/components/form/Form/index.js +1 -1
  209. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  210. package/dist/components/form/Form/use-field/use-field.js +1 -1
  211. package/dist/components/form/Form/use-form.js +1 -1
  212. package/dist/components/form/Form/validation.js +1 -1
  213. package/dist/components/form/Label.js +1 -1
  214. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  215. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  216. package/dist/components/form/validation/use-validation-props.js +1 -1
  217. package/dist/components/form/wrapper.js +1 -1
  218. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  219. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  220. package/dist/components/layout/Board/Board.d.ts +5 -30
  221. package/dist/components/layout/Board/Board.js +5 -11
  222. package/dist/components/layout/Board/Board.js.map +1 -1
  223. package/dist/components/layout/Board/BoardProvider.js +1 -1
  224. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  225. package/dist/components/layout/Board/Widget.d.ts +1 -16
  226. package/dist/components/layout/Board/Widget.js +2 -3
  227. package/dist/components/layout/Board/Widget.js.map +1 -1
  228. package/dist/components/layout/Board/WidgetHost.js +13 -70
  229. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  230. package/dist/components/layout/Board/board-context.js +5 -5
  231. package/dist/components/layout/Board/board-context.js.map +1 -1
  232. package/dist/components/layout/Board/board-store.d.ts +0 -1
  233. package/dist/components/layout/Board/board-store.js +2 -2
  234. package/dist/components/layout/Board/board-store.js.map +1 -1
  235. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  236. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  237. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  238. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  239. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  240. package/dist/components/layout/Board/grid-core/layout.js +2 -12
  241. package/dist/components/layout/Board/grid-core/layout.js.map +1 -1
  242. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  243. package/dist/components/layout/Board/grid-core/types.d.ts +1 -17
  244. package/dist/components/layout/Board/index.d.ts +2 -2
  245. package/dist/components/layout/Board/index.js +1 -1
  246. package/dist/components/layout/Board/index.js.map +1 -1
  247. package/dist/components/layout/Board/responsive-utils.js +1 -1
  248. package/dist/components/layout/Board/use-board-layout.js +1 -1
  249. package/dist/components/layout/Board/use-board-registry.js +6 -53
  250. package/dist/components/layout/Board/use-board-registry.js.map +1 -1
  251. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  252. package/dist/components/layout/Board/use-board-selection.js +1 -1
  253. package/dist/components/layout/Flex.js +1 -1
  254. package/dist/components/layout/Flow.js +1 -1
  255. package/dist/components/layout/Grid.js +1 -1
  256. package/dist/components/layout/Panel.js +1 -1
  257. package/dist/components/layout/Prefix.js +1 -1
  258. package/dist/components/layout/ResizablePanel.js +1 -1
  259. package/dist/components/layout/Space.js +1 -1
  260. package/dist/components/layout/Suffix.js +1 -1
  261. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  262. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  263. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  264. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  265. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  266. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  267. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  268. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  269. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  270. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  271. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  272. package/dist/components/navigation/Tabs/styled.js +1 -1
  273. package/dist/components/navigation/Tabs/types.js +1 -1
  274. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  275. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  276. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  277. package/dist/components/other/Calendar/Calendar.js +1 -1
  278. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  279. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  280. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  281. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  282. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  283. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  284. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  285. package/dist/components/other/Calendar/styled.js +1 -1
  286. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  287. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  288. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  289. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  290. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  291. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  292. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  293. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  294. package/dist/components/overlays/Dialog/context.js +1 -1
  295. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  296. package/dist/components/overlays/Modal/Modal.d.ts +2 -1
  297. package/dist/components/overlays/Modal/Modal.js +1 -1
  298. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  299. package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
  300. package/dist/components/overlays/Modal/Overlay.js +1 -1
  301. package/dist/components/overlays/Modal/Popover.js +1 -1
  302. package/dist/components/overlays/Modal/Tray.js +1 -1
  303. package/dist/components/overlays/Modal/Underlay.js +1 -1
  304. package/dist/components/overlays/Modal/types.d.ts +1 -0
  305. package/dist/components/overlays/Notifications/Notification.js +1 -1
  306. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  307. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  308. package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
  309. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  310. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  311. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  312. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  313. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  314. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  315. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  316. package/dist/components/overlays/Notifications/index.js +1 -1
  317. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  318. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  319. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  320. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  321. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  322. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  323. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  324. package/dist/components/overlays/Toast/index.js +1 -1
  325. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  326. package/dist/components/overlays/Toast/useToast.js +1 -1
  327. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  328. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  329. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  330. package/dist/components/overlays/Tooltip/context.js +1 -1
  331. package/dist/components/portal/Portal.js +1 -1
  332. package/dist/components/portal/PortalProvider.d.ts +2 -0
  333. package/dist/components/portal/PortalProvider.js +1 -1
  334. package/dist/components/portal/index.d.ts +1 -0
  335. package/dist/components/portal/usePortal.js +1 -1
  336. package/dist/components/shared/DraggableCollection.js +1 -1
  337. package/dist/components/shared/InvalidIcon.js +1 -1
  338. package/dist/components/shared/ValidIcon.js +1 -1
  339. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  340. package/dist/components/status/Spin/Cube.js +1 -1
  341. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  342. package/dist/components/status/Spin/Spin.js +1 -1
  343. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  344. package/dist/data/item-themes.d.ts +1 -1
  345. package/dist/data/item-themes.js +122 -46
  346. package/dist/data/item-themes.js.map +1 -1
  347. package/dist/data/themes.js +1 -1
  348. package/dist/eslint-plugin/defaults.generated.js +7 -17
  349. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  350. package/dist/eslint-plugin/index.js +1 -1
  351. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  352. package/dist/i18n/I18nProvider.js +1 -1
  353. package/dist/i18n/createFormatter.js +1 -1
  354. package/dist/i18n/index.js +1 -1
  355. package/dist/i18n/instance.js +1 -1
  356. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  357. package/dist/i18n/locales/en-US/uikit.js +1 -1
  358. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  359. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  360. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  361. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  362. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  363. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  364. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  365. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  366. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  367. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  368. package/dist/i18n/locales.js +1 -1
  369. package/dist/i18n/useFormatter.js +1 -1
  370. package/dist/i18n/useI18n.js +1 -1
  371. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  372. package/dist/icons/AdjustmentsIcon.js +1 -1
  373. package/dist/icons/AiIcon.js +1 -1
  374. package/dist/icons/AreaChartIcon.js +1 -1
  375. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  376. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  377. package/dist/icons/BackwardIcon.js +1 -1
  378. package/dist/icons/BarChartIcon.js +1 -1
  379. package/dist/icons/BellFilledIcon.js +1 -1
  380. package/dist/icons/BellIcon.js +1 -1
  381. package/dist/icons/BooleanIcon.js +1 -1
  382. package/dist/icons/CalendarEditIcon.js +1 -1
  383. package/dist/icons/CalendarIcon.js +1 -1
  384. package/dist/icons/CaretDownIcon.js +1 -1
  385. package/dist/icons/CaretUpIcon.js +1 -1
  386. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  387. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  388. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  389. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  390. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  391. package/dist/icons/ChartBarLineIcon.js +1 -1
  392. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  393. package/dist/icons/ChartBarStackedIcon.js +1 -1
  394. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  395. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  396. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  397. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  398. package/dist/icons/ChartBubbleIcon.js +1 -1
  399. package/dist/icons/ChartDonut2Icon.js +1 -1
  400. package/dist/icons/ChartFunnelIcon.js +1 -1
  401. package/dist/icons/ChartHeatmapIcon.js +1 -1
  402. package/dist/icons/ChartKPIIcon.js +1 -1
  403. package/dist/icons/ChartPie2Icon.js +1 -1
  404. package/dist/icons/ChartScatterIcon.js +1 -1
  405. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  406. package/dist/icons/CheckCircleIcon.js +1 -1
  407. package/dist/icons/CheckIcon.js +1 -1
  408. package/dist/icons/CircleFilledIcon.js +1 -1
  409. package/dist/icons/ClearIcon.js +1 -1
  410. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  411. package/dist/icons/CloseCircleIcon.js +1 -1
  412. package/dist/icons/CloseIcon.js +1 -1
  413. package/dist/icons/CodeIcon.js +1 -1
  414. package/dist/icons/ColumnTotalIcon.js +1 -1
  415. package/dist/icons/CopyIcon.js +1 -1
  416. package/dist/icons/CountIcon.js +1 -1
  417. package/dist/icons/CubeIcon.js +1 -1
  418. package/dist/icons/CubePauseIcon.js +1 -1
  419. package/dist/icons/CubePlayIcon.js +1 -1
  420. package/dist/icons/CurrencyDollarIcon.js +1 -1
  421. package/dist/icons/DangerIcon.js +1 -1
  422. package/dist/icons/DashboardIcon.js +1 -1
  423. package/dist/icons/DatabaseIcon.js +1 -1
  424. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  425. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  426. package/dist/icons/DirectionIcon.js +1 -1
  427. package/dist/icons/DonutIcon.js +1 -1
  428. package/dist/icons/DownIcon.js +1 -1
  429. package/dist/icons/EditIcon.js +1 -1
  430. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  431. package/dist/icons/ExclamationCircleIcon.js +1 -1
  432. package/dist/icons/ExclamationIcon.js +1 -1
  433. package/dist/icons/EyeIcon.js +1 -1
  434. package/dist/icons/EyeInvisibleIcon.js +1 -1
  435. package/dist/icons/FilterIcon.js +1 -1
  436. package/dist/icons/FolderFilledIcon.js +1 -1
  437. package/dist/icons/FolderIcon.js +1 -1
  438. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  439. package/dist/icons/FolderOpenIcon.js +1 -1
  440. package/dist/icons/ForwardIcon.js +1 -1
  441. package/dist/icons/GripVerticalIcon.js +1 -1
  442. package/dist/icons/HierarchyIcon.js +1 -1
  443. package/dist/icons/HierarchyOpenIcon.js +1 -1
  444. package/dist/icons/Icon.js +1 -1
  445. package/dist/icons/InfoCircleIcon.js +1 -1
  446. package/dist/icons/InfoIcon.js +1 -1
  447. package/dist/icons/KeyIcon.js +1 -1
  448. package/dist/icons/LeftIcon.js +1 -1
  449. package/dist/icons/LineChartIcon.js +1 -1
  450. package/dist/icons/LoadingIcon.js +1 -1
  451. package/dist/icons/LockFilledIcon.js +1 -1
  452. package/dist/icons/LockIcon.js +1 -1
  453. package/dist/icons/MoreIcon.js +1 -1
  454. package/dist/icons/NotAllowedIcon.js +1 -1
  455. package/dist/icons/Number123Icon.js +1 -1
  456. package/dist/icons/NumberIcon.js +1 -1
  457. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  458. package/dist/icons/PauseCircleIcon.js +1 -1
  459. package/dist/icons/PauseIcon.js +1 -1
  460. package/dist/icons/PercentageIcon.js +1 -1
  461. package/dist/icons/PieChartIcon.js +1 -1
  462. package/dist/icons/PipetteIcon.js +1 -1
  463. package/dist/icons/PlayCircleIcon.js +1 -1
  464. package/dist/icons/PlayIcon.js +1 -1
  465. package/dist/icons/PlusIcon.js +1 -1
  466. package/dist/icons/ProgressBarIcon.js +1 -1
  467. package/dist/icons/ReloadIcon.js +1 -1
  468. package/dist/icons/ReportIcon.js +1 -1
  469. package/dist/icons/ReturnIcon.js +1 -1
  470. package/dist/icons/RightIcon.js +1 -1
  471. package/dist/icons/RowTotalsIcon.js +1 -1
  472. package/dist/icons/SchemeIcon.js +1 -1
  473. package/dist/icons/SearchIcon.js +1 -1
  474. package/dist/icons/SemanticQueryIcon.js +1 -1
  475. package/dist/icons/SettingsIcon.js +1 -1
  476. package/dist/icons/ShieldFilledIcon.js +1 -1
  477. package/dist/icons/ShieldIcon.js +1 -1
  478. package/dist/icons/SlashIcon.js +1 -1
  479. package/dist/icons/SparklesIcon.js +1 -1
  480. package/dist/icons/SqlIcon.js +1 -1
  481. package/dist/icons/StatsIcon.js +1 -1
  482. package/dist/icons/StopIcon.js +1 -1
  483. package/dist/icons/StringIcon.js +1 -1
  484. package/dist/icons/SubtotalsIcon.js +1 -1
  485. package/dist/icons/SwitchIcon.js +1 -1
  486. package/dist/icons/TableIcon.js +1 -1
  487. package/dist/icons/ThumbsDownIcon.js +1 -1
  488. package/dist/icons/ThumbsUpIcon.js +1 -1
  489. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  490. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  491. package/dist/icons/ThunderboltIcon.js +1 -1
  492. package/dist/icons/TimeIcon.js +1 -1
  493. package/dist/icons/TrashIcon.js +1 -1
  494. package/dist/icons/UnlockIcon.js +1 -1
  495. package/dist/icons/UpIcon.js +1 -1
  496. package/dist/icons/UserGroupIcon.js +1 -1
  497. package/dist/icons/UserIcon.js +1 -1
  498. package/dist/icons/UserLockIcon.js +1 -1
  499. package/dist/icons/ViewIcon.js +1 -1
  500. package/dist/icons/WarningFilledIcon.js +1 -1
  501. package/dist/icons/WarningIcon.js +1 -1
  502. package/dist/icons/wrap-icon.js +1 -1
  503. package/dist/index.d.ts +3 -3
  504. package/dist/index.js +1 -1
  505. package/dist/index.js.map +1 -1
  506. package/dist/probe/canonicalize.js +1 -1
  507. package/dist/probe/css.js +1 -1
  508. package/dist/probe/index.js +1 -1
  509. package/dist/provider.js +1 -1
  510. package/dist/providers/TrackingProvider.js +1 -1
  511. package/dist/providers/navigationAdapter.default.js +1 -1
  512. package/dist/tokens/base.js +1 -1
  513. package/dist/tokens/color-seed.js +1 -1
  514. package/dist/tokens/color-theme.js +1 -1
  515. package/dist/tokens/colors.js +1 -1
  516. package/dist/tokens/index.js +1 -1
  517. package/dist/tokens/layout.js +1 -1
  518. package/dist/tokens/lazy-styles.js +1 -1
  519. package/dist/tokens/palette-config.js +1 -1
  520. package/dist/tokens/palette.js +6 -1
  521. package/dist/tokens/palette.js.map +1 -1
  522. package/dist/tokens/shadows.js +1 -1
  523. package/dist/tokens/sizes.js +1 -1
  524. package/dist/tokens/spacing.js +1 -1
  525. package/dist/tokens/typography.js +1 -1
  526. package/dist/utils/ResizeSensor.js +1 -1
  527. package/dist/utils/is-dev-env.js +1 -1
  528. package/dist/utils/modules.js +1 -1
  529. package/dist/utils/promise.js +1 -1
  530. package/dist/utils/raf.js +1 -1
  531. package/dist/utils/random.js +1 -1
  532. package/dist/utils/range.js +1 -1
  533. package/dist/utils/react/RenderCache.js +1 -1
  534. package/dist/utils/react/Slots.js +1 -1
  535. package/dist/utils/react/chain.js +1 -1
  536. package/dist/utils/react/disabledProps.js +1 -1
  537. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  538. package/dist/utils/react/index.js +1 -1
  539. package/dist/utils/react/interactions.js +1 -1
  540. package/dist/utils/react/isTextOnly.js +1 -1
  541. package/dist/utils/react/mapProps.js +1 -1
  542. package/dist/utils/react/mergeProps.js +1 -1
  543. package/dist/utils/react/nullableValue.js +1 -1
  544. package/dist/utils/react/resolveIcon.js +1 -1
  545. package/dist/utils/react/sharedStore.js +1 -1
  546. package/dist/utils/react/useBufferedValue.js +1 -1
  547. package/dist/utils/react/useCombinedRefs.js +1 -1
  548. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  549. package/dist/utils/react/useEventBus.js +1 -1
  550. package/dist/utils/react/useId.js +1 -1
  551. package/dist/utils/react/useIsDarwin.js +1 -1
  552. package/dist/utils/react/useKeySymbols.js +1 -1
  553. package/dist/utils/react/useLayoutEffect.js +1 -1
  554. package/dist/utils/react/useLocalStorage.js +1 -1
  555. package/dist/utils/react/useMergeStyles.js +1 -1
  556. package/dist/utils/react/usePopoverSync.js +1 -1
  557. package/dist/utils/react/useQaProps.js +1 -1
  558. package/dist/utils/react/useViewportSize.js +1 -1
  559. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  560. package/dist/utils/selection.js +1 -1
  561. package/dist/utils/styles.js +1 -1
  562. package/dist/utils/tree.js +1 -1
  563. package/dist/utils/warnings.js +1 -1
  564. package/dist/version.js +2 -2
  565. package/docs/Theming.md +1 -1
  566. package/docs/Usage.md +1 -0
  567. package/docs/components/actions/Button.md +9 -3
  568. package/docs/components/actions/ItemAction.md +3 -3
  569. package/docs/components/content/Item.md +10 -10
  570. package/docs/components/content/ItemBadge.md +2 -2
  571. package/docs/components/layout/Board.md +2 -19
  572. package/package.json +1 -1
  573. package/dist/components/layout/Board/grid-core/collision-modes.js +0 -168
  574. package/dist/components/layout/Board/grid-core/collision-modes.js.map +0 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | 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.0.0-canary-100fa6b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-370af60 | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.0.0-canary-100fa6b";
3
+ const VERSION = "0.0.0-canary-370af60";
4
4
  const TASTY_VERSION = "3.0.2";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
package/docs/Theming.md CHANGED
@@ -410,7 +410,7 @@ The **contrast level** needs no on/off switch: level `0` and `'auto'` are
410
410
  output-identical, tier included, so the slider at rest _is_ the shipped palette.
411
411
 
412
412
  Status themes are four chips on one line rather than eight sliders. Each chip is a
413
- `type="current"` `Button` colored by its own theme with a
413
+ `theme="current"` `Button` colored by its own theme with a
414
414
  [ColorSwatch](./components/fields/ColorSwatch.md) of its accent, so the group answers
415
415
  the question you actually have — do these four still read as four different
416
416
  things — at a glance; press one to open its hue and saturation. The hue is not
package/docs/Usage.md CHANGED
@@ -306,6 +306,7 @@ Component themes are set via the `theme` prop or `theme=name` modifier:
306
306
  | `success` | Success / positive states |
307
307
  | `warning` | Warning / caution states |
308
308
  | `note` | Informational / note states |
309
+ | `current` | No palette of its own — every color is mixed from the inherited text color (`#current`), so the component adopts whatever its container paints with. Supported by `Button`, `Item` (and `ItemButton`, `Item.Action`, `ItemBadge`) |
309
310
 
310
311
  ## Recipes
311
312
 
@@ -15,8 +15,8 @@ A versatile action component that triggers commands and navigates users.
15
15
 
16
16
  ## Properties
17
17
 
18
- - **`type`** `'primary' | 'outline' | 'outline-2' | 'clear' | 'link' | 'current'` (default: `outline`) — Visual style variant of the button (`outline-2` is identical to `outline` but uses `#surface-3` as the base fill; not available for the `special` theme. `current` derives its colors from the inherited text color and ignores `theme`)
19
- - **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `default`) — Semantic colour palette theme
18
+ - **`type`** `'primary' | 'outline' | 'outline-2' | 'clear' | 'link'` (default: `outline`) — Visual style variant of the button (`outline-2` is identical to `outline` but uses `#surface-3` as the base fill; not available for the `special` theme)
19
+ - **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special' | 'current'` (default: `default`) — Semantic colour palette theme. `current` is not a brand palette: it mixes every color from the inherited text color, so the button adopts the color of whatever container it sits in
20
20
  - **`size`** `'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'inline' | number` (default: `medium`) — Button size. Use `'inline'` for link-type buttons or a number/string for custom sizes (e.g. `64` or `'8x'`)
21
21
  - **`icon`** — Icon rendered before the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
22
22
  - **`rightIcon`** — Icon rendered after the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
@@ -82,7 +82,6 @@ The `mods` prop accepts the following modifiers you can override:
82
82
  - `outline` – Border with transparent background; `isSelected` adds brand-tinted fill.
83
83
  - `clear` – No border, transparent background; `isSelected` adds brand-tinted fill.
84
84
  - `link` – Styled as a textual link.
85
- - `current` – Fill, border and label are mixed from the inherited text color (`#current`), so the button adopts the color of whatever container it sits in. The resting chip is a `#current.03` fill inside a `#current.08` border, and hover, pressed and selected step the same alpha ramp up from there; the label stays fully opaque. The focus ring stays `#primary-accent-text`, like every other type. Theme-agnostic — there is a single variant, and `theme` has no effect. Use it inside colored containers (alerts, banners, dark overlays, tooltips). `Item` has a `current` type too, shaped like its neutral `item` type instead: borderless and invisible at rest.
86
85
 
87
86
  ### Themes. `theme` prop
88
87
 
@@ -92,6 +91,13 @@ The `mods` prop accepts the following modifiers you can override:
92
91
  - `warning` – Yellow/amber palette for caution or attention.
93
92
  - `note` – Violet palette for informational context.
94
93
  - `special` – White palette for dark backgrounds.
94
+ - `current` – Not a palette at all: fill, border and label are mixed from the inherited text color (`#current`), so the button adopts the color of whatever container it sits in and keeps adopting it if that color changes. Every `type` has a `current` flavour, so the shape is still yours to pick — `outline` is the resting `#current.03` chip inside a `#current.08` border, `primary` escalates the same construction to a filled chip, `clear` paints nothing at rest, `link` is the label alone. The label stays fully opaque and the focus ring stays `#primary-accent-text`, like every other theme. Use it inside colored containers (alerts, banners, dark overlays, tooltips), where a brand theme would either clash with the container or have to be picked to match it.
95
+
96
+ ```jsx
97
+ <Alert theme="note">
98
+ <Button theme="current" type="outline">Adopts the note color</Button>
99
+ </Alert>
100
+ ```
95
101
 
96
102
  ### Sizes. `size` prop
97
103
 
@@ -1,6 +1,6 @@
1
1
  # ItemAction
2
2
 
3
- A compact action button designed for use inside `Item`, `ItemButton`, and `ItemCard`. Automatically inherits `type` and `theme` from its parent context.
3
+ A compact action button designed for use inside `Item`, `ItemButton`, and `ItemCard`. Defaults to the `current` theme, so it takes its colors from whatever row hosts it.
4
4
 
5
5
  ## When to Use
6
6
 
@@ -15,8 +15,8 @@ A compact action button designed for use inside `Item`, `ItemButton`, and `ItemC
15
15
  ## Properties
16
16
 
17
17
  - **`icon`** `ReactNode | 'checkmark'` — Icon element or `'checkmark'` for a selection indicator
18
- - **`type`** `'primary' | 'outline' | 'clear' | 'current'` (default: `'current'`) — Visual type. `current` derives every color from the inherited `currentcolor`, so the action tracks whatever row hosts it without being told the row's type. Passing an explicit `theme` falls back to `'clear'`, since `current` is theme-agnostic and the theme would have nothing to color.
19
- - **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `'default'`) — Color theme. Inherits from parent context.
18
+ - **`type`** `'primary' | 'outline' | 'clear'` (default: `'clear'`) — Visual type. `clear` is borderless and paints nothing at rest, so a row full of actions does not read as busy.
19
+ - **`theme`** `'current' | 'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `'current'`) — Color theme. `current` derives every color from the inherited `currentcolor`, so the action tracks whatever row hosts it without being told the row's type or theme. Name any other theme to have the action paint itself instead.
20
20
  - **`isLoading`** `boolean` (default: `false`) — Shows loading spinner
21
21
  - **`isSelected`** `boolean` (default: `false`) — Selected state (works with `icon="checkmark"`)
22
22
  - **`isDisabled`** `boolean` (default: `false`) — Disables the action. Inherits from parent; use `isDisabled={false}` to override.
@@ -22,8 +22,8 @@ A foundational component that provides a standardized layout and styling for ite
22
22
  - **`suffix`** `ReactNode` — Element rendered after the content (before rightIcon)
23
23
  - **`description`** `ReactNode` — Description text displayed with the item
24
24
  - **`descriptionPlacement`** `'inline' | 'block'` (default: `inline`) — How the description is positioned relative to the main content. Defaults to `'block'` for `type="card"` and `type="header"`
25
- - **`type`** `'item' | 'header' | 'primary' | 'outline' | 'outline-2' | 'clear' | 'link' | 'card' | 'current'` (default: `item`) — Visual style variant
26
- - **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `default`) — Semantic colour palette theme
25
+ - **`type`** `'item' | 'header' | 'primary' | 'outline' | 'outline-2' | 'clear' | 'link' | 'card'` (default: `item`) — Visual style variant
26
+ - **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special' | 'current'` (default: `default`) — Semantic colour palette theme. `current` is not a brand palette: it mixes every color from the inherited text color, so the item adopts the color of whatever container it sits in
27
27
  - **`size`** `'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'inline' | number` (default: `medium`) — Item size. Accepts custom number or string values
28
28
  - **`shape`** `'card' | 'button' | 'sharp' | 'pill'` (default: `button`) — Shape of the item border radius. Defaults to `'card'` for `type="card"`
29
29
  - **`isSelected`** `boolean` (default: `false`) — Marks the item as selected
@@ -84,8 +84,8 @@ The `mods` property accepts the following modifiers:
84
84
  - **`disabled`** `boolean` — Applied when isDisabled is true or when loading
85
85
  - **`loading`** `boolean` — Applied when isLoading is true
86
86
  - **`size`** `string` — Applied based on size prop value (xsmall, small, medium, large, xlarge, inline)
87
- - **`type`** `string` — Applied based on type prop value (item, header, primary, outline, outline-2, clear, link, card, current)
88
- - **`theme`** `string` — Applied based on theme prop value (default, danger, success, special, warning, note)
87
+ - **`type`** `string` — Applied based on type prop value (item, header, primary, outline, outline-2, clear, link, card)
88
+ - **`theme`** `string` — Applied based on theme prop value (default, danger, success, special, warning, note, current)
89
89
  - **`shape`** `string` — Applied based on shape prop value (card, button, sharp, pill)
90
90
 
91
91
  ## Variants
@@ -99,8 +99,7 @@ The `mods` property accepts the following modifiers:
99
99
  - `outline-2` - Same as `outline` but uses `#surface-3` as the base fill, designed to sit on `#surface-2` containers without blending in (not available for the `special` theme)
100
100
  - `clear` - Transparent item with minimal styling; `isSelected` adds brand-tinted fill
101
101
  - `link` - Link-styled item appearance (does not support icons or loading state)
102
- - `card` - Card appearance for notifications (supports `default`, `success`, `danger`, `warning`, `note` themes; defaults to `shape="card"`, `descriptionPlacement="block"`, uses semantic heading tags via `level` prop, and has `.5x` padding)
103
- - `current` - Same shape as `item` — no border, nothing painted at rest — but every color is derived from the inherited text color (`#current`) instead of the fixed `#surface-text`, so the item adopts the color of whatever container it sits in. The fill steps in on hover (`.04`), pressed (`.06`) and selected (`.09` → `.15`); the label stays fully opaque. Theme-agnostic: only supports the `default` theme (any other theme warns, since there is nothing for it to change). Use it inside colored containers — alerts, banners, dark overlays, tooltips. `Button` has a `current` type too, shaped like a standalone control instead: a resting `#current.03` chip inside a `#current.08` border
102
+ - `card` - Card appearance for notifications (supports `default`, `success`, `danger`, `warning`, `note`, `current` themes; defaults to `shape="card"`, `descriptionPlacement="block"`, uses semantic heading tags via `level` prop, and has `.5x` padding)
104
103
 
105
104
  ### Themes
106
105
 
@@ -110,6 +109,7 @@ The `mods` property accepts the following modifiers:
110
109
  - `warning` - Yellow/amber theme for caution or attention
111
110
  - `note` - Violet theme for informational context
112
111
  - `special` - Special theme with unique styling (not available for `card` or `header` types)
112
+ - `current` - Not a palette at all: every color is derived from the inherited text color (`#current`) instead of a brand ramp, so the item adopts the color of whatever container it sits in. Every type except `header` has a `current` flavour, so the shape is still yours to pick — `item` keeps its borderless shape (nothing painted at rest, the fill stepping in on hover, pressed and selected), `outline` adds the chip and border, `primary` escalates it further. The label stays fully opaque. Use it inside colored containers — alerts, banners, dark overlays, tooltips
113
113
 
114
114
  ### Sizes
115
115
 
@@ -257,17 +257,17 @@ Like headers, card labels use semantic heading tags (h1-h6) controlled by the `l
257
257
  </Item>
258
258
  ```
259
259
 
260
- ### Current Type
260
+ ### Current Theme
261
261
 
262
- Use `type="current"` inside a container that paints its own text color. The fill and label are mixed from that inherited color, so the item matches the container without picking a theme — and keeps matching it if the container's color changes:
262
+ Use `theme="current"` inside a container that paints its own text color. The fill and label are mixed from that inherited color, so the item matches the container without picking a brand theme — and keeps matching it if the container's color changes. Every type composes with it:
263
263
 
264
264
  ```jsx
265
265
  <Block fill="#note-surface" color="#note-accent-text" padding="1.5x" radius="1cr">
266
- <Item type="current" icon={<IconInfo />}>Adopts the note color</Item>
266
+ <Item theme="current" icon={<IconInfo />}>Adopts the note color</Item>
267
267
  </Block>
268
268
 
269
269
  <Block fill="#fixed-dark" color="#white" padding="1.5x" radius="1cr">
270
- <Item type="current" icon={<IconInfo />}>Adopts white on a dark banner</Item>
270
+ <Item theme="current" type="outline" icon={<IconInfo />}>An outlined chip on a dark banner</Item>
271
271
  </Block>
272
272
  ```
273
273
 
@@ -11,8 +11,8 @@ A non-interactive badge indicator for list items. Similar to `ItemAction` but wi
11
11
  ## Properties
12
12
 
13
13
  - **`icon`** `ReactNode | 'checkmark'` — Icon or checkmark display
14
- - **`type`** `'primary' | 'outline' | 'clear' | 'current'` (default: `'current'`) — Visual type. `isSelected` applies brand-tinted fill to `outline` and `clear`. `current` derives every color from the inherited `currentcolor`, so the badge tracks whatever row hosts it. Passing an explicit `theme` falls back to `'clear'`, since `current` is theme-agnostic.
15
- - **`theme`** `'default' | 'danger' | 'success' | 'special'` (default: `'default'`) — Color theme. Inherits from parent context.
14
+ - **`type`** `'primary' | 'outline' | 'clear'` (default: `'clear'`) — Visual type. `isSelected` applies brand-tinted fill to `outline` and `clear`.
15
+ - **`theme`** `'current' | 'default' | 'danger' | 'success' | 'special'` (default: `'current'`) — Color theme. `current` derives every color from the inherited `currentcolor`, so the badge tracks whatever row hosts it. Name any other theme to have the badge paint itself instead.
16
16
  - **`isLoading`** `boolean` (default: `false`) — Show loading spinner
17
17
  - **`isSelected`** `boolean` (default: `false`) — Selected state (for checkmark)
18
18
  - **`tooltip`** `string | object` — Tooltip content shown on hover for icon-only badges. A string shows tooltip text; an object supports `{ title, ...tooltipProps }` for advanced configuration.
@@ -61,15 +61,13 @@ clipped by an ancestor's `overflow: hidden`.
61
61
  - **`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.
62
62
  - **`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.
63
63
  - **`preventCollision`** `boolean` (default: `false`) — Block movement into occupied cells instead of pushing.
64
- - **`collisionMode`** `'revert' | 'downscale' | 'swap'` (default: `'revert'`) — How to resolve a drop the grid would otherwise refuse. Only applies where a collision *blocks* a move — `compact="free"` (which prevents collisions) or an explicit `preventCollision` — and never under `allowOverlap`, where nothing is blocked. `'revert'` snaps the widget back. `'downscale'` shrinks it into the free space at the drop cell, growing rightward and downward, floored at its `minW`/`minH` (below that it reverts). `'swap'` trades places with the single widget under the drop: the dragged widget takes that widget's cell, the displaced widget takes the cell the dragged one just left, and each keeps as much of its own size as fits there (so a widget displaced next to a neighbour may shrink). It falls back to `'downscale'`, then `'revert'`. No mode ever *grows* a widget: a drag only ever preserves or reduces size. Applies to single-widget drags, pointer and keyboard alike; a multi-widget selection still only moves where it fits outright, and a resize is still blocked by a collision.
65
64
  - **`isDraggable`** `boolean` (default: `true`) — Enable dragging for all widgets.
66
65
  - **`isResizable`** `boolean` (default: `true`) — Enable resizing for all widgets.
67
66
  - **`isDroppable`** `boolean` (default: `true`) — Whether the board accepts widgets dropped from other boards.
68
67
  - **`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.
69
- - **`resizeGripPlacement`** `'inside' | 'corner'` (default: `'inside'`) — Where the corner grips sit. `'inside'` tucks each one into the widget box; `'corner'` centres it on the widget's corner, so it lines up with a control centred on the opposite corner. Only affects corner handles — a dotted edge grip always stays inside. A corner-placed grip is drawn *outside* the widget (a widget clips its own content, which would otherwise cut the grip in half), so it needs the board to have at least half a grip's worth of `containerPadding` to show in full against the board's edge. Can be overridden per widget.
70
68
  - **`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"`). Does not affect keyboard moves — those only run when the widget host itself is focused. Can be overridden per widget.
71
69
  - **`dragHandle`** `string` — CSS selector for the only elements from which a pointer drag may start. Can be overridden per widget.
72
- - **`showGridLines`** `boolean | 'drag' | 'any-drag'` (default: `false`) — Show grid lines behind the widgets. `true` always; `false` never; `'drag'` only while *this* board is part of the active gesture — it owns the drag (as its source, or as the board the widget is currently over) or one of its own widgets is being resized; `'any-drag'` while any drag is in flight anywhere under a shared `Board.Provider`, so every board advertises itself as somewhere the widget could land. Under one `Board.Provider`, `'drag'` keeps boards a widget cannot land in quiet, and `'any-drag'` is the opt-in for the noisier, more informative version. A nested board that does not set this inherits an enabled ancestor's setting, at the ancestor's own scope.
70
+ - **`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.
73
71
  - **`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.
74
72
  - **`selectionMode`** `'none' | 'single' | 'multiple'` (default: `'none'`) — Whether widgets can be selected, and how many at a time. `'multiple'` also enables the marquee and rigid group movement.
75
73
  - **`selectedKeys`** `string[]` — Controlled selection. Keys are layout item ids (`LayoutItem.i`).
@@ -91,7 +89,6 @@ clipped by an ancestor's `overflow: hidden`.
91
89
  - **`isDraggable`** `boolean` — Disable dragging for this widget.
92
90
  - **`isResizable`** `boolean` — Disable resizing for this widget.
93
91
  - **`resizeHandles`** `ResizeHandleAxis[]` — Override the board's handles.
94
- - **`resizeGripPlacement`** `'inside' | 'corner'` — Override the board's grip placement.
95
92
  - **`minW`** `number` — Minimum width in grid columns. Used when the layout item omits `minW`; the resize handle stops here.
96
93
  - **`maxW`** `number` — Maximum width in grid columns. Used when the layout item omits `maxW`.
97
94
  - **`minH`** `number` — Minimum height in grid rows. Used when the layout item omits `minH`.
@@ -240,21 +237,7 @@ Bound resizing with per-widget `minW`/`maxW` (columns) and `minH`/`maxH` (rows).
240
237
 
241
238
  ### Grid lines
242
239
 
243
- Show grid lines behind the widgets while dragging or resizing (or always). With
244
- several boards under one `Board.Provider`, `'drag'` lights up only the board the
245
- drag belongs to; `'any-drag'` lights up all of them.
246
-
247
- ### Corner resize grip
248
-
249
- Centre the resize grip on the widget's corner with `resizeGripPlacement="corner"`,
250
- so it lines up with a control centred on the opposite corner.
251
-
252
- ### Resolving a blocked drop
253
-
254
- On a free grid a drop onto occupied cells is refused. `collisionMode` resolves it
255
- instead: `'downscale'` shrinks the widget into whatever room is at the drop cell,
256
- `'swap'` trades places with the widget already there. Neither ever grows a widget.
257
- Drag the wide widget onto the middle row, or drop one widget onto another.
240
+ Show grid lines behind the widgets while dragging or resizing (or always).
258
241
 
259
242
  ### Card widgets
260
243
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.0.0-canary-100fa6b",
3
+ "version": "0.0.0-canary-370af60",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {
@@ -1,168 +0,0 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-100fa6b | Cube Dev Team */
2
- //#region src/components/layout/Board/grid-core/collision-modes.ts
3
- /** Whether a single grid cell is free of every item in `others`. */
4
- function cellFree(others, x, y) {
5
- for (let i = 0; i < others.length; i++) {
6
- const o = others[i];
7
- if (o !== void 0 && x >= o.x && x < o.x + o.w && y >= o.y && y < o.y + o.h) return false;
8
- }
9
- return true;
10
- }
11
- /**
12
- * The largest rectangle anchored at `anchor` that fits without overlapping
13
- * `others`, growing rightward and downward only.
14
- *
15
- * Never larger than `desired` (a drag must never *upscale* a widget - growing
16
- * things is an explicit, opt-in operation like "distribute evenly", not a side
17
- * effect of moving them), never smaller than the item's own `minW`/`minH`, and
18
- * never past `cols` / `maxRows`. Among the candidates the largest-area rectangle
19
- * wins, breaking ties on width: a grid is read left to right, so a wide-and-flat
20
- * result is the less surprising of two equal-area fits.
21
- *
22
- * Returns `null` when not even the minimum size fits, which the callers treat as
23
- * "no resolution" and fall back to reverting.
24
- */
25
- function maxFreeRectAt(others, anchor, desired, limits, mins) {
26
- if (anchor.x < 0 || anchor.y < 0) return null;
27
- const minW = Math.max(1, mins?.minW ?? 1);
28
- const minH = Math.max(1, mins?.minH ?? 1);
29
- const maxRows = limits.maxRows ?? Infinity;
30
- const maxW = Math.min(desired.w, limits.cols - anchor.x);
31
- const maxH = Math.min(desired.h, Number.isFinite(maxRows) ? maxRows - anchor.y : desired.h);
32
- if (maxW < minW || maxH < minH) return null;
33
- const free = [];
34
- for (let dx = 0; dx < maxW; dx++) {
35
- let h = 0;
36
- while (h < maxH && cellFree(others, anchor.x + dx, anchor.y + h)) h++;
37
- free.push(h);
38
- if (h === 0) break;
39
- }
40
- let best = null;
41
- let bestArea = 0;
42
- let limit = maxH;
43
- for (let w = 1; w <= free.length; w++) {
44
- limit = Math.min(limit, free[w - 1]);
45
- if (limit < minH) break;
46
- if (w < minW) continue;
47
- const area = w * limit;
48
- if (area >= bestArea) {
49
- best = {
50
- w,
51
- h: limit
52
- };
53
- bestArea = area;
54
- }
55
- }
56
- return best;
57
- }
58
- /**
59
- * Shrink the placement to the room actually available at the cell it was
60
- * dropped on.
61
- */
62
- function downscaleInPlace(layout, item, others, desired, limits) {
63
- const fit = maxFreeRectAt(others, {
64
- x: item.x,
65
- y: item.y
66
- }, desired, limits, item);
67
- if (!fit) return null;
68
- if (fit.w === item.w && fit.h === item.h) return null;
69
- return layout.map((l) => l.i === item.i ? {
70
- ...l,
71
- w: fit.w,
72
- h: fit.h,
73
- moved: true
74
- } : l);
75
- }
76
- /**
77
- * Exchange the placement with the single widget occupying the target slot.
78
- *
79
- * The dragged widget takes the other's cell and the other takes the cell the
80
- * dragged widget just left. Each keeps as much of its own size as fits there -
81
- * that cell plus any free space adjacent to it - and neither ever grows.
82
- *
83
- * "Just left" rather than "started the gesture at" is deliberate: during a drag
84
- * each frame re-resolves, so the cell the widget came from is the previous
85
- * frame's, which is always free. Anchoring on the gesture's start instead would
86
- * break a chain of exchanges - the second partner would find the start cell
87
- * already taken by the first.
88
- * The slot the dragged widget is leaving is reserved for the displaced widget
89
- * while the dragged one is sized, so the two can never claim the same cells: the
90
- * result is overlap-free by construction, not by a follow-up check.
91
- */
92
- function exchangeWithCollision(layout, item, collisions, from, desired, limits) {
93
- if (collisions.length !== 1) return null;
94
- const other = collisions[0];
95
- if (other.static) return null;
96
- if (from.x === item.x && from.y === item.y) return null;
97
- const rest = layout.filter((l) => l.i !== item.i && l.i !== other.i);
98
- const originSlot = {
99
- i: "origin-slot-reservation",
100
- x: from.x,
101
- y: from.y,
102
- w: desired.w,
103
- h: desired.h
104
- };
105
- const movedFit = maxFreeRectAt([...rest, originSlot], {
106
- x: other.x,
107
- y: other.y
108
- }, desired, limits, item);
109
- if (!movedFit) return null;
110
- const moved = {
111
- ...item,
112
- x: other.x,
113
- y: other.y,
114
- w: movedFit.w,
115
- h: movedFit.h,
116
- moved: true
117
- };
118
- const displacedFit = maxFreeRectAt([...rest, moved], {
119
- x: from.x,
120
- y: from.y
121
- }, {
122
- w: other.w,
123
- h: other.h
124
- }, limits, other);
125
- if (!displacedFit) return null;
126
- const displaced = {
127
- ...other,
128
- x: from.x,
129
- y: from.y,
130
- w: displacedFit.w,
131
- h: displacedFit.h,
132
- moved: true
133
- };
134
- return layout.map((l) => l.i === item.i ? moved : l.i === other.i ? displaced : l);
135
- }
136
- /**
137
- * Build the resolver `moveElement` consults instead of reverting a blocked move,
138
- * or `undefined` for `'revert'` (and for an unset mode), which keeps the engine
139
- * on its original path with no added work.
140
- *
141
- * `'swap'` is an escalation ladder, tried in order: exchange with the single
142
- * widget under the drop, else downscale at the drop cell, else revert. A dense
143
- * grid stays draggable that way - refusing everything that is not a clean
144
- * one-to-one trade would make the mode feel broken exactly where it is needed.
145
- */
146
- function createCollisionResolver(mode, options) {
147
- if (!mode || mode === "revert") return void 0;
148
- const limits = {
149
- cols: options.cols,
150
- maxRows: options.maxRows
151
- };
152
- return ({ layout, item, collisions, from }) => {
153
- const others = layout.filter((l) => l.i !== item.i);
154
- const desired = options.desired ?? {
155
- w: item.w,
156
- h: item.h
157
- };
158
- if (mode === "swap" && options.allowExchange !== false) {
159
- const exchanged = exchangeWithCollision(layout, item, collisions, from, desired, limits);
160
- if (exchanged) return exchanged;
161
- }
162
- return downscaleInPlace(layout, item, others, desired, limits);
163
- };
164
- }
165
-
166
- //#endregion
167
- export { createCollisionResolver };
168
- //# sourceMappingURL=collision-modes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collision-modes.js","names":[],"sources":["../../../../../src/components/layout/Board/grid-core/collision-modes.ts"],"sourcesContent":["/**\n * Collision resolution strategies for a grid that prevents collisions.\n *\n * Original UI Kit code (not vendored from react-grid-layout): the upstream\n * engine only ever reverts a blocked move.\n *\n * When `preventCollision` is on, `moveElement` refuses any placement that\n * overlaps an existing item and snaps the dragged item back. That is the right\n * default, but a free grid often wants the placement *resolved* instead of\n * refused - shrunk into whatever room is actually there, or exchanged with the\n * widget already sitting in the target slot. These strategies produce such a\n * resolution, and every resolution they return is overlap-free, so the caller's\n * own overlap guards keep working unchanged.\n */\n\nimport { collides } from './collision';\n\nimport type {\n CollisionMode,\n CollisionResolver,\n CollisionResolverOptions,\n Layout,\n LayoutItem,\n} from './types';\n\n/** Whether a single grid cell is free of every item in `others`. */\nfunction cellFree(others: Layout, x: number, y: number): boolean {\n for (let i = 0; i < others.length; i++) {\n const o = others[i];\n if (\n o !== undefined &&\n x >= o.x &&\n x < o.x + o.w &&\n y >= o.y &&\n y < o.y + o.h\n ) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * The largest rectangle anchored at `anchor` that fits without overlapping\n * `others`, growing rightward and downward only.\n *\n * Never larger than `desired` (a drag must never *upscale* a widget - growing\n * things is an explicit, opt-in operation like \"distribute evenly\", not a side\n * effect of moving them), never smaller than the item's own `minW`/`minH`, and\n * never past `cols` / `maxRows`. Among the candidates the largest-area rectangle\n * wins, breaking ties on width: a grid is read left to right, so a wide-and-flat\n * result is the less surprising of two equal-area fits.\n *\n * Returns `null` when not even the minimum size fits, which the callers treat as\n * \"no resolution\" and fall back to reverting.\n */\nexport function maxFreeRectAt(\n others: Layout,\n anchor: { x: number; y: number },\n desired: { w: number; h: number },\n limits: { cols: number; maxRows?: number },\n mins?: { minW?: number; minH?: number },\n): { w: number; h: number } | null {\n if (anchor.x < 0 || anchor.y < 0) return null;\n\n const minW = Math.max(1, mins?.minW ?? 1);\n const minH = Math.max(1, mins?.minH ?? 1);\n const maxRows = limits.maxRows ?? Infinity;\n const maxW = Math.min(desired.w, limits.cols - anchor.x);\n const maxH = Math.min(\n desired.h,\n Number.isFinite(maxRows) ? maxRows - anchor.y : desired.h,\n );\n\n if (maxW < minW || maxH < minH) return null;\n\n // Free height available in each column of the candidate band, measured down\n // from the anchor row and capped at the tallest useful height.\n const free: number[] = [];\n for (let dx = 0; dx < maxW; dx++) {\n let h = 0;\n while (h < maxH && cellFree(others, anchor.x + dx, anchor.y + h)) h++;\n free.push(h);\n // A column with no room at all caps every wider candidate, so stop early.\n if (h === 0) break;\n }\n\n let best: { w: number; h: number } | null = null;\n let bestArea = 0;\n let limit = maxH;\n for (let w = 1; w <= free.length; w++) {\n limit = Math.min(limit, free[w - 1]!);\n if (limit < minH) break;\n if (w < minW) continue;\n const area = w * limit;\n // `>=` so the widest of several equal-area fits wins: `w` only grows here, so\n // the last match is the widest one.\n if (area >= bestArea) {\n best = { w, h: limit };\n bestArea = area;\n }\n }\n\n return best;\n}\n\n/**\n * Shrink the placement to the room actually available at the cell it was\n * dropped on.\n */\nfunction downscaleInPlace(\n layout: Layout,\n item: LayoutItem,\n others: Layout,\n desired: { w: number; h: number },\n limits: { cols: number; maxRows?: number },\n): LayoutItem[] | null {\n const fit = maxFreeRectAt(\n others,\n { x: item.x, y: item.y },\n desired,\n limits,\n item,\n );\n if (!fit) return null;\n // Nothing to resolve: the requested size already fits, so the collision was\n // not a sizing problem and reverting is still the honest answer.\n if (fit.w === item.w && fit.h === item.h) return null;\n\n return layout.map((l) =>\n l.i === item.i ? { ...l, w: fit.w, h: fit.h, moved: true } : l,\n );\n}\n\n/**\n * Exchange the placement with the single widget occupying the target slot.\n *\n * The dragged widget takes the other's cell and the other takes the cell the\n * dragged widget just left. Each keeps as much of its own size as fits there -\n * that cell plus any free space adjacent to it - and neither ever grows.\n *\n * \"Just left\" rather than \"started the gesture at\" is deliberate: during a drag\n * each frame re-resolves, so the cell the widget came from is the previous\n * frame's, which is always free. Anchoring on the gesture's start instead would\n * break a chain of exchanges - the second partner would find the start cell\n * already taken by the first.\n * The slot the dragged widget is leaving is reserved for the displaced widget\n * while the dragged one is sized, so the two can never claim the same cells: the\n * result is overlap-free by construction, not by a follow-up check.\n */\nfunction exchangeWithCollision(\n layout: Layout,\n item: LayoutItem,\n collisions: LayoutItem[],\n from: { x: number; y: number },\n desired: { w: number; h: number },\n limits: { cols: number; maxRows?: number },\n): LayoutItem[] | null {\n // Only an unambiguous exchange: with two or more widgets under the drop there\n // is no single partner to trade with, and moving one of them would still leave\n // the placement overlapping the rest.\n if (collisions.length !== 1) return null;\n const other = collisions[0]!;\n if (other.static) return null;\n // Nothing to trade if the widget has not actually left a slot behind - a\n // cross-board drop, where it never had one on this board.\n if (from.x === item.x && from.y === item.y) return null;\n\n const rest = layout.filter((l) => l.i !== item.i && l.i !== other.i);\n // The slot being vacated, held back so the dragged widget cannot grow into the\n // space the displaced one is about to need. Ids are never compared here (the\n // scan works cell by cell), so this placeholder cannot clash with a real one.\n const originSlot: LayoutItem = {\n i: 'origin-slot-reservation',\n x: from.x,\n y: from.y,\n w: desired.w,\n h: desired.h,\n };\n\n const movedFit = maxFreeRectAt(\n [...rest, originSlot],\n { x: other.x, y: other.y },\n desired,\n limits,\n item,\n );\n if (!movedFit) return null;\n const moved: LayoutItem = {\n ...item,\n x: other.x,\n y: other.y,\n w: movedFit.w,\n h: movedFit.h,\n moved: true,\n };\n\n const displacedFit = maxFreeRectAt(\n [...rest, moved],\n { x: from.x, y: from.y },\n { w: other.w, h: other.h },\n limits,\n other,\n );\n if (!displacedFit) return null;\n const displaced: LayoutItem = {\n ...other,\n x: from.x,\n y: from.y,\n w: displacedFit.w,\n h: displacedFit.h,\n moved: true,\n };\n\n return layout.map((l) =>\n l.i === item.i ? moved : l.i === other.i ? displaced : l,\n );\n}\n\n/**\n * Build the resolver `moveElement` consults instead of reverting a blocked move,\n * or `undefined` for `'revert'` (and for an unset mode), which keeps the engine\n * on its original path with no added work.\n *\n * `'swap'` is an escalation ladder, tried in order: exchange with the single\n * widget under the drop, else downscale at the drop cell, else revert. A dense\n * grid stays draggable that way - refusing everything that is not a clean\n * one-to-one trade would make the mode feel broken exactly where it is needed.\n */\nexport function createCollisionResolver(\n mode: CollisionMode | undefined,\n options: CollisionResolverOptions,\n): CollisionResolver | undefined {\n if (!mode || mode === 'revert') return undefined;\n\n const limits = { cols: options.cols, maxRows: options.maxRows };\n\n return ({ layout, item, collisions, from }) => {\n const others = layout.filter((l) => l.i !== item.i);\n const desired = options.desired ?? { w: item.w, h: item.h };\n\n if (mode === 'swap' && options.allowExchange !== false) {\n const exchanged = exchangeWithCollision(\n layout,\n item,\n collisions,\n from,\n desired,\n limits,\n );\n if (exchanged) return exchanged;\n }\n\n return downscaleInPlace(layout, item, others, desired, limits);\n };\n}\n\n/**\n * Whether a layout holds no overlapping pair. A resolution is only ever accepted\n * when this holds, so the specs assert it directly.\n */\nexport function isOverlapFree(layout: Layout): boolean {\n for (let i = 0; i < layout.length; i++) {\n for (let j = i + 1; j < layout.length; j++) {\n if (collides(layout[i]!, layout[j]!)) return false;\n }\n }\n return true;\n}\n"],"mappings":";;;AA0BA,SAAS,SAAS,QAAgB,GAAW,GAAoB;AAC/D,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,MAAM,IAAI,OAAO;AACjB,MACE,MAAM,UACN,KAAK,EAAE,KACP,IAAI,EAAE,IAAI,EAAE,KACZ,KAAK,EAAE,KACP,IAAI,EAAE,IAAI,EAAE,EAEZ,QAAO;;AAGX,QAAO;;;;;;;;;;;;;;;;AAiBT,SAAgB,cACd,QACA,QACA,SACA,QACA,MACiC;AACjC,KAAI,OAAO,IAAI,KAAK,OAAO,IAAI,EAAG,QAAO;CAEzC,MAAM,OAAO,KAAK,IAAI,GAAG,MAAM,QAAQ,EAAE;CACzC,MAAM,OAAO,KAAK,IAAI,GAAG,MAAM,QAAQ,EAAE;CACzC,MAAM,UAAU,OAAO,WAAW;CAClC,MAAM,OAAO,KAAK,IAAI,QAAQ,GAAG,OAAO,OAAO,OAAO,EAAE;CACxD,MAAM,OAAO,KAAK,IAChB,QAAQ,GACR,OAAO,SAAS,QAAQ,GAAG,UAAU,OAAO,IAAI,QAAQ,EACzD;AAED,KAAI,OAAO,QAAQ,OAAO,KAAM,QAAO;CAIvC,MAAM,OAAiB,EAAE;AACzB,MAAK,IAAI,KAAK,GAAG,KAAK,MAAM,MAAM;EAChC,IAAI,IAAI;AACR,SAAO,IAAI,QAAQ,SAAS,QAAQ,OAAO,IAAI,IAAI,OAAO,IAAI,EAAE,CAAE;AAClE,OAAK,KAAK,EAAE;AAEZ,MAAI,MAAM,EAAG;;CAGf,IAAI,OAAwC;CAC5C,IAAI,WAAW;CACf,IAAI,QAAQ;AACZ,MAAK,IAAI,IAAI,GAAG,KAAK,KAAK,QAAQ,KAAK;AACrC,UAAQ,KAAK,IAAI,OAAO,KAAK,IAAI,GAAI;AACrC,MAAI,QAAQ,KAAM;AAClB,MAAI,IAAI,KAAM;EACd,MAAM,OAAO,IAAI;AAGjB,MAAI,QAAQ,UAAU;AACpB,UAAO;IAAE;IAAG,GAAG;IAAO;AACtB,cAAW;;;AAIf,QAAO;;;;;;AAOT,SAAS,iBACP,QACA,MACA,QACA,SACA,QACqB;CACrB,MAAM,MAAM,cACV,QACA;EAAE,GAAG,KAAK;EAAG,GAAG,KAAK;EAAG,EACxB,SACA,QACA,KACD;AACD,KAAI,CAAC,IAAK,QAAO;AAGjB,KAAI,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,EAAG,QAAO;AAEjD,QAAO,OAAO,KAAK,MACjB,EAAE,MAAM,KAAK,IAAI;EAAE,GAAG;EAAG,GAAG,IAAI;EAAG,GAAG,IAAI;EAAG,OAAO;EAAM,GAAG,EAC9D;;;;;;;;;;;;;;;;;;AAmBH,SAAS,sBACP,QACA,MACA,YACA,MACA,SACA,QACqB;AAIrB,KAAI,WAAW,WAAW,EAAG,QAAO;CACpC,MAAM,QAAQ,WAAW;AACzB,KAAI,MAAM,OAAQ,QAAO;AAGzB,KAAI,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,EAAG,QAAO;CAEnD,MAAM,OAAO,OAAO,QAAQ,MAAM,EAAE,MAAM,KAAK,KAAK,EAAE,MAAM,MAAM,EAAE;CAIpE,MAAM,aAAyB;EAC7B,GAAG;EACH,GAAG,KAAK;EACR,GAAG,KAAK;EACR,GAAG,QAAQ;EACX,GAAG,QAAQ;EACZ;CAED,MAAM,WAAW,cACf,CAAC,GAAG,MAAM,WAAW,EACrB;EAAE,GAAG,MAAM;EAAG,GAAG,MAAM;EAAG,EAC1B,SACA,QACA,KACD;AACD,KAAI,CAAC,SAAU,QAAO;CACtB,MAAM,QAAoB;EACxB,GAAG;EACH,GAAG,MAAM;EACT,GAAG,MAAM;EACT,GAAG,SAAS;EACZ,GAAG,SAAS;EACZ,OAAO;EACR;CAED,MAAM,eAAe,cACnB,CAAC,GAAG,MAAM,MAAM,EAChB;EAAE,GAAG,KAAK;EAAG,GAAG,KAAK;EAAG,EACxB;EAAE,GAAG,MAAM;EAAG,GAAG,MAAM;EAAG,EAC1B,QACA,MACD;AACD,KAAI,CAAC,aAAc,QAAO;CAC1B,MAAM,YAAwB;EAC5B,GAAG;EACH,GAAG,KAAK;EACR,GAAG,KAAK;EACR,GAAG,aAAa;EAChB,GAAG,aAAa;EAChB,OAAO;EACR;AAED,QAAO,OAAO,KAAK,MACjB,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,MAAM,MAAM,IAAI,YAAY,EACxD;;;;;;;;;;;;AAaH,SAAgB,wBACd,MACA,SAC+B;AAC/B,KAAI,CAAC,QAAQ,SAAS,SAAU,QAAO;CAEvC,MAAM,SAAS;EAAE,MAAM,QAAQ;EAAM,SAAS,QAAQ;EAAS;AAE/D,SAAQ,EAAE,QAAQ,MAAM,YAAY,WAAW;EAC7C,MAAM,SAAS,OAAO,QAAQ,MAAM,EAAE,MAAM,KAAK,EAAE;EACnD,MAAM,UAAU,QAAQ,WAAW;GAAE,GAAG,KAAK;GAAG,GAAG,KAAK;GAAG;AAE3D,MAAI,SAAS,UAAU,QAAQ,kBAAkB,OAAO;GACtD,MAAM,YAAY,sBAChB,QACA,MACA,YACA,MACA,SACA,OACD;AACD,OAAI,UAAW,QAAO;;AAGxB,SAAO,iBAAiB,QAAQ,MAAM,QAAQ,SAAS,OAAO"}