@cube-dev/ui-kit 0.173.0 → 0.175.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 (563) hide show
  1. package/dist/CHANGELOG.md +52 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  57. package/dist/components/content/Item/Item.js +1 -1
  58. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  59. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  60. package/dist/components/content/Layout/GridLayout.js +1 -1
  61. package/dist/components/content/Layout/Layout.js +2 -2
  62. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  63. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  64. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  65. package/dist/components/content/Layout/LayoutContent.js +1 -1
  66. package/dist/components/content/Layout/LayoutContext.js +1 -1
  67. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  68. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  69. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  70. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutPane.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  75. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  76. package/dist/components/content/Layout/index.js +1 -1
  77. package/dist/components/content/Layout/utils.js +1 -1
  78. package/dist/components/content/Paragraph.js +1 -1
  79. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  80. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  81. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  82. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  83. package/dist/components/content/Result/Result.js +1 -1
  84. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  85. package/dist/components/content/Tag/Tag.js +1 -1
  86. package/dist/components/content/Text.d.ts +14 -14
  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/data/DataTable/DataTable.js +1 -1
  99. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  104. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  105. package/dist/components/data/TableBase/RowCollection.js +1 -1
  106. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  107. package/dist/components/data/TableBase/TableRow.js +1 -1
  108. package/dist/components/data/TableBase/TableView.js +1 -1
  109. package/dist/components/data/TableBase/column-menu.js +1 -1
  110. package/dist/components/data/TableBase/column-tint.js +1 -1
  111. package/dist/components/data/TableBase/row-menu.js +1 -1
  112. package/dist/components/data/TableBase/styled.js +1 -1
  113. package/dist/components/data/TableBase/table-tree.js +1 -1
  114. package/dist/components/data/TableBase/types.js +1 -1
  115. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  116. package/dist/components/data/TableBase/use-column-order.js +1 -1
  117. package/dist/components/data/TableBase/use-container-width.js +1 -1
  118. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  119. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  120. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  121. package/dist/components/data/TableBase/use-table-search.js +1 -1
  122. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  123. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  124. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  125. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  126. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  127. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  128. package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -2
  129. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  130. package/dist/components/fields/Checkbox/context.js +1 -1
  131. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  132. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  133. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  134. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  135. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  136. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  137. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  138. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  139. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  140. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  141. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  142. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  146. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  147. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  148. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  149. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  152. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  155. package/dist/components/fields/DatePicker/period.js +1 -1
  156. package/dist/components/fields/DatePicker/props.js +1 -1
  157. package/dist/components/fields/DatePicker/utils.js +1 -1
  158. package/dist/components/fields/FileInput/FileInput.js +1 -1
  159. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  160. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  161. package/dist/components/fields/Input/Input.js +1 -1
  162. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  163. package/dist/components/fields/ListBox/ListBox.js +1 -1
  164. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  165. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  166. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  167. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  168. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  169. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  170. package/dist/components/fields/Picker/Picker.js +1 -1
  171. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  172. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  173. package/dist/components/fields/RadioGroup/context.js +1 -1
  174. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  175. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  176. package/dist/components/fields/Select/Select.js +1 -1
  177. package/dist/components/fields/Slider/Gradation.js +1 -1
  178. package/dist/components/fields/Slider/HueSlider.js +1 -1
  179. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  180. package/dist/components/fields/Slider/Slider.js +1 -1
  181. package/dist/components/fields/Slider/SliderBase.js +1 -1
  182. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  183. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  184. package/dist/components/fields/Slider/elements.js +1 -1
  185. package/dist/components/fields/Slider/index.js +1 -1
  186. package/dist/components/fields/Switch/Switch.js +1 -1
  187. package/dist/components/fields/TextArea/TextArea.js +1 -1
  188. package/dist/components/fields/TextInput/TextInput.js +1 -1
  189. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  190. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  191. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  192. package/dist/components/fields/color/ColorPanel.js +1 -1
  193. package/dist/components/fields/color/channels.js +1 -1
  194. package/dist/components/fields/color/color.js +1 -1
  195. package/dist/components/fields/color/context.js +1 -1
  196. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +2 -2
  197. package/dist/components/form/FieldWrapper/FieldWrapper.js +12 -5
  198. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  199. package/dist/components/form/FieldWrapper/types.d.ts +3 -3
  200. package/dist/components/form/Form/Field.js +8 -6
  201. package/dist/components/form/Form/Field.js.map +1 -1
  202. package/dist/components/form/Form/Form.js +1 -1
  203. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  204. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  205. package/dist/components/form/Form/SubmitError.js +1 -1
  206. package/dist/components/form/Form/index.js +1 -1
  207. package/dist/components/form/Form/use-field/types.d.ts +13 -1
  208. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  209. package/dist/components/form/Form/use-field/use-field.js +5 -2
  210. package/dist/components/form/Form/use-field/use-field.js.map +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.d.ts +16 -4
  214. package/dist/components/form/Label.js +34 -12
  215. package/dist/components/form/Label.js.map +1 -1
  216. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  217. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  218. package/dist/components/form/validation/use-validation-props.js +1 -1
  219. package/dist/components/form/wrapper.js +3 -2
  220. package/dist/components/form/wrapper.js.map +1 -1
  221. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  222. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  223. package/dist/components/layout/Board/Board.js +9 -4
  224. package/dist/components/layout/Board/Board.js.map +1 -1
  225. package/dist/components/layout/Board/BoardProvider.js +1 -1
  226. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  227. package/dist/components/layout/Board/Widget.d.ts +17 -2
  228. package/dist/components/layout/Board/Widget.js +1 -1
  229. package/dist/components/layout/Board/Widget.js.map +1 -1
  230. package/dist/components/layout/Board/WidgetHost.js +381 -32
  231. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  232. package/dist/components/layout/Board/board-context.js +1 -1
  233. package/dist/components/layout/Board/board-context.js.map +1 -1
  234. package/dist/components/layout/Board/board-store.js +1 -1
  235. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  236. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  237. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  238. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  239. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  240. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  241. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  242. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  243. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  244. package/dist/components/layout/Board/index.js +1 -1
  245. package/dist/components/layout/Board/responsive-utils.js +1 -1
  246. package/dist/components/layout/Board/use-board-layout.js +1 -1
  247. package/dist/components/layout/Board/use-board-registry.js +1 -1
  248. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  249. package/dist/components/layout/Board/use-board-selection.js +1 -1
  250. package/dist/components/layout/Flex.js +1 -1
  251. package/dist/components/layout/Flow.js +1 -1
  252. package/dist/components/layout/Grid.js +1 -1
  253. package/dist/components/layout/Panel.js +1 -1
  254. package/dist/components/layout/Prefix.js +1 -1
  255. package/dist/components/layout/ResizablePanel.js +1 -1
  256. package/dist/components/layout/Space.js +1 -1
  257. package/dist/components/layout/Suffix.js +1 -1
  258. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  259. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  260. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  261. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  262. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  263. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  264. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  265. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  266. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  267. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  268. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  269. package/dist/components/navigation/Tabs/styled.js +1 -1
  270. package/dist/components/navigation/Tabs/types.js +1 -1
  271. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  272. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  273. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  274. package/dist/components/other/Calendar/Calendar.js +1 -1
  275. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  276. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  277. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  278. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  279. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  280. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  281. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  282. package/dist/components/other/Calendar/styled.js +1 -1
  283. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  284. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  285. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  286. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  287. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  288. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  289. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  290. package/dist/components/overlays/Dialog/DialogForm.js +2 -3
  291. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  292. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  293. package/dist/components/overlays/Dialog/context.js +1 -1
  294. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  295. package/dist/components/overlays/Modal/Modal.js +1 -1
  296. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  297. package/dist/components/overlays/Modal/Overlay.js +1 -1
  298. package/dist/components/overlays/Modal/Popover.js +1 -1
  299. package/dist/components/overlays/Modal/Tray.js +1 -1
  300. package/dist/components/overlays/Modal/Underlay.js +1 -1
  301. package/dist/components/overlays/Notifications/Notification.js +1 -1
  302. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  303. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  304. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  305. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  306. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  307. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  308. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  309. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  310. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  311. package/dist/components/overlays/Notifications/index.js +1 -1
  312. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  313. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  314. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  315. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  316. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  317. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  318. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  319. package/dist/components/overlays/Toast/index.js +1 -1
  320. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  321. package/dist/components/overlays/Toast/useToast.js +1 -1
  322. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  323. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  324. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  325. package/dist/components/overlays/Tooltip/context.js +1 -1
  326. package/dist/components/portal/Portal.js +1 -1
  327. package/dist/components/portal/PortalProvider.js +1 -1
  328. package/dist/components/portal/usePortal.js +1 -1
  329. package/dist/components/shared/DraggableCollection.js +1 -1
  330. package/dist/components/shared/InvalidIcon.js +1 -1
  331. package/dist/components/shared/ValidIcon.js +1 -1
  332. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +36 -1
  333. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  334. package/dist/components/status/Spin/Cube.js +1 -1
  335. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  336. package/dist/components/status/Spin/Spin.js +1 -1
  337. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  338. package/dist/data/item-themes.js +1 -1
  339. package/dist/data/themes.js +1 -1
  340. package/dist/eslint-plugin/defaults.generated.js +1 -5
  341. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  342. package/dist/eslint-plugin/index.js +1 -1
  343. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  344. package/dist/i18n/I18nProvider.js +1 -1
  345. package/dist/i18n/createFormatter.js +1 -1
  346. package/dist/i18n/index.js +1 -1
  347. package/dist/i18n/instance.js +1 -1
  348. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  349. package/dist/i18n/locales/en-US/uikit.js +1 -1
  350. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  351. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  352. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  353. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  354. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  355. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  356. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  357. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  358. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  359. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  360. package/dist/i18n/locales.js +1 -1
  361. package/dist/i18n/useFormatter.js +1 -1
  362. package/dist/i18n/useI18n.js +1 -1
  363. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  364. package/dist/icons/AdjustmentsIcon.js +1 -1
  365. package/dist/icons/AiIcon.js +1 -1
  366. package/dist/icons/AreaChartIcon.js +1 -1
  367. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  368. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  369. package/dist/icons/BackwardIcon.js +1 -1
  370. package/dist/icons/BarChartIcon.js +1 -1
  371. package/dist/icons/BellFilledIcon.js +1 -1
  372. package/dist/icons/BellIcon.js +1 -1
  373. package/dist/icons/BooleanIcon.js +1 -1
  374. package/dist/icons/CalendarEditIcon.js +1 -1
  375. package/dist/icons/CalendarIcon.js +1 -1
  376. package/dist/icons/CaretDownIcon.js +1 -1
  377. package/dist/icons/CaretUpIcon.js +1 -1
  378. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  379. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  380. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  381. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  382. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  383. package/dist/icons/ChartBarLineIcon.js +1 -1
  384. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  385. package/dist/icons/ChartBarStackedIcon.js +1 -1
  386. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  387. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  388. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  389. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  390. package/dist/icons/ChartBubbleIcon.js +1 -1
  391. package/dist/icons/ChartDonut2Icon.js +1 -1
  392. package/dist/icons/ChartFunnelIcon.js +1 -1
  393. package/dist/icons/ChartHeatmapIcon.js +1 -1
  394. package/dist/icons/ChartKPIIcon.js +1 -1
  395. package/dist/icons/ChartPie2Icon.js +1 -1
  396. package/dist/icons/ChartScatterIcon.js +1 -1
  397. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  398. package/dist/icons/CheckCircleIcon.js +1 -1
  399. package/dist/icons/CheckIcon.js +1 -1
  400. package/dist/icons/CircleFilledIcon.js +1 -1
  401. package/dist/icons/ClearIcon.js +1 -1
  402. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  403. package/dist/icons/CloseCircleIcon.js +1 -1
  404. package/dist/icons/CloseIcon.js +1 -1
  405. package/dist/icons/CodeIcon.js +1 -1
  406. package/dist/icons/ColumnTotalIcon.js +1 -1
  407. package/dist/icons/CopyIcon.js +1 -1
  408. package/dist/icons/CountIcon.js +1 -1
  409. package/dist/icons/CubeIcon.js +1 -1
  410. package/dist/icons/CubePauseIcon.js +1 -1
  411. package/dist/icons/CubePlayIcon.js +1 -1
  412. package/dist/icons/CurrencyDollarIcon.js +1 -1
  413. package/dist/icons/DangerIcon.js +1 -1
  414. package/dist/icons/DashboardIcon.js +1 -1
  415. package/dist/icons/DatabaseIcon.js +1 -1
  416. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  417. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  418. package/dist/icons/DirectionIcon.js +1 -1
  419. package/dist/icons/DonutIcon.js +1 -1
  420. package/dist/icons/DownIcon.js +1 -1
  421. package/dist/icons/EditIcon.js +1 -1
  422. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  423. package/dist/icons/ExclamationCircleIcon.js +1 -1
  424. package/dist/icons/ExclamationIcon.js +1 -1
  425. package/dist/icons/EyeIcon.js +1 -1
  426. package/dist/icons/EyeInvisibleIcon.js +1 -1
  427. package/dist/icons/FilterIcon.js +1 -1
  428. package/dist/icons/FolderFilledIcon.js +1 -1
  429. package/dist/icons/FolderIcon.js +1 -1
  430. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  431. package/dist/icons/FolderOpenIcon.js +1 -1
  432. package/dist/icons/ForwardIcon.js +1 -1
  433. package/dist/icons/GripVerticalIcon.js +1 -1
  434. package/dist/icons/HierarchyIcon.js +1 -1
  435. package/dist/icons/HierarchyOpenIcon.js +1 -1
  436. package/dist/icons/Icon.js +1 -1
  437. package/dist/icons/InfoCircleIcon.js +1 -1
  438. package/dist/icons/InfoIcon.js +1 -1
  439. package/dist/icons/KeyIcon.js +1 -1
  440. package/dist/icons/LeftIcon.js +1 -1
  441. package/dist/icons/LineChartIcon.js +1 -1
  442. package/dist/icons/LoadingIcon.js +1 -1
  443. package/dist/icons/LockFilledIcon.js +1 -1
  444. package/dist/icons/LockIcon.js +1 -1
  445. package/dist/icons/MoreIcon.js +1 -1
  446. package/dist/icons/NotAllowedIcon.js +1 -1
  447. package/dist/icons/Number123Icon.js +1 -1
  448. package/dist/icons/NumberIcon.js +1 -1
  449. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  450. package/dist/icons/PauseCircleIcon.js +1 -1
  451. package/dist/icons/PauseIcon.js +1 -1
  452. package/dist/icons/PercentageIcon.js +1 -1
  453. package/dist/icons/PieChartIcon.js +1 -1
  454. package/dist/icons/PipetteIcon.js +1 -1
  455. package/dist/icons/PlayCircleIcon.js +1 -1
  456. package/dist/icons/PlayIcon.js +1 -1
  457. package/dist/icons/PlusIcon.js +1 -1
  458. package/dist/icons/ProgressBarIcon.js +1 -1
  459. package/dist/icons/ReloadIcon.js +1 -1
  460. package/dist/icons/ReportIcon.js +1 -1
  461. package/dist/icons/ReturnIcon.js +1 -1
  462. package/dist/icons/RightIcon.js +1 -1
  463. package/dist/icons/RowTotalsIcon.js +1 -1
  464. package/dist/icons/SchemeIcon.js +1 -1
  465. package/dist/icons/SearchIcon.js +1 -1
  466. package/dist/icons/SemanticQueryIcon.js +1 -1
  467. package/dist/icons/SettingsIcon.js +1 -1
  468. package/dist/icons/ShieldFilledIcon.js +1 -1
  469. package/dist/icons/ShieldIcon.js +1 -1
  470. package/dist/icons/SlashIcon.js +1 -1
  471. package/dist/icons/SparklesIcon.js +1 -1
  472. package/dist/icons/SqlIcon.js +1 -1
  473. package/dist/icons/StatsIcon.js +1 -1
  474. package/dist/icons/StopIcon.js +1 -1
  475. package/dist/icons/StringIcon.js +1 -1
  476. package/dist/icons/SubtotalsIcon.js +1 -1
  477. package/dist/icons/SwitchIcon.js +1 -1
  478. package/dist/icons/TableIcon.js +1 -1
  479. package/dist/icons/ThumbsDownIcon.js +1 -1
  480. package/dist/icons/ThumbsUpIcon.js +1 -1
  481. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  482. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  483. package/dist/icons/ThunderboltIcon.js +1 -1
  484. package/dist/icons/TimeIcon.js +1 -1
  485. package/dist/icons/TrashIcon.js +1 -1
  486. package/dist/icons/UnlockIcon.js +1 -1
  487. package/dist/icons/UpIcon.js +1 -1
  488. package/dist/icons/UserGroupIcon.js +1 -1
  489. package/dist/icons/UserIcon.js +1 -1
  490. package/dist/icons/UserLockIcon.js +1 -1
  491. package/dist/icons/ViewIcon.js +1 -1
  492. package/dist/icons/WarningFilledIcon.js +1 -1
  493. package/dist/icons/WarningIcon.js +1 -1
  494. package/dist/icons/wrap-icon.js +1 -1
  495. package/dist/index.js +1 -1
  496. package/dist/probe/canonicalize.js +1 -1
  497. package/dist/probe/css.js +1 -1
  498. package/dist/probe/index.js +1 -1
  499. package/dist/provider.js +1 -1
  500. package/dist/providers/TrackingProvider.js +1 -1
  501. package/dist/providers/navigationAdapter.default.js +1 -1
  502. package/dist/shared/form.d.ts +17 -7
  503. package/dist/tokens/all-tokens.js +1 -1
  504. package/dist/tokens/base.js +1 -1
  505. package/dist/tokens/color-seed.js +1 -1
  506. package/dist/tokens/color-theme.js +1 -1
  507. package/dist/tokens/colors.js +1 -1
  508. package/dist/tokens/layout.js +1 -1
  509. package/dist/tokens/lazy-styles.js +1 -1
  510. package/dist/tokens/palette-config.js +1 -1
  511. package/dist/tokens/palette.js +1 -1
  512. package/dist/tokens/resolve.js +1 -1
  513. package/dist/tokens/shadows.js +1 -1
  514. package/dist/tokens/sizes.js +1 -1
  515. package/dist/tokens/spacing.js +1 -1
  516. package/dist/tokens/typography.js +1 -1
  517. package/dist/utils/ResizeSensor.js +1 -1
  518. package/dist/utils/is-dev-env.js +1 -1
  519. package/dist/utils/modules.js +1 -1
  520. package/dist/utils/promise.js +1 -1
  521. package/dist/utils/raf.js +1 -1
  522. package/dist/utils/random.js +1 -1
  523. package/dist/utils/range.js +1 -1
  524. package/dist/utils/react/RenderCache.js +1 -1
  525. package/dist/utils/react/Slots.js +1 -1
  526. package/dist/utils/react/chain.js +1 -1
  527. package/dist/utils/react/disabledProps.js +1 -1
  528. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  529. package/dist/utils/react/index.js +1 -1
  530. package/dist/utils/react/interactions.js +1 -1
  531. package/dist/utils/react/isTextOnly.js +1 -1
  532. package/dist/utils/react/mapProps.js +1 -1
  533. package/dist/utils/react/mergeProps.js +1 -1
  534. package/dist/utils/react/nullableValue.js +1 -1
  535. package/dist/utils/react/resolveIcon.js +1 -1
  536. package/dist/utils/react/sharedStore.js +1 -1
  537. package/dist/utils/react/useBufferedValue.js +1 -1
  538. package/dist/utils/react/useCombinedRefs.js +1 -1
  539. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  540. package/dist/utils/react/useEventBus.js +1 -1
  541. package/dist/utils/react/useId.js +1 -1
  542. package/dist/utils/react/useIsDarwin.js +1 -1
  543. package/dist/utils/react/useKeySymbols.js +1 -1
  544. package/dist/utils/react/useLayoutEffect.js +1 -1
  545. package/dist/utils/react/useLocalStorage.js +1 -1
  546. package/dist/utils/react/useMergeStyles.js +1 -1
  547. package/dist/utils/react/usePopoverSync.js +1 -1
  548. package/dist/utils/react/useQaProps.js +1 -1
  549. package/dist/utils/react/useScheme.js +1 -1
  550. package/dist/utils/react/useViewportSize.js +1 -1
  551. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  552. package/dist/utils/selection.js +1 -1
  553. package/dist/utils/styles.js +1 -1
  554. package/dist/utils/tree.js +1 -1
  555. package/dist/utils/warnings.js +1 -1
  556. package/dist/version.js +2 -2
  557. package/docs/FieldProperties.md +25 -3
  558. package/docs/components/form/Field.md +6 -6
  559. package/docs/components/form/Form.md +3 -3
  560. package/docs/components/layout/Board.md +20 -2
  561. package/docs/components/overlays/DialogForm.md +0 -1
  562. package/docs/components/status/LoadingAnimation.md +9 -0
  563. package/package.json +1 -1
@@ -1,9 +1,10 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
5
- import { BoardHostContext } from "./board-context.js";
5
+ import { BoardHostContext, useBoardHost } from "./board-context.js";
6
6
  import { calcGridColWidth, calcGridItemPosition } from "./grid-core/calculate.js";
7
+ import { isDevEnv } from "../../../utils/is-dev-env.js";
7
8
  import { tasty } from "@tenphi/tasty";
8
9
  import { useEffect, useMemo, useRef, useState } from "react";
9
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -22,6 +23,60 @@ const AUTO_HEIGHT_TOLERANCE = 4;
22
23
  * hit-zone reads the same number so what you see is what you can grab.
23
24
  */
24
25
  const GRIP_SIZE = 10;
26
+ /**
27
+ * How far a `corner`-placed hit-zone may reach *inward*: exactly the half of the
28
+ * dot that is painted inside the widget, and no further. Reaching deeper would
29
+ * park an invisible resize target over the widget's own content — and when that
30
+ * content is a nested `Board`, the child in the bottom-right cell loses its own
31
+ * corner handle to it and cannot be resized at all (CUB-4166).
32
+ */
33
+ const CORNER_HIT_INWARD = GRIP_SIZE / 2;
34
+ /**
35
+ * Ceiling on how far the same hit-zone reaches *outward*, where there is only
36
+ * grid gutter to cover. Past a whole grip size the target stops reading as "that
37
+ * dot" and starts reading as "somewhere near the corner".
38
+ */
39
+ const CORNER_HIT_OUTWARD_MAX = GRIP_SIZE;
40
+ /**
41
+ * Thickness of an `outside` grip: the band, measured out from the widget's edge,
42
+ * that the affordance owns. It is the grid gutter where the gutter is big enough
43
+ * to hold it, and this floor where it is not — an affordance thinner than this
44
+ * stops being reliably clickable, so it overhangs the neighbour instead and the
45
+ * board says so in development.
46
+ */
47
+ const OUTSIDE_GRIP_MIN_BAND = 8;
48
+ /** Length of an `outside` edge grip along the edge it belongs to. */
49
+ const OUTSIDE_GRIP_LENGTH = 24;
50
+ /**
51
+ * Painted thickness of an `outside` edge grip, which is deliberately less than
52
+ * the band it sits in: the rest becomes a gap, so the control reads as a thing
53
+ * lying in the gutter rather than as an extension of the widget's own edge.
54
+ *
55
+ * Only the PAINT is inset. The element keeps the whole band, so the target does
56
+ * not shrink with the visual and the two still cannot drift apart.
57
+ */
58
+ const OUTSIDE_GRIP_THICKNESS = 4;
59
+ /** Gap between a widget's corner and its `outside` corner grip. */
60
+ const OUTSIDE_CORNER_GAP = 2;
61
+ /**
62
+ * How far an `outside` corner angle reaches out from the widget, given the gutter
63
+ * it has to reach into: the full `GRIP_SIZE` where the gutter can take it, and
64
+ * whatever is left over where it cannot.
65
+ *
66
+ * A corner grip sits in the square where the two gutters cross, which is empty —
67
+ * but only as far as the gutters go. At `GRIP_SIZE` stepped `OUTSIDE_CORNER_GAP`
68
+ * off the corner it reached 12px out, past the 8px gutter the defaults give it
69
+ * and onto the diagonal neighbour, swallowing that widget's own corner. Shrinking
70
+ * rather than warning because the angle still reads at 6px, and a grip that is a
71
+ * little small is not the same order of problem as one covering someone else's
72
+ * widget.
73
+ *
74
+ * `band` arrives floored at `OUTSIDE_GRIP_MIN_BAND`, so the result is never below
75
+ * `OUTSIDE_GRIP_MIN_BAND - OUTSIDE_CORNER_GAP`.
76
+ */
77
+ function cornerGripExtent(band) {
78
+ return Math.min(GRIP_SIZE, band - OUTSIDE_CORNER_GAP);
79
+ }
25
80
  const WidgetElement = tasty({
26
81
  qa: "BoardWidget",
27
82
  styles: {
@@ -83,37 +138,48 @@ const HandleElement = tasty({
83
138
  fill: "#clear",
84
139
  pointerEvents: "auto",
85
140
  "--handle-size": "3x",
86
- "--handle-overhang": {
141
+ "--handle-inset": "1x",
142
+ "--edge-overhang": "-8px",
143
+ "--corner-overhang": {
87
144
  "": "-8px",
88
- "placement=corner": `${-GRIP_SIZE / 2}px`
145
+ "placement=corner": "$corner-hit-overhang"
89
146
  },
90
- "--handle-inset": "1x",
91
- width: {
147
+ "--corner-size": {
92
148
  "": "$handle-size",
149
+ "placement=corner": "$corner-hit-size"
150
+ },
151
+ width: {
152
+ "": "$corner-size",
153
+ "[data-axis=\"e\"] | [data-axis=\"w\"]": "$handle-size",
93
154
  "[data-axis=\"n\"] | [data-axis=\"s\"]": "auto"
94
155
  },
95
156
  height: {
96
- "": "$handle-size",
157
+ "": "$corner-size",
158
+ "[data-axis=\"n\"] | [data-axis=\"s\"]": "$handle-size",
97
159
  "[data-axis=\"e\"] | [data-axis=\"w\"]": "auto"
98
160
  },
99
161
  top: {
100
162
  "": "auto",
101
- "[data-axis=\"n\"] | [data-axis=\"ne\"] | [data-axis=\"nw\"]": "$handle-overhang",
163
+ "[data-axis=\"ne\"] | [data-axis=\"nw\"]": "$corner-overhang",
164
+ "[data-axis=\"n\"]": "$edge-overhang",
102
165
  "[data-axis=\"e\"] | [data-axis=\"w\"]": "$handle-inset"
103
166
  },
104
167
  bottom: {
105
168
  "": "auto",
106
- "[data-axis=\"s\"] | [data-axis=\"se\"] | [data-axis=\"sw\"]": "$handle-overhang",
169
+ "[data-axis=\"se\"] | [data-axis=\"sw\"]": "$corner-overhang",
170
+ "[data-axis=\"s\"]": "$edge-overhang",
107
171
  "[data-axis=\"e\"] | [data-axis=\"w\"]": "$handle-inset"
108
172
  },
109
173
  left: {
110
174
  "": "auto",
111
- "[data-axis=\"w\"] | [data-axis=\"nw\"] | [data-axis=\"sw\"]": "$handle-overhang",
175
+ "[data-axis=\"nw\"] | [data-axis=\"sw\"]": "$corner-overhang",
176
+ "[data-axis=\"w\"]": "$edge-overhang",
112
177
  "[data-axis=\"n\"] | [data-axis=\"s\"]": "$handle-inset"
113
178
  },
114
179
  right: {
115
180
  "": "auto",
116
- "[data-axis=\"e\"] | [data-axis=\"ne\"] | [data-axis=\"se\"]": "$handle-overhang",
181
+ "[data-axis=\"ne\"] | [data-axis=\"se\"]": "$corner-overhang",
182
+ "[data-axis=\"e\"]": "$edge-overhang",
117
183
  "[data-axis=\"n\"] | [data-axis=\"s\"]": "$handle-inset"
118
184
  },
119
185
  cursor: {
@@ -187,6 +253,115 @@ const GripElement = tasty({
187
253
  }
188
254
  });
189
255
  /**
256
+ * An `outside` grip: the visible control and the hit-zone in one element.
257
+ *
258
+ * The two used to be separate boxes of different sizes, aligned by hand, which is
259
+ * how a 10px dot came to stand for a 24px target reaching back over the widget's
260
+ * own content (CUB-4166). Here they cannot drift apart, because there is only one
261
+ * box: what is painted is exactly what is grabbed.
262
+ *
263
+ * It lives in the grid gutter, beyond the widget's edge — never over the widget's
264
+ * content, so a nested board's children keep every pixel of their own. The band
265
+ * it occupies (`--grip-band-x` / `--grip-band-y`) is the gutter, floored at
266
+ * `OUTSIDE_GRIP_MIN_BAND`. Rendered in `GripLayerElement`, which nothing clips.
267
+ *
268
+ * Always hit-testable, painted only once revealed: you have to be able to hover
269
+ * it to reveal it, and `opacity` leaves hit-testing alone.
270
+ */
271
+ const OutsideGripElement = tasty({
272
+ qa: "BoardResizeHandle",
273
+ styles: {
274
+ position: "absolute",
275
+ boxSizing: "border-box",
276
+ pointerEvents: "auto",
277
+ touchAction: "none",
278
+ zIndex: 20,
279
+ opacity: {
280
+ "": 0,
281
+ revealed: 1
282
+ },
283
+ transition: "opacity 120ms ease-in-out, theme",
284
+ left: {
285
+ "": "auto",
286
+ "[data-axis=\"e\"] | [data-axis=\"ne\"] | [data-axis=\"se\"]": "100%",
287
+ "[data-axis=\"n\"] | [data-axis=\"s\"]": "50%"
288
+ },
289
+ right: {
290
+ "": "auto",
291
+ "[data-axis=\"w\"] | [data-axis=\"nw\"] | [data-axis=\"sw\"]": "100%"
292
+ },
293
+ top: {
294
+ "": "auto",
295
+ "[data-axis=\"s\"] | [data-axis=\"se\"] | [data-axis=\"sw\"]": "100%",
296
+ "[data-axis=\"e\"] | [data-axis=\"w\"]": "50%"
297
+ },
298
+ bottom: {
299
+ "": "auto",
300
+ "[data-axis=\"n\"] | [data-axis=\"ne\"] | [data-axis=\"nw\"]": "100%"
301
+ },
302
+ transform: {
303
+ "": "translate(0, 0)",
304
+ "[data-axis=\"e\"] | [data-axis=\"w\"]": "translate(0, -50%)",
305
+ "[data-axis=\"n\"] | [data-axis=\"s\"]": "translate(-50%, 0)",
306
+ "[data-axis=\"se\"]": `translate(${OUTSIDE_CORNER_GAP}px, ${OUTSIDE_CORNER_GAP}px)`,
307
+ "[data-axis=\"sw\"]": `translate(${-OUTSIDE_CORNER_GAP}px, ${OUTSIDE_CORNER_GAP}px)`,
308
+ "[data-axis=\"ne\"]": `translate(${OUTSIDE_CORNER_GAP}px, ${-OUTSIDE_CORNER_GAP}px)`,
309
+ "[data-axis=\"nw\"]": `translate(${-OUTSIDE_CORNER_GAP}px, ${-OUTSIDE_CORNER_GAP}px)`
310
+ },
311
+ width: {
312
+ "": "$outside-corner-w",
313
+ "[data-axis=\"e\"] | [data-axis=\"w\"]": "$grip-band-x",
314
+ "[data-axis=\"n\"] | [data-axis=\"s\"]": `${OUTSIDE_GRIP_LENGTH}px`
315
+ },
316
+ height: {
317
+ "": "$outside-corner-h",
318
+ "[data-axis=\"n\"] | [data-axis=\"s\"]": "$grip-band-y",
319
+ "[data-axis=\"e\"] | [data-axis=\"w\"]": `${OUTSIDE_GRIP_LENGTH}px`
320
+ },
321
+ padding: {
322
+ "": 0,
323
+ "[data-axis=\"e\"] | [data-axis=\"w\"]": "0 $grip-pad-x",
324
+ "[data-axis=\"n\"] | [data-axis=\"s\"]": "$grip-pad-y 0"
325
+ },
326
+ backgroundClip: "content-box",
327
+ fill: {
328
+ "": "#clear",
329
+ "[data-axis=\"n\"] | [data-axis=\"s\"] | [data-axis=\"e\"] | [data-axis=\"w\"]": "#dark.30",
330
+ "([data-axis=\"n\"] | [data-axis=\"s\"] | [data-axis=\"e\"] | [data-axis=\"w\"]) & resizing": "#dark.50"
331
+ },
332
+ borderTop: {
333
+ "": "0",
334
+ "[data-axis=\"ne\"] | [data-axis=\"nw\"]": "2px solid #dark.40"
335
+ },
336
+ borderBottom: {
337
+ "": "0",
338
+ "[data-axis=\"se\"] | [data-axis=\"sw\"]": "2px solid #dark.40"
339
+ },
340
+ borderLeft: {
341
+ "": "0",
342
+ "[data-axis=\"nw\"] | [data-axis=\"sw\"]": "2px solid #dark.40"
343
+ },
344
+ borderRight: {
345
+ "": "0",
346
+ "[data-axis=\"ne\"] | [data-axis=\"se\"]": "2px solid #dark.40"
347
+ },
348
+ radius: {
349
+ "": "round",
350
+ "[data-axis=\"se\"]": "4px bottom-right",
351
+ "[data-axis=\"sw\"]": "4px bottom-left",
352
+ "[data-axis=\"ne\"]": "4px top-right",
353
+ "[data-axis=\"nw\"]": "4px top-left"
354
+ },
355
+ cursor: {
356
+ "": "default",
357
+ "[data-axis=\"n\"] | [data-axis=\"s\"]": "ns-resize",
358
+ "[data-axis=\"e\"] | [data-axis=\"w\"]": "ew-resize",
359
+ "[data-axis=\"ne\"] | [data-axis=\"sw\"]": "nesw-resize",
360
+ "[data-axis=\"nw\"] | [data-axis=\"se\"]": "nwse-resize"
361
+ }
362
+ }
363
+ });
364
+ /**
190
365
  * Where the corner grips are drawn when `resizeGripPlacement` is `'corner'`.
191
366
  *
192
367
  * `WidgetElement` clips its children (`overflow: hidden`, and that clipping is
@@ -198,9 +373,17 @@ const GripElement = tasty({
198
373
  *
199
374
  * It sits above a resting widget (`zIndex: 1`) so a grip is never hidden by the
200
375
  * neighbour it overhangs, and below a dragged or resized one (`zIndex: 10`) so a
201
- * lifted widget still paints over its neighbours' grips. The board's own content
202
- * box still clips it, so a grip on a widget flush against the board edge needs
203
- * `containerPadding` >= half the grip size to show in full.
376
+ * lifted widget still paints over its neighbours' grips.
377
+ *
378
+ * Nothing clips this layer — `BoardElement` sets no `overflow` so a grip on a
379
+ * widget flush against its board's edge (`containerPadding: [0, 0]`, which
380
+ * `isAligned` sets) is painted *outside* the board's content box rather than
381
+ * cropped to fit inside it. Inside a nested board that puts it exactly on the
382
+ * host widget's own corner: the two corners are the same point, so the two hit
383
+ * zones cannot be separated by geometry, and `z-index` cannot arbitrate either
384
+ * (this layer is a sibling of the host, so it outranks the whole nested subtree
385
+ * whatever the inner handle asks for). `ResizeHandle` settles it by depth
386
+ * instead.
204
387
  */
205
388
  const GripLayerElement = tasty({
206
389
  qa: "BoardResizeGripLayer",
@@ -316,7 +499,89 @@ function isCornerAxis(axis) {
316
499
  function isEdgeAxis(axis) {
317
500
  return axis.length === 1;
318
501
  }
319
- function ResizeHandle({ axis, placement, onResize }) {
502
+ /** `data-qa` of a resize hit-zone, as published by `HandleElement`. */
503
+ const HANDLE_QA = "BoardResizeHandle";
504
+ /**
505
+ * The deepest resize hit-zone under `point` belonging to a board nested deeper
506
+ * than `depth`, or `null` when the caller is already the innermost one there.
507
+ *
508
+ * Asked of the document rather than of a registry, deliberately: the two handles
509
+ * belong to different boards, which share no owner below the app root, and "what
510
+ * is under this pixel" is the browser's own question to answer.
511
+ * `elementsFromPoint` skips `pointer-events: none` nodes, so everything it hands
512
+ * back is something the pointer could genuinely have landed on.
513
+ */
514
+ function findDeeperHandle(point, depth) {
515
+ let stack;
516
+ try {
517
+ if (typeof document.elementsFromPoint !== "function") return null;
518
+ stack = document.elementsFromPoint(point.x, point.y);
519
+ } catch {
520
+ return null;
521
+ }
522
+ let deepest = null;
523
+ let deepestDepth = depth;
524
+ for (const node of stack) {
525
+ if (!(node instanceof HTMLElement)) continue;
526
+ if (node.dataset.qa !== HANDLE_QA) continue;
527
+ const nodeDepth = Number(node.dataset.boardDepth);
528
+ if (!Number.isFinite(nodeDepth) || nodeDepth <= deepestDepth) continue;
529
+ deepest = node;
530
+ deepestDepth = nodeDepth;
531
+ }
532
+ return deepest;
533
+ }
534
+ /**
535
+ * Hand a press to `target` unchanged.
536
+ *
537
+ * Safe because of how `useMove` (which owns the resize gesture) tracks a
538
+ * pointer: through `window` listeners matched on `pointerId`, never through
539
+ * `setPointerCapture`. So only the opening `pointerdown` is re-dispatched — every
540
+ * real `pointermove`/`pointerup` that follows drives the forwarded gesture just
541
+ * as it would drive a direct one.
542
+ */
543
+ function forwardPointerDown(e, target) {
544
+ const forwarded = new PointerEvent("pointerdown", {
545
+ bubbles: true,
546
+ cancelable: true,
547
+ composed: true,
548
+ pointerId: e.pointerId,
549
+ pointerType: e.pointerType,
550
+ isPrimary: e.isPrimary,
551
+ button: e.button,
552
+ buttons: e.buttons,
553
+ clientX: e.clientX,
554
+ clientY: e.clientY,
555
+ screenX: e.screenX,
556
+ screenY: e.screenY,
557
+ shiftKey: e.shiftKey,
558
+ ctrlKey: e.ctrlKey,
559
+ altKey: e.altKey,
560
+ metaKey: e.metaKey
561
+ });
562
+ Object.defineProperty(forwarded, "pageX", {
563
+ value: e.pageX,
564
+ configurable: true
565
+ });
566
+ Object.defineProperty(forwarded, "pageY", {
567
+ value: e.pageY,
568
+ configurable: true
569
+ });
570
+ target.dispatchEvent(forwarded);
571
+ }
572
+ /**
573
+ * Warnings already emitted, keyed by their own text. A widget that yields its
574
+ * only resize affordance is a layout mistake, not an event: it is the same
575
+ * mistake every single time the user reaches for that corner, so it is worth
576
+ * saying exactly once.
577
+ */
578
+ const yieldWarnings = /* @__PURE__ */ new Set();
579
+ function warnOnce(message) {
580
+ if (!message || yieldWarnings.has(message)) return;
581
+ yieldWarnings.add(message);
582
+ console.warn(message);
583
+ }
584
+ function ResizeHandle({ axis, placement, boardDepth, yieldWarning, isRevealed, isResizing, onResize }) {
320
585
  const { moveProps } = useMove({
321
586
  onMoveStart() {
322
587
  onResize(axis, "start", 0, 0);
@@ -328,15 +593,50 @@ function ResizeHandle({ axis, placement, onResize }) {
328
593
  onResize(axis, "end", 0, 0);
329
594
  }
330
595
  });
331
- const stopProps = {
596
+ const handleProps = mergeProps$1({
332
597
  onPointerDown: (e) => e.stopPropagation(),
333
598
  onMouseDown: (e) => e.stopPropagation(),
334
599
  onTouchStart: (e) => e.stopPropagation()
600
+ }, moveProps);
601
+ /**
602
+ * Two resize hit-zones can want the same pixel. A `corner`-placed zone
603
+ * straddles its widget's corner, and in a nested board that sits flush — which
604
+ * `isAligned` guarantees, since it pins `containerPadding` to `[0, 0]` — the
605
+ * host widget's corner and its bottom-right child's corner ARE one point.
606
+ * Geometry has nothing left to separate them with, and `z-index` cannot
607
+ * arbitrate either (see `GripLayerElement`), so the tie is broken here: the
608
+ * innermost handle takes the press. It is the more specific target, and the
609
+ * outer widget can still be resized from its edges — where it has any, which is
610
+ * what `yieldWarning` is about.
611
+ *
612
+ * Decided on the press rather than on hover so that touch, which has no hover
613
+ * to decide on, is covered by the same code. Nothing is lost by deciding this
614
+ * late: both handles ask for the same resize cursor anyway.
615
+ */
616
+ const onPointerDown = (e) => {
617
+ const deeper = findDeeperHandle({
618
+ x: e.clientX,
619
+ y: e.clientY
620
+ }, boardDepth);
621
+ if (deeper) {
622
+ e.stopPropagation();
623
+ e.preventDefault();
624
+ warnOnce(yieldWarning);
625
+ forwardPointerDown(e, deeper);
626
+ return;
627
+ }
628
+ handleProps.onPointerDown?.(e);
335
629
  };
336
- return /* @__PURE__ */ jsx(HandleElement, {
630
+ return /* @__PURE__ */ jsx(placement === "outside" ? OutsideGripElement : HandleElement, {
337
631
  "data-axis": axis,
338
- mods: { placement },
339
- ...mergeProps$1(stopProps, moveProps),
632
+ "data-board-depth": boardDepth,
633
+ mods: {
634
+ placement,
635
+ revealed: isRevealed,
636
+ resizing: isResizing
637
+ },
638
+ ...handleProps,
639
+ onPointerDown,
340
640
  "aria-hidden": "true"
341
641
  });
342
642
  }
@@ -347,7 +647,7 @@ function ResizeHandle({ axis, placement, onResize }) {
347
647
  * renders into the shared overlay portal so it can float outside its board.
348
648
  */
349
649
  function WidgetHost(props) {
350
- const { boardId, item, positionParams, registration, isCard, hoverRing, cornerChrome, cornerChromePlacement = "ne", mods: customMods, styles: widgetStyles, isDraggable, isResizable, resizeHandles, resizeGripPlacement, isAutoHeight, qa, dragCancel, dragHandle, registry, dragState, settled, onResize, onAutoHeight, onDragLifecycle, isSelectable = false, isSelected = false, isPreSelected = false, selectionCancel, selectedHintId, onSelect, onSelectionReset, selectModifierKey = "metaKey" } = props;
650
+ const { boardId, item, positionParams, registration, isCard, hoverRing, cornerChrome, cornerChromePlacement = "ne", mods: customMods, styles: widgetStyles, isDraggable, isResizable, resizeHandles, resizeGripPlacement, boardDepth, isAutoHeight, qa, dragCancel, dragHandle, registry, dragState, settled, onResize, onAutoHeight, onDragLifecycle, isSelectable = false, isSelected = false, isPreSelected = false, selectionCancel, selectedHintId, onSelect, onSelectionReset, selectModifierKey = "metaKey" } = props;
351
651
  const { t } = useI18n();
352
652
  const ariaLabel = registration?.["aria-label"];
353
653
  const hostRef = useRef(null);
@@ -361,10 +661,26 @@ function WidgetHost(props) {
361
661
  const neededRows = Math.max(1, Math.ceil((neededPx + positionParams.margin[1] - AUTO_HEIGHT_TOLERANCE) / step));
362
662
  onAutoHeight(item.i, neededRows);
363
663
  });
664
+ const [nestedBoardCount, setNestedBoardCount] = useState(0);
665
+ const registerNestedBoard = useEvent(() => {
666
+ setNestedBoardCount((count) => count + 1);
667
+ return () => setNestedBoardCount((count) => Math.max(0, count - 1));
668
+ });
669
+ const [descendantHoverCount, setDescendantHoverCount] = useState(0);
670
+ const setDescendantHovered = useEvent((hovered) => {
671
+ setDescendantHoverCount((count) => Math.max(0, count + (hovered ? 1 : -1)));
672
+ });
364
673
  const hostValue = useMemo(() => ({
365
674
  isAutoHeight,
366
- requestHeightDeficit
367
- }), [isAutoHeight, requestHeightDeficit]);
675
+ requestHeightDeficit,
676
+ registerNestedBoard,
677
+ setDescendantHovered
678
+ }), [
679
+ isAutoHeight,
680
+ requestHeightDeficit,
681
+ registerNestedBoard,
682
+ setDescendantHovered
683
+ ]);
368
684
  const useOverlay = isActiveDrag && dragState?.pointerType !== "keyboard";
369
685
  const [isResizing, setIsResizing] = useState(false);
370
686
  const [isFocusWithin, setIsFocusWithin] = useState(false);
@@ -372,7 +688,15 @@ function WidgetHost(props) {
372
688
  const { hoverProps: layerHoverProps, isHovered: isLayerHovered } = useHover({ isDisabled: isActiveDrag });
373
689
  const { focusProps, isFocusVisible } = useFocusRing();
374
690
  const { focusWithinProps } = useFocusWithin({ onFocusWithinChange: setIsFocusWithin });
375
- const gripsRevealed = isResizable && !item.static && !isActiveDrag && (isHovered || isLayerHovered || isFocusWithin || isResizing);
691
+ const placement = resizeGripPlacement ?? (nestedBoardCount > 0 ? "outside" : "inside");
692
+ const reportHoverToHost = useBoardHost()?.setDescendantHovered;
693
+ const isSelfHovered = isHovered || isLayerHovered;
694
+ useEffect(() => {
695
+ if (!reportHoverToHost || !isSelfHovered) return;
696
+ reportHoverToHost(true);
697
+ return () => reportHoverToHost(false);
698
+ }, [reportHoverToHost, isSelfHovered]);
699
+ const gripsRevealed = isResizable && !item.static && !isActiveDrag && !descendantHoverCount && (isSelfHovered || isFocusWithin || isResizing);
376
700
  const { moveProps } = useMove({
377
701
  onMoveStart(e) {
378
702
  if (!isDraggable) return;
@@ -550,15 +874,22 @@ function WidgetHost(props) {
550
874
  selected: isSelected,
551
875
  "pre-selected": isPreSelected && !isSelected
552
876
  };
877
+ const cornerYieldWarning = isDevEnv() && !resizeHandles.some(isEdgeAxis) ? `Board: widget "${item.i}" yielded a resize press to a handle of a board nested inside it, because their handles sit on the same point (a nested board with no \`containerPadding\` puts its last child's corner exactly on its host's). The innermost handle wins, and this widget has only corner \`resizeHandles\`, so it can no longer be resized there. Give it an edge axis to fall back on (e.g. \`resizeHandles={['se', 'e', 's']}\`), or give the nested board some \`containerPadding\` so the two corners stop coinciding.` : void 0;
878
+ if (isDevEnv() && placement === "outside") {
879
+ const [marginX, marginY] = positionParams.margin;
880
+ if (marginX < OUTSIDE_GRIP_MIN_BAND || marginY < OUTSIDE_GRIP_MIN_BAND) warnOnce(`Board: widget "${item.i}" holds a nested board, so its resize grips are drawn outside its box - but this board's \`margin\` is [${marginX}, ${marginY}] and a grip needs ${OUTSIDE_GRIP_MIN_BAND}px of gutter to sit in. The grips keep their size and overhang the neighbouring widgets. Raise \`margin\` to at least ${OUTSIDE_GRIP_MIN_BAND}px on both axes, or set \`resizeGripPlacement\` explicitly to put them back inside.`);
881
+ }
553
882
  const content = /* @__PURE__ */ jsxs(BoardHostContext.Provider, {
554
883
  value: hostValue,
555
- children: [registration?.content, isResizable && !item.static ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
556
- (resizeGripPlacement === "corner" ? resizeHandles.filter((axis) => !isCornerAxis(axis)) : resizeHandles).map((axis) => /* @__PURE__ */ jsx(ResizeHandle, {
884
+ children: [registration?.content, isResizable && !item.static && placement !== "outside" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
885
+ (placement === "corner" ? resizeHandles.filter((axis) => !isCornerAxis(axis)) : resizeHandles).map((axis) => /* @__PURE__ */ jsx(ResizeHandle, {
557
886
  axis,
558
- placement: resizeGripPlacement,
887
+ placement,
888
+ boardDepth,
889
+ yieldWarning: cornerYieldWarning,
559
890
  onResize: handleResize
560
891
  }, axis)),
561
- resizeGripPlacement === "corner" ? null : resizeHandles.filter(isCornerAxis).map((axis) => /* @__PURE__ */ jsx(GripElement, {
892
+ placement === "corner" ? null : resizeHandles.filter(isCornerAxis).map((axis) => /* @__PURE__ */ jsx(GripElement, {
562
893
  "data-axis": axis,
563
894
  mods: {
564
895
  revealed: gripsRevealed,
@@ -593,7 +924,20 @@ function WidgetHost(props) {
593
924
  width: memberRect.width,
594
925
  height: memberRect.height
595
926
  } : null;
927
+ const cornerHitOutward = Math.min(CORNER_HIT_OUTWARD_MAX, Math.max(CORNER_HIT_INWARD, Math.min(positionParams.margin[0], positionParams.margin[1]) / 2));
928
+ const gripBand = [Math.max(OUTSIDE_GRIP_MIN_BAND, positionParams.margin[0]), Math.max(OUTSIDE_GRIP_MIN_BAND, positionParams.margin[1])];
929
+ const cornerHitVars = {
930
+ "--corner-hit-size": `${CORNER_HIT_INWARD + cornerHitOutward}px`,
931
+ "--corner-hit-overhang": `${-cornerHitOutward}px`,
932
+ "--grip-band-x": `${gripBand[0]}px`,
933
+ "--grip-band-y": `${gripBand[1]}px`,
934
+ "--grip-pad-x": `${Math.max(0, (gripBand[0] - OUTSIDE_GRIP_THICKNESS) / 2)}px`,
935
+ "--grip-pad-y": `${Math.max(0, (gripBand[1] - OUTSIDE_GRIP_THICKNESS) / 2)}px`,
936
+ "--outside-corner-w": `${cornerGripExtent(gripBand[0])}px`,
937
+ "--outside-corner-h": `${cornerGripExtent(gripBand[1])}px`
938
+ };
596
939
  const hostStyle = {
940
+ ...cornerHitVars,
597
941
  left: `${pos.left}px`,
598
942
  top: `${pos.top}px`,
599
943
  width: `${pos.width}px`,
@@ -637,12 +981,13 @@ function WidgetHost(props) {
637
981
  "aria-hidden": "true",
638
982
  children: content
639
983
  }), overlayNode) : null;
640
- const cornerAxes = isResizable && !item.static && resizeGripPlacement === "corner" ? resizeHandles.filter(isCornerAxis) : [];
984
+ const layerAxes = isResizable && !item.static ? placement === "outside" ? resizeHandles : placement === "corner" ? resizeHandles.filter(isCornerAxis) : [] : [];
641
985
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
642
986
  host,
643
- (cornerAxes.length || cornerChrome) && !floatInOverlay ? /* @__PURE__ */ jsxs(GripLayerElement, {
987
+ (layerAxes.length || cornerChrome) && !floatInOverlay ? /* @__PURE__ */ jsxs(GripLayerElement, {
644
988
  ...layerHoverProps,
645
989
  style: {
990
+ ...cornerHitVars,
646
991
  left: `${pos.left}px`,
647
992
  top: `${pos.top}px`,
648
993
  width: `${pos.width}px`,
@@ -650,12 +995,16 @@ function WidgetHost(props) {
650
995
  },
651
996
  "aria-hidden": cornerChrome ? void 0 : "true",
652
997
  children: [
653
- cornerAxes.map((axis) => /* @__PURE__ */ jsx(ResizeHandle, {
998
+ layerAxes.map((axis) => /* @__PURE__ */ jsx(ResizeHandle, {
654
999
  axis,
655
- placement: "corner",
1000
+ placement,
1001
+ boardDepth,
1002
+ yieldWarning: cornerYieldWarning,
1003
+ isRevealed: gripsRevealed,
1004
+ isResizing,
656
1005
  onResize: handleResize
657
1006
  }, `handle-${axis}`)),
658
- cornerAxes.map((axis) => /* @__PURE__ */ jsx(GripElement, {
1007
+ placement === "outside" ? null : layerAxes.map((axis) => /* @__PURE__ */ jsx(GripElement, {
659
1008
  "data-axis": axis,
660
1009
  mods: {
661
1010
  revealed: gripsRevealed,