@cube-dev/ui-kit 0.0.0-canary-dcbc0fb → 0.0.0-canary-3483fd4

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/CHANGELOG.md +31 -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.d.ts +4 -4
  17. package/dist/components/Root.js +1 -1
  18. package/dist/components/Root.js.map +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -2
  42. package/dist/components/actions/use-anchored-menu.js.map +1 -1
  43. package/dist/components/actions/use-context-menu.js +1 -2
  44. package/dist/components/actions/use-context-menu.js.map +1 -1
  45. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  46. package/dist/components/content/Alert/Alert.js +1 -1
  47. package/dist/components/content/Alert/use-alert.js +1 -1
  48. package/dist/components/content/Avatar/Avatar.js +1 -1
  49. package/dist/components/content/Badge/Badge.js +1 -1
  50. package/dist/components/content/Card/Card.js +1 -1
  51. package/dist/components/content/Content.js +1 -1
  52. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  53. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  54. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  55. package/dist/components/content/Divider.js +1 -1
  56. package/dist/components/content/Footer.js +1 -1
  57. package/dist/components/content/Header.js +1 -1
  58. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  59. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  60. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  61. package/dist/components/content/Item/Item.js +1 -1
  62. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  63. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  64. package/dist/components/content/Layout/GridLayout.js +1 -1
  65. package/dist/components/content/Layout/Layout.js +1 -1
  66. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  67. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  68. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  69. package/dist/components/content/Layout/LayoutContent.js +1 -1
  70. package/dist/components/content/Layout/LayoutContext.js +1 -1
  71. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  72. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  73. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  74. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  75. package/dist/components/content/Layout/LayoutPane.js +1 -1
  76. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  77. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  78. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  79. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  80. package/dist/components/content/Layout/index.js +1 -1
  81. package/dist/components/content/Layout/utils.js +1 -1
  82. package/dist/components/content/Paragraph.js +1 -1
  83. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  84. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  85. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  86. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  87. package/dist/components/content/Result/Result.js +1 -1
  88. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  89. package/dist/components/content/Tag/Tag.js +1 -1
  90. package/dist/components/content/Text.d.ts +14 -14
  91. package/dist/components/content/Text.js +1 -1
  92. package/dist/components/content/TextItem/TextItem.js +1 -1
  93. package/dist/components/content/Title.js +1 -1
  94. package/dist/components/content/Tree/Tree.js +1 -1
  95. package/dist/components/content/Tree/TreeNode.js +1 -1
  96. package/dist/components/content/Tree/styled.js +1 -1
  97. package/dist/components/content/Tree/tree-index.js +1 -1
  98. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  99. package/dist/components/content/Tree/use-load-data.js +1 -1
  100. package/dist/components/content/highlightText.js +1 -1
  101. package/dist/components/content/use-auto-tooltip.js +1 -1
  102. package/dist/components/data/DataTable/DataTable.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  106. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -2
  108. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  109. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  110. package/dist/components/data/TableBase/RowCollection.js +1 -1
  111. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  112. package/dist/components/data/TableBase/TableRow.js +1 -1
  113. package/dist/components/data/TableBase/TableView.js +2 -2
  114. package/dist/components/data/TableBase/TableView.js.map +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.js +1 -1
  119. package/dist/components/data/TableBase/types.js +1 -1
  120. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  121. package/dist/components/data/TableBase/use-column-order.js +1 -1
  122. package/dist/components/data/TableBase/use-container-width.js +1 -1
  123. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  124. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  125. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  126. package/dist/components/data/TableBase/use-table-search.js +1 -1
  127. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  128. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  129. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  130. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  131. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  132. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  133. package/dist/components/fields/Checkbox/context.js +1 -1
  134. package/dist/components/fields/ColorInput/ColorInput.js +2 -3
  135. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  136. package/dist/components/fields/ColorPicker/ColorPicker.js +2 -2
  137. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  138. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  139. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  140. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  141. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  142. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  143. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  144. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  148. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  149. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  150. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  151. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  152. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  156. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  157. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  158. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  159. package/dist/components/fields/DatePicker/period.js +1 -1
  160. package/dist/components/fields/DatePicker/props.js +1 -1
  161. package/dist/components/fields/DatePicker/utils.js +1 -1
  162. package/dist/components/fields/FileInput/FileInput.js +1 -1
  163. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -2
  164. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  165. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -2
  166. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  167. package/dist/components/fields/Input/Input.js +1 -1
  168. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  169. package/dist/components/fields/ListBox/ListBox.js +1 -1
  170. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -4
  171. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  172. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  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 -3
  178. package/dist/components/fields/Picker/Picker.js.map +1 -1
  179. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  180. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -2
  181. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  182. package/dist/components/fields/RadioGroup/context.js +1 -1
  183. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  184. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  185. package/dist/components/fields/Select/Select.js +1 -1
  186. package/dist/components/fields/Slider/Gradation.js +1 -1
  187. package/dist/components/fields/Slider/HueSlider.js +2 -17
  188. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  189. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  190. package/dist/components/fields/Slider/Slider.js +1 -1
  191. package/dist/components/fields/Slider/SliderBase.js +1 -1
  192. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  193. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  194. package/dist/components/fields/Slider/elements.js +1 -1
  195. package/dist/components/fields/Slider/index.js +1 -1
  196. package/dist/components/fields/Switch/Switch.js +1 -1
  197. package/dist/components/fields/TextArea/TextArea.js +1 -1
  198. package/dist/components/fields/TextInput/TextInput.js +1 -1
  199. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  200. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  201. package/dist/components/fields/color/ColorPanel.js +1 -1
  202. package/dist/components/fields/{ColorSwatch → color}/ColorSwatch.d.ts +2 -8
  203. package/dist/components/fields/{ColorSwatch → color}/ColorSwatch.js +6 -14
  204. package/dist/components/fields/color/ColorSwatch.js.map +1 -0
  205. package/dist/components/fields/color/channels.js +1 -1
  206. package/dist/components/fields/color/color.js +1 -1
  207. package/dist/components/fields/color/context.js +1 -1
  208. package/dist/components/fields/color/index.d.ts +1 -0
  209. package/dist/components/fields/index.d.ts +1 -2
  210. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  211. package/dist/components/form/Form/Field.js +1 -1
  212. package/dist/components/form/Form/Form.js +1 -1
  213. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  214. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  215. package/dist/components/form/Form/SubmitError.js +1 -1
  216. package/dist/components/form/Form/index.js +1 -1
  217. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  218. package/dist/components/form/Form/use-field/use-field.js +1 -1
  219. package/dist/components/form/Form/use-form.js +1 -1
  220. package/dist/components/form/Form/validation.js +1 -1
  221. package/dist/components/form/Label.js +1 -1
  222. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  223. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  224. package/dist/components/form/validation/use-validation-props.js +1 -1
  225. package/dist/components/form/wrapper.js +1 -1
  226. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  227. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  228. package/dist/components/layout/Board/Board.js +1 -1
  229. package/dist/components/layout/Board/BoardProvider.js +1 -1
  230. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  231. package/dist/components/layout/Board/Widget.js +1 -1
  232. package/dist/components/layout/Board/WidgetHost.js +1 -1
  233. package/dist/components/layout/Board/board-context.js +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.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 +1 -1
  241. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  242. package/dist/components/layout/Board/index.js +1 -1
  243. package/dist/components/layout/Board/responsive-utils.js +1 -1
  244. package/dist/components/layout/Board/use-board-layout.js +1 -1
  245. package/dist/components/layout/Board/use-board-registry.js +1 -1
  246. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  247. package/dist/components/layout/Board/use-board-selection.js +1 -1
  248. package/dist/components/layout/Flex.js +1 -1
  249. package/dist/components/layout/Flow.js +1 -1
  250. package/dist/components/layout/Grid.js +1 -1
  251. package/dist/components/layout/Panel.js +1 -1
  252. package/dist/components/layout/Prefix.js +1 -1
  253. package/dist/components/layout/ResizablePanel.js +1 -1
  254. package/dist/components/layout/Space.js +1 -1
  255. package/dist/components/layout/Suffix.js +1 -1
  256. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  257. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  258. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  259. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  260. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  261. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  262. package/dist/components/navigation/Tabs/TabPicker.js +1 -2
  263. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  264. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  265. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  266. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  267. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  268. package/dist/components/navigation/Tabs/styled.js +1 -1
  269. package/dist/components/navigation/Tabs/types.js +1 -1
  270. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  271. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  272. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  273. package/dist/components/other/Calendar/Calendar.js +1 -1
  274. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  275. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  276. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  277. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  278. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  279. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  280. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  281. package/dist/components/other/Calendar/styled.js +1 -1
  282. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  283. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  284. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  285. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  286. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  287. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  288. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  289. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  290. package/dist/components/overlays/Dialog/context.js +1 -1
  291. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  292. package/dist/components/overlays/Modal/Modal.js +1 -1
  293. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  294. package/dist/components/overlays/Modal/Overlay.js +1 -2
  295. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  296. package/dist/components/overlays/Modal/Popover.js +1 -1
  297. package/dist/components/overlays/Modal/Tray.js +1 -1
  298. package/dist/components/overlays/Modal/Underlay.js +1 -1
  299. package/dist/components/overlays/Notifications/Notification.js +1 -1
  300. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  301. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  302. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  303. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  304. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -2
  305. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  306. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  307. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  308. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  309. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  310. package/dist/components/overlays/Notifications/index.js +1 -1
  311. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  312. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  313. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  314. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  315. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  316. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  317. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  318. package/dist/components/overlays/Toast/index.js +1 -1
  319. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  320. package/dist/components/overlays/Toast/useToast.js +1 -1
  321. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  322. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  323. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  324. package/dist/components/overlays/Tooltip/context.js +1 -1
  325. package/dist/components/portal/Portal.js +1 -1
  326. package/dist/components/portal/PortalProvider.js +1 -1
  327. package/dist/components/portal/usePortal.js +1 -1
  328. package/dist/components/shared/DraggableCollection.js +1 -1
  329. package/dist/components/shared/InvalidIcon.js +1 -1
  330. package/dist/components/shared/ValidIcon.js +1 -1
  331. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  332. package/dist/components/status/Spin/Cube.js +1 -1
  333. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  334. package/dist/components/status/Spin/Spin.js +1 -1
  335. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  336. package/dist/data/item-themes.js +1 -1
  337. package/dist/data/themes.js +1 -1
  338. package/dist/eslint-plugin/defaults.generated.js +16 -11
  339. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  340. package/dist/eslint-plugin/index.d.ts +6 -0
  341. package/dist/eslint-plugin/index.js +9 -5
  342. package/dist/eslint-plugin/index.js.map +1 -1
  343. package/dist/eslint-plugin/rules/no-redundant-default-prop.d.ts +17 -0
  344. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +16 -10
  345. package/dist/eslint-plugin/rules/no-redundant-default-prop.js.map +1 -1
  346. package/dist/i18n/I18nProvider.js +1 -1
  347. package/dist/i18n/createFormatter.js +1 -1
  348. package/dist/i18n/index.js +1 -1
  349. package/dist/i18n/instance.js +1 -1
  350. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  351. package/dist/i18n/locales/en-US/uikit.js +1 -1
  352. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  353. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  354. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  355. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  356. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  357. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  358. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  359. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  360. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  361. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  362. package/dist/i18n/locales.js +1 -1
  363. package/dist/i18n/useFormatter.js +1 -1
  364. package/dist/i18n/useI18n.js +1 -1
  365. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  366. package/dist/icons/AdjustmentsIcon.js +1 -1
  367. package/dist/icons/AiIcon.js +1 -1
  368. package/dist/icons/AreaChartIcon.js +1 -1
  369. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  370. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  371. package/dist/icons/BackwardIcon.js +1 -1
  372. package/dist/icons/BarChartIcon.js +1 -1
  373. package/dist/icons/BellFilledIcon.js +1 -1
  374. package/dist/icons/BellIcon.js +1 -1
  375. package/dist/icons/BooleanIcon.js +1 -1
  376. package/dist/icons/CalendarEditIcon.js +1 -1
  377. package/dist/icons/CalendarIcon.js +1 -1
  378. package/dist/icons/CaretDownIcon.js +1 -1
  379. package/dist/icons/CaretUpIcon.js +1 -1
  380. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  381. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  382. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  383. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  384. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  385. package/dist/icons/ChartBarLineIcon.js +1 -1
  386. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  387. package/dist/icons/ChartBarStackedIcon.js +1 -1
  388. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  389. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  390. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  391. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  392. package/dist/icons/ChartBubbleIcon.js +1 -1
  393. package/dist/icons/ChartDonut2Icon.js +1 -1
  394. package/dist/icons/ChartFunnelIcon.js +1 -1
  395. package/dist/icons/ChartHeatmapIcon.js +1 -1
  396. package/dist/icons/ChartKPIIcon.js +1 -1
  397. package/dist/icons/ChartPie2Icon.js +1 -1
  398. package/dist/icons/ChartScatterIcon.js +1 -1
  399. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  400. package/dist/icons/CheckCircleIcon.js +1 -1
  401. package/dist/icons/CheckIcon.js +1 -1
  402. package/dist/icons/CircleFilledIcon.js +1 -1
  403. package/dist/icons/ClearIcon.js +1 -1
  404. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  405. package/dist/icons/CloseCircleIcon.js +1 -1
  406. package/dist/icons/CloseIcon.js +1 -1
  407. package/dist/icons/CodeIcon.js +1 -1
  408. package/dist/icons/ColumnTotalIcon.js +1 -1
  409. package/dist/icons/CopyIcon.js +1 -1
  410. package/dist/icons/CountIcon.js +1 -1
  411. package/dist/icons/CubeIcon.js +1 -1
  412. package/dist/icons/CubePauseIcon.js +1 -1
  413. package/dist/icons/CubePlayIcon.js +1 -1
  414. package/dist/icons/CurrencyDollarIcon.js +1 -1
  415. package/dist/icons/DangerIcon.js +1 -1
  416. package/dist/icons/DashboardIcon.js +1 -1
  417. package/dist/icons/DatabaseIcon.js +1 -1
  418. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  419. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  420. package/dist/icons/DirectionIcon.js +1 -1
  421. package/dist/icons/DonutIcon.js +1 -1
  422. package/dist/icons/DownIcon.js +1 -1
  423. package/dist/icons/EditIcon.js +1 -1
  424. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  425. package/dist/icons/ExclamationCircleIcon.js +1 -1
  426. package/dist/icons/ExclamationIcon.js +1 -1
  427. package/dist/icons/EyeIcon.js +1 -1
  428. package/dist/icons/EyeInvisibleIcon.js +1 -1
  429. package/dist/icons/FilterIcon.js +1 -1
  430. package/dist/icons/FolderFilledIcon.js +1 -1
  431. package/dist/icons/FolderIcon.js +1 -1
  432. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  433. package/dist/icons/FolderOpenIcon.js +1 -1
  434. package/dist/icons/ForwardIcon.js +1 -1
  435. package/dist/icons/GripVerticalIcon.js +1 -1
  436. package/dist/icons/HierarchyIcon.js +1 -1
  437. package/dist/icons/HierarchyOpenIcon.js +1 -1
  438. package/dist/icons/Icon.js +1 -1
  439. package/dist/icons/InfoCircleIcon.js +1 -1
  440. package/dist/icons/InfoIcon.js +1 -1
  441. package/dist/icons/KeyIcon.js +1 -1
  442. package/dist/icons/LeftIcon.js +1 -1
  443. package/dist/icons/LineChartIcon.js +1 -1
  444. package/dist/icons/LoadingIcon.js +1 -1
  445. package/dist/icons/LockFilledIcon.js +1 -1
  446. package/dist/icons/LockIcon.js +1 -1
  447. package/dist/icons/MoreIcon.js +1 -1
  448. package/dist/icons/NotAllowedIcon.js +1 -1
  449. package/dist/icons/Number123Icon.js +1 -1
  450. package/dist/icons/NumberIcon.js +1 -1
  451. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  452. package/dist/icons/PauseCircleIcon.js +1 -1
  453. package/dist/icons/PauseIcon.js +1 -1
  454. package/dist/icons/PercentageIcon.js +1 -1
  455. package/dist/icons/PieChartIcon.js +1 -1
  456. package/dist/icons/PipetteIcon.js +1 -1
  457. package/dist/icons/PlayCircleIcon.js +1 -1
  458. package/dist/icons/PlayIcon.js +1 -1
  459. package/dist/icons/PlusIcon.js +1 -1
  460. package/dist/icons/ProgressBarIcon.js +1 -1
  461. package/dist/icons/ReloadIcon.js +1 -1
  462. package/dist/icons/ReportIcon.js +1 -1
  463. package/dist/icons/ReturnIcon.js +1 -1
  464. package/dist/icons/RightIcon.js +1 -1
  465. package/dist/icons/RowTotalsIcon.js +1 -1
  466. package/dist/icons/SchemeIcon.js +1 -1
  467. package/dist/icons/SearchIcon.js +1 -1
  468. package/dist/icons/SemanticQueryIcon.js +1 -1
  469. package/dist/icons/SettingsIcon.js +1 -1
  470. package/dist/icons/ShieldFilledIcon.js +1 -1
  471. package/dist/icons/ShieldIcon.js +1 -1
  472. package/dist/icons/SlashIcon.js +1 -1
  473. package/dist/icons/SparklesIcon.js +1 -1
  474. package/dist/icons/SqlIcon.js +1 -1
  475. package/dist/icons/StatsIcon.js +1 -1
  476. package/dist/icons/StopIcon.js +1 -1
  477. package/dist/icons/StringIcon.js +1 -1
  478. package/dist/icons/SubtotalsIcon.js +1 -1
  479. package/dist/icons/SwitchIcon.js +1 -1
  480. package/dist/icons/TableIcon.js +1 -1
  481. package/dist/icons/ThumbsDownIcon.js +1 -1
  482. package/dist/icons/ThumbsUpIcon.js +1 -1
  483. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  484. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  485. package/dist/icons/ThunderboltIcon.js +1 -1
  486. package/dist/icons/TimeIcon.js +1 -1
  487. package/dist/icons/TrashIcon.js +1 -1
  488. package/dist/icons/UnlockIcon.js +1 -1
  489. package/dist/icons/UpIcon.js +1 -1
  490. package/dist/icons/UserGroupIcon.js +1 -1
  491. package/dist/icons/UserIcon.js +1 -1
  492. package/dist/icons/UserLockIcon.js +1 -1
  493. package/dist/icons/ViewIcon.js +1 -1
  494. package/dist/icons/WarningFilledIcon.js +1 -1
  495. package/dist/icons/WarningIcon.js +1 -1
  496. package/dist/icons/wrap-icon.js +1 -1
  497. package/dist/index.d.ts +3 -4
  498. package/dist/index.js +4 -5
  499. package/dist/index.js.map +1 -1
  500. package/dist/probe/canonicalize.js +1 -1
  501. package/dist/probe/css.js +1 -1
  502. package/dist/probe/index.js +1 -1
  503. package/dist/provider.js +1 -1
  504. package/dist/providers/TrackingProvider.js +1 -1
  505. package/dist/providers/navigationAdapter.default.js +1 -1
  506. package/dist/tokens/base.js +1 -1
  507. package/dist/tokens/color-theme.d.ts +1 -8
  508. package/dist/tokens/color-theme.js +7 -19
  509. package/dist/tokens/color-theme.js.map +1 -1
  510. package/dist/tokens/colors.js +1 -1
  511. package/dist/tokens/index.d.ts +1 -2
  512. package/dist/tokens/index.js +2 -3
  513. package/dist/tokens/index.js.map +1 -1
  514. package/dist/tokens/layout.js +1 -1
  515. package/dist/tokens/lazy-styles.js +1 -1
  516. package/dist/tokens/palette-config.d.ts +9 -175
  517. package/dist/tokens/palette-config.js +10 -62
  518. package/dist/tokens/palette-config.js.map +1 -1
  519. package/dist/tokens/palette.js +157 -398
  520. package/dist/tokens/palette.js.map +1 -1
  521. package/dist/tokens/shadows.js +1 -1
  522. package/dist/tokens/sizes.js +1 -1
  523. package/dist/tokens/spacing.js +1 -1
  524. package/dist/tokens/typography.js +1 -1
  525. package/dist/utils/ResizeSensor.js +1 -1
  526. package/dist/utils/is-dev-env.js +1 -1
  527. package/dist/utils/modules.js +1 -1
  528. package/dist/utils/promise.js +1 -1
  529. package/dist/utils/raf.js +1 -1
  530. package/dist/utils/random.js +1 -1
  531. package/dist/utils/range.js +1 -1
  532. package/dist/utils/react/RenderCache.js +1 -1
  533. package/dist/utils/react/Slots.js +1 -1
  534. package/dist/utils/react/chain.js +1 -1
  535. package/dist/utils/react/disabledProps.js +1 -1
  536. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  537. package/dist/utils/react/index.js +1 -1
  538. package/dist/utils/react/interactions.js +1 -1
  539. package/dist/utils/react/isTextOnly.js +1 -1
  540. package/dist/utils/react/mapProps.js +1 -1
  541. package/dist/utils/react/mergeProps.js +1 -1
  542. package/dist/utils/react/nullableValue.js +1 -1
  543. package/dist/utils/react/resolveIcon.js +1 -1
  544. package/dist/utils/react/sharedStore.js +1 -1
  545. package/dist/utils/react/useBufferedValue.js +1 -1
  546. package/dist/utils/react/useCombinedRefs.js +1 -1
  547. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  548. package/dist/utils/react/useEventBus.js +1 -1
  549. package/dist/utils/react/useId.js +1 -1
  550. package/dist/utils/react/useIsDarwin.js +1 -1
  551. package/dist/utils/react/useKeySymbols.js +1 -1
  552. package/dist/utils/react/useLayoutEffect.js +1 -1
  553. package/dist/utils/react/useLocalStorage.js +1 -1
  554. package/dist/utils/react/useMergeStyles.js +1 -1
  555. package/dist/utils/react/usePopoverSync.js +1 -1
  556. package/dist/utils/react/useQaProps.js +1 -1
  557. package/dist/utils/react/useViewportSize.js +1 -1
  558. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  559. package/dist/utils/selection.js +1 -1
  560. package/dist/utils/styles.js +1 -1
  561. package/dist/utils/tree.js +1 -1
  562. package/dist/utils/warnings.js +1 -1
  563. package/dist/version.js +2 -2
  564. package/docs/Theming.md +30 -306
  565. package/docs/glaze/api.md +38 -117
  566. package/docs/glaze/methodology.md +13 -15
  567. package/docs/glaze/okhst.md +0 -4
  568. package/package.json +3 -2
  569. package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +0 -1
  570. package/dist/components/fields/ColorSwatch/index.d.ts +0 -2
  571. package/dist/tokens/color-seed.d.ts +0 -44
  572. package/dist/tokens/color-seed.js +0 -48
  573. package/dist/tokens/color-seed.js.map +0 -1
  574. package/docs/components/fields/ColorSwatch.md +0 -148
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # @cube-dev/ui-kit
2
2
 
3
+ ## 0.162.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1317](https://github.com/cube-js/cube-ui-kit/pull/1317) [`1394b033`](https://github.com/cube-js/cube-ui-kit/commit/1394b033603366f4e5ebf372e8585462944276df) Thanks [@tenphi](https://github.com/tenphi)! - Calendar: pick a month or a year from a list instead of paging with arrows.
8
+
9
+ - `Calendar` / `RangeCalendar` (and therefore `DatePicker`, `DateRangePicker`
10
+ and `DateRangeSeparatedPicker`) now render the header month and year as
11
+ buttons that open a month list and a year list. Opt out with
12
+ `hasMonthYearNavigation={false}`.
13
+ - `MonthPicker` and `QuarterPicker` gained the same year list behind the year in
14
+ their header.
15
+ - The period panels are now proper ARIA grids with full keyboard support: arrow
16
+ keys roll over into the neighbouring year or decade, `PageUp`/`PageDown` page
17
+ by year or decade, `Home`/`End` jump to the first or last selectable period,
18
+ and `Escape` steps back one panel instead of closing the popover.
19
+ - Day and period cells mark the cell containing today with a `current` modifier,
20
+ and periods are disabled only when the whole period falls outside
21
+ `minValue`/`maxValue`.
22
+ - `PeriodPicker` no longer duplicates the field's label props onto its value
23
+ text, describes its trigger with the selected value, honours `isReadOnly`, and
24
+ truncates overlong custom `formatValue` output. Its placeholders and the new
25
+ calendar labels are translated in all twelve locales.
26
+ - `Calendar` passed its ref through without attaching it to the DOM; it now does.
27
+ - `Popover` (every `DialogTrigger type="popover"`, so also `Select`-style
28
+ fields, menus and the date pickers) only became keyboard-dismissable once its
29
+ enter animation had settled, because it registered with React Aria's
30
+ visible-overlay stack on the transition's `isOpen` rather than the trigger's.
31
+ `Escape` pressed in the first frames after opening did nothing; it now closes
32
+ the popover immediately.
33
+
3
34
  ## 0.161.0
4
35
 
5
36
  ### Minor Changes
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useEvent } from "./use-event.js";
3
3
 
4
4
  //#region src/_internal/hooks/use-chained-callback.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/_internal/hooks/use-debounced-value.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { deprecationWarning } from "../../utils/warnings.js";
3
3
  import React, { useEffect } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useSyncRef } from "./use-sync-ref.js";
3
3
  import { useCallback } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
 
4
4
  //#region src/_internal/hooks/use-is-first-render.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../utils/react/useLayoutEffect.js";
3
3
  import { useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  //#region src/_internal/hooks/use-timer/timer.ts
3
3
  var Timer = class {
4
4
  callback;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useEvent } from "../use-event.js";
3
3
  import { Timer } from "./timer.js";
4
4
  import { useEffect, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useEvent } from "./use-event.js";
3
3
  import { warn } from "../../utils/warnings.js";
4
4
  import { useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { ItemAction } from "./actions/ItemAction/ItemAction.js";
3
3
  import { ItemBadge } from "./content/ItemBadge/ItemBadge.js";
4
4
  import { Item } from "react-stately";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { usePaletteVersion } from "../tokens/palette-config.js";
3
3
  import { getTokens } from "../tokens/index.js";
4
4
  import { useGlobalStyles, useRawCSS } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useCombinedRefs } from "../utils/react/useCombinedRefs.js";
3
3
  import { filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef, useCallback, useEffect, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/HiddenInput.tsx
@@ -12,10 +12,10 @@ interface CubeRootProps extends BaseProps {
12
12
  [key: string]: string;
13
13
  };
14
14
  /**
15
- * Tune the generated color palette — the brand as a hue or as a color
16
- * (`accentColor` / `baseColor`), saturation, per-status theme seeds, `pastel`, and
17
- * `contrastLevel`. Omitted fields take their default, so this prop describes the
18
- * whole palette and dropping a field from it drops the customization.
15
+ * Tune the generated color palette — brand hue / saturation, per-status theme
16
+ * seeds, `pastel`, and `contrastLevel`. Omitted fields take their default, so
17
+ * this prop describes the whole palette and dropping a field from it drops the
18
+ * customization.
19
19
  *
20
20
  * Removing the prop entirely is the one thing that does *not* reset the
21
21
  * palette, so `<Root>` with no `palette` cannot clobber a host's imperative
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../utils/styles.js";
3
3
  import { EventBusProvider } from "../utils/react/useEventBus.js";
4
4
  import { PortalProvider } from "./portal/PortalProvider.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Root.js","names":["I18nProvider"],"sources":["../../src/components/Root.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n BaseProps,\n BLOCK_STYLES,\n configure,\n filterBaseProps,\n setGlobalPredefinedStates,\n tasty,\n} from '@tenphi/tasty';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ModalProvider } from 'react-aria';\n\nimport { I18nProvider } from '../i18n';\nimport { Provider } from '../provider';\nimport { NavigationAdapter } from '../providers/navigation.types';\nimport { TrackingProps, TrackingProvider } from '../providers/TrackingProvider';\nimport { PaletteConfig, setPaletteConfig } from '../tokens/palette-config';\nimport { EventBusProvider } from '../utils/react/useEventBus';\nimport { extractStyles } from '../utils/styles';\nimport { TASTY_VERSION, VERSION } from '../version';\n\nimport { GlobalStyles } from './GlobalStyles';\nimport { AlertDialogApiProvider } from './overlays/AlertDialog';\nimport { OverlayProvider } from './overlays/Notifications/OverlayProvider';\nimport { PortalProvider } from './portal';\n\nimport type { i18n as I18nInstance } from 'i18next';\n\n// Color-scheme aliases for the Glaze-generated palette (see `src/tokens/palette.ts`).\n// Attribute opt-in wins over system preference:\n// <html data-schema=\"dark\"> → forces dark scheme\n// <html data-contrast=\"high\"> → forces high-contrast scheme\n// Otherwise falls back to the user's `prefers-color-scheme` / `prefers-contrast`.\nsetGlobalPredefinedStates({\n '@dark':\n '@root(schema=dark) | (!@root(schema) & @media(prefers-color-scheme: dark))',\n '@hc':\n '@root(contrast=high) | (!@root(contrast) & @media(prefers-contrast: more))',\n});\n\nconfigure({\n colorSpace: 'rgb',\n units: {\n x: 'var(--gap)',\n r: 'var(--radius)',\n cr: 'var(--card-radius)',\n bw: 'var(--border-width)',\n ow: 'var(--outline-width)',\n },\n recipes: {\n reset: {\n margin: 0,\n padding: 0,\n border: 0,\n outline: 0,\n boxSizing: 'border-box',\n },\n button: {\n appearance: 'none',\n touchAction: 'manipulation',\n textDecoration: 'none',\n '-webkit-tap-highlight-color': 'transparent',\n fill: '#clear',\n color: 'inherit',\n cursor: {\n '': 'default',\n ':is(a)': 'pointer',\n ':is(button)': '$pointer',\n disabled: 'not-allowed',\n },\n },\n input: {\n appearance: 'none',\n wordSpacing: 'initial',\n color: 'inherit',\n fill: '#clear',\n },\n 'input-autofill': {\n '@autofill': ':-webkit-autofill | :autofill',\n appearance: {\n '@autofill': 'none',\n },\n '-webkit-text-fill-color': {\n '': 'currentColor',\n '@autofill': '#primary-text',\n },\n caretColor: {\n '@autofill': '#primary-text',\n },\n shadow: {\n '@autofill': '0 0 0 9999rem #surface inset',\n },\n preset: {\n '@autofill': 'inherit',\n },\n '-webkit-opacity': {\n '': false,\n '[disabled]': '1',\n },\n },\n 'input-placeholder': {\n '-webkit-text-fill-color': '#placeholder',\n color: '#placeholder',\n },\n 'input-search-cancel-button': {\n hide: true,\n appearance: 'none',\n },\n },\n});\n\nconst RootElement = tasty({\n id: 'cube-ui-kit-root',\n styles: {\n display: 'contents',\n color: '#dark-02',\n preset: 't3',\n },\n});\n\nconst STYLES = [...BASE_STYLES, ...BLOCK_STYLES];\n\nexport interface CubeRootProps extends BaseProps {\n tokens?: { [key: string]: string };\n /**\n * Tune the generated color palette — the brand as a hue or as a color\n * (`accentColor` / `baseColor`), saturation, per-status theme seeds, `pastel`, and\n * `contrastLevel`. Omitted fields take their default, so this prop describes the\n * whole palette and dropping a field from it drops the customization.\n *\n * Removing the prop entirely is the one thing that does *not* reset the\n * palette, so `<Root>` with no `palette` cannot clobber a host's imperative\n * `setPaletteConfig()` call. Pass `{}` to ask for the default.\n *\n * The palette is global process state, so this is a declarative wrapper over\n * `setPaletteConfig()`; both drive the same store, and the last write wins.\n * See `Getting Started/Theming` in Storybook.\n */\n palette?: PaletteConfig;\n bodyStyles?: { [key: string]: string };\n fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n fonts?: boolean;\n publicUrl?: string;\n navigation?: NavigationAdapter;\n font?: string;\n monospaceFont?: string;\n /** @deprecated Tokens are now always applied via GlobalStyles */\n applyLegacyTokens?: boolean;\n tracking?: TrackingProps;\n cursorStrategy?: 'web' | 'native';\n /**\n * i18next instance for this tree. During SSR, pass a request-local instance\n * created with `createUIKitI18n(locale)`.\n */\n i18n?: I18nInstance;\n /** Override the React Aria formatting locale. */\n locale?: string;\n}\n\nexport function Root(allProps: CubeRootProps) {\n let {\n children,\n /** Raw css styles for body element */\n bodyStyles,\n fontDisplay = 'swap',\n fonts,\n publicUrl,\n navigation,\n font,\n monospaceFont,\n applyLegacyTokens: _applyLegacyTokens, // deprecated, ignored\n tracking,\n cursorStrategy = 'web',\n style,\n tokens,\n palette,\n i18n,\n locale,\n ...props\n } = allProps;\n\n // Applied during render, not in an effect, so the first paint already uses the\n // tuned palette instead of flashing the default. `setPaletteConfig` is a no-op\n // when the resolved config is unchanged, so an inline object literal and\n // StrictMode's double render both cost nothing. `GlobalStyles` is rendered\n // below in the same pass and reads the new version directly.\n useMemo(() => {\n if (palette) setPaletteConfig(palette);\n }, [palette]);\n\n const ref = useRef(null);\n\n const [rootRef, setRootRef] = useState();\n\n useEffect(() => {\n if (!rootRef) {\n // @ts-ignore\n setRootRef(ref?.current);\n }\n }, []);\n\n const styles = extractStyles(props, STYLES);\n\n return (\n <I18nProvider i18n={i18n} locale={locale}>\n <Provider navigation={navigation} root={rootRef}>\n <TrackingProvider event={tracking?.event}>\n <RootElement\n ref={ref}\n data-uikit={VERSION}\n data-tasty={TASTY_VERSION}\n data-font-display={fontDisplay}\n {...filterBaseProps(props, { eventProps: true })}\n styles={styles}\n style={{\n '--pointer': cursorStrategy === 'web' ? 'pointer' : 'default',\n ...style,\n }}\n tokens={tokens}\n >\n <GlobalStyles\n bodyStyles={bodyStyles}\n publicUrl={publicUrl}\n fonts={fonts}\n font={font}\n monospaceFont={monospaceFont}\n fontDisplay={fontDisplay}\n />\n <ModalProvider>\n <PortalProvider value={ref}>\n <EventBusProvider>\n <OverlayProvider>\n <AlertDialogApiProvider>{children}</AlertDialogApiProvider>\n </OverlayProvider>\n </EventBusProvider>\n </PortalProvider>\n </ModalProvider>\n </RootElement>\n </TrackingProvider>\n </Provider>\n </I18nProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiCA,0BAA0B;CACxB,SACE;CACF,OACE;CACH,CAAC;AAEF,UAAU;CACR,YAAY;CACZ,OAAO;EACL,GAAG;EACH,GAAG;EACH,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CACD,SAAS;EACP,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACR,SAAS;GACT,WAAW;GACZ;EACD,QAAQ;GACN,YAAY;GACZ,aAAa;GACb,gBAAgB;GAChB,+BAA+B;GAC/B,MAAM;GACN,OAAO;GACP,QAAQ;IACN,IAAI;IACJ,UAAU;IACV,eAAe;IACf,UAAU;IACX;GACF;EACD,OAAO;GACL,YAAY;GACZ,aAAa;GACb,OAAO;GACP,MAAM;GACP;EACD,kBAAkB;GAChB,aAAa;GACb,YAAY,EACV,aAAa,QACd;GACD,2BAA2B;IACzB,IAAI;IACJ,aAAa;IACd;GACD,YAAY,EACV,aAAa,iBACd;GACD,QAAQ,EACN,aAAa,gCACd;GACD,QAAQ,EACN,aAAa,WACd;GACD,mBAAmB;IACjB,IAAI;IACJ,cAAc;IACf;GACF;EACD,qBAAqB;GACnB,2BAA2B;GAC3B,OAAO;GACR;EACD,8BAA8B;GAC5B,MAAM;GACN,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAM,cAAc,MAAM;CACxB,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,OAAO;EACP,QAAQ;EACT;CACF,CAAC;AAEF,MAAM,SAAS,CAAC,GAAG,aAAa,GAAG,aAAa;AAuChD,SAAgB,KAAK,UAAyB;CAC5C,IAAI,EACF,UAEA,YACA,cAAc,QACd,OACA,WACA,YACA,MACA,eACA,mBAAmB,oBACnB,UACA,iBAAiB,OACjB,OACA,QACA,SACA,MACA,QACA,GAAG,UACD;AAOJ,eAAc;AACZ,MAAI,QAAS,kBAAiB,QAAQ;IACrC,CAAC,QAAQ,CAAC;CAEb,MAAM,MAAM,OAAO,KAAK;CAExB,MAAM,CAAC,SAAS,cAAc,UAAU;AAExC,iBAAgB;AACd,MAAI,CAAC,QAEH,YAAW,KAAK,QAAQ;IAEzB,EAAE,CAAC;CAEN,MAAM,SAAS,cAAc,OAAO,OAAO;AAE3C,QACE,oBAACA;EAAmB;EAAc;YAChC,oBAAC;GAAqB;GAAY,MAAM;aACtC,oBAAC;IAAiB,OAAO,UAAU;cACjC,qBAAC;KACM;KACL,cAAY;KACZ,cAAY;KACZ,qBAAmB;KACnB,GAAI,gBAAgB,OAAO,EAAE,YAAY,MAAM,CAAC;KACxC;KACR,OAAO;MACL,aAAa,mBAAmB,QAAQ,YAAY;MACpD,GAAG;MACJ;KACO;gBAER,oBAAC;MACa;MACD;MACJ;MACD;MACS;MACF;OACb,EACF,oBAAC,2BACC,oBAAC;MAAe,OAAO;gBACrB,oBAAC,8BACC,oBAAC,6BACC,oBAAC,0BAAwB,WAAkC,GAC3C,GACD;OACJ,GACH;MACJ;KACG;IACV;GACE"}
1
+ {"version":3,"file":"Root.js","names":["I18nProvider"],"sources":["../../src/components/Root.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n BaseProps,\n BLOCK_STYLES,\n configure,\n filterBaseProps,\n setGlobalPredefinedStates,\n tasty,\n} from '@tenphi/tasty';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ModalProvider } from 'react-aria';\n\nimport { I18nProvider } from '../i18n';\nimport { Provider } from '../provider';\nimport { NavigationAdapter } from '../providers/navigation.types';\nimport { TrackingProps, TrackingProvider } from '../providers/TrackingProvider';\nimport { PaletteConfig, setPaletteConfig } from '../tokens/palette-config';\nimport { EventBusProvider } from '../utils/react/useEventBus';\nimport { extractStyles } from '../utils/styles';\nimport { TASTY_VERSION, VERSION } from '../version';\n\nimport { GlobalStyles } from './GlobalStyles';\nimport { AlertDialogApiProvider } from './overlays/AlertDialog';\nimport { OverlayProvider } from './overlays/Notifications/OverlayProvider';\nimport { PortalProvider } from './portal';\n\nimport type { i18n as I18nInstance } from 'i18next';\n\n// Color-scheme aliases for the Glaze-generated palette (see `src/tokens/palette.ts`).\n// Attribute opt-in wins over system preference:\n// <html data-schema=\"dark\"> → forces dark scheme\n// <html data-contrast=\"high\"> → forces high-contrast scheme\n// Otherwise falls back to the user's `prefers-color-scheme` / `prefers-contrast`.\nsetGlobalPredefinedStates({\n '@dark':\n '@root(schema=dark) | (!@root(schema) & @media(prefers-color-scheme: dark))',\n '@hc':\n '@root(contrast=high) | (!@root(contrast) & @media(prefers-contrast: more))',\n});\n\nconfigure({\n colorSpace: 'rgb',\n units: {\n x: 'var(--gap)',\n r: 'var(--radius)',\n cr: 'var(--card-radius)',\n bw: 'var(--border-width)',\n ow: 'var(--outline-width)',\n },\n recipes: {\n reset: {\n margin: 0,\n padding: 0,\n border: 0,\n outline: 0,\n boxSizing: 'border-box',\n },\n button: {\n appearance: 'none',\n touchAction: 'manipulation',\n textDecoration: 'none',\n '-webkit-tap-highlight-color': 'transparent',\n fill: '#clear',\n color: 'inherit',\n cursor: {\n '': 'default',\n ':is(a)': 'pointer',\n ':is(button)': '$pointer',\n disabled: 'not-allowed',\n },\n },\n input: {\n appearance: 'none',\n wordSpacing: 'initial',\n color: 'inherit',\n fill: '#clear',\n },\n 'input-autofill': {\n '@autofill': ':-webkit-autofill | :autofill',\n appearance: {\n '@autofill': 'none',\n },\n '-webkit-text-fill-color': {\n '': 'currentColor',\n '@autofill': '#primary-text',\n },\n caretColor: {\n '@autofill': '#primary-text',\n },\n shadow: {\n '@autofill': '0 0 0 9999rem #surface inset',\n },\n preset: {\n '@autofill': 'inherit',\n },\n '-webkit-opacity': {\n '': false,\n '[disabled]': '1',\n },\n },\n 'input-placeholder': {\n '-webkit-text-fill-color': '#placeholder',\n color: '#placeholder',\n },\n 'input-search-cancel-button': {\n hide: true,\n appearance: 'none',\n },\n },\n});\n\nconst RootElement = tasty({\n id: 'cube-ui-kit-root',\n styles: {\n display: 'contents',\n color: '#dark-02',\n preset: 't3',\n },\n});\n\nconst STYLES = [...BASE_STYLES, ...BLOCK_STYLES];\n\nexport interface CubeRootProps extends BaseProps {\n tokens?: { [key: string]: string };\n /**\n * Tune the generated color palette — brand hue / saturation, per-status theme\n * seeds, `pastel`, and `contrastLevel`. Omitted fields take their default, so\n * this prop describes the whole palette and dropping a field from it drops the\n * customization.\n *\n * Removing the prop entirely is the one thing that does *not* reset the\n * palette, so `<Root>` with no `palette` cannot clobber a host's imperative\n * `setPaletteConfig()` call. Pass `{}` to ask for the default.\n *\n * The palette is global process state, so this is a declarative wrapper over\n * `setPaletteConfig()`; both drive the same store, and the last write wins.\n * See `Getting Started/Theming` in Storybook.\n */\n palette?: PaletteConfig;\n bodyStyles?: { [key: string]: string };\n fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n fonts?: boolean;\n publicUrl?: string;\n navigation?: NavigationAdapter;\n font?: string;\n monospaceFont?: string;\n /** @deprecated Tokens are now always applied via GlobalStyles */\n applyLegacyTokens?: boolean;\n tracking?: TrackingProps;\n cursorStrategy?: 'web' | 'native';\n /**\n * i18next instance for this tree. During SSR, pass a request-local instance\n * created with `createUIKitI18n(locale)`.\n */\n i18n?: I18nInstance;\n /** Override the React Aria formatting locale. */\n locale?: string;\n}\n\nexport function Root(allProps: CubeRootProps) {\n let {\n children,\n /** Raw css styles for body element */\n bodyStyles,\n fontDisplay = 'swap',\n fonts,\n publicUrl,\n navigation,\n font,\n monospaceFont,\n applyLegacyTokens: _applyLegacyTokens, // deprecated, ignored\n tracking,\n cursorStrategy = 'web',\n style,\n tokens,\n palette,\n i18n,\n locale,\n ...props\n } = allProps;\n\n // Applied during render, not in an effect, so the first paint already uses the\n // tuned palette instead of flashing the default. `setPaletteConfig` is a no-op\n // when the resolved config is unchanged, so an inline object literal and\n // StrictMode's double render both cost nothing. `GlobalStyles` is rendered\n // below in the same pass and reads the new version directly.\n useMemo(() => {\n if (palette) setPaletteConfig(palette);\n }, [palette]);\n\n const ref = useRef(null);\n\n const [rootRef, setRootRef] = useState();\n\n useEffect(() => {\n if (!rootRef) {\n // @ts-ignore\n setRootRef(ref?.current);\n }\n }, []);\n\n const styles = extractStyles(props, STYLES);\n\n return (\n <I18nProvider i18n={i18n} locale={locale}>\n <Provider navigation={navigation} root={rootRef}>\n <TrackingProvider event={tracking?.event}>\n <RootElement\n ref={ref}\n data-uikit={VERSION}\n data-tasty={TASTY_VERSION}\n data-font-display={fontDisplay}\n {...filterBaseProps(props, { eventProps: true })}\n styles={styles}\n style={{\n '--pointer': cursorStrategy === 'web' ? 'pointer' : 'default',\n ...style,\n }}\n tokens={tokens}\n >\n <GlobalStyles\n bodyStyles={bodyStyles}\n publicUrl={publicUrl}\n fonts={fonts}\n font={font}\n monospaceFont={monospaceFont}\n fontDisplay={fontDisplay}\n />\n <ModalProvider>\n <PortalProvider value={ref}>\n <EventBusProvider>\n <OverlayProvider>\n <AlertDialogApiProvider>{children}</AlertDialogApiProvider>\n </OverlayProvider>\n </EventBusProvider>\n </PortalProvider>\n </ModalProvider>\n </RootElement>\n </TrackingProvider>\n </Provider>\n </I18nProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiCA,0BAA0B;CACxB,SACE;CACF,OACE;CACH,CAAC;AAEF,UAAU;CACR,YAAY;CACZ,OAAO;EACL,GAAG;EACH,GAAG;EACH,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CACD,SAAS;EACP,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACR,SAAS;GACT,WAAW;GACZ;EACD,QAAQ;GACN,YAAY;GACZ,aAAa;GACb,gBAAgB;GAChB,+BAA+B;GAC/B,MAAM;GACN,OAAO;GACP,QAAQ;IACN,IAAI;IACJ,UAAU;IACV,eAAe;IACf,UAAU;IACX;GACF;EACD,OAAO;GACL,YAAY;GACZ,aAAa;GACb,OAAO;GACP,MAAM;GACP;EACD,kBAAkB;GAChB,aAAa;GACb,YAAY,EACV,aAAa,QACd;GACD,2BAA2B;IACzB,IAAI;IACJ,aAAa;IACd;GACD,YAAY,EACV,aAAa,iBACd;GACD,QAAQ,EACN,aAAa,gCACd;GACD,QAAQ,EACN,aAAa,WACd;GACD,mBAAmB;IACjB,IAAI;IACJ,cAAc;IACf;GACF;EACD,qBAAqB;GACnB,2BAA2B;GAC3B,OAAO;GACR;EACD,8BAA8B;GAC5B,MAAM;GACN,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAM,cAAc,MAAM;CACxB,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,OAAO;EACP,QAAQ;EACT;CACF,CAAC;AAEF,MAAM,SAAS,CAAC,GAAG,aAAa,GAAG,aAAa;AAuChD,SAAgB,KAAK,UAAyB;CAC5C,IAAI,EACF,UAEA,YACA,cAAc,QACd,OACA,WACA,YACA,MACA,eACA,mBAAmB,oBACnB,UACA,iBAAiB,OACjB,OACA,QACA,SACA,MACA,QACA,GAAG,UACD;AAOJ,eAAc;AACZ,MAAI,QAAS,kBAAiB,QAAQ;IACrC,CAAC,QAAQ,CAAC;CAEb,MAAM,MAAM,OAAO,KAAK;CAExB,MAAM,CAAC,SAAS,cAAc,UAAU;AAExC,iBAAgB;AACd,MAAI,CAAC,QAEH,YAAW,KAAK,QAAQ;IAEzB,EAAE,CAAC;CAEN,MAAM,SAAS,cAAc,OAAO,OAAO;AAE3C,QACE,oBAACA;EAAmB;EAAc;YAChC,oBAAC;GAAqB;GAAY,MAAM;aACtC,oBAAC;IAAiB,OAAO,UAAU;cACjC,qBAAC;KACM;KACL,cAAY;KACZ,cAAY;KACZ,qBAAmB;KACnB,GAAI,gBAAgB,OAAO,EAAE,YAAY,MAAM,CAAC;KACxC;KACR,OAAO;MACL,aAAa,mBAAmB,QAAQ,YAAY;MACpD,GAAG;MACJ;KACO;gBAER,oBAAC;MACa;MACD;MACJ;MACD;MACS;MACF;OACb,EACF,oBAAC,2BACC,oBAAC;MAAe,OAAO;gBACrB,oBAAC,8BACC,oBAAC,6BACC,oBAAC,0BAAwB,WAAkC,GAC3C,GACD;OACJ,GACH;MACJ;KACG;IACV;GACE"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useAction } from "../use-action.js";
4
4
  import { CONTAINER_STYLES, TEXT_STYLES, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Item } from "../../content/Item/Item.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { getDisabledElementProps } from "../../../utils/react/disabledProps.js";
4
4
  import { mergeProps } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { useSlotProps } from "../../../utils/react/Slots.js";
3
3
  import { Space } from "../../layout/Space.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { DirectionIcon } from "../../../icons/DirectionIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/actions/ButtonSplit/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/actions/CommandMenu/styled.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { CURRENT_ITEM_STYLES, DANGER_CLEAR_STYLES, DANGER_OUTLINE_STYLES, DANGER_PRIMARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_OUTLINE_STYLES, DEFAULT_PRIMARY_STYLES, ITEM_ACTION_BASE_STYLES, NOTE_CLEAR_STYLES, NOTE_OUTLINE_STYLES, NOTE_PRIMARY_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_OUTLINE_STYLES, SPECIAL_PRIMARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_OUTLINE_STYLES, SUCCESS_PRIMARY_STYLES, WARNING_CLEAR_STYLES, WARNING_OUTLINE_STYLES, WARNING_PRIMARY_STYLES } from "../../../data/item-themes.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useDismissParentPopover } from "../../../utils/react/usePopoverSync.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { Button } from "../Button/Button.js";
3
3
  import { forwardRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { _CollectionItem } from "../../CollectionItem.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { filterCollectionItemProps } from "../../CollectionItem.js";
4
4
  import { _Item } from "../../content/Item/Item.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
3
3
  import { MenuItem } from "./MenuItem.js";
4
4
  import { StyledMenu, StyledSection, StyledSectionHeading } from "./styled.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { SlotProvider } from "../../../utils/react/Slots.js";
3
3
  import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { MenuContext, useMenuContext } from "./context.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import React from "react";
3
3
 
4
4
  //#region src/components/actions/Menu/SubmenuTriggerContext.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import React, { useContext } from "react";
3
3
 
4
4
  //#region src/components/actions/Menu/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { DEFAULT_CLEAR_STYLES } from "../../../data/item-themes.js";
3
3
  import { Space } from "../../layout/Space.js";
4
4
  import { DEFAULT_BUTTON_STYLES } from "../Button/Button.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { ItemActionProvider, useItemActionContext } from "./ItemActionContext.js";
3
3
  import { openLink, parseTo, performClickHandler, useAction } from "./use-action.js";
4
4
  import { ItemAction } from "./ItemAction/ItemAction.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | 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 { useFocus as useFocus$1 } from "../../utils/react/interactions.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../utils/react/mergeProps.js";
3
3
  import { usePopoverSync } from "../../utils/react/usePopoverSync.js";
4
4
  import { useEvent } from "../../_internal/hooks/use-event.js";
@@ -69,7 +69,6 @@ function useAnchoredMenu(Component, defaultTriggerProps, defaultMenuProps) {
69
69
  const renderedMenu = useMemo(() => {
70
70
  if (!componentProps) return null;
71
71
  return /* @__PURE__ */ jsxs(_MenuTrigger, {
72
- placement: "bottom start",
73
72
  ...mergeProps$1(defaultTriggerProps, triggerProps || void 0),
74
73
  isDummy: true,
75
74
  isOpen,
@@ -1 +1 @@
1
- {"version":3,"file":"use-anchored-menu.js","names":["MenuTrigger","mergeProps"],"sources":["../../../src/components/actions/use-anchored-menu.tsx"],"sourcesContent":["import { Pressable } from '@react-aria/interactions';\nimport {\n ComponentProps,\n ComponentType,\n ReactElement,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { VisuallyHidden } from 'react-aria';\n\nimport { useEvent } from '../../_internal';\nimport { useI18n } from '../../i18n';\nimport { generateRandomId } from '../../utils/random';\nimport { mergeProps } from '../../utils/react';\nimport { usePopoverSync } from '../../utils/react/usePopoverSync';\n\nimport { MenuTrigger } from './Menu';\n\nexport interface UseAnchoredMenuReturn<P, T> {\n /** Ref to attach to the anchor element for positioning the menu. */\n anchorRef: RefObject<HTMLElement | null>;\n\n /**\n * Programmatically opens the menu with the provided props.\n * @param props - Props to pass to the menu component\n * @param triggerProps - Additional props for MenuTrigger (merged with defaultTriggerProps)\n */\n open(props?: P, triggerProps?: T): void;\n\n /**\n * Updates the props of the currently open menu.\n * Props are merged if defaults are provided.\n */\n update(props: P, triggerProps?: T): void;\n\n /** Closes the menu programmatically. */\n close(): void;\n\n /** Current open/closed state of the menu. */\n isOpen: boolean;\n\n /**\n * JSX element that must be rendered in your component tree.\n * Contains the MenuTrigger and positioning logic.\n */\n get rendered(): ReactElement | null;\n}\n\n/**\n * Generic hook to manage an anchored menu component.\n *\n * @param Component - A React component that represents the menu content (Menu or CommandMenu).\n * @param defaultTriggerProps - Default props to pass to the MenuTrigger.\n * @param defaultMenuProps - Default props to pass to the Menu component.\n * @returns An object with `anchorRef` to position the menu, `open` function to open the menu with provided props, `close` function to close the menu, and `rendered` JSX element to include in your component tree.\n */\nexport function useAnchoredMenu<P, T = ComponentProps<typeof MenuTrigger>>(\n Component: ComponentType<P>,\n defaultTriggerProps?: Omit<\n ComponentProps<typeof MenuTrigger>,\n 'children' | 'isOpen' | 'onOpenChange' | 'targetRef'\n >,\n defaultMenuProps?: P,\n): UseAnchoredMenuReturn<P, T> {\n const { t } = useI18n();\n const [isOpen, setIsOpen] = useState(false);\n const [componentProps, setComponentProps] = useState<P | null>(null);\n const [triggerProps, setTriggerProps] = useState<T | null>(null);\n const anchorRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef(false);\n\n useEffect(() => {\n const el = anchorRef.current;\n if (el) {\n el.dataset.popoverTrigger = '';\n return () => {\n delete el.dataset.popoverTrigger;\n };\n }\n }, []);\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n // Feed both the anchor (`triggerRef`) and the popover container\n // (`containerRef`) into the sync. The container ref is shared with the\n // rendered `MenuTrigger` via its `popoverRef` prop — the dummy `MenuTrigger`\n // opts out of `usePopoverSync` (`enabled: !isDummy`), so without this the\n // nested-popover guard would have no container to match against and a\n // `SubMenuTrigger` opened inside this menu would close the whole menu.\n usePopoverSync({\n menuId,\n isOpen,\n onClose: () => setIsOpen(false),\n triggerRef: anchorRef,\n containerRef: popoverRef,\n });\n\n function setupCheck() {\n if (!setupRef.current) {\n throw new Error(\n 'useAnchoredMenu: MenuTrigger must be rendered. Use `rendered` property to include it in your component tree.',\n );\n }\n }\n\n // 'open' accepts props required by the Component and opens the menu\n const open = useEvent((props: P = {} as P, triggerProps?: T) => {\n setupCheck();\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps);\n setTriggerProps(triggerProps ?? null);\n setIsOpen(true);\n });\n\n const update = useEvent((props: P, triggerProps?: T) => {\n setupCheck();\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps);\n setTriggerProps(triggerProps ?? null);\n });\n\n const close = useEvent(() => {\n setIsOpen(false);\n });\n\n // Render the menu only when componentProps is set\n const renderedMenu = useMemo(() => {\n if (!componentProps) return null;\n\n return (\n <MenuTrigger\n placement=\"bottom start\"\n {...mergeProps(defaultTriggerProps, triggerProps || undefined)}\n isDummy\n isOpen={isOpen}\n targetRef={anchorRef}\n popoverRef={popoverRef}\n onOpenChange={setIsOpen}\n >\n <VisuallyHidden>\n <Pressable>\n <button aria-label={t('contextMenu.contextMenu', 'context-menu')} />\n </Pressable>\n </VisuallyHidden>\n <Component {...componentProps} />\n </MenuTrigger>\n );\n }, [componentProps, triggerProps, isOpen, defaultTriggerProps, t]);\n\n return {\n anchorRef,\n open,\n update,\n close,\n isOpen,\n get rendered() {\n setupRef.current = true;\n\n return renderedMenu;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2DA,SAAgB,gBACd,WACA,qBAIA,kBAC6B;CAC7B,MAAM,EAAE,MAAM,SAAS;CACvB,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;CAC3C,MAAM,CAAC,gBAAgB,qBAAqB,SAAmB,KAAK;CACpE,MAAM,CAAC,cAAc,mBAAmB,SAAmB,KAAK;CAChE,MAAM,YAAY,OAAoB,KAAK;CAC3C,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,WAAW,OAAO,MAAM;AAE9B,iBAAgB;EACd,MAAM,KAAK,UAAU;AACrB,MAAI,IAAI;AACN,MAAG,QAAQ,iBAAiB;AAC5B,gBAAa;AACX,WAAO,GAAG,QAAQ;;;IAGrB,EAAE,CAAC;AAWN,gBAAe;EACb,QATa,cAAc,kBAAkB,EAAE,EAAE,CAAC;EAUlD;EACA,eAAe,UAAU,MAAM;EAC/B,YAAY;EACZ,cAAc;EACf,CAAC;CAEF,SAAS,aAAa;AACpB,MAAI,CAAC,SAAS,QACZ,OAAM,IAAI,MACR,+GACD;;CAKL,MAAM,OAAO,UAAU,QAAW,EAAE,EAAO,iBAAqB;AAC9D,cAAY;AAOZ,oBAJmB,mBACf;GAAE,GAAG;GAAkB,GAAG;GAAO,GACjC,MAEyB;AAC7B,kBAAgB,gBAAgB,KAAK;AACrC,YAAU,KAAK;GACf;CAEF,MAAM,SAAS,UAAU,OAAU,iBAAqB;AACtD,cAAY;AAOZ,oBAJmB,mBACf;GAAE,GAAG;GAAkB,GAAG;GAAO,GACjC,MAEyB;AAC7B,kBAAgB,gBAAgB,KAAK;GACrC;CAEF,MAAM,QAAQ,eAAe;AAC3B,YAAU,MAAM;GAChB;CAGF,MAAM,eAAe,cAAc;AACjC,MAAI,CAAC,eAAgB,QAAO;AAE5B,SACE,qBAACA;GACC,WAAU;GACV,GAAIC,aAAW,qBAAqB,gBAAgB,OAAU;GAC9D;GACQ;GACR,WAAW;GACC;GACZ,cAAc;cAEd,oBAAC,4BACC,oBAAC,uBACC,oBAAC,YAAO,cAAY,EAAE,2BAA2B,eAAe,GAAI,GAC1D,GACG,EACjB,oBAAC,aAAU,GAAI,iBAAkB;IACrB;IAEf;EAAC;EAAgB;EAAc;EAAQ;EAAqB;EAAE,CAAC;AAElE,QAAO;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW;AACb,YAAS,UAAU;AAEnB,UAAO;;EAEV"}
1
+ {"version":3,"file":"use-anchored-menu.js","names":["MenuTrigger","mergeProps"],"sources":["../../../src/components/actions/use-anchored-menu.tsx"],"sourcesContent":["import { Pressable } from '@react-aria/interactions';\nimport {\n ComponentProps,\n ComponentType,\n ReactElement,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { VisuallyHidden } from 'react-aria';\n\nimport { useEvent } from '../../_internal';\nimport { useI18n } from '../../i18n';\nimport { generateRandomId } from '../../utils/random';\nimport { mergeProps } from '../../utils/react';\nimport { usePopoverSync } from '../../utils/react/usePopoverSync';\n\nimport { MenuTrigger } from './Menu';\n\nexport interface UseAnchoredMenuReturn<P, T> {\n /** Ref to attach to the anchor element for positioning the menu. */\n anchorRef: RefObject<HTMLElement | null>;\n\n /**\n * Programmatically opens the menu with the provided props.\n * @param props - Props to pass to the menu component\n * @param triggerProps - Additional props for MenuTrigger (merged with defaultTriggerProps)\n */\n open(props?: P, triggerProps?: T): void;\n\n /**\n * Updates the props of the currently open menu.\n * Props are merged if defaults are provided.\n */\n update(props: P, triggerProps?: T): void;\n\n /** Closes the menu programmatically. */\n close(): void;\n\n /** Current open/closed state of the menu. */\n isOpen: boolean;\n\n /**\n * JSX element that must be rendered in your component tree.\n * Contains the MenuTrigger and positioning logic.\n */\n get rendered(): ReactElement | null;\n}\n\n/**\n * Generic hook to manage an anchored menu component.\n *\n * @param Component - A React component that represents the menu content (Menu or CommandMenu).\n * @param defaultTriggerProps - Default props to pass to the MenuTrigger.\n * @param defaultMenuProps - Default props to pass to the Menu component.\n * @returns An object with `anchorRef` to position the menu, `open` function to open the menu with provided props, `close` function to close the menu, and `rendered` JSX element to include in your component tree.\n */\nexport function useAnchoredMenu<P, T = ComponentProps<typeof MenuTrigger>>(\n Component: ComponentType<P>,\n defaultTriggerProps?: Omit<\n ComponentProps<typeof MenuTrigger>,\n 'children' | 'isOpen' | 'onOpenChange' | 'targetRef'\n >,\n defaultMenuProps?: P,\n): UseAnchoredMenuReturn<P, T> {\n const { t } = useI18n();\n const [isOpen, setIsOpen] = useState(false);\n const [componentProps, setComponentProps] = useState<P | null>(null);\n const [triggerProps, setTriggerProps] = useState<T | null>(null);\n const anchorRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef(false);\n\n useEffect(() => {\n const el = anchorRef.current;\n if (el) {\n el.dataset.popoverTrigger = '';\n return () => {\n delete el.dataset.popoverTrigger;\n };\n }\n }, []);\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n // Feed both the anchor (`triggerRef`) and the popover container\n // (`containerRef`) into the sync. The container ref is shared with the\n // rendered `MenuTrigger` via its `popoverRef` prop — the dummy `MenuTrigger`\n // opts out of `usePopoverSync` (`enabled: !isDummy`), so without this the\n // nested-popover guard would have no container to match against and a\n // `SubMenuTrigger` opened inside this menu would close the whole menu.\n usePopoverSync({\n menuId,\n isOpen,\n onClose: () => setIsOpen(false),\n triggerRef: anchorRef,\n containerRef: popoverRef,\n });\n\n function setupCheck() {\n if (!setupRef.current) {\n throw new Error(\n 'useAnchoredMenu: MenuTrigger must be rendered. Use `rendered` property to include it in your component tree.',\n );\n }\n }\n\n // 'open' accepts props required by the Component and opens the menu\n const open = useEvent((props: P = {} as P, triggerProps?: T) => {\n setupCheck();\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps);\n setTriggerProps(triggerProps ?? null);\n setIsOpen(true);\n });\n\n const update = useEvent((props: P, triggerProps?: T) => {\n setupCheck();\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps);\n setTriggerProps(triggerProps ?? null);\n });\n\n const close = useEvent(() => {\n setIsOpen(false);\n });\n\n // Render the menu only when componentProps is set\n const renderedMenu = useMemo(() => {\n if (!componentProps) return null;\n\n return (\n <MenuTrigger\n {...mergeProps(defaultTriggerProps, triggerProps || undefined)}\n isDummy\n isOpen={isOpen}\n targetRef={anchorRef}\n popoverRef={popoverRef}\n onOpenChange={setIsOpen}\n >\n <VisuallyHidden>\n <Pressable>\n <button aria-label={t('contextMenu.contextMenu', 'context-menu')} />\n </Pressable>\n </VisuallyHidden>\n <Component {...componentProps} />\n </MenuTrigger>\n );\n }, [componentProps, triggerProps, isOpen, defaultTriggerProps, t]);\n\n return {\n anchorRef,\n open,\n update,\n close,\n isOpen,\n get rendered() {\n setupRef.current = true;\n\n return renderedMenu;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2DA,SAAgB,gBACd,WACA,qBAIA,kBAC6B;CAC7B,MAAM,EAAE,MAAM,SAAS;CACvB,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;CAC3C,MAAM,CAAC,gBAAgB,qBAAqB,SAAmB,KAAK;CACpE,MAAM,CAAC,cAAc,mBAAmB,SAAmB,KAAK;CAChE,MAAM,YAAY,OAAoB,KAAK;CAC3C,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,WAAW,OAAO,MAAM;AAE9B,iBAAgB;EACd,MAAM,KAAK,UAAU;AACrB,MAAI,IAAI;AACN,MAAG,QAAQ,iBAAiB;AAC5B,gBAAa;AACX,WAAO,GAAG,QAAQ;;;IAGrB,EAAE,CAAC;AAWN,gBAAe;EACb,QATa,cAAc,kBAAkB,EAAE,EAAE,CAAC;EAUlD;EACA,eAAe,UAAU,MAAM;EAC/B,YAAY;EACZ,cAAc;EACf,CAAC;CAEF,SAAS,aAAa;AACpB,MAAI,CAAC,SAAS,QACZ,OAAM,IAAI,MACR,+GACD;;CAKL,MAAM,OAAO,UAAU,QAAW,EAAE,EAAO,iBAAqB;AAC9D,cAAY;AAOZ,oBAJmB,mBACf;GAAE,GAAG;GAAkB,GAAG;GAAO,GACjC,MAEyB;AAC7B,kBAAgB,gBAAgB,KAAK;AACrC,YAAU,KAAK;GACf;CAEF,MAAM,SAAS,UAAU,OAAU,iBAAqB;AACtD,cAAY;AAOZ,oBAJmB,mBACf;GAAE,GAAG;GAAkB,GAAG;GAAO,GACjC,MAEyB;AAC7B,kBAAgB,gBAAgB,KAAK;GACrC;CAEF,MAAM,QAAQ,eAAe;AAC3B,YAAU,MAAM;GAChB;CAGF,MAAM,eAAe,cAAc;AACjC,MAAI,CAAC,eAAgB,QAAO;AAE5B,SACE,qBAACA;GACC,GAAIC,aAAW,qBAAqB,gBAAgB,OAAU;GAC9D;GACQ;GACR,WAAW;GACC;GACZ,cAAc;cAEd,oBAAC,4BACC,oBAAC,uBACC,oBAAC,YAAO,cAAY,EAAE,2BAA2B,eAAe,GAAI,GAC1D,GACG,EACjB,oBAAC,aAAU,GAAI,iBAAkB;IACrB;IAEf;EAAC;EAAgB;EAAc;EAAQ;EAAqB;EAAE,CAAC;AAElE,QAAO;EACL;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW;AACb,YAAS,UAAU;AAEnB,UAAO;;EAEV"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../utils/react/mergeProps.js";
3
3
  import { usePopoverSync } from "../../utils/react/usePopoverSync.js";
4
4
  import { useEvent } from "../../_internal/hooks/use-event.js";
@@ -149,7 +149,6 @@ function useContextMenu(Component, defaultTriggerProps, defaultMenuProps) {
149
149
  })
150
150
  }), document.body), /* @__PURE__ */ jsxs(_MenuTrigger, {
151
151
  offset: 0,
152
- crossOffset: 0,
153
152
  placement: triggerProps?.placement || defaultTriggerProps?.placement || "bottom start",
154
153
  ...mergeProps$1(defaultTriggerProps, triggerProps || void 0),
155
154
  isDummy: true,
@@ -1 +1 @@
1
- {"version":3,"file":"use-context-menu.js","names":["MenuTrigger","mergeProps"],"sources":["../../../src/components/actions/use-context-menu.tsx"],"sourcesContent":["import { Pressable } from '@react-aria/interactions';\nimport {\n ComponentProps,\n ComponentType,\n MouseEvent,\n PointerEvent,\n ReactElement,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { VisuallyHidden } from 'react-aria';\nimport { createPortal } from 'react-dom';\n\nimport { useEvent } from '../../_internal';\nimport { useI18n } from '../../i18n';\nimport { generateRandomId } from '../../utils/random';\nimport { mergeProps } from '../../utils/react';\nimport { usePopoverSync } from '../../utils/react/usePopoverSync';\n\nimport { MenuTrigger } from './Menu';\n\ntype NativeMouseEvent = globalThis.MouseEvent;\ntype NativePointerEvent = globalThis.PointerEvent;\n\nexport interface UseContextMenuReturn<\n E extends HTMLElement = HTMLElement,\n P extends object = {},\n T = ComponentProps<typeof MenuTrigger>,\n> {\n /** Container element that receives context menu events. Attach this ref to your target element. */\n targetRef: RefObject<E | null>;\n\n /**\n * Programmatically opens the menu at the specified coordinates or element center.\n * Runtime props are merged with defaultMenuProps (runtime props take precedence).\n *\n * @param props - Props to pass to the menu component (optional, defaults to defaultMenuProps)\n * @param triggerProps - Additional props for MenuTrigger (merged with defaultTriggerProps)\n * @param event - The pointer/mouse event containing coordinates for positioning (optional, centers on element if not provided)\n */\n open(\n props?: P,\n triggerProps?: T,\n event?: NativeMouseEvent | NativePointerEvent | MouseEvent | PointerEvent,\n ): void;\n\n /**\n * Updates the props of the currently open menu without repositioning.\n * Props are merged with defaultMenuProps.\n */\n update(props: P, triggerProps?: T): void;\n\n /** Closes the menu programmatically. */\n close(): void;\n\n /** Current open/closed state of the menu. */\n isOpen: boolean;\n\n /**\n * JSX element that must be rendered in your component tree.\n * Contains the MenuTrigger and positioning logic.\n * IMPORTANT: Must be placed directly inside the target container (the element with targetRef).\n */\n get rendered(): ReactElement | null;\n}\n\n/**\n * Generic hook to manage a context menu component that opens at pointer coordinates.\n *\n * @param Component - A React component that represents the menu content (Menu or CommandMenu).\n * @param defaultTriggerProps - Default props to pass to the MenuTrigger.\n * @param defaultMenuProps - Default props to pass to the Menu component.\n * @returns An object with `targetRef` to attach to the container element, `open` function to open the menu at event coordinates, `close` function to close the menu, and `rendered` JSX element to include in your component tree.\n */\nexport function useContextMenu<\n E extends HTMLElement = HTMLElement,\n P extends object = {},\n T = ComponentProps<typeof MenuTrigger>,\n>(\n Component: ComponentType<P>,\n defaultTriggerProps?: Omit<\n ComponentProps<typeof MenuTrigger>,\n 'children' | 'isOpen' | 'onOpenChange' | 'targetRef'\n >,\n defaultMenuProps?: P,\n): UseContextMenuReturn<E, P, T> {\n const { t } = useI18n();\n const [isOpen, setIsOpen] = useState(false);\n const [componentProps, setComponentProps] = useState<P | null>(null);\n const [triggerProps, setTriggerProps] = useState<T | null>(null);\n const [anchorPosition, setAnchorPosition] = useState<{\n x: number;\n y: number;\n } | null>(null);\n const targetRef = useRef<E>(null);\n const invisibleAnchorRef = useRef<HTMLSpanElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef(false);\n\n // Mark the container as a popover trigger so that other open menus' close-on-\n // outside predicates treat clicks inside it (including programmatic\n // open buttons rendered alongside a context-menu target) as a legitimate\n // trigger interaction instead of a generic outside click. This mirrors the\n // pattern in `useAnchoredMenu`.\n useEffect(() => {\n const el = targetRef.current;\n if (el) {\n el.dataset.popoverTrigger = '';\n return () => {\n delete el.dataset.popoverTrigger;\n };\n }\n }, []);\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n // Feed both the context-menu target (`triggerRef`) and the popover\n // container (`containerRef`) into the sync. The container ref is shared with\n // the rendered `MenuTrigger` via its `popoverRef` prop — the dummy\n // `MenuTrigger` opts out of `usePopoverSync` (`enabled: !isDummy`), so\n // without this the nested-popover guard would have no container to match\n // against and a `SubMenuTrigger` opened inside this menu would close the\n // whole menu.\n usePopoverSync({\n menuId,\n isOpen,\n onClose: () => {\n setIsOpen(false);\n setAnchorPosition(null);\n },\n triggerRef: targetRef as RefObject<HTMLElement | null>,\n containerRef: popoverRef,\n });\n\n function setupCheck() {\n if (!setupRef.current) {\n throw new Error(\n 'useContextMenu: MenuTrigger must be rendered. Use `rendered` property to include it in your component tree.',\n );\n }\n }\n\n /**\n * Where to put the invisible anchor, in **viewport** coordinates.\n *\n * Viewport rather than container-relative on purpose. The anchor is rendered\n * into a fixed-position host pinned to the viewport origin (see\n * `renderedMenu`), so the two agree by construction. Computing coordinates\n * against the target element while the anchor's containing block was\n * whichever positioned ancestor happened to enclose `rendered` is what used\n * to open the menu one ancestor-origin away from the pointer.\n */\n const calculatePosition = (\n event?: NativeMouseEvent | NativePointerEvent | MouseEvent | PointerEvent,\n ) => {\n if (event) {\n const { clientX = 0, clientY = 0 } = event;\n\n return { x: clientX, y: clientY };\n }\n\n // No event — a keyboard opening, which has no coordinates. Anchor on the\n // target element's centre instead.\n const container = targetRef.current;\n\n if (!container) return { x: 0, y: 0 };\n\n const rect = container.getBoundingClientRect();\n\n return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };\n };\n\n // 'open' accepts props, trigger props, and optional event for positioning, then opens the menu\n const open = useEvent(\n (\n props: P = {} as P,\n triggerProps?: T,\n event?: NativeMouseEvent | NativePointerEvent | MouseEvent | PointerEvent,\n ) => {\n setupCheck();\n\n // Ensure the target element can serve as a positioning context for the\n // invisible target element. If the consumer hasn't explicitly set\n // `position: relative | absolute | fixed | sticky` we switch it to\n // `relative` so that absolutely-positioned children are laid out correctly.\n if (targetRef.current) {\n const computedStyle = window.getComputedStyle(targetRef.current);\n\n if (computedStyle.position === 'static') {\n targetRef.current.style.position = 'relative';\n }\n }\n\n // Prevent default context menu if it's a context menu event\n if (\n event &&\n 'preventDefault' in event &&\n typeof event.preventDefault === 'function'\n ) {\n event.preventDefault();\n }\n\n const { x, y } = calculatePosition(event);\n setAnchorPosition({ x, y });\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps);\n setTriggerProps(triggerProps ?? null);\n setIsOpen(true);\n },\n );\n\n const update = useEvent((props: P, triggerProps?: T) => {\n setupCheck();\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps as P);\n setTriggerProps(triggerProps ?? null);\n });\n\n const close = useEvent(() => {\n setIsOpen(false);\n setAnchorPosition(null);\n });\n\n // Context menu event handler\n const onContextMenu = useEvent(\n (event: MouseEvent | PointerEvent | MouseEvent | PointerEvent) => {\n event.preventDefault();\n if (isOpen) {\n const pos = calculatePosition(event);\n setAnchorPosition(pos);\n } else {\n open(defaultMenuProps, undefined, event);\n }\n },\n );\n\n // Bind the onContextMenu event to targetRef\n useEffect(() => {\n const element = targetRef.current;\n if (!element) return;\n\n element.addEventListener('contextmenu', onContextMenu as any);\n\n return () => {\n element.removeEventListener('contextmenu', onContextMenu as any);\n };\n }, [onContextMenu]);\n\n // Render the menu only when componentProps is set\n const renderedMenu = useMemo(() => {\n if (!componentProps || !anchorPosition) return null;\n\n return (\n <>\n {/*\n Invisible anchor at the click coordinates.\n\n Two things make those coordinates mean what they say:\n\n 1. A `fixed` host, so the containing block's origin is the viewport\n rather than whichever positioned ancestor encloses `rendered` — the\n table root, the tree row — which is what used to open the menu one\n ancestor-origin away from the pointer.\n 2. A portal to `body`, because `position: fixed` is captured by any\n ancestor carrying a transform, filter or `will-change`. A\n virtualized row is usually translated, so the `fixed` host alone\n would still be anchored to the row.\n */}\n {createPortal(\n <div\n style={{\n position: 'fixed',\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n }}\n >\n <span\n ref={invisibleAnchorRef}\n style={{\n position: 'absolute',\n left: `${anchorPosition.x}px`,\n top: `${anchorPosition.y}px`,\n width: '0px',\n height: '0px',\n lineHeight: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n }}\n />\n </div>,\n document.body,\n )}\n <MenuTrigger\n offset={0}\n crossOffset={0}\n placement={\n (triggerProps as ComponentProps<typeof MenuTrigger>)?.placement ||\n defaultTriggerProps?.placement ||\n 'bottom start'\n }\n {...mergeProps(defaultTriggerProps, triggerProps || undefined)}\n isDummy\n isOpen={isOpen}\n targetRef={invisibleAnchorRef}\n popoverRef={popoverRef}\n onOpenChange={setIsOpen}\n >\n <VisuallyHidden>\n <Pressable>\n <button\n aria-label={t(\n 'contextMenu.openContextMenu',\n 'Open context menu',\n )}\n />\n </Pressable>\n </VisuallyHidden>\n <Component {...componentProps} />\n </MenuTrigger>\n </>\n );\n }, [\n componentProps,\n triggerProps,\n isOpen,\n defaultTriggerProps,\n anchorPosition,\n t,\n ]);\n\n return {\n targetRef,\n open,\n update,\n close,\n isOpen,\n get rendered() {\n setupRef.current = true;\n\n return renderedMenu;\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-context-menu.js","names":["MenuTrigger","mergeProps"],"sources":["../../../src/components/actions/use-context-menu.tsx"],"sourcesContent":["import { Pressable } from '@react-aria/interactions';\nimport {\n ComponentProps,\n ComponentType,\n MouseEvent,\n PointerEvent,\n ReactElement,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { VisuallyHidden } from 'react-aria';\nimport { createPortal } from 'react-dom';\n\nimport { useEvent } from '../../_internal';\nimport { useI18n } from '../../i18n';\nimport { generateRandomId } from '../../utils/random';\nimport { mergeProps } from '../../utils/react';\nimport { usePopoverSync } from '../../utils/react/usePopoverSync';\n\nimport { MenuTrigger } from './Menu';\n\ntype NativeMouseEvent = globalThis.MouseEvent;\ntype NativePointerEvent = globalThis.PointerEvent;\n\nexport interface UseContextMenuReturn<\n E extends HTMLElement = HTMLElement,\n P extends object = {},\n T = ComponentProps<typeof MenuTrigger>,\n> {\n /** Container element that receives context menu events. Attach this ref to your target element. */\n targetRef: RefObject<E | null>;\n\n /**\n * Programmatically opens the menu at the specified coordinates or element center.\n * Runtime props are merged with defaultMenuProps (runtime props take precedence).\n *\n * @param props - Props to pass to the menu component (optional, defaults to defaultMenuProps)\n * @param triggerProps - Additional props for MenuTrigger (merged with defaultTriggerProps)\n * @param event - The pointer/mouse event containing coordinates for positioning (optional, centers on element if not provided)\n */\n open(\n props?: P,\n triggerProps?: T,\n event?: NativeMouseEvent | NativePointerEvent | MouseEvent | PointerEvent,\n ): void;\n\n /**\n * Updates the props of the currently open menu without repositioning.\n * Props are merged with defaultMenuProps.\n */\n update(props: P, triggerProps?: T): void;\n\n /** Closes the menu programmatically. */\n close(): void;\n\n /** Current open/closed state of the menu. */\n isOpen: boolean;\n\n /**\n * JSX element that must be rendered in your component tree.\n * Contains the MenuTrigger and positioning logic.\n * IMPORTANT: Must be placed directly inside the target container (the element with targetRef).\n */\n get rendered(): ReactElement | null;\n}\n\n/**\n * Generic hook to manage a context menu component that opens at pointer coordinates.\n *\n * @param Component - A React component that represents the menu content (Menu or CommandMenu).\n * @param defaultTriggerProps - Default props to pass to the MenuTrigger.\n * @param defaultMenuProps - Default props to pass to the Menu component.\n * @returns An object with `targetRef` to attach to the container element, `open` function to open the menu at event coordinates, `close` function to close the menu, and `rendered` JSX element to include in your component tree.\n */\nexport function useContextMenu<\n E extends HTMLElement = HTMLElement,\n P extends object = {},\n T = ComponentProps<typeof MenuTrigger>,\n>(\n Component: ComponentType<P>,\n defaultTriggerProps?: Omit<\n ComponentProps<typeof MenuTrigger>,\n 'children' | 'isOpen' | 'onOpenChange' | 'targetRef'\n >,\n defaultMenuProps?: P,\n): UseContextMenuReturn<E, P, T> {\n const { t } = useI18n();\n const [isOpen, setIsOpen] = useState(false);\n const [componentProps, setComponentProps] = useState<P | null>(null);\n const [triggerProps, setTriggerProps] = useState<T | null>(null);\n const [anchorPosition, setAnchorPosition] = useState<{\n x: number;\n y: number;\n } | null>(null);\n const targetRef = useRef<E>(null);\n const invisibleAnchorRef = useRef<HTMLSpanElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef(false);\n\n // Mark the container as a popover trigger so that other open menus' close-on-\n // outside predicates treat clicks inside it (including programmatic\n // open buttons rendered alongside a context-menu target) as a legitimate\n // trigger interaction instead of a generic outside click. This mirrors the\n // pattern in `useAnchoredMenu`.\n useEffect(() => {\n const el = targetRef.current;\n if (el) {\n el.dataset.popoverTrigger = '';\n return () => {\n delete el.dataset.popoverTrigger;\n };\n }\n }, []);\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n // Feed both the context-menu target (`triggerRef`) and the popover\n // container (`containerRef`) into the sync. The container ref is shared with\n // the rendered `MenuTrigger` via its `popoverRef` prop — the dummy\n // `MenuTrigger` opts out of `usePopoverSync` (`enabled: !isDummy`), so\n // without this the nested-popover guard would have no container to match\n // against and a `SubMenuTrigger` opened inside this menu would close the\n // whole menu.\n usePopoverSync({\n menuId,\n isOpen,\n onClose: () => {\n setIsOpen(false);\n setAnchorPosition(null);\n },\n triggerRef: targetRef as RefObject<HTMLElement | null>,\n containerRef: popoverRef,\n });\n\n function setupCheck() {\n if (!setupRef.current) {\n throw new Error(\n 'useContextMenu: MenuTrigger must be rendered. Use `rendered` property to include it in your component tree.',\n );\n }\n }\n\n /**\n * Where to put the invisible anchor, in **viewport** coordinates.\n *\n * Viewport rather than container-relative on purpose. The anchor is rendered\n * into a fixed-position host pinned to the viewport origin (see\n * `renderedMenu`), so the two agree by construction. Computing coordinates\n * against the target element while the anchor's containing block was\n * whichever positioned ancestor happened to enclose `rendered` is what used\n * to open the menu one ancestor-origin away from the pointer.\n */\n const calculatePosition = (\n event?: NativeMouseEvent | NativePointerEvent | MouseEvent | PointerEvent,\n ) => {\n if (event) {\n const { clientX = 0, clientY = 0 } = event;\n\n return { x: clientX, y: clientY };\n }\n\n // No event — a keyboard opening, which has no coordinates. Anchor on the\n // target element's centre instead.\n const container = targetRef.current;\n\n if (!container) return { x: 0, y: 0 };\n\n const rect = container.getBoundingClientRect();\n\n return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };\n };\n\n // 'open' accepts props, trigger props, and optional event for positioning, then opens the menu\n const open = useEvent(\n (\n props: P = {} as P,\n triggerProps?: T,\n event?: NativeMouseEvent | NativePointerEvent | MouseEvent | PointerEvent,\n ) => {\n setupCheck();\n\n // Ensure the target element can serve as a positioning context for the\n // invisible target element. If the consumer hasn't explicitly set\n // `position: relative | absolute | fixed | sticky` we switch it to\n // `relative` so that absolutely-positioned children are laid out correctly.\n if (targetRef.current) {\n const computedStyle = window.getComputedStyle(targetRef.current);\n\n if (computedStyle.position === 'static') {\n targetRef.current.style.position = 'relative';\n }\n }\n\n // Prevent default context menu if it's a context menu event\n if (\n event &&\n 'preventDefault' in event &&\n typeof event.preventDefault === 'function'\n ) {\n event.preventDefault();\n }\n\n const { x, y } = calculatePosition(event);\n setAnchorPosition({ x, y });\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps);\n setTriggerProps(triggerProps ?? null);\n setIsOpen(true);\n },\n );\n\n const update = useEvent((props: P, triggerProps?: T) => {\n setupCheck();\n\n // Merge defaultMenuProps with provided props\n const finalProps = defaultMenuProps\n ? { ...defaultMenuProps, ...props }\n : props;\n\n setComponentProps(finalProps as P);\n setTriggerProps(triggerProps ?? null);\n });\n\n const close = useEvent(() => {\n setIsOpen(false);\n setAnchorPosition(null);\n });\n\n // Context menu event handler\n const onContextMenu = useEvent(\n (event: MouseEvent | PointerEvent | MouseEvent | PointerEvent) => {\n event.preventDefault();\n if (isOpen) {\n const pos = calculatePosition(event);\n setAnchorPosition(pos);\n } else {\n open(defaultMenuProps, undefined, event);\n }\n },\n );\n\n // Bind the onContextMenu event to targetRef\n useEffect(() => {\n const element = targetRef.current;\n if (!element) return;\n\n element.addEventListener('contextmenu', onContextMenu as any);\n\n return () => {\n element.removeEventListener('contextmenu', onContextMenu as any);\n };\n }, [onContextMenu]);\n\n // Render the menu only when componentProps is set\n const renderedMenu = useMemo(() => {\n if (!componentProps || !anchorPosition) return null;\n\n return (\n <>\n {/*\n Invisible anchor at the click coordinates.\n\n Two things make those coordinates mean what they say:\n\n 1. A `fixed` host, so the containing block's origin is the viewport\n rather than whichever positioned ancestor encloses `rendered` — the\n table root, the tree row — which is what used to open the menu one\n ancestor-origin away from the pointer.\n 2. A portal to `body`, because `position: fixed` is captured by any\n ancestor carrying a transform, filter or `will-change`. A\n virtualized row is usually translated, so the `fixed` host alone\n would still be anchored to the row.\n */}\n {createPortal(\n <div\n style={{\n position: 'fixed',\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n }}\n >\n <span\n ref={invisibleAnchorRef}\n style={{\n position: 'absolute',\n left: `${anchorPosition.x}px`,\n top: `${anchorPosition.y}px`,\n width: '0px',\n height: '0px',\n lineHeight: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n }}\n />\n </div>,\n document.body,\n )}\n <MenuTrigger\n offset={0}\n placement={\n (triggerProps as ComponentProps<typeof MenuTrigger>)?.placement ||\n defaultTriggerProps?.placement ||\n 'bottom start'\n }\n {...mergeProps(defaultTriggerProps, triggerProps || undefined)}\n isDummy\n isOpen={isOpen}\n targetRef={invisibleAnchorRef}\n popoverRef={popoverRef}\n onOpenChange={setIsOpen}\n >\n <VisuallyHidden>\n <Pressable>\n <button\n aria-label={t(\n 'contextMenu.openContextMenu',\n 'Open context menu',\n )}\n />\n </Pressable>\n </VisuallyHidden>\n <Component {...componentProps} />\n </MenuTrigger>\n </>\n );\n }, [\n componentProps,\n triggerProps,\n isOpen,\n defaultTriggerProps,\n anchorPosition,\n t,\n ]);\n\n return {\n targetRef,\n open,\n update,\n close,\n isOpen,\n get rendered() {\n setupRef.current = true;\n\n return renderedMenu;\n },\n };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import themes_default from "../../../data/themes.js";
3
3
  import { useAlert } from "./use-alert.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useDeprecationWarning } from "../../../_internal/hooks/use-deprecation-warning.js";
4
4
  import { CONTAINER_STYLES, TEXT_STYLES, filterBaseProps } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, Element, filterBaseProps } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import themes_default from "../../../data/themes.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { CONTAINER_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useTimer } from "../../../_internal/hooks/use-timer/use-timer.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-dcbc0fb | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3483fd4 | Cube Dev Team */
2
2
  import { _Tooltip } from "../../overlays/Tooltip/Tooltip.js";
3
3
  import { TooltipTrigger } from "../../overlays/Tooltip/TooltipTrigger.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";