@cube-dev/ui-kit 0.199.2 → 0.200.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (673) hide show
  1. package/dist/CHANGELOG.md +35 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.d.ts +6 -4
  14. package/dist/components/GridProvider.js +14 -9
  15. package/dist/components/GridProvider.js.map +1 -1
  16. package/dist/components/HiddenInput.js +1 -1
  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 +2 -2
  22. package/dist/components/actions/Button/Button.js.map +1 -1
  23. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  25. package/dist/components/actions/ButtonSplit/context.js +1 -1
  26. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/dist/components/actions/CommandMenu/styled.js +1 -1
  28. package/dist/components/actions/ItemAction/ItemAction.js +7 -12
  29. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  30. package/dist/components/actions/ItemActionContext.js +1 -1
  31. package/dist/components/actions/ItemActionsWrapper.js +5 -6
  32. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  33. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +1 -1
  36. package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
  37. package/dist/components/actions/Menu/MenuItem.js +1 -1
  38. package/dist/components/actions/Menu/MenuSection.js +1 -1
  39. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  40. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  41. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  42. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  43. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  44. package/dist/components/actions/Menu/context.js +1 -1
  45. package/dist/components/actions/Menu/styled.js +2 -2
  46. package/dist/components/actions/Menu/styled.js.map +1 -1
  47. package/dist/components/actions/actions-run.js +1 -1
  48. package/dist/components/actions/index.js +1 -1
  49. package/dist/components/actions/use-action.js +1 -1
  50. package/dist/components/actions/use-anchored-menu.js +1 -1
  51. package/dist/components/actions/use-context-menu.js +1 -1
  52. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  53. package/dist/components/content/Alert/Alert.js +1 -1
  54. package/dist/components/content/Alert/Alert.js.map +1 -1
  55. package/dist/components/content/Alert/use-alert.js +24 -27
  56. package/dist/components/content/Alert/use-alert.js.map +1 -1
  57. package/dist/components/content/Avatar/Avatar.js +1 -1
  58. package/dist/components/content/Badge/Badge.js +6 -2
  59. package/dist/components/content/Badge/Badge.js.map +1 -1
  60. package/dist/components/content/Card/Card.js +1 -1
  61. package/dist/components/content/Content.js +1 -1
  62. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
  63. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  64. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  65. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  66. package/dist/components/content/Divider.js +1 -1
  67. package/dist/components/content/Footer.js +1 -1
  68. package/dist/components/content/Header.js +1 -1
  69. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  70. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  71. package/dist/components/content/InlineInput/InlineInput.js +6 -13
  72. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  73. package/dist/components/content/Item/Item.js +18 -18
  74. package/dist/components/content/Item/Item.js.map +1 -1
  75. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  76. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  77. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  78. package/dist/components/content/Layout/GridLayout.js +1 -1
  79. package/dist/components/content/Layout/Layout.js +1 -1
  80. package/dist/components/content/Layout/Layout.js.map +1 -1
  81. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  82. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  83. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  84. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  85. package/dist/components/content/Layout/LayoutContent.js +5 -3
  86. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  87. package/dist/components/content/Layout/LayoutContext.js +1 -1
  88. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  89. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  90. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  91. package/dist/components/content/Layout/LayoutHeader.js +2 -2
  92. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  93. package/dist/components/content/Layout/LayoutPane.js +16 -12
  94. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  95. package/dist/components/content/Layout/LayoutPanel.js +23 -19
  96. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  97. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  98. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  99. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  100. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  101. package/dist/components/content/Layout/index.js +1 -1
  102. package/dist/components/content/Layout/utils.js +1 -1
  103. package/dist/components/content/Paragraph.js +1 -1
  104. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  105. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  106. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  107. package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
  108. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  109. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  110. package/dist/components/content/Result/Result.js +1 -1
  111. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  112. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  113. package/dist/components/content/Tag/Tag.js +6 -2
  114. package/dist/components/content/Tag/Tag.js.map +1 -1
  115. package/dist/components/content/Text.js +1 -1
  116. package/dist/components/content/TextItem/TextItem.js +1 -1
  117. package/dist/components/content/Title.js +1 -1
  118. package/dist/components/content/Tree/Tree.js +9 -17
  119. package/dist/components/content/Tree/Tree.js.map +1 -1
  120. package/dist/components/content/Tree/TreeNode.js +6 -4
  121. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  122. package/dist/components/content/Tree/styled.js +30 -11
  123. package/dist/components/content/Tree/styled.js.map +1 -1
  124. package/dist/components/content/Tree/tree-index.js +1 -1
  125. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  126. package/dist/components/content/Tree/use-load-data.js +1 -1
  127. package/dist/components/content/highlightText.js +1 -1
  128. package/dist/components/content/use-auto-tooltip.js +1 -1
  129. package/dist/components/data/DataTable/DataTable.js +1 -1
  130. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  131. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  132. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  133. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  134. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
  135. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  136. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  137. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  138. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  139. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  140. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  141. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  142. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  143. package/dist/components/data/TableBase/RowCollection.js +1 -1
  144. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  145. package/dist/components/data/TableBase/TableRow.js +1 -1
  146. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  147. package/dist/components/data/TableBase/TableView.js +1 -1
  148. package/dist/components/data/TableBase/TableView.js.map +1 -1
  149. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  150. package/dist/components/data/TableBase/TreeGridTable.js.map +1 -1
  151. package/dist/components/data/TableBase/column-header.js +1 -1
  152. package/dist/components/data/TableBase/column-menu.js +1 -1
  153. package/dist/components/data/TableBase/column-styles.js +1 -1
  154. package/dist/components/data/TableBase/column-tint.js +1 -1
  155. package/dist/components/data/TableBase/row-menu.js +1 -1
  156. package/dist/components/data/TableBase/styled.js +26 -29
  157. package/dist/components/data/TableBase/styled.js.map +1 -1
  158. package/dist/components/data/TableBase/table-tree.js +1 -1
  159. package/dist/components/data/TableBase/types.js +1 -1
  160. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  161. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  162. package/dist/components/data/TableBase/use-column-order.js +1 -1
  163. package/dist/components/data/TableBase/use-column-window.js +1 -1
  164. package/dist/components/data/TableBase/use-container-width.js +1 -1
  165. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  166. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  167. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  168. package/dist/components/data/TableBase/use-table-search.js +1 -1
  169. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  170. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  171. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  172. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  173. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  174. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  175. package/dist/components/fields/Checkbox/Checkbox.js +3 -3
  176. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  177. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  178. package/dist/components/fields/Checkbox/context.js +1 -1
  179. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  180. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  181. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  182. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +6 -6
  183. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  184. package/dist/components/fields/ComboBox/ComboBox.d.ts +1 -1
  185. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  186. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  187. package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
  188. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -1
  189. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  190. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  191. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  192. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  193. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  194. package/dist/components/fields/DatePicker/DateInputBase.js +5 -9
  195. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  196. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  197. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  198. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  199. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  200. package/dist/components/fields/DatePicker/DatePickerSegment.js +49 -39
  201. package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
  202. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  203. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  204. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  205. package/dist/components/fields/DatePicker/PeriodPicker.js +5 -3
  206. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  207. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  208. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  209. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  210. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  211. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  212. package/dist/components/fields/DatePicker/period.js +1 -1
  213. package/dist/components/fields/DatePicker/props.js +1 -1
  214. package/dist/components/fields/DatePicker/utils.js +1 -1
  215. package/dist/components/fields/FileInput/FileInput.js +2 -2
  216. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  217. package/dist/components/fields/FilterListBox/FilterListBox.js +6 -8
  218. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  219. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  220. package/dist/components/fields/Input/Input.js +1 -1
  221. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  222. package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
  223. package/dist/components/fields/ListBox/ListBox.js +49 -24
  224. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  225. package/dist/components/fields/ListBox/optionId.js +1 -1
  226. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  227. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  228. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  229. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  230. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  231. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  232. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  233. package/dist/components/fields/Picker/Picker.js +1 -1
  234. package/dist/components/fields/RadioGroup/Radio.js +91 -96
  235. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  236. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  237. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  238. package/dist/components/fields/RadioGroup/context.js +1 -1
  239. package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +1 -1
  240. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  241. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  242. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  243. package/dist/components/fields/Select/Select.d.ts +1 -1
  244. package/dist/components/fields/Select/Select.js +3 -3
  245. package/dist/components/fields/Select/Select.js.map +1 -1
  246. package/dist/components/fields/Slider/Gradation.js +1 -1
  247. package/dist/components/fields/Slider/HueSlider.js +3 -3
  248. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  249. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  250. package/dist/components/fields/Slider/Slider.js +1 -1
  251. package/dist/components/fields/Slider/SliderBase.js +4 -6
  252. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  253. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  254. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  255. package/dist/components/fields/Slider/elements.js +7 -6
  256. package/dist/components/fields/Slider/elements.js.map +1 -1
  257. package/dist/components/fields/Slider/index.js +1 -1
  258. package/dist/components/fields/Switch/Switch.js +3 -3
  259. package/dist/components/fields/Switch/Switch.js.map +1 -1
  260. package/dist/components/fields/TagInput/TagInput.d.ts +1 -1
  261. package/dist/components/fields/TagInput/TagInput.js +1 -1
  262. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  263. package/dist/components/fields/TagInput/TagList.js +3 -3
  264. package/dist/components/fields/TagInput/TagList.js.map +1 -1
  265. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  266. package/dist/components/fields/TagInput/useTagError.js +1 -1
  267. package/dist/components/fields/TextArea/TextArea.js +1 -1
  268. package/dist/components/fields/TextInput/TextInput.js +1 -1
  269. package/dist/components/fields/TextInput/TextInputBase.js +3 -6
  270. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  271. package/dist/components/fields/TextInput/displayed-validation.js +1 -1
  272. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  273. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  274. package/dist/components/fields/TriggerActions.js +1 -1
  275. package/dist/components/fields/color/ColorPanel.js +2 -2
  276. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  277. package/dist/components/fields/color/channels.js +1 -1
  278. package/dist/components/fields/color/color.js +1 -1
  279. package/dist/components/fields/color/context.js +1 -1
  280. package/dist/components/fields/option-origin-press.js +1 -1
  281. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  282. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  283. package/dist/components/form/Form/Field.js +1 -1
  284. package/dist/components/form/Form/Form.js +1 -1
  285. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  286. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  287. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  288. package/dist/components/form/Form/SubmitError.js +1 -1
  289. package/dist/components/form/Form/backend.js +1 -1
  290. package/dist/components/form/Form/index.js +1 -1
  291. package/dist/components/form/Form/modern/actions.js +1 -1
  292. package/dist/components/form/Form/modern/context.js +1 -1
  293. package/dist/components/form/Form/modern/controller.js +1 -1
  294. package/dist/components/form/Form/modern/field-binding.js +1 -1
  295. package/dist/components/form/Form/modern/field.js +1 -1
  296. package/dist/components/form/Form/modern/react.js +1 -1
  297. package/dist/components/form/Form/modern/store.js +1 -1
  298. package/dist/components/form/Form/modern/validation.js +1 -1
  299. package/dist/components/form/Form/modern/values.js +1 -1
  300. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  301. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  302. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  303. package/dist/components/form/Form/use-field/use-field.js +1 -1
  304. package/dist/components/form/Form/use-form.js +1 -1
  305. package/dist/components/form/Form/validation.js +1 -1
  306. package/dist/components/form/Label.js +1 -1
  307. package/dist/components/form/field-chrome.js +1 -1
  308. package/dist/components/form/legacy-tooltip.js +1 -1
  309. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  310. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  311. package/dist/components/form/validation/use-validation-props.js +1 -1
  312. package/dist/components/form/wrapper.js +1 -1
  313. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  314. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  315. package/dist/components/layout/Flex.js +1 -1
  316. package/dist/components/layout/Flow.js +1 -1
  317. package/dist/components/layout/Grid.js +1 -1
  318. package/dist/components/layout/Panel.js +13 -38
  319. package/dist/components/layout/Panel.js.map +1 -1
  320. package/dist/components/layout/Prefix.js +1 -1
  321. package/dist/components/layout/ResizablePanel.js +24 -20
  322. package/dist/components/layout/ResizablePanel.js.map +1 -1
  323. package/dist/components/layout/Space.js +1 -1
  324. package/dist/components/layout/Suffix.js +1 -1
  325. package/dist/components/navigation/Pagination/Pagination.js +2 -2
  326. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  327. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  328. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  329. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  330. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  331. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  332. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  333. package/dist/components/navigation/Tabs/TabPicker.js +62 -68
  334. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  335. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  336. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  337. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  338. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  339. package/dist/components/navigation/Tabs/styled.js +13 -12
  340. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  341. package/dist/components/navigation/Tabs/types.js +1 -1
  342. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  343. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  344. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  345. package/dist/components/other/Calendar/Calendar.js +1 -1
  346. package/dist/components/other/Calendar/CalendarCell.js +6 -6
  347. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  348. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  349. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  350. package/dist/components/other/Calendar/CalendarPanel.js +3 -3
  351. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  352. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  353. package/dist/components/other/Calendar/PeriodGrid.js +6 -6
  354. package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
  355. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  356. package/dist/components/other/Calendar/styled.js +4 -4
  357. package/dist/components/other/Calendar/styled.js.map +1 -1
  358. package/dist/components/other/CubeLogo/CubeLogo.js +3 -4
  359. package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
  360. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  361. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  362. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  363. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  364. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  365. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  366. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  367. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  368. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  369. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  370. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  371. package/dist/components/overlays/Dialog/context.js +1 -1
  372. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  373. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  374. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  375. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
  376. package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
  377. package/dist/components/overlays/Modal/Modal.js +1 -1
  378. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  379. package/dist/components/overlays/Modal/Overlay.js +1 -1
  380. package/dist/components/overlays/Modal/Popover.js +1 -1
  381. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  382. package/dist/components/overlays/Modal/Tray.js +4 -5
  383. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  384. package/dist/components/overlays/Modal/Underlay.js +1 -1
  385. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  386. package/dist/components/overlays/Notifications/Notification.js +1 -1
  387. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  388. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  389. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  390. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  391. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  392. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  393. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  394. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  395. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  396. package/dist/components/overlays/Notifications/index.js +1 -1
  397. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  398. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  399. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  400. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  401. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  402. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  403. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  404. package/dist/components/overlays/Toast/index.js +1 -1
  405. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  406. package/dist/components/overlays/Toast/useToast.js +1 -1
  407. package/dist/components/overlays/Tooltip/Tooltip.js +8 -6
  408. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  409. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  410. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  411. package/dist/components/overlays/Tooltip/context.js +1 -1
  412. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  413. package/dist/components/portal/Portal.js +1 -1
  414. package/dist/components/portal/PortalProvider.js +1 -1
  415. package/dist/components/portal/usePortal.js +1 -1
  416. package/dist/components/shared/DraggableCollection.js +1 -1
  417. package/dist/components/shared/InvalidIcon.js +1 -1
  418. package/dist/components/shared/ValidIcon.js +1 -1
  419. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  420. package/dist/components/status/Spin/Cube.js +1 -1
  421. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  422. package/dist/components/status/Spin/Spin.js +1 -1
  423. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  424. package/dist/data/item-themes.js +27 -27
  425. package/dist/data/item-themes.js.map +1 -1
  426. package/dist/data/themes.js +1 -1
  427. package/dist/eslint-plugin/defaults.generated.js +2 -2
  428. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  429. package/dist/eslint-plugin/index.js +1 -1
  430. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  431. package/dist/i18n/I18nProvider.js +1 -1
  432. package/dist/i18n/createFormatter.js +1 -1
  433. package/dist/i18n/index.js +1 -1
  434. package/dist/i18n/instance.js +1 -1
  435. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  436. package/dist/i18n/locales/en-US/uikit.js +1 -1
  437. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  438. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  439. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  440. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  441. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  442. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  443. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  444. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  445. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  446. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  447. package/dist/i18n/locales.js +1 -1
  448. package/dist/i18n/namespace.js +1 -1
  449. package/dist/i18n/useFormatter.js +1 -1
  450. package/dist/i18n/useI18n.js +1 -1
  451. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  452. package/dist/icons/AdjustmentsIcon.js +1 -1
  453. package/dist/icons/AiIcon.js +1 -1
  454. package/dist/icons/AreaChartIcon.js +1 -1
  455. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  456. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  457. package/dist/icons/BackwardIcon.js +1 -1
  458. package/dist/icons/BarChartIcon.js +1 -1
  459. package/dist/icons/BellFilledIcon.js +1 -1
  460. package/dist/icons/BellIcon.js +1 -1
  461. package/dist/icons/BooleanIcon.js +1 -1
  462. package/dist/icons/CalendarEditIcon.js +1 -1
  463. package/dist/icons/CalendarIcon.js +1 -1
  464. package/dist/icons/CaretDownIcon.js +1 -1
  465. package/dist/icons/CaretUpIcon.js +1 -1
  466. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  467. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  468. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  469. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  470. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  471. package/dist/icons/ChartBarLineIcon.js +1 -1
  472. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  473. package/dist/icons/ChartBarStackedIcon.js +1 -1
  474. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  475. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  476. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  477. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  478. package/dist/icons/ChartBubbleIcon.js +1 -1
  479. package/dist/icons/ChartDonut2Icon.js +1 -1
  480. package/dist/icons/ChartFunnelIcon.js +1 -1
  481. package/dist/icons/ChartHeatmapIcon.js +1 -1
  482. package/dist/icons/ChartKPIIcon.js +1 -1
  483. package/dist/icons/ChartPie2Icon.js +1 -1
  484. package/dist/icons/ChartScatterIcon.js +1 -1
  485. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  486. package/dist/icons/CheckCircleIcon.js +1 -1
  487. package/dist/icons/CheckIcon.js +1 -1
  488. package/dist/icons/CircleFilledIcon.js +1 -1
  489. package/dist/icons/ClearIcon.js +1 -1
  490. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  491. package/dist/icons/CloseCircleIcon.js +1 -1
  492. package/dist/icons/CloseIcon.js +1 -1
  493. package/dist/icons/CodeIcon.js +1 -1
  494. package/dist/icons/ColumnTotalIcon.js +1 -1
  495. package/dist/icons/CopyIcon.js +1 -1
  496. package/dist/icons/CountIcon.js +1 -1
  497. package/dist/icons/CubeIcon.js +1 -1
  498. package/dist/icons/CubePauseIcon.js +1 -1
  499. package/dist/icons/CubePlayIcon.js +1 -1
  500. package/dist/icons/CurrencyDollarIcon.js +1 -1
  501. package/dist/icons/DangerIcon.js +1 -1
  502. package/dist/icons/DashboardIcon.js +1 -1
  503. package/dist/icons/DatabaseIcon.js +1 -1
  504. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  505. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  506. package/dist/icons/DirectionIcon.js +1 -1
  507. package/dist/icons/DonutIcon.js +1 -1
  508. package/dist/icons/DownIcon.js +1 -1
  509. package/dist/icons/EditIcon.js +1 -1
  510. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  511. package/dist/icons/ExclamationCircleIcon.js +1 -1
  512. package/dist/icons/ExclamationIcon.js +1 -1
  513. package/dist/icons/EyeIcon.js +1 -1
  514. package/dist/icons/EyeInvisibleIcon.js +1 -1
  515. package/dist/icons/FilterIcon.js +1 -1
  516. package/dist/icons/FolderFilledIcon.js +1 -1
  517. package/dist/icons/FolderIcon.js +1 -1
  518. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  519. package/dist/icons/FolderOpenIcon.js +1 -1
  520. package/dist/icons/ForwardIcon.js +1 -1
  521. package/dist/icons/GripVerticalIcon.js +1 -1
  522. package/dist/icons/HierarchyIcon.js +1 -1
  523. package/dist/icons/HierarchyOpenIcon.js +1 -1
  524. package/dist/icons/Icon.js +21 -38
  525. package/dist/icons/Icon.js.map +1 -1
  526. package/dist/icons/InfoCircleIcon.js +1 -1
  527. package/dist/icons/InfoIcon.js +1 -1
  528. package/dist/icons/KeyIcon.js +1 -1
  529. package/dist/icons/LeftIcon.js +1 -1
  530. package/dist/icons/LineChartIcon.js +1 -1
  531. package/dist/icons/LoadingIcon.js +1 -1
  532. package/dist/icons/LockFilledIcon.js +1 -1
  533. package/dist/icons/LockIcon.js +1 -1
  534. package/dist/icons/MoreIcon.js +1 -1
  535. package/dist/icons/NotAllowedIcon.js +1 -1
  536. package/dist/icons/Number123Icon.js +1 -1
  537. package/dist/icons/NumberIcon.js +1 -1
  538. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  539. package/dist/icons/PauseCircleIcon.js +1 -1
  540. package/dist/icons/PauseIcon.js +1 -1
  541. package/dist/icons/PercentageIcon.js +1 -1
  542. package/dist/icons/PieChartIcon.js +1 -1
  543. package/dist/icons/PipetteIcon.js +1 -1
  544. package/dist/icons/PlayCircleIcon.js +1 -1
  545. package/dist/icons/PlayIcon.js +1 -1
  546. package/dist/icons/PlusIcon.js +1 -1
  547. package/dist/icons/ProgressBarIcon.js +1 -1
  548. package/dist/icons/ReloadIcon.js +1 -1
  549. package/dist/icons/ReportIcon.js +1 -1
  550. package/dist/icons/ReturnIcon.js +1 -1
  551. package/dist/icons/RightIcon.js +1 -1
  552. package/dist/icons/RowTotalsIcon.js +1 -1
  553. package/dist/icons/SchemeIcon.js +1 -1
  554. package/dist/icons/SearchIcon.js +1 -1
  555. package/dist/icons/SemanticQueryIcon.js +1 -1
  556. package/dist/icons/SettingsIcon.js +1 -1
  557. package/dist/icons/ShieldFilledIcon.js +1 -1
  558. package/dist/icons/ShieldIcon.js +1 -1
  559. package/dist/icons/SlashIcon.js +1 -1
  560. package/dist/icons/SparklesIcon.js +1 -1
  561. package/dist/icons/SqlIcon.js +1 -1
  562. package/dist/icons/StatsIcon.js +1 -1
  563. package/dist/icons/StopIcon.js +1 -1
  564. package/dist/icons/StringIcon.js +1 -1
  565. package/dist/icons/SubtotalsIcon.js +1 -1
  566. package/dist/icons/SwitchIcon.js +1 -1
  567. package/dist/icons/TableIcon.js +1 -1
  568. package/dist/icons/ThumbsDownIcon.js +1 -1
  569. package/dist/icons/ThumbsUpIcon.js +1 -1
  570. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  571. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  572. package/dist/icons/ThunderboltIcon.js +1 -1
  573. package/dist/icons/TimeIcon.js +1 -1
  574. package/dist/icons/TrashIcon.js +1 -1
  575. package/dist/icons/UnlockIcon.js +1 -1
  576. package/dist/icons/UpIcon.js +1 -1
  577. package/dist/icons/UserGroupIcon.js +1 -1
  578. package/dist/icons/UserIcon.js +1 -1
  579. package/dist/icons/UserLockIcon.js +1 -1
  580. package/dist/icons/ViewIcon.js +1 -1
  581. package/dist/icons/WarningFilledIcon.js +1 -1
  582. package/dist/icons/WarningIcon.js +1 -1
  583. package/dist/icons/wrap-icon.js +1 -1
  584. package/dist/index.js +1 -1
  585. package/dist/probe/canonicalize.js +1 -1
  586. package/dist/probe/css.js +1 -1
  587. package/dist/probe/index.js +1 -1
  588. package/dist/provider.js +1 -1
  589. package/dist/providers/TrackingProvider.js +1 -1
  590. package/dist/providers/navigation-url.js +1 -1
  591. package/dist/providers/navigationAdapter.default.js +1 -1
  592. package/dist/providers/use-navigation.js +1 -1
  593. package/dist/tokens/all-tokens.js +1 -1
  594. package/dist/tokens/base.js +8 -2
  595. package/dist/tokens/base.js.map +1 -1
  596. package/dist/tokens/color-seed.js +1 -1
  597. package/dist/tokens/color-theme.js +1 -1
  598. package/dist/tokens/colors.js +1 -1
  599. package/dist/tokens/layout.js +1 -1
  600. package/dist/tokens/lazy-styles.js +1 -1
  601. package/dist/tokens/legacy-color.js +1 -1
  602. package/dist/tokens/palette-config.js +1 -1
  603. package/dist/tokens/palette.js +1 -1
  604. package/dist/tokens/resolve.js +1 -1
  605. package/dist/tokens/shadows.d.ts +0 -1
  606. package/dist/tokens/shadows.js +2 -3
  607. package/dist/tokens/shadows.js.map +1 -1
  608. package/dist/tokens/sizes.js +1 -1
  609. package/dist/tokens/spacing.js +1 -1
  610. package/dist/tokens/typography.js +1 -1
  611. package/dist/utils/ResizeSensor.js +1 -1
  612. package/dist/utils/colors.js +1 -1
  613. package/dist/utils/dotize.js +1 -1
  614. package/dist/utils/is-dev-env.js +1 -1
  615. package/dist/utils/modules.js +1 -1
  616. package/dist/utils/promise.js +1 -1
  617. package/dist/utils/raf.js +1 -1
  618. package/dist/utils/random.js +1 -1
  619. package/dist/utils/range.js +1 -1
  620. package/dist/utils/react/RenderCache.js +1 -1
  621. package/dist/utils/react/Slots.js +1 -1
  622. package/dist/utils/react/chain.js +1 -1
  623. package/dist/utils/react/disabledProps.js +1 -1
  624. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  625. package/dist/utils/react/index.js +1 -1
  626. package/dist/utils/react/interactions.js +1 -1
  627. package/dist/utils/react/isTextOnly.js +1 -1
  628. package/dist/utils/react/mapProps.js +1 -1
  629. package/dist/utils/react/mergeProps.js +1 -1
  630. package/dist/utils/react/nullableValue.js +1 -1
  631. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  632. package/dist/utils/react/programmaticFocus.js +1 -1
  633. package/dist/utils/react/resolveIcon.js +1 -1
  634. package/dist/utils/react/sharedStore.js +1 -1
  635. package/dist/utils/react/useBufferedValue.js +1 -1
  636. package/dist/utils/react/useCombinedRefs.js +1 -1
  637. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  638. package/dist/utils/react/useEventBus.js +1 -1
  639. package/dist/utils/react/useId.js +1 -1
  640. package/dist/utils/react/useIsDarwin.js +1 -1
  641. package/dist/utils/react/useKeySymbols.js +1 -1
  642. package/dist/utils/react/useLayoutEffect.js +1 -1
  643. package/dist/utils/react/useLocalStorage.js +1 -1
  644. package/dist/utils/react/useMergeStyles.js +1 -1
  645. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  646. package/dist/utils/react/usePopoverSync.js +1 -1
  647. package/dist/utils/react/useQaProps.js +1 -1
  648. package/dist/utils/react/useScheme.js +1 -1
  649. package/dist/utils/react/useViewportSize.js +1 -1
  650. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  651. package/dist/utils/selection.js +1 -1
  652. package/dist/utils/styles.js +1 -1
  653. package/dist/utils/tree.js +1 -1
  654. package/dist/utils/warnings.js +1 -1
  655. package/dist/version.js +3 -3
  656. package/docs/BaseProperties.md +2 -0
  657. package/docs/ComplexLayout.md +1 -1
  658. package/docs/Usage.md +45 -2
  659. package/docs/Utilities.md +5 -2
  660. package/docs/components/GridProvider.md +3 -3
  661. package/docs/components/content/Layout.md +1 -1
  662. package/docs/components/fields/ComboBox.md +1 -1
  663. package/docs/components/fields/CommandTextArea.md +1 -1
  664. package/docs/components/fields/FilterListBox.md +1 -1
  665. package/docs/components/fields/FilterPicker.md +1 -1
  666. package/docs/components/fields/ListBox.md +2 -2
  667. package/docs/components/fields/Picker.md +1 -1
  668. package/docs/components/fields/SearchComboBox.md +1 -1
  669. package/docs/components/fields/Select.md +1 -1
  670. package/docs/components/fields/TagInput.md +1 -1
  671. package/docs/tasty/react-api.md +1 -1
  672. package/package.json +3 -3
  673. package/tasty.config.ts +153 -0
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { getDisabledElementProps, omitActivationEventProps } from "../../../utils/react/disabledProps.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
@@ -9,20 +9,19 @@ import { mergeTooltipFocusProps } from "../../overlays/Tooltip/split-trigger-pro
9
9
  import { useItemActionContext } from "../ItemActionContext.js";
10
10
  import { useAction } from "../use-action.js";
11
11
  import { c } from "react/compiler-runtime";
12
- import { tasty } from "@tenphi/tasty";
12
+ import { mergeStyles, tasty } from "@tenphi/tasty";
13
13
  import { forwardRef } from "react";
14
14
  import { jsx, jsxs } from "react/jsx-runtime";
15
15
  //#region src/components/actions/ItemAction/ItemAction.tsx
16
16
  const ItemActionElement = tasty({
17
17
  qa: "ItemAction",
18
- styles: {
19
- ...ITEM_ACTION_BASE_STYLES,
18
+ styles: mergeStyles(ITEM_ACTION_BASE_STYLES, {
20
19
  recipe: "reset button",
21
20
  outline: {
22
21
  "": "0 #primary-accent-text.0",
23
- focused: "1bw #primary-accent-text"
22
+ focused: "$ring-width #primary-accent-text"
24
23
  },
25
- outlineOffset: 1,
24
+ outlineOffset: "$outline-offset",
26
25
  cursor: {
27
26
  "": "$pointer",
28
27
  disabled: "default"
@@ -43,12 +42,8 @@ const ItemActionElement = tasty({
43
42
  "$inline-compensation": ".5x",
44
43
  "$min-inline-padding": "(.5x - 1bw)",
45
44
  "$local-icon-size": "$icon-size",
46
- Icon: {
47
- $: ">",
48
- ...ITEM_ACTION_BASE_STYLES.Icon,
49
- "$icon-size": "min($local-icon-size, ($action-size - .25x))"
50
- }
51
- },
45
+ Icon: { "$icon-size": "min($local-icon-size, ($action-size - .25x))" }
46
+ }),
52
47
  variants: {
53
48
  "current.primary": CURRENT_PRIMARY_STYLES,
54
49
  "current.outline": CURRENT_OUTLINE_STYLES,
@@ -1 +1 @@
1
- {"version":3,"file":"ItemAction.js","names":["FocusableRef","BaseProps","Styles","tasty","ComponentProps","forwardRef","HTMLAttributes","ReactNode","RefObject","CURRENT_CLEAR_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_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","CheckIcon","LoadingIcon","getDisabledElementProps","mergeProps","omitActivationEventProps","mergeTooltipFocusProps","TooltipProvider","useItemActionContext","CubeUseActionProps","useAction","CubeItemActionProps","Omit","size","icon","children","isLoading","isSelected","type","theme","tooltip","title","styles","tabIndex","ItemActionVariant","ItemActionElement","qa","recipe","outline","focused","outlineOffset","cursor","disabled","preset","padding","Icon","$","variants","ItemAction","allProps","ref","_c","contextType","disableActionsFocus","menuItemAction","isDisabled","contextIsDisabled","isDisabledProp","mods","rest","t0","t1","t2","t3","undefined","isDisabledInherited","hasCheckmark","t4","finalIcon","t5","t6","t7","t8","checkmark","selected","loading","context","finalMods","ariaLabel","t9","htmlType","actionProps","t10","t11","t12","excludeFromTabOrder","role","Symbol","for","bb0","_isDisabled","finalTabIndex","tooltipContent","t13","tooltipProps","_title","t14","hasTooltip","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","finalType","renderButton","tooltipTriggerProps","tooltipRef","mergedProps","element","current","actionRef","triggerProps","tooltipRef_0","ItemActionProps","_c"],"sources":["../../../../src/components/actions/ItemAction/ItemAction.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { BaseProps, Styles, tasty } from '@tenphi/tasty';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n RefObject,\n} from 'react';\n\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ITEM_ACTION_BASE_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n getDisabledElementProps,\n mergeProps,\n omitActivationEventProps,\n} from '../../../utils/react';\nimport { mergeTooltipFocusProps } from '../../overlays/Tooltip/split-trigger-props';\nimport { TooltipProvider } from '../../overlays/Tooltip/TooltipProvider';\nimport { useItemActionContext } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemActionProps\n extends Omit<CubeUseActionProps, 'as' | 'htmlType'>, Omit<BaseProps, 'as'> {\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | (string & {});\n icon?: ReactNode | 'checkmark';\n children?: ReactNode;\n isLoading?: boolean;\n isSelected?: boolean;\n type?: 'primary' | 'outline' | 'clear' | (string & {});\n theme?:\n | 'current'\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | (string & {});\n tooltip?:\n | string\n | (Omit<ComponentProps<typeof TooltipProvider>, 'children'> & {\n title?: ReactNode;\n });\n styles?: Styles;\n tabIndex?: number;\n}\n\ntype ItemActionVariant =\n // Inherited-color theme — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.clear'\n | 'default.primary'\n | 'default.outline'\n | 'default.clear'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.clear'\n | 'success.primary'\n | 'success.outline'\n | 'success.clear'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.clear'\n | 'note.primary'\n | 'note.outline'\n | 'note.clear'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear';\n\nconst ItemActionElement = tasty({\n qa: 'ItemAction',\n styles: {\n // eslint-disable-next-line tasty/no-style-spread -- action base shared with ItemBadge\n ...ITEM_ACTION_BASE_STYLES,\n recipe: 'reset button',\n // Every variant below defines its own ring and overrides this one, which is\n // kept as the floor for a custom `type` that resolves to no variant at all.\n // It uses the same `#primary-accent-text` as every variant in\n // `item-themes.ts`.\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '1bw #primary-accent-text',\n },\n outlineOffset: 1,\n cursor: { '': '$pointer', disabled: 'default' },\n preset: {\n '': 't4',\n 'size=xlarge': 't3m',\n },\n padding: {\n '': '0 $inline-padding',\n 'has-icon': 0,\n 'has-icon & has-label': '$inline-padding right',\n },\n\n '$inline-padding': {\n '': 'max($min-inline-padding, (($action-size - 1lh - 2bw) / 2 + $inline-compensation))',\n 'size=inline': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(.5x - 1bw)',\n '$local-icon-size': '$icon-size',\n\n Icon: {\n $: '>',\n // eslint-disable-next-line tasty/no-style-spread -- Icon base shared with ItemBadge\n ...(ITEM_ACTION_BASE_STYLES.Icon as Styles),\n '$icon-size': 'min($local-icon-size, ($action-size - .25x))',\n },\n },\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`. The\n // default `clear` flavour is borderless, so an action does not put a resting\n // chip on every row.\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n },\n});\n\nexport const ItemAction = forwardRef(function ItemAction(\n allProps: CubeItemActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n type: contextType,\n disableActionsFocus,\n menuItemAction,\n isDisabled: contextIsDisabled,\n } = useItemActionContext();\n\n const {\n // Borderless by default: an action sits inside a row, where a resting chip\n // on every one of them would read as noise.\n type = 'clear',\n // The `current` theme derives every color from the row's inherited\n // `currentcolor`, so one default covers every host type and theme — no need\n // to mirror the row's own `theme` from context. An action that names a theme\n // is asking to paint itself rather than match its host, and gets it.\n theme = 'current',\n icon,\n children,\n isLoading = false,\n isSelected = false,\n tooltip,\n mods,\n styles,\n isDisabled: isDisabledProp,\n ...rest\n } = allProps;\n\n // Inherit disabled state from context, but allow local override. Loading\n // always disables, as on `Button`: a second press while the first is still\n // running would run the action again, so not even `isDisabled={false}`\n // re-enables a loading action.\n const isDisabled = isLoading || (isDisabledProp ?? contextIsDisabled);\n\n // The host row is disabled too. The `current` theme paints from the inherited\n // color, which a disabled host has already faded, so fading a second time\n // washes the label out (see `CURRENT_ITEM_STYLES.color`). And like a disabled\n // fieldset, a disabled host leaves its button actions out of the tab order.\n const isDisabledInherited = !!contextIsDisabled && isDisabled;\n\n // Determine if we should show a checkmark\n const hasCheckmark = icon === 'checkmark';\n\n // Determine final icon (loading takes precedence)\n const finalIcon = isLoading ? (\n <LoadingIcon />\n ) : hasCheckmark ? (\n <CheckIcon />\n ) : (\n icon\n );\n\n // Build modifiers\n const finalMods = {\n checkmark: hasCheckmark,\n selected: isSelected,\n loading: isLoading,\n 'has-label': !!children,\n context: !!contextType,\n // The spinner takes the icon slot, so it needs the icon's padding.\n 'has-icon': !!finalIcon,\n 'inherit-disabled': isDisabledInherited,\n ...mods,\n };\n\n // An explicit label always wins; a tooltip only fills in the accessible name\n // when there isn't one. Rich tooltip content can't serve as a name, so only\n // plain strings are used here.\n const ariaLabel =\n rest['aria-label'] ||\n (typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && typeof tooltip.title === 'string'\n ? tooltip.title\n : undefined);\n\n // `isDisabled` is dropped from the element: tasty would turn it into the\n // native `disabled` attribute, which `getDisabledElementProps` decides below.\n const {\n actionProps: { isDisabled: _isDisabled, ...actionProps },\n } = useAction(\n {\n ...rest,\n isDisabled,\n 'aria-label': ariaLabel,\n mods: finalMods,\n htmlType: 'button',\n },\n ref,\n );\n\n // Set tabIndex when in context. A loading action keeps focus it already has,\n // but Tab skips it until loading ends, tooltip or not. Otherwise an explicit\n // `tabIndex` wins over `excludeFromTabOrder`, which this prop would reset.\n const finalTabIndex =\n disableActionsFocus || isLoading\n ? -1\n : (rest.tabIndex ?? (rest.excludeFromTabOrder ? -1 : undefined));\n\n // Extract tooltip content and props\n const tooltipContent =\n typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && tooltip.title\n ? tooltip.title\n : undefined;\n\n const { title: _title, ...tooltipProps } =\n typeof tooltip === 'object' ? tooltip : {};\n\n // Only icon-only actions show their tooltip.\n const hasTooltip = !children && !!tooltipContent;\n\n // Native `disabled` drops focus. A loading action keeps it, so a keyboard\n // press doesn't lose its place. So does an action that disables itself while\n // showing a tooltip, often its only label, which keyboard users reach and read\n // as on `Button`. One whose host is disabled too stays native.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled,\n keepEvents: isLoading || (hasTooltip && !isDisabledInherited),\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the action.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n const finalType = type;\n\n // Render function that accepts tooltip trigger props and ref\n const renderButton = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge tooltip ref with actionProps if provided\n const mergedProps = tooltipRef\n ? mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n {\n ref: (element: HTMLElement | null) => {\n // Set the tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set the action ref if it exists in actionProps\n const actionRef = (actionProps as any).ref;\n if (actionRef) {\n if (typeof actionRef === 'function') {\n actionRef(element);\n } else {\n actionRef.current = element;\n }\n }\n },\n },\n )\n : mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n );\n\n return (\n <ItemActionElement\n {...mergedProps}\n disabled={isNativelyDisabled}\n variant={`${theme}.${finalType}` as ItemActionVariant}\n data-theme={theme}\n data-type={finalType}\n role={menuItemAction ? 'menuitem' : rest.role}\n data-menu-inline-action={menuItemAction || undefined}\n tabIndex={finalTabIndex}\n styles={styles}\n >\n {finalIcon && <div data-element=\"Icon\">{finalIcon}</div>}\n {children}\n </ItemActionElement>\n );\n };\n\n // Wrap with tooltip if needed\n if (hasTooltip) {\n return (\n <TooltipProvider title={tooltipContent} {...tooltipProps}>\n {(triggerProps, tooltipRef) => renderButton(triggerProps, tooltipRef)}\n </TooltipProvider>\n );\n }\n\n return renderButton();\n});\n\nexport type { CubeItemActionProps as ItemActionProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"ItemAction.js","names":["FocusableRef","BaseProps","mergeStyles","Styles","tasty","ComponentProps","forwardRef","HTMLAttributes","ReactNode","RefObject","CURRENT_CLEAR_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_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","CheckIcon","LoadingIcon","getDisabledElementProps","mergeProps","omitActivationEventProps","mergeTooltipFocusProps","TooltipProvider","useItemActionContext","CubeUseActionProps","useAction","CubeItemActionProps","Omit","size","icon","children","isLoading","isSelected","type","theme","tooltip","title","styles","tabIndex","ItemActionVariant","ItemActionElement","qa","recipe","outline","focused","outlineOffset","cursor","disabled","preset","padding","Icon","variants","ItemAction","allProps","ref","$","_c","contextType","disableActionsFocus","menuItemAction","isDisabled","contextIsDisabled","isDisabledProp","mods","rest","t0","t1","t2","t3","undefined","isDisabledInherited","hasCheckmark","t4","finalIcon","t5","t6","t7","t8","checkmark","selected","loading","context","finalMods","ariaLabel","t9","htmlType","actionProps","t10","t11","t12","excludeFromTabOrder","role","Symbol","for","bb0","_isDisabled","finalTabIndex","tooltipContent","t13","tooltipProps","_title","t14","hasTooltip","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","finalType","renderButton","tooltipTriggerProps","tooltipRef","mergedProps","element","current","actionRef","triggerProps","tooltipRef_0","ItemActionProps","_c"],"sources":["../../../../src/components/actions/ItemAction/ItemAction.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { BaseProps, mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n RefObject,\n} from 'react';\n\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ITEM_ACTION_BASE_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n getDisabledElementProps,\n mergeProps,\n omitActivationEventProps,\n} from '../../../utils/react';\nimport { mergeTooltipFocusProps } from '../../overlays/Tooltip/split-trigger-props';\nimport { TooltipProvider } from '../../overlays/Tooltip/TooltipProvider';\nimport { useItemActionContext } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemActionProps\n extends Omit<CubeUseActionProps, 'as' | 'htmlType'>, Omit<BaseProps, 'as'> {\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | (string & {});\n icon?: ReactNode | 'checkmark';\n children?: ReactNode;\n isLoading?: boolean;\n isSelected?: boolean;\n type?: 'primary' | 'outline' | 'clear' | (string & {});\n theme?:\n | 'current'\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | (string & {});\n tooltip?:\n | string\n | (Omit<ComponentProps<typeof TooltipProvider>, 'children'> & {\n title?: ReactNode;\n });\n styles?: Styles;\n tabIndex?: number;\n}\n\ntype ItemActionVariant =\n // Inherited-color theme — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.clear'\n | 'default.primary'\n | 'default.outline'\n | 'default.clear'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.clear'\n | 'success.primary'\n | 'success.outline'\n | 'success.clear'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.clear'\n | 'note.primary'\n | 'note.outline'\n | 'note.clear'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear';\n\nconst ItemActionElement = tasty({\n qa: 'ItemAction',\n styles: mergeStyles(ITEM_ACTION_BASE_STYLES, {\n recipe: 'reset button',\n // Every variant below defines its own ring and overrides this one, which is\n // kept as the floor for a custom `type` that resolves to no variant at all.\n // It uses the same `#primary-accent-text` as every variant in\n // `item-themes.ts`.\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '$ring-width #primary-accent-text',\n },\n outlineOffset: '$outline-offset',\n cursor: { '': '$pointer', disabled: 'default' },\n preset: {\n '': 't4',\n 'size=xlarge': 't3m',\n },\n padding: {\n '': '0 $inline-padding',\n 'has-icon': 0,\n 'has-icon & has-label': '$inline-padding right',\n },\n\n '$inline-padding': {\n '': 'max($min-inline-padding, (($action-size - 1lh - 2bw) / 2 + $inline-compensation))',\n 'size=inline': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(.5x - 1bw)',\n '$local-icon-size': '$icon-size',\n\n Icon: {\n '$icon-size': 'min($local-icon-size, ($action-size - .25x))',\n },\n }),\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`. The\n // default `clear` flavour is borderless, so an action does not put a resting\n // chip on every row.\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n },\n});\n\nexport const ItemAction = forwardRef(function ItemAction(\n allProps: CubeItemActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n type: contextType,\n disableActionsFocus,\n menuItemAction,\n isDisabled: contextIsDisabled,\n } = useItemActionContext();\n\n const {\n // Borderless by default: an action sits inside a row, where a resting chip\n // on every one of them would read as noise.\n type = 'clear',\n // The `current` theme derives every color from the row's inherited\n // `currentcolor`, so one default covers every host type and theme — no need\n // to mirror the row's own `theme` from context. An action that names a theme\n // is asking to paint itself rather than match its host, and gets it.\n theme = 'current',\n icon,\n children,\n isLoading = false,\n isSelected = false,\n tooltip,\n mods,\n styles,\n isDisabled: isDisabledProp,\n ...rest\n } = allProps;\n\n // Inherit disabled state from context, but allow local override. Loading\n // always disables, as on `Button`: a second press while the first is still\n // running would run the action again, so not even `isDisabled={false}`\n // re-enables a loading action.\n const isDisabled = isLoading || (isDisabledProp ?? contextIsDisabled);\n\n // The host row is disabled too. The `current` theme paints from the inherited\n // color, which a disabled host has already faded, so fading a second time\n // washes the label out (see `CURRENT_ITEM_STYLES.color`). And like a disabled\n // fieldset, a disabled host leaves its button actions out of the tab order.\n const isDisabledInherited = !!contextIsDisabled && isDisabled;\n\n // Determine if we should show a checkmark\n const hasCheckmark = icon === 'checkmark';\n\n // Determine final icon (loading takes precedence)\n const finalIcon = isLoading ? (\n <LoadingIcon />\n ) : hasCheckmark ? (\n <CheckIcon />\n ) : (\n icon\n );\n\n // Build modifiers\n const finalMods = {\n checkmark: hasCheckmark,\n selected: isSelected,\n loading: isLoading,\n 'has-label': !!children,\n context: !!contextType,\n // The spinner takes the icon slot, so it needs the icon's padding.\n 'has-icon': !!finalIcon,\n 'inherit-disabled': isDisabledInherited,\n ...mods,\n };\n\n // An explicit label always wins; a tooltip only fills in the accessible name\n // when there isn't one. Rich tooltip content can't serve as a name, so only\n // plain strings are used here.\n const ariaLabel =\n rest['aria-label'] ||\n (typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && typeof tooltip.title === 'string'\n ? tooltip.title\n : undefined);\n\n // `isDisabled` is dropped from the element: tasty would turn it into the\n // native `disabled` attribute, which `getDisabledElementProps` decides below.\n const {\n actionProps: { isDisabled: _isDisabled, ...actionProps },\n } = useAction(\n {\n ...rest,\n isDisabled,\n 'aria-label': ariaLabel,\n mods: finalMods,\n htmlType: 'button',\n },\n ref,\n );\n\n // Set tabIndex when in context. A loading action keeps focus it already has,\n // but Tab skips it until loading ends, tooltip or not. Otherwise an explicit\n // `tabIndex` wins over `excludeFromTabOrder`, which this prop would reset.\n const finalTabIndex =\n disableActionsFocus || isLoading\n ? -1\n : (rest.tabIndex ?? (rest.excludeFromTabOrder ? -1 : undefined));\n\n // Extract tooltip content and props\n const tooltipContent =\n typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && tooltip.title\n ? tooltip.title\n : undefined;\n\n const { title: _title, ...tooltipProps } =\n typeof tooltip === 'object' ? tooltip : {};\n\n // Only icon-only actions show their tooltip.\n const hasTooltip = !children && !!tooltipContent;\n\n // Native `disabled` drops focus. A loading action keeps it, so a keyboard\n // press doesn't lose its place. So does an action that disables itself while\n // showing a tooltip, often its only label, which keyboard users reach and read\n // as on `Button`. One whose host is disabled too stays native.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled,\n keepEvents: isLoading || (hasTooltip && !isDisabledInherited),\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the action.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n const finalType = type;\n\n // Render function that accepts tooltip trigger props and ref\n const renderButton = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge tooltip ref with actionProps if provided\n const mergedProps = tooltipRef\n ? mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n {\n ref: (element: HTMLElement | null) => {\n // Set the tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set the action ref if it exists in actionProps\n const actionRef = (actionProps as any).ref;\n if (actionRef) {\n if (typeof actionRef === 'function') {\n actionRef(element);\n } else {\n actionRef.current = element;\n }\n }\n },\n },\n )\n : mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n );\n\n return (\n <ItemActionElement\n {...mergedProps}\n disabled={isNativelyDisabled}\n variant={`${theme}.${finalType}` as ItemActionVariant}\n data-theme={theme}\n data-type={finalType}\n role={menuItemAction ? 'menuitem' : rest.role}\n data-menu-inline-action={menuItemAction || undefined}\n tabIndex={finalTabIndex}\n styles={styles}\n >\n {finalIcon && <div data-element=\"Icon\">{finalIcon}</div>}\n {children}\n </ItemActionElement>\n );\n };\n\n // Wrap with tooltip if needed\n if (hasTooltip) {\n return (\n <TooltipProvider title={tooltipContent} {...tooltipProps}>\n {(triggerProps, tooltipRef) => renderButton(triggerProps, tooltipRef)}\n </TooltipProvider>\n );\n }\n\n return renderButton();\n});\n\nexport type { CubeItemActionProps as ItemActionProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { createContext, useContext } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,9 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { DisplayTransition } from "../helpers/DisplayTransition/DisplayTransition.js";
3
3
  import { ITEM_RESTING_COLOR_VARIANTS, ROW_STATE_ALIASES, resolveItemVariant } from "../../data/item-themes.js";
4
4
  import { ItemActionProvider } from "./ItemActionContext.js";
5
5
  import { c } from "react/compiler-runtime";
6
- import { tasty } from "@tenphi/tasty";
6
+ import { mergeStyles, tasty } from "@tenphi/tasty";
7
7
  import { useLayoutEffect, useRef, useState } from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { useFocusWithin, useHover } from "react-aria";
@@ -33,8 +33,7 @@ import { ClearPressResponder } from "@react-aria/interactions";
33
33
  */
34
34
  const ItemActionsWrapperElement = tasty({
35
35
  variants: ITEM_RESTING_COLOR_VARIANTS,
36
- styles: {
37
- ...ROW_STATE_ALIASES,
36
+ styles: mergeStyles(ROW_STATE_ALIASES, {
38
37
  "@block-description": ":has(> [data-description=\"block\"])",
39
38
  display: "grid",
40
39
  position: "relative",
@@ -58,7 +57,7 @@ const ItemActionsWrapperElement = tasty({
58
57
  "type=card & @block-description": "(1bw + .5x) (1bw + .5x) auto auto"
59
58
  },
60
59
  display: "flex",
61
- gap: "1bw",
60
+ gap: "$item-gap",
62
61
  placeItems: "center",
63
62
  placeContent: "center end",
64
63
  pointerEvents: "none",
@@ -101,7 +100,7 @@ const ItemActionsWrapperElement = tasty({
101
100
  "size=xlarge": "t2"
102
101
  }
103
102
  }
104
- }
103
+ })
105
104
  });
106
105
  /**
107
106
  * A non-interactive box inside an actions run — a dropdown caret, a loading
@@ -1 +1 @@
1
- {"version":3,"file":"ItemActionsWrapper.js","names":["ClearPressResponder","Mods","Styles","tasty","HTMLAttributes","ReactNode","useLayoutEffect","useRef","useState","useFocusWithin","useHover","ITEM_RESTING_COLOR_VARIANTS","resolveItemVariant","ROW_STATE_ALIASES","CubeItemProps","DisplayTransition","ItemActionProvider","ItemActionsWrapperElement","variants","styles","display","position","placeContent","placeItems","$size","Actions","$","inset","gap","pointerEvents","padding","height","opacity","translate","transition","ActionsChild","ActionIcon","flexShrink","width","preset","ItemActionIcon","props","_c","t0","children","ItemActionsWrapperProps","state","showActions","skipActionsWidthTransition","actions","type","theme","size","isDisabled","disableActionsFocus","autoHideActions","preserveActionsSpace","mods","actionsProps","HTMLDivElement","ItemActionsWrapper","t1","t2","t3","t4","undefined","actionsRef","actionsWidth","setActionsWidth","areActionsVisible","setAreActionsVisible","skipWidthTransition","setSkipWidthTransition","isMountPassRef","t5","el","current","isMountPass","childElementCount","Math","round","offsetWidth","t6","isFocusWithin","setIsFocusWithin","hasPressed","setHasPressed","t7","Symbol","for","hoverProps","isHovered","t8","onFocusWithinChange","focusWithinProps","t9","actionsEl","checkPressed","querySelector","observer","MutationObserver","observe","attributes","attributeFilter","subtree","disconnect","t10","shouldShowActions","t11","t12","t13","disabled","finalMods","t14","t15","t16","t17","t18","t19","phase","t20","ref","transitionRef","node","t21","_c"],"sources":["../../../src/components/actions/ItemActionsWrapper.tsx"],"sourcesContent":["import { ClearPressResponder } from '@react-aria/interactions';\nimport { Mods, Styles, tasty } from '@tenphi/tasty';\nimport {\n HTMLAttributes,\n ReactNode,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useFocusWithin, useHover } from 'react-aria';\n\nimport {\n ITEM_RESTING_COLOR_VARIANTS,\n resolveItemVariant,\n ROW_STATE_ALIASES,\n} from '../../data/item-themes';\nimport { CubeItemProps } from '../content/Item/Item';\nimport { DisplayTransition } from '../helpers/DisplayTransition/DisplayTransition';\n\nimport { ItemActionProvider } from './ItemActionContext';\n\n/**\n * The sibling-actions layout shared by `ItemButton` and the field triggers\n * (`Select` / `Picker` / `FilterPicker`).\n *\n * A row's actions cannot live inside the row when the row is itself a button:\n * that nests a `<button>` in a `<button>`, and a press on an action activates\n * the row. So the run is rendered as a SIBLING, laid over the row's trailing\n * end, and the row reserves the space for it through `--actions-width` — which\n * this file measures — and `Item`'s own `actions` placeholder column.\n *\n * The run is pointer-transparent; only its children take presses. That is what\n * lets a picker put its non-interactive caret in the run and still have a click\n * on the caret reach the trigger underneath, and it stops the run's padding and\n * inter-action gaps from swallowing presses meant for the row.\n *\n * Being a sibling also puts the run OUTSIDE the row for anything that asks\n * \"did this press land on my trigger?\" — an overlay opened by the row would\n * read a press on its own actions as a press outside and dismiss itself,\n * swallowing that press on the way. The run therefore marks itself with\n * `data-trigger-action`, which `isOwnActionsPress` resolves back to the row it\n * belongs to. See `actions-run.ts`.\n */\nconst ItemActionsWrapperElement = tasty({\n // Actions default to the `current` type, which paints from the inherited\n // `currentcolor` — but they are rendered as a SIBLING of the row here, not\n // inside it, so without this they would inherit the page color instead of the\n // row's. Harmless on the default theme (the two match) and plainly wrong on\n // any other: a `special` row would hand its actions the page's dark text to\n // tint with, on a dark purple surface. The variant carries the row's resting\n // color down so `currentcolor` means the same thing it does inside an `Item`.\n variants: ITEM_RESTING_COLOR_VARIANTS,\n styles: {\n // The row is the wrapper's own child, so the wrapper can read the one\n // interaction the row expresses as a COLOR change rather than a fill change.\n // Without it the label darkened under the finger while the caret and the\n // actions laid over the same row — which paint from the color this element\n // hands down — stayed at their resting tint. The variants restate it,\n // because that is where the colors keyed on it live.\n // eslint-disable-next-line tasty/no-style-spread -- shared with ITEM_RESTING_COLOR_VARIANTS, which declare the same states\n ...ROW_STATE_ALIASES,\n\n // The one layout the row does not want its actions centred in. A block\n // description stacks under the label and can make the row arbitrarily tall;\n // there the actions belong in the first line, beside the label, which is\n // what anchoring them to a `$size`-tall box at the top achieves. Every other\n // row — including one with an INLINE description — is a single band, and\n // centring is both what it wants and what survives a caller overriding the\n // height. Read off the row rather than plumbed through as a prop, because\n // `Item` is what decides the placement and it defaults by type.\n '@block-description': ':has(> [data-description=\"block\"])',\n\n display: 'grid',\n position: 'relative',\n placeContent: 'stretch',\n placeItems: 'stretch',\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n },\n\n Actions: {\n $: '>',\n position: 'absolute',\n // Both insets set, so the run's BOX spans the row and `placeItems: center`\n // puts the actions on its centre line. What sits in the box does not grow\n // with it — every child is a fixed `$action-size`, which is capped so a\n // large row does not get oversized buttons.\n inset: {\n '': '1bw right dock',\n 'type=card': '(1bw + .5x) right dock',\n '@block-description': '1bw 1bw auto auto',\n 'type=card & @block-description': '(1bw + .5x) (1bw + .5x) auto auto',\n },\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'center end',\n\n // The run lies OVER the row. Left opaque, its padding and the gaps between\n // its actions eat presses that belong to the row behind it, and a\n // non-interactive control inside it (a picker's caret) could never reach\n // its own trigger. The run itself is therefore transparent to the pointer\n // and its children opt back in — see `ActionsChild` — so a child that\n // wants to stay transparent, like that caret, only has to say so.\n pointerEvents: 'none',\n\n padding: '0 $side-padding',\n // Only where the run is top-anchored: there the box has no bottom to\n // measure from, so `$size` is what gives it one. Everywhere else the two\n // insets decide the height, and this floor would force the box back to\n // `$size` and re-anchor it at the top.\n height: {\n '': 'min 0',\n '@block-description': 'min ($size - 2bw)',\n },\n opacity: {\n '': 1,\n '!actions-shown': 0,\n },\n // The run slides in as it fades, but only where it was taking no space to\n // begin with. Where the space is reserved the run has a fixed place in the\n // layout, and sliding it would read as the actions drifting rather than\n // appearing.\n translate: {\n '': '0 0',\n '!actions-shown & !preserve-actions-space': '.5x 0',\n },\n transition: 'theme, translate',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n\n // Whatever a caller put in the run: interactive again, so the transparency\n // above applies only to the space BETWEEN and AROUND the actions. `*`\n // because the run's content is the caller's — there is no element name to\n // key on.\n ActionsChild: {\n $: '>Actions>*',\n pointerEvents: {\n '': 'auto',\n '!actions-shown': 'none',\n },\n },\n\n // A non-interactive box in the run, the same size as an action so it lines\n // up with one. `$side-padding + $action-size / 2` collapses to\n // `($size - 2bw) / 2` — the centre of `Item`'s own `rightIcon` square — so a\n // caret moved out of that slot and into the run does not move on screen.\n ActionIcon: {\n $: '>Actions>',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n flexShrink: 0,\n width: '$action-size',\n height: '$action-size',\n // The run's children are interactive by default; this one is not, and a\n // press on it belongs to the row underneath.\n pointerEvents: 'none',\n // `--icon-size` comes from the preset, and the run is outside the row that\n // sets one — so the box restates the ladder `Item` uses. The `m` weights a\n // non-`item` type picks carry the same icon size as their plain\n // counterparts, so weight is not a factor here.\n preset: {\n '': 't3',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2',\n },\n },\n },\n});\n\n/**\n * A non-interactive box inside an actions run — a dropdown caret, a loading\n * spinner. It occupies an action's footprint so the run stays evenly spaced,\n * and it lets presses through to the row behind it.\n */\nexport function ItemActionIcon(props: { children: ReactNode }) {\n return <div data-element=\"ActionIcon\">{props.children}</div>;\n}\n\nexport interface ItemActionsWrapperProps {\n /**\n * The row or trigger the actions are laid over. Receives the resolved\n * visibility so it can reserve space for the run while it is shown, and\n * whether the reserved width must jump rather than animate (`Item`'s\n * `skipActionsWidthTransition`).\n */\n children: (state: {\n showActions: boolean;\n skipActionsWidthTransition: boolean;\n }) => ReactNode;\n /**\n * The run's content. Rendering the wrapper with an empty run is supported and\n * costs nothing — the measured width is 0 — which is how a trigger keeps its\n * markup stable across states that do and do not have trailing controls.\n */\n actions?: ReactNode;\n type?: string;\n theme?: string;\n /** `Item`'s size token, or a pixel number. */\n size?: CubeItemProps['size'];\n isDisabled?: boolean;\n disableActionsFocus?: boolean;\n /**\n * Hide the actions until the row is hovered, focused, or holds a pressed\n * control.\n * @default false\n */\n autoHideActions?: boolean;\n /**\n * Keep the run's width reserved while it is hidden, so the row does not\n * change size as the actions come and go. Only meaningful with\n * `autoHideActions`.\n *\n * It also keeps the run MOUNTED rather than transitioning it in and out:\n * an unmounted run cannot be measured, so a row that starts hidden would\n * have nothing to reserve.\n * @default false\n */\n preserveActionsSpace?: boolean;\n /** Extra modifiers for the wrapper, merged after the ones it derives itself. */\n mods?: Mods;\n /** Styles for the wrapper element — the one that is the row's layout box. */\n styles?: Styles;\n /** Extra props spread on the run's container, e.g. event handlers. */\n actionsProps?: HTMLAttributes<HTMLDivElement>;\n}\n\n/**\n * Wraps a row in the sibling-actions layout and publishes `--actions-width` so\n * the row can reserve the space the run covers.\n */\nexport function ItemActionsWrapper(props: ItemActionsWrapperProps) {\n const {\n children,\n actions,\n type = 'item',\n theme = 'default',\n size = 'medium',\n isDisabled,\n disableActionsFocus,\n autoHideActions = false,\n preserveActionsSpace = false,\n mods,\n styles,\n actionsProps,\n } = props;\n\n const actionsRef = useRef<HTMLDivElement>(null);\n const [actionsWidth, setActionsWidth] = useState(0);\n const [areActionsVisible, setAreActionsVisible] = useState(false);\n const [skipWidthTransition, setSkipWidthTransition] = useState(false);\n const isMountPassRef = useRef(true);\n\n useLayoutEffect(() => {\n const el = actionsRef.current;\n const isMountPass = isMountPassRef.current;\n\n isMountPassRef.current = false;\n\n if (!el) return;\n\n // An empty run still has the container's side padding, which would reserve\n // space inside the row for nothing. Nothing rendered means nothing to\n // reserve.\n const width = el.childElementCount ? Math.round(el.offsetWidth) : 0;\n\n if (width !== actionsWidth) {\n // The width a run reports on mount is where the row starts, not a change\n // to it. The `offsetWidth` read has already resolved the row at 0px, so\n // publishing with the transition on made every trigger grow by its caret\n // after mounting — and a click in that window sized FilterPicker's popover\n // from a half-grown trigger. A run revealed later still slides open.\n if (isMountPass) setSkipWidthTransition(true);\n setActionsWidth(width);\n } else if (skipWidthTransition) {\n // This pass's read resolved the row at its final width with the\n // transition off, so turning it back on animates nothing.\n setSkipWidthTransition(false);\n }\n }, [actions, areActionsVisible, actionsWidth, skipWidthTransition]);\n\n const [isFocusWithin, setIsFocusWithin] = useState(false);\n const [hasPressed, setHasPressed] = useState(false);\n const { hoverProps, isHovered } = useHover({});\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: setIsFocusWithin,\n });\n\n // Watch for data-pressed attribute on any descendant element\n useLayoutEffect(() => {\n const actionsEl = actionsRef.current;\n\n if (!actionsEl || !autoHideActions) return;\n\n const checkPressed = () => {\n setHasPressed(actionsEl.querySelector('[data-pressed]') !== null);\n };\n\n const observer = new MutationObserver(checkPressed);\n\n observer.observe(actionsEl, {\n attributes: true,\n attributeFilter: ['data-pressed'],\n subtree: true,\n });\n\n checkPressed();\n\n return () => observer.disconnect();\n }, [areActionsVisible, autoHideActions]);\n\n const shouldShowActions =\n isHovered || isFocusWithin || hasPressed || !autoHideActions;\n\n // `disabled` is on the wrapper so its variant can paint the row's DISABLED\n // label color, not just the resting one. Actions default to the `current` type\n // and suppress their own fade when the disabled state is inherited — on the\n // grounds that the host already faded the color they paint from — so without\n // this the wrapper would hand them a full-strength color and a disabled button\n // would sit next to full-strength actions. See `ITEM_RESTING_COLOR_VARIANTS`.\n const finalMods = {\n ...mods,\n ...(shouldShowActions ? { 'actions-shown': true } : null),\n ...(preserveActionsSpace ? { 'preserve-actions-space': true } : null),\n disabled: isDisabled,\n };\n\n return (\n <ItemActionsWrapperElement\n {...hoverProps}\n // The same resolver `Item` uses, so the wrapper cannot land on a\n // different variant than the row it wraps.\n variant={resolveItemVariant(theme, type)}\n data-size={size}\n data-type={type}\n data-theme={theme}\n mods={finalMods}\n styles={styles}\n tokens={{\n '$actions-width':\n areActionsVisible || !autoHideActions || preserveActionsSpace\n ? `${actionsWidth}px`\n : '0px',\n ...(typeof size === 'number' && { $size: `${size}px` }),\n }}\n >\n {children({\n showActions: shouldShowActions,\n skipActionsWidthTransition: skipWidthTransition,\n })}\n {/*\n The run is rendered under whatever press context the row sits in, and a\n `PressResponder` in that context reaches EVERY `usePress` below it — so\n an `ItemButton` / `TabButton` / picker trigger inside a `DialogTrigger`\n or a `MenuTrigger` handed its own actions the trigger's `onPress`, and\n pressing one toggled the overlay on top of running the action. The run\n belongs to the row, not to whatever opened around it: it clears the\n context so each action answers only to its own handler.\n */}\n <ClearPressResponder>\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={isDisabled}\n >\n {autoHideActions && !preserveActionsSpace ? (\n <DisplayTransition\n exposeUnmounted\n isShown={shouldShowActions}\n onPhaseChange={(phase) => {\n setAreActionsVisible(phase !== 'unmounted');\n }}\n >\n {({ ref: transitionRef }) => {\n return (\n <div\n {...focusWithinProps}\n {...actionsProps}\n ref={(node: any) => {\n actionsRef.current = node;\n transitionRef(node);\n }}\n data-element=\"Actions\"\n data-trigger-action=\"\"\n >\n {actions}\n </div>\n );\n }}\n </DisplayTransition>\n ) : (\n <div\n ref={actionsRef}\n {...actionsProps}\n data-element=\"Actions\"\n data-trigger-action=\"\"\n >\n {actions}\n </div>\n )}\n </ItemActionProvider>\n </ClearPressResponder>\n </ItemActionsWrapperElement>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ItemActionsWrapper.js","names":["ClearPressResponder","mergeStyles","Mods","Styles","tasty","HTMLAttributes","ReactNode","useLayoutEffect","useRef","useState","useFocusWithin","useHover","ITEM_RESTING_COLOR_VARIANTS","resolveItemVariant","ROW_STATE_ALIASES","CubeItemProps","DisplayTransition","ItemActionProvider","ItemActionsWrapperElement","variants","styles","display","position","placeContent","placeItems","$size","Actions","$","inset","gap","pointerEvents","padding","height","opacity","translate","transition","ActionsChild","ActionIcon","flexShrink","width","preset","ItemActionIcon","props","_c","t0","children","ItemActionsWrapperProps","state","showActions","skipActionsWidthTransition","actions","type","theme","size","isDisabled","disableActionsFocus","autoHideActions","preserveActionsSpace","mods","actionsProps","HTMLDivElement","ItemActionsWrapper","t1","t2","t3","t4","undefined","actionsRef","actionsWidth","setActionsWidth","areActionsVisible","setAreActionsVisible","skipWidthTransition","setSkipWidthTransition","isMountPassRef","t5","el","current","isMountPass","childElementCount","Math","round","offsetWidth","t6","isFocusWithin","setIsFocusWithin","hasPressed","setHasPressed","t7","Symbol","for","hoverProps","isHovered","t8","onFocusWithinChange","focusWithinProps","t9","actionsEl","checkPressed","querySelector","observer","MutationObserver","observe","attributes","attributeFilter","subtree","disconnect","t10","shouldShowActions","t11","t12","t13","disabled","finalMods","t14","t15","t16","t17","t18","t19","phase","t20","ref","transitionRef","node","t21","_c"],"sources":["../../../src/components/actions/ItemActionsWrapper.tsx"],"sourcesContent":["import { ClearPressResponder } from '@react-aria/interactions';\nimport { mergeStyles, Mods, Styles, tasty } from '@tenphi/tasty';\nimport {\n HTMLAttributes,\n ReactNode,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useFocusWithin, useHover } from 'react-aria';\n\nimport {\n ITEM_RESTING_COLOR_VARIANTS,\n resolveItemVariant,\n ROW_STATE_ALIASES,\n} from '../../data/item-themes';\nimport { CubeItemProps } from '../content/Item/Item';\nimport { DisplayTransition } from '../helpers/DisplayTransition/DisplayTransition';\n\nimport { ItemActionProvider } from './ItemActionContext';\n\n/**\n * The sibling-actions layout shared by `ItemButton` and the field triggers\n * (`Select` / `Picker` / `FilterPicker`).\n *\n * A row's actions cannot live inside the row when the row is itself a button:\n * that nests a `<button>` in a `<button>`, and a press on an action activates\n * the row. So the run is rendered as a SIBLING, laid over the row's trailing\n * end, and the row reserves the space for it through `--actions-width` — which\n * this file measures — and `Item`'s own `actions` placeholder column.\n *\n * The run is pointer-transparent; only its children take presses. That is what\n * lets a picker put its non-interactive caret in the run and still have a click\n * on the caret reach the trigger underneath, and it stops the run's padding and\n * inter-action gaps from swallowing presses meant for the row.\n *\n * Being a sibling also puts the run OUTSIDE the row for anything that asks\n * \"did this press land on my trigger?\" — an overlay opened by the row would\n * read a press on its own actions as a press outside and dismiss itself,\n * swallowing that press on the way. The run therefore marks itself with\n * `data-trigger-action`, which `isOwnActionsPress` resolves back to the row it\n * belongs to. See `actions-run.ts`.\n */\nconst ItemActionsWrapperElement = tasty({\n // Actions default to the `current` type, which paints from the inherited\n // `currentcolor` — but they are rendered as a SIBLING of the row here, not\n // inside it, so without this they would inherit the page color instead of the\n // row's. Harmless on the default theme (the two match) and plainly wrong on\n // any other: a `special` row would hand its actions the page's dark text to\n // tint with, on a dark purple surface. The variant carries the row's resting\n // color down so `currentcolor` means the same thing it does inside an `Item`.\n variants: ITEM_RESTING_COLOR_VARIANTS,\n // `ROW_STATE_ALIASES`: the row is the wrapper's own child, so the wrapper can\n // read the one interaction the row expresses as a COLOR change rather than a\n // fill change. Without it the label darkened under the finger while the caret\n // and the actions laid over the same row — which paint from the color this\n // element hands down — stayed at their resting tint. The variants restate it,\n // because that is where the colors keyed on it live.\n styles: mergeStyles(ROW_STATE_ALIASES, {\n // The one layout the row does not want its actions centred in. A block\n // description stacks under the label and can make the row arbitrarily tall;\n // there the actions belong in the first line, beside the label, which is\n // what anchoring them to a `$size`-tall box at the top achieves. Every other\n // row — including one with an INLINE description — is a single band, and\n // centring is both what it wants and what survives a caller overriding the\n // height. Read off the row rather than plumbed through as a prop, because\n // `Item` is what decides the placement and it defaults by type.\n '@block-description': ':has(> [data-description=\"block\"])',\n\n display: 'grid',\n position: 'relative',\n placeContent: 'stretch',\n placeItems: 'stretch',\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n },\n\n Actions: {\n $: '>',\n position: 'absolute',\n // Both insets set, so the run's BOX spans the row and `placeItems: center`\n // puts the actions on its centre line. What sits in the box does not grow\n // with it — every child is a fixed `$action-size`, which is capped so a\n // large row does not get oversized buttons.\n inset: {\n '': '1bw right dock',\n 'type=card': '(1bw + .5x) right dock',\n '@block-description': '1bw 1bw auto auto',\n 'type=card & @block-description': '(1bw + .5x) (1bw + .5x) auto auto',\n },\n display: 'flex',\n gap: '$item-gap',\n placeItems: 'center',\n placeContent: 'center end',\n\n // The run lies OVER the row. Left opaque, its padding and the gaps between\n // its actions eat presses that belong to the row behind it, and a\n // non-interactive control inside it (a picker's caret) could never reach\n // its own trigger. The run itself is therefore transparent to the pointer\n // and its children opt back in — see `ActionsChild` — so a child that\n // wants to stay transparent, like that caret, only has to say so.\n pointerEvents: 'none',\n\n padding: '0 $side-padding',\n // Only where the run is top-anchored: there the box has no bottom to\n // measure from, so `$size` is what gives it one. Everywhere else the two\n // insets decide the height, and this floor would force the box back to\n // `$size` and re-anchor it at the top.\n height: {\n '': 'min 0',\n '@block-description': 'min ($size - 2bw)',\n },\n opacity: {\n '': 1,\n '!actions-shown': 0,\n },\n // The run slides in as it fades, but only where it was taking no space to\n // begin with. Where the space is reserved the run has a fixed place in the\n // layout, and sliding it would read as the actions drifting rather than\n // appearing.\n translate: {\n '': '0 0',\n '!actions-shown & !preserve-actions-space': '.5x 0',\n },\n transition: 'theme, translate',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n\n // Whatever a caller put in the run: interactive again, so the transparency\n // above applies only to the space BETWEEN and AROUND the actions. `*`\n // because the run's content is the caller's — there is no element name to\n // key on.\n ActionsChild: {\n $: '>Actions>*',\n pointerEvents: {\n '': 'auto',\n '!actions-shown': 'none',\n },\n },\n\n // A non-interactive box in the run, the same size as an action so it lines\n // up with one. `$side-padding + $action-size / 2` collapses to\n // `($size - 2bw) / 2` — the centre of `Item`'s own `rightIcon` square — so a\n // caret moved out of that slot and into the run does not move on screen.\n ActionIcon: {\n $: '>Actions>',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n flexShrink: 0,\n width: '$action-size',\n height: '$action-size',\n // The run's children are interactive by default; this one is not, and a\n // press on it belongs to the row underneath.\n pointerEvents: 'none',\n // `--icon-size` comes from the preset, and the run is outside the row that\n // sets one — so the box restates the ladder `Item` uses. The `m` weights a\n // non-`item` type picks carry the same icon size as their plain\n // counterparts, so weight is not a factor here.\n preset: {\n '': 't3',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2',\n },\n },\n }),\n});\n\n/**\n * A non-interactive box inside an actions run — a dropdown caret, a loading\n * spinner. It occupies an action's footprint so the run stays evenly spaced,\n * and it lets presses through to the row behind it.\n */\nexport function ItemActionIcon(props: { children: ReactNode }) {\n return <div data-element=\"ActionIcon\">{props.children}</div>;\n}\n\nexport interface ItemActionsWrapperProps {\n /**\n * The row or trigger the actions are laid over. Receives the resolved\n * visibility so it can reserve space for the run while it is shown, and\n * whether the reserved width must jump rather than animate (`Item`'s\n * `skipActionsWidthTransition`).\n */\n children: (state: {\n showActions: boolean;\n skipActionsWidthTransition: boolean;\n }) => ReactNode;\n /**\n * The run's content. Rendering the wrapper with an empty run is supported and\n * costs nothing — the measured width is 0 — which is how a trigger keeps its\n * markup stable across states that do and do not have trailing controls.\n */\n actions?: ReactNode;\n type?: string;\n theme?: string;\n /** `Item`'s size token, or a pixel number. */\n size?: CubeItemProps['size'];\n isDisabled?: boolean;\n disableActionsFocus?: boolean;\n /**\n * Hide the actions until the row is hovered, focused, or holds a pressed\n * control.\n * @default false\n */\n autoHideActions?: boolean;\n /**\n * Keep the run's width reserved while it is hidden, so the row does not\n * change size as the actions come and go. Only meaningful with\n * `autoHideActions`.\n *\n * It also keeps the run MOUNTED rather than transitioning it in and out:\n * an unmounted run cannot be measured, so a row that starts hidden would\n * have nothing to reserve.\n * @default false\n */\n preserveActionsSpace?: boolean;\n /** Extra modifiers for the wrapper, merged after the ones it derives itself. */\n mods?: Mods;\n /** Styles for the wrapper element — the one that is the row's layout box. */\n styles?: Styles;\n /** Extra props spread on the run's container, e.g. event handlers. */\n actionsProps?: HTMLAttributes<HTMLDivElement>;\n}\n\n/**\n * Wraps a row in the sibling-actions layout and publishes `--actions-width` so\n * the row can reserve the space the run covers.\n */\nexport function ItemActionsWrapper(props: ItemActionsWrapperProps) {\n const {\n children,\n actions,\n type = 'item',\n theme = 'default',\n size = 'medium',\n isDisabled,\n disableActionsFocus,\n autoHideActions = false,\n preserveActionsSpace = false,\n mods,\n styles,\n actionsProps,\n } = props;\n\n const actionsRef = useRef<HTMLDivElement>(null);\n const [actionsWidth, setActionsWidth] = useState(0);\n const [areActionsVisible, setAreActionsVisible] = useState(false);\n const [skipWidthTransition, setSkipWidthTransition] = useState(false);\n const isMountPassRef = useRef(true);\n\n useLayoutEffect(() => {\n const el = actionsRef.current;\n const isMountPass = isMountPassRef.current;\n\n isMountPassRef.current = false;\n\n if (!el) return;\n\n // An empty run still has the container's side padding, which would reserve\n // space inside the row for nothing. Nothing rendered means nothing to\n // reserve.\n const width = el.childElementCount ? Math.round(el.offsetWidth) : 0;\n\n if (width !== actionsWidth) {\n // The width a run reports on mount is where the row starts, not a change\n // to it. The `offsetWidth` read has already resolved the row at 0px, so\n // publishing with the transition on made every trigger grow by its caret\n // after mounting — and a click in that window sized FilterPicker's popover\n // from a half-grown trigger. A run revealed later still slides open.\n if (isMountPass) setSkipWidthTransition(true);\n setActionsWidth(width);\n } else if (skipWidthTransition) {\n // This pass's read resolved the row at its final width with the\n // transition off, so turning it back on animates nothing.\n setSkipWidthTransition(false);\n }\n }, [actions, areActionsVisible, actionsWidth, skipWidthTransition]);\n\n const [isFocusWithin, setIsFocusWithin] = useState(false);\n const [hasPressed, setHasPressed] = useState(false);\n const { hoverProps, isHovered } = useHover({});\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: setIsFocusWithin,\n });\n\n // Watch for data-pressed attribute on any descendant element\n useLayoutEffect(() => {\n const actionsEl = actionsRef.current;\n\n if (!actionsEl || !autoHideActions) return;\n\n const checkPressed = () => {\n setHasPressed(actionsEl.querySelector('[data-pressed]') !== null);\n };\n\n const observer = new MutationObserver(checkPressed);\n\n observer.observe(actionsEl, {\n attributes: true,\n attributeFilter: ['data-pressed'],\n subtree: true,\n });\n\n checkPressed();\n\n return () => observer.disconnect();\n }, [areActionsVisible, autoHideActions]);\n\n const shouldShowActions =\n isHovered || isFocusWithin || hasPressed || !autoHideActions;\n\n // `disabled` is on the wrapper so its variant can paint the row's DISABLED\n // label color, not just the resting one. Actions default to the `current` type\n // and suppress their own fade when the disabled state is inherited — on the\n // grounds that the host already faded the color they paint from — so without\n // this the wrapper would hand them a full-strength color and a disabled button\n // would sit next to full-strength actions. See `ITEM_RESTING_COLOR_VARIANTS`.\n const finalMods = {\n ...mods,\n ...(shouldShowActions ? { 'actions-shown': true } : null),\n ...(preserveActionsSpace ? { 'preserve-actions-space': true } : null),\n disabled: isDisabled,\n };\n\n return (\n <ItemActionsWrapperElement\n {...hoverProps}\n // The same resolver `Item` uses, so the wrapper cannot land on a\n // different variant than the row it wraps.\n variant={resolveItemVariant(theme, type)}\n data-size={size}\n data-type={type}\n data-theme={theme}\n mods={finalMods}\n styles={styles}\n tokens={{\n '$actions-width':\n areActionsVisible || !autoHideActions || preserveActionsSpace\n ? `${actionsWidth}px`\n : '0px',\n ...(typeof size === 'number' && { $size: `${size}px` }),\n }}\n >\n {children({\n showActions: shouldShowActions,\n skipActionsWidthTransition: skipWidthTransition,\n })}\n {/*\n The run is rendered under whatever press context the row sits in, and a\n `PressResponder` in that context reaches EVERY `usePress` below it — so\n an `ItemButton` / `TabButton` / picker trigger inside a `DialogTrigger`\n or a `MenuTrigger` handed its own actions the trigger's `onPress`, and\n pressing one toggled the overlay on top of running the action. The run\n belongs to the row, not to whatever opened around it: it clears the\n context so each action answers only to its own handler.\n */}\n <ClearPressResponder>\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={isDisabled}\n >\n {autoHideActions && !preserveActionsSpace ? (\n <DisplayTransition\n exposeUnmounted\n isShown={shouldShowActions}\n onPhaseChange={(phase) => {\n setAreActionsVisible(phase !== 'unmounted');\n }}\n >\n {({ ref: transitionRef }) => {\n return (\n <div\n {...focusWithinProps}\n {...actionsProps}\n ref={(node: any) => {\n actionsRef.current = node;\n transitionRef(node);\n }}\n data-element=\"Actions\"\n data-trigger-action=\"\"\n >\n {actions}\n </div>\n );\n }}\n </DisplayTransition>\n ) : (\n <div\n ref={actionsRef}\n {...actionsProps}\n data-element=\"Actions\"\n data-trigger-action=\"\"\n >\n {actions}\n </div>\n )}\n </ItemActionProvider>\n </ClearPressResponder>\n </ItemActionsWrapperElement>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { mergeProps } 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.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { Button } from "../Button/Button.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | 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 { useMenuContext } from "./context.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { normalizeNavigationUrl } from "../../../providers/navigation-url.js";
3
3
  import { parseTo } from "../use-action.js";
4
4
  import { COLLECTION_ITEM_CLICK, CollectionItem as _CollectionItem } from "../../CollectionItem.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { isExternalUrl, normalizeNavigationUrl } from "../../../providers/navigation-url.js";
4
4
  import { useNavigation } from "../../../providers/use-navigation.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
2
2
  import { getMenuItemReactKey } from "./MenuCollectionItem.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.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | 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 +1 @@
1
- {"version":3,"file":"MenuTrigger.js","names":["PressResponder","useObjectRef","useIsMobileDevice","forwardRef","Fragment","MutableRefObject","ReactElement","Ref","RefObject","useEffect","useMemo","useRef","AriaMenuTriggerProps","DismissButton","FocusScope","Placement","PositionProps","useMenuTrigger","useOverlayPosition","MenuTriggerState","useMenuTriggerState","useEvent","generateRandomId","SlotProvider","usePopoverSync","Popover","Tray","isOwnActionsPress","MenuContext","MenuContextValue","CubeMenuTriggerProps","Omit","isDisabled","defaultOpen","onOpenChange","isOpen","targetRef","HTMLElement","children","state","closeOnSelect","isDummy","shouldRestoreFocus","popoverRef","HTMLDivElement","mobileType","MenuTrigger","props","ref","$","_c","internalPopoverRef","menuPopoverRef","trayRef","triggerRef","domRef","menuTriggerRef","menuRef","wasOpenRef","shouldFlip","t0","trigger","t1","t2","t3","undefined","t4","Symbol","for","menuId","Array","isArray","length","Error","menuTrigger","menu","t5","close","t6","t7","onClose","enabled","containerRef","t8","menuTriggerProps","menuProps","initialPlacement","placement","isMobileDevice","isTray","t9","t10","offset","t11","crossOffset","t12","containerPadding","overlayRef","scrollRef","overlayProps","positionProps","t13","activeElement","document","body","isConnected","overlay","current","contains","hasFocusMovedOutsideMenu","t14","t15","setTimeout","focus","t16","focusStrategy","t17","t18","popover","tray","t19","t20","autoFocus","mods","isClosing","menuContext","t21","t22","t23","contents","t24","el","menuTriggerEl","closest","shouldCloseOnInteractOutside","t25","t26","style","actionButton","holdAffordance","t27","t28","t29","overlay_0","t30","_MenuTrigger","displayName","_c","Tray","Popover"],"sources":["../../../../src/components/actions/Menu/MenuTrigger.tsx"],"sourcesContent":["import { PressResponder } from '@react-aria/interactions';\nimport { useObjectRef } from '@react-aria/utils';\nimport { useIsMobileDevice } from '@react-spectrum/utils';\nimport {\n forwardRef,\n Fragment,\n MutableRefObject,\n ReactElement,\n Ref,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaMenuTriggerProps,\n DismissButton,\n FocusScope,\n Placement,\n PositionProps,\n useMenuTrigger,\n useOverlayPosition,\n} from 'react-aria';\nimport { MenuTriggerState, useMenuTriggerState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal';\nimport { generateRandomId } from '../../../utils/random';\nimport { SlotProvider } from '../../../utils/react';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { Popover, Tray } from '../../overlays/Modal';\nimport { isOwnActionsPress } from '../actions-run';\n\nimport { MenuContext, MenuContextValue } from './context';\n\nexport type { AriaMenuTriggerProps };\n\nexport type CubeMenuTriggerProps = Omit<AriaMenuTriggerProps, 'children'> &\n PositionProps & {\n isDisabled?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n targetRef?: RefObject<HTMLElement | null>;\n children: [\n ReactElement | ((state: MenuTriggerState) => ReactElement),\n ReactElement,\n ];\n\n closeOnSelect?: boolean;\n isDummy?: boolean;\n /**\n * Whether focus returns to the trigger when the menu closes. Defaults to\n * `true`.\n *\n * The restore is skipped automatically whenever the action that closed the\n * menu has already moved focus somewhere else, so an item that opens a\n * panel/dialog/inline editor and focuses it needs nothing here. Pass\n * `false` for the remaining case: a surface that claims focus *later* than\n * the menu's own restore (after an async load, an entry animation, or a\n * `requestAnimationFrame`), where the trigger would otherwise take focus\n * first and produce a visible flash.\n */\n shouldRestoreFocus?: boolean;\n /**\n * External ref to the popover container element. When provided, it is\n * aliased to the internal `menuPopoverRef`, letting consumers (e.g.\n * `useAnchoredMenu` / `useContextMenu`) feed the popover container into\n * their own `usePopoverSync` so the nested-popover guard can recognize\n * submenus opened inside this menu. Optional.\n */\n popoverRef?: MutableRefObject<HTMLDivElement | null>;\n /**\n * Overlay variant to use on mobile screens. Defaults to `'popover'`, which\n * keeps the desktop overlay even on small viewports. Pass `'tray'` to opt\n * into the bottom-sheet `Tray` overlay on mobile (the previous implicit\n * default). Mirrors the `mobileType` API on `DialogTrigger`.\n */\n mobileType?: 'popover' | 'tray';\n };\n\nfunction MenuTrigger(props: CubeMenuTriggerProps, ref: Ref<HTMLElement>) {\n const internalPopoverRef = useRef<HTMLDivElement>(null);\n const menuPopoverRef = props.popoverRef ?? internalPopoverRef;\n const trayRef = useRef<HTMLElement>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const domRef = useObjectRef(ref);\n const menuTriggerRef = props.targetRef || domRef || triggerRef;\n const menuRef = useRef<HTMLUListElement>(null);\n const wasOpenRef = useRef(false);\n const {\n children,\n shouldFlip = true,\n closeOnSelect,\n trigger = 'press',\n isDisabled,\n isDummy,\n mobileType = 'popover',\n shouldRestoreFocus = true,\n } = props;\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n if (!Array.isArray(children) || children.length > 2) {\n throw new Error('MenuTrigger must have exactly 2 children');\n }\n\n let [menuTrigger, menu] = children;\n const state: MenuTriggerState = useMenuTriggerState(props);\n\n usePopoverSync({\n menuId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n enabled: !isDummy,\n triggerRef: menuTriggerRef,\n containerRef: menuPopoverRef,\n });\n\n if (typeof menuTrigger === 'function') {\n menuTrigger = menuTrigger(state);\n }\n\n const { menuTriggerProps, menuProps } = useMenuTrigger(\n { isDisabled },\n state,\n menuTriggerRef,\n );\n\n let initialPlacement: Placement = props.placement ?? 'bottom start';\n\n // Tray rendering is now opt-in via `mobileType=\"tray\"` (matches DialogTrigger).\n // Without that opt-in, MenuTrigger always renders a Popover so that environments\n // like jsdom (where `window.screen.width === 0` makes useIsMobileDevice() true)\n // don't accidentally swap in the tray overlay.\n const isMobileDevice = useIsMobileDevice();\n const isTray = mobileType === 'tray' && isMobileDevice;\n const { overlayProps: positionProps, placement } = useOverlayPosition({\n targetRef: menuTriggerRef,\n overlayRef: menuPopoverRef,\n scrollRef: menuRef,\n placement: initialPlacement,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen && !isTray,\n onClose: state.close,\n containerPadding: props.containerPadding,\n offset: props.offset ?? 8,\n crossOffset: props.crossOffset ?? 0,\n });\n\n // Whether focus has been claimed by something outside the closing menu —\n // the signal that a menu action handed focus off and the trigger must not\n // take it back.\n //\n // Focus still inside the menu overlay means nobody claimed it: the pressed\n // item keeps focus while the popover plays its ~350ms exit animation. Focus\n // on `<body>` (or on a detached element) means the focused node went away\n // with the menu. Both are cases where the trigger is where focus belongs.\n const hasFocusMovedOutsideMenu = useEvent(() => {\n const activeElement = document.activeElement;\n\n if (!activeElement || activeElement === document.body) return false;\n if (!activeElement.isConnected) return false;\n\n // `menuPopoverRef` is only wired to the `Popover` branch, so the overlay\n // container is `trayRef` when `mobileType=\"tray\"` is in effect.\n const overlay = isTray ? trayRef.current : menuPopoverRef.current;\n\n return !(\n overlay?.contains(activeElement) ||\n menuRef.current?.contains(activeElement) ||\n menuTriggerRef.current?.contains(activeElement)\n );\n });\n\n // Restore focus manually when the menu closes\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current && !isDummy) {\n wasOpenRef.current = false;\n\n if (!shouldRestoreFocus) return;\n\n // Use setTimeout to ensure focus restoration happens after any animations\n setTimeout(() => {\n // An action that opened a panel, a dialog or an inline editor has\n // already focused it by now — taking focus back to the trigger would\n // undo the hand-off, which consumers previously had to out-race by\n // re-focusing on every animation frame (CUB-3962).\n if (hasFocusMovedOutsideMenu()) return;\n\n menuTriggerRef.current?.focus();\n }, 0);\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [\n state.isOpen,\n menuTriggerRef,\n isDummy,\n shouldRestoreFocus,\n hasFocusMovedOutsideMenu,\n ]);\n\n const menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: (state.focusStrategy as any) ?? 'first',\n mods: {\n popover: !isTray,\n tray: isTray,\n },\n isClosing: !state.isOpen,\n } as MenuContextValue;\n\n // Wrap in a FocusScope so the menu popover registers as a child of any\n // outer contained FocusScope (e.g. a parent Dialog/Popover). Without this,\n // when the menu opens inside an outer contained FocusScope, the outer\n // scope rejects focus moving into the menu items (which live in a portal\n // and would otherwise belong to no scope) and yanks focus back to the\n // menu trigger.\n //\n // `restoreFocus` follows `shouldRestoreFocus`, so opting out silences the\n // scope's own unmount restore too. Scope registration (and therefore the\n // guarantee above) is unaffected — `FocusScope` joins the tree and tracks\n // the active scope regardless of `restoreFocus`.\n const contents = (\n <FocusScope restoreFocus={shouldRestoreFocus}>\n <DismissButton onDismiss={state.close} />\n {menu}\n <DismissButton onDismiss={state.close} />\n </FocusScope>\n );\n\n // Shared between the Popover and Tray branches so both react-aria\n // `useOverlay` calls see the same predicate. Without this, the Tray branch\n // falls back to unconditional dismiss-on-outside-interaction, which\n // `useOverlay` translates into stopPropagation/preventDefault in the\n // capture phase — that swallows clicks on sibling triggers (see Menu\n // rapid-open test).\n //\n // `useEvent` gives us a single stable callback reference for the lifetime\n // of the component while always reading the latest closure values. This\n // matters because `useMenuTriggerState` returns a fresh `state` object on\n // every render, so a vanilla `useCallback([..., state])` would produce a\n // new function every render and defeat any stability guarantees consumers\n // rely on.\n const shouldCloseOnInteractOutside = useEvent((el: Element) => {\n // While `Popover` is animating out, `useInteractOutside`'s capture-phase\n // listener is still attached (jsdom 29+ uses pointerdown/click capture).\n // The animation lasts ~350ms; without this guard, clicks on a sibling\n // trigger during the exit window get stopPropagation()'d and the\n // sibling's `onClick` never runs — breaking rapid-open and \"open menu\n // again with new props\" flows. Reading `state.isOpen` directly is safe\n // because `useEvent` always sees the latest closure.\n if (!state.isOpen) return false;\n\n // A press on our OWN trigger's actions run — an `ItemButton` row's\n // `actions` — is not a press outside. The run is rendered as a sibling of\n // the trigger (see `ItemActionsWrapper`), so the checks below cannot\n // recognise it and we closed instead, which cost the action its press: the\n // first press on it while the menu was open only closed the menu.\n if (isOwnActionsPress(el, menuTriggerRef.current)) return false;\n\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (!menuTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss`. We schedule the close via setTimeout(0) so\n // it lands AFTER the click event finishes — the button's onPress\n // fires first, then the popover closes. Without this, useOverlay\n // would stopPropagation() the click and the user would need a second\n // click to actually press the button.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n if (\n isDummy &&\n (menuTriggerEl === menuTriggerRef.current ||\n menuTriggerRef.current?.contains(el))\n ) {\n return true;\n }\n if (menuTriggerEl === menuTriggerRef.current) return true;\n return false;\n });\n\n let overlay;\n if (isTray) {\n overlay = (\n <Tray\n ref={trayRef}\n isOpen={state.isOpen}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n ref={menuPopoverRef}\n hideArrow\n isNonModal\n isOpen={state.isOpen}\n // oxlint-disable-next-line react/forbid-component-props -- React Aria's overlay positioning computes these coordinates\n style={positionProps.style}\n placement={placement ?? undefined}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider\n slots={{ actionButton: { holdAffordance: trigger === 'longPress' } }}\n >\n {!isDummy ? (\n <PressResponder\n {...menuTriggerProps}\n ref={menuTriggerRef}\n data-popover-trigger\n isPressed={state.isOpen}\n >\n {menuTrigger}\n </PressResponder>\n ) : null}\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>{overlay}</MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\n\n_MenuTrigger.displayName = 'MenuTrigger';\n\nexport { _MenuTrigger as MenuTrigger };\n"],"mappings":";;;;;;;;;;;;;;;;;;AA+EA,SAAA8C,YAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACE,MAAAC,qBAA2BxC,OAAuB,IAAI;CACtD,MAAAyC,iBAAuBL,MAAKJ,cAALQ;CACvB,MAAAE,UAAgB1C,OAAoB,IAAI;CACxC,MAAA2C,aAAmB3C,OAAoB,IAAI;CAC3C,MAAA4C,SAAetD,aAAa+C,GAAG;CAC/B,MAAAQ,iBAAuBT,MAAKX,aAALmB,UAAAD;CACvB,MAAAG,UAAgB9C,OAAyB,IAAI;CAC7C,MAAA+C,aAAmB/C,OAAO,KAAK;CAC/B,MAAA,EAAA2B,UAAAqB,YAAAC,IAAApB,eAAAqB,SAAAC,IAAA9B,YAAAS,SAAAI,YAAAkB,IAAArB,oBAAAsB,OASIjB;CAPF,MAAAY,aAAAC,OAAAK,KAAAA,IAAA,OAAAL;CAEA,MAAAC,UAAAC,OAAAG,KAAAA,IAAA,UAAAH;CAGA,MAAAjB,aAAAkB,OAAAE,KAAAA,IAAA,YAAAF;CACA,MAAArB,qBAAAsB,OAAAC,KAAAA,IAAA,OAAAD;CAAyB,IAAAE;CAAA,IAAAjB,EAAA,OAAAkB,OAAAC,IAAA,2BAAA,GAAA;EAIEF,KAAA5C,iBAAiB;EAAC2B,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAA/C,MAAAoB,SAA6BH;CAE7B,IAAI,CAACI,MAAKC,QAASjC,QAAQ,KAAKA,SAAQkC,SAAU,GAChD,MAAM,IAAIC,MAAM,0CAA0C;CAG5D,IAAA,CAAAC,aAAAC,QAA0BrC;CAC1B,MAAAC,QAAgCnB,oBAAoB2B,KAAK;CAAE,IAAA6B;CAAA,IAAA3B,EAAA,OAAAV,OAAA;EAKhDqC,WAAMrC,MAAKsC,MAAO;EAAC5B,EAAA,KAAAV;EAAAU,EAAA,KAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CACnB,MAAA6B,KAAA,CAACrC;CAAO,IAAAsC;CAAA,IAAA9B,EAAA,OAAAG,kBAAAH,EAAA,OAAAO,kBAAAP,EAAA,OAAAV,MAAAJ,UAAAc,EAAA,OAAA2B,MAAA3B,EAAA,OAAA6B,IAAA;EAJJC,KAAA;GAAAV;GAAAlC,QAELI,MAAKJ;GAAO6C,SACXJ;GAAmBK,SACnBH;GAAQxB,YACLE;GAAc0B,cACZ9B;EAChB;EAACH,EAAA,KAAAG;EAAAH,EAAA,KAAAO;EAAAP,EAAA,KAAAV,MAAAJ;EAAAc,EAAA,KAAA2B;EAAA3B,EAAA,KAAA6B;EAAA7B,EAAA,KAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAPDzB,eAAeuD,EAOd;CAED,IAAI,OAAOL,gBAAgB,YAAU;EAAA,IAAAS;EAAA,IAAAlC,EAAA,OAAAyB,eAAAzB,EAAA,QAAAV,OAAA;GACrB4C,KAAAT,YAAYnC,KAAK;GAACU,EAAA,KAAAyB;GAAAzB,EAAA,MAAAV;GAAAU,EAAA,MAAAkC;EAAA,OAAAA,KAAAlC,EAAA;EAAhCyB,cAAcA;CAAH;CACZ,IAAAS;CAAA,IAAAlC,EAAA,QAAAjB,YAAA;EAGCmD,KAAA,EAAAnD,WAAa;EAACiB,EAAA,MAAAjB;EAAAiB,EAAA,MAAAkC;CAAA,OAAAA,KAAAlC,EAAA;CADhB,MAAA,EAAAmC,kBAAAC,cAAwCpE,eACtCkE,IACA5C,OACAiB,cACF;CAEA,MAAA8B,mBAAkCvC,MAAKwC,aAAL;CAMlC,MAAAC,iBAAuBtF,kBAAkB;CACzC,MAAAuF,SAAe5C,eAAe,UAAf2C;CAOL,MAAAE,KAAAnD,MAAKJ,UAAL,CAAiBsD;CAGjB,MAAAE,MAAA5C,MAAK6C,UAAL;CACK,MAAAC,MAAA9C,MAAK+C,eAAL;CAAsB,IAAAC;CAAA,IAAA9C,EAAA,QAAAqC,oBAAArC,EAAA,QAAAG,kBAAAH,EAAA,QAAAO,kBAAAP,EAAA,QAAAF,MAAAiD,oBAAA/C,EAAA,QAAAU,cAAAV,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAA0C,OAAA1C,EAAA,QAAA4C,OAAA5C,EAAA,QAAAyC,IAAA;EAViCK,MAAA;GAAA3D,WACzDoB;GAAcyC,YACb7C;GAAc8C,WACfzC;GAAO8B,WACPD;GAAgB3B;GAAAxB,QAEnBuD;GAAuBV,SACtBzC,MAAKsC;GAAMmB,kBACFjD,MAAKiD;GAAiBJ,QAChCD;GAAiBG,aACZD;EACf;EAAC5C,EAAA,MAAAqC;EAAArC,EAAA,MAAAG;EAAAH,EAAA,MAAAO;EAAAP,EAAA,MAAAF,MAAAiD;EAAA/C,EAAA,MAAAU;EAAAV,EAAA,MAAAV,MAAAsC;EAAA5B,EAAA,MAAA0C;EAAA1C,EAAA,MAAA4C;EAAA5C,EAAA,MAAAyC;EAAAzC,EAAA,MAAA8C;CAAA,OAAAA,MAAA9C,EAAA;CAXD,MAAA,EAAAkD,cAAAC,eAAAb,cAAmDrE,mBAAmB6E,GAWrE;CAAE,IAAAM;CAAA,IAAApD,EAAA,QAAAwC,UAAAxC,EAAA,QAAAG,kBAAAH,EAAA,QAAAO,gBAAA;EAUuC6C,YAAA;GACxC,MAAAC,gBAAsBC,SAAQD;GAE9B,IAAI,CAACA,iBAAiBA,kBAAkBC,SAAQC,MAAK,OAAS;GAC9D,IAAI,CAACF,cAAaG,aAAY,OAAS;GAI2B,OAE3D,GAFShB,SAASpC,QAAOsD,UAAWvD,eAAcuD,QAAAA,EAGhDC,SAAWN,aACqB,KAAvC7C,QAAOkD,SAAkBC,SAACN,aAAa,KACvC9C,eAAcmD,SAAkBC,SAACN,aAAa;EAC/C;EACFrD,EAAA,MAAAwC;EAAAxC,EAAA,MAAAG;EAAAH,EAAA,MAAAO;EAAAP,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAfD,MAAA4D,2BAAiCxF,SAASgF,GAezC;CAAE,IAAAS;CAAA,IAAAC;CAAA,IAAA9D,EAAA,QAAA4D,4BAAA5D,EAAA,QAAAR,WAAAQ,EAAA,QAAAO,kBAAAP,EAAA,QAAAP,sBAAAO,EAAA,QAAAV,MAAAJ,QAAA;EAGO2E,YAAA;GACR,IAAI,CAACvE,MAAKJ,UAAWuB,WAAUiD,WAA3B,CAAwClE,SAAO;IACjDiB,WAAUiD,UAAW;IAErB,IAAI,CAACjE,oBAAkB;IAGvBsE,iBAAW;KAKT,IAAIH,yBAAyB,GAAC;KAE9BrD,eAAcmD,SAAeM,MAAC;IAAC,GAC9B,CAAC;GAAC,OACA,IAAI1E,MAAKJ,QACduB,WAAUiD,UAAW;EACtB;EACAI,MAAA;GACDxE,MAAKJ;GACLqB;GACAf;GACAC;GACAmE;EAAwB;EACzB5D,EAAA,MAAA4D;EAAA5D,EAAA,MAAAR;EAAAQ,EAAA,MAAAO;EAAAP,EAAA,MAAAP;EAAAO,EAAA,MAAAV,MAAAJ;EAAAc,EAAA,MAAA6D;EAAA7D,EAAA,MAAA8D;CAAA,OAAA;EAAAD,MAAA7D,EAAA;EAAA8D,MAAA9D,EAAA;CAAA;CAzBDxC,UAAUqG,KAmBPC,GAMF;CAOY,MAAAG,MAAC3E,MAAK4E,iBAAN;CAEA,MAAAC,MAAA,CAAC3B;CAAM,IAAA4B;CAAA,IAAApE,EAAA,QAAAwC,UAAAxC,EAAA,QAAAmE,KAAA;EADZC,MAAA;GAAAC,SACKF;GAAOG,MACV9B;EACR;EAACxC,EAAA,MAAAwC;EAAAxC,EAAA,MAAAmE;EAAAnE,EAAA,MAAAoE;CAAA,OAAAA,MAAApE,EAAA;CACU,MAAAuE,MAAA,CAACjF,MAAKJ;CAAO,IAAAsF;CAAA,IAAAxE,EAAA,QAAAT,iBAAAS,EAAA,QAAAoC,aAAApC,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAAiE,OAAAjE,EAAA,QAAAoE,OAAApE,EAAA,QAAAuE,KAAA;EAVNC,MAAA;GAAA,GACfpC;GAASrC,KACPS;GAAOuB,SACHzC,MAAKsC;GAAMrC;GAAAkF,WAETR;GAAuCS,MAC5CN;GAGLO,WACUJ;EACb;EAACvE,EAAA,MAAAT;EAAAS,EAAA,MAAAoC;EAAApC,EAAA,MAAAV,MAAAsC;EAAA5B,EAAA,MAAAiE;EAAAjE,EAAA,MAAAoE;EAAApE,EAAA,MAAAuE;EAAAvE,EAAA,MAAAwE;CAAA,OAAAA,MAAAxE,EAAA;CAXD,MAAA4E,cAAoBJ;CAWE,IAAAK;CAAA,IAAA7E,EAAA,QAAAV,MAAAsC,OAAA;EAelBiD,MAAA,oBAAC,eAAD,EAA0B,WAAAvF,MAAKsC,MAAM,CAAA;EAAI5B,EAAA,MAAAV,MAAAsC;EAAA5B,EAAA,MAAA6E;CAAA,OAAAA,MAAA7E,EAAA;CAAA,IAAA8E;CAAA,IAAA9E,EAAA,QAAAV,MAAAsC,OAAA;EAEzCkD,MAAA,oBAAC,eAAD,EAA0B,WAAAxF,MAAKsC,MAAM,CAAA;EAAI5B,EAAA,MAAAV,MAAAsC;EAAA5B,EAAA,MAAA8E;CAAA,OAAAA,MAAA9E,EAAA;CAAA,IAAA+E;CAAA,IAAA/E,EAAA,QAAA0B,QAAA1B,EAAA,QAAAP,sBAAAO,EAAA,QAAA6E,OAAA7E,EAAA,QAAA8E,KAAA;EAH3CC,MAAA,qBAAC,YAAD;GAA0BtF,cAAAA;GAA1B,UAAA;IACEoF;IACCnD;IACDoD;GAHS;;EAIE9E,EAAA,MAAA0B;EAAA1B,EAAA,MAAAP;EAAAO,EAAA,MAAA6E;EAAA7E,EAAA,MAAA8E;EAAA9E,EAAA,MAAA+E;CAAA,OAAAA,MAAA/E,EAAA;CALf,MAAAgF,WACED;CAKA,IAAAE;CAAA,IAAAjF,EAAA,QAAAR,WAAAQ,EAAA,QAAAO,kBAAAP,EAAA,QAAAV,OAAA;EAe4C2F,OAAAC,OAAA;GAQ5C,IAAI,CAAC5F,MAAKJ,QAAO,OAAS;GAO1B,IAAIR,kBAAkBwG,IAAI3E,eAAcmD,OAAQ,GAAC,OAAS;GAE1D,MAAAyB,gBAAsBD,GAAEE,QAAS,wBAAwB;GACzD,IAAI,CAACD,eAAa;IAChB,IAAID,GAAEE,QAAS,qBAAqB,GAAC,OAAS;IAO9C,IAAIF,GAAEE,QAAS,wBAAwB,GAAC;KACtCrB,iBAAiBzE,MAAKsC,MAAO,GAAG,CAAC;KAAC,OAC3B;IAAK;IACb,OACM;GAAI;GAEb,IACEpC,YACC2F,kBAAkB5E,eAAcmD,WAC/BnD,eAAcmD,SAAkBC,SAACuB,EAAE,IAAE,OAEhC;GAET,IAAIC,kBAAkB5E,eAAcmD,SAAQ,OAAS;GAAK,OACnD;EAAK;EACb1D,EAAA,MAAAR;EAAAQ,EAAA,MAAAO;EAAAP,EAAA,MAAAV;EAAAU,EAAA,MAAAiF;CAAA,OAAAA,MAAAjF,EAAA;CAzCD,MAAAqF,+BAAqCjH,SAAS6G,GAyC7C;CAEGxB,IAAAA;CACJ,IAAIjB,QAAM;EAAA,IAAA8C;EAAA,IAAAtF,EAAA,QAAAgF,YAAAhF,EAAA,QAAAqF,gCAAArF,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAAV,MAAAJ,QAAA;GAENoG,MAAA,oBAACa,OAAD;IACO/F,KAAAA;IACG,QAAAd,MAAKJ;IACiBmG;IACrB,SAAA/F,MAAKsC;IAEboD,UAAAA;GANE,CAAA;GAOEhF,EAAA,MAAAgF;GAAAhF,EAAA,MAAAqF;GAAArF,EAAA,MAAAV,MAAAsC;GAAA5B,EAAA,MAAAV,MAAAJ;GAAAc,EAAA,MAAAsF;EAAA,OAAAA,MAAAtF,EAAA;EARTyD,YACEA;CADK,OAAA;EAmBQ,MAAA6B,MAAAhD,aAAAtB,KAAAA;EAAsB,IAAAuE;EAAA,IAAAvF,EAAA,QAAAgF,YAAAhF,EAAA,QAAAG,kBAAAH,EAAA,QAAAmD,cAAAqC,SAAAxF,EAAA,QAAAqF,gCAAArF,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAAV,MAAAJ,UAAAc,EAAA,QAAAsF,KAAA;GAPnCC,MAAA,oBAACa,UAAD;IACOjG,KAAAA;IACL,WAAA;IACA,YAAA;IACQ,QAAAb,MAAKJ;IAEN,OAAAiE,cAAaqC;IACT,WAAAF;IACmBD;IACrB,SAAA/F,MAAKsC;IAEboD,UAAAA;GAXK,CAAA;GAYEhF,EAAA,MAAAgF;GAAAhF,EAAA,MAAAG;GAAAH,EAAA,MAAAmD,cAAAqC;GAAAxF,EAAA,MAAAqF;GAAArF,EAAA,MAAAV,MAAAsC;GAAA5B,EAAA,MAAAV,MAAAJ;GAAAc,EAAA,MAAAsF;GAAAtF,EAAA,MAAAuF;EAAA,OAAAA,MAAAvF,EAAA;EAbZyD,YACEA;CADK;CAoBsC,MAAA6B,MAAA1E,YAAY;CAAW,IAAA2E;CAAA,IAAAvF,EAAA,QAAAsF,KAAA;EAAzDC,MAAA,EAAAE,cAAgB,EAAAC,gBAAkBJ,IAAwB,EAAE;EAACtF,EAAA,MAAAsF;EAAAtF,EAAA,MAAAuF;CAAA,OAAAA,MAAAvF,EAAA;CAAA,IAAA2F;CAAA,IAAA3F,EAAA,QAAAR,WAAAQ,EAAA,QAAAyB,eAAAzB,EAAA,QAAAmC,oBAAAnC,EAAA,QAAAO,kBAAAP,EAAA,QAAAV,MAAAJ,QAAA;EAEnEyG,MAAA,CAACnG,UACA,oBAAC,gBAAD;GAAe,GACT2C;GACC5B,KAAAA;GACL,wBAAA;GACW,WAAAjB,MAAKJ;GAEfuC,UAAAA;EANY,CAAA,IADhB;EASOzB,EAAA,MAAAR;EAAAQ,EAAA,MAAAyB;EAAAzB,EAAA,MAAAmC;EAAAnC,EAAA,MAAAO;EAAAP,EAAA,MAAAV,MAAAJ;EAAAc,EAAA,MAAA2F;CAAA,OAAAA,MAAA3F,EAAA;CAAA,IAAA4F;CAAA,IAAA5F,EAAA,QAAAuF,OAAAvF,EAAA,QAAA2F,KAAA;EAZVC,MAAA,oBAAC,cAAD;GACS,OAAAL;GAENI,UAAAA;EAHU,CAAA;EAaE3F,EAAA,MAAAuF;EAAAvF,EAAA,MAAA2F;EAAA3F,EAAA,MAAA4F;CAAA,OAAAA,MAAA5F,EAAA;CAAA,IAAA6F;CAAA,IAAA7F,EAAA,QAAA4E,eAAA5E,EAAA,QAAA8F,WAAA;EACfD,MAAA,oBAAA,YAAA,UAAA;GAA6BjB,OAAAA;GAAcnB,UAAAA;EAAQ,CAAA;EAAuBzD,EAAA,MAAA4E;EAAA5E,EAAA,MAAA8F;EAAA9F,EAAA,MAAA6F;CAAA,OAAAA,MAAA7F,EAAA;CAAA,IAAA+F;CAAA,IAAA/F,EAAA,QAAA4F,OAAA5F,EAAA,QAAA6F,KAAA;EAf5EE,MAAA,qBAAC,UAAD,EAAA,UAAA,CACEH,KAcAC,GAfO,EAAA,CAAA;EAgBE7F,EAAA,MAAA4F;EAAA5F,EAAA,MAAA6F;EAAA7F,EAAA,MAAA+F;CAAA,OAAAA,MAAA/F,EAAA;CAAA,OAhBX+F;AAgBW;;;;;AAQf,IAAIC,eAAe9I,WAAW2C,WAAW;AAEzCmG,aAAaC,cAAc"}
1
+ {"version":3,"file":"MenuTrigger.js","names":["PressResponder","useObjectRef","useIsMobileDevice","forwardRef","Fragment","MutableRefObject","ReactElement","Ref","RefObject","useEffect","useMemo","useRef","AriaMenuTriggerProps","DismissButton","FocusScope","Placement","PositionProps","useMenuTrigger","useOverlayPosition","MenuTriggerState","useMenuTriggerState","useEvent","generateRandomId","SlotProvider","usePopoverSync","Popover","Tray","isOwnActionsPress","MenuContext","MenuContextValue","CubeMenuTriggerProps","Omit","isDisabled","defaultOpen","onOpenChange","isOpen","targetRef","HTMLElement","children","state","closeOnSelect","isDummy","shouldRestoreFocus","popoverRef","HTMLDivElement","mobileType","MenuTrigger","props","ref","$","_c","internalPopoverRef","menuPopoverRef","trayRef","triggerRef","domRef","menuTriggerRef","menuRef","wasOpenRef","shouldFlip","t0","trigger","t1","t2","t3","undefined","t4","Symbol","for","menuId","Array","isArray","length","Error","menuTrigger","menu","t5","close","t6","t7","onClose","enabled","containerRef","t8","menuTriggerProps","menuProps","initialPlacement","placement","isMobileDevice","isTray","t9","t10","offset","t11","crossOffset","t12","containerPadding","overlayRef","scrollRef","overlayProps","positionProps","t13","activeElement","document","body","isConnected","overlay","current","contains","hasFocusMovedOutsideMenu","t14","t15","setTimeout","focus","t16","focusStrategy","t17","t18","popover","tray","t19","t20","autoFocus","mods","isClosing","menuContext","t21","t22","t23","contents","t24","el","menuTriggerEl","closest","shouldCloseOnInteractOutside","t25","t26","style","actionButton","holdAffordance","t27","t28","t29","overlay_0","t30","_MenuTrigger","displayName","_c","Tray","Popover"],"sources":["../../../../src/components/actions/Menu/MenuTrigger.tsx"],"sourcesContent":["import { PressResponder } from '@react-aria/interactions';\nimport { useObjectRef } from '@react-aria/utils';\nimport { useIsMobileDevice } from '@react-spectrum/utils';\nimport {\n forwardRef,\n Fragment,\n MutableRefObject,\n ReactElement,\n Ref,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaMenuTriggerProps,\n DismissButton,\n FocusScope,\n Placement,\n PositionProps,\n useMenuTrigger,\n useOverlayPosition,\n} from 'react-aria';\nimport { MenuTriggerState, useMenuTriggerState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal';\nimport { generateRandomId } from '../../../utils/random';\nimport { SlotProvider } from '../../../utils/react';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { Popover, Tray } from '../../overlays/Modal';\nimport { isOwnActionsPress } from '../actions-run';\n\nimport { MenuContext, MenuContextValue } from './context';\n\nexport type { AriaMenuTriggerProps };\n\nexport type CubeMenuTriggerProps = Omit<AriaMenuTriggerProps, 'children'> &\n PositionProps & {\n isDisabled?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n targetRef?: RefObject<HTMLElement | null>;\n children: [\n ReactElement | ((state: MenuTriggerState) => ReactElement),\n ReactElement,\n ];\n\n closeOnSelect?: boolean;\n isDummy?: boolean;\n /**\n * Whether focus returns to the trigger when the menu closes. Defaults to\n * `true`.\n *\n * The restore is skipped automatically whenever the action that closed the\n * menu has already moved focus somewhere else, so an item that opens a\n * panel/dialog/inline editor and focuses it needs nothing here. Pass\n * `false` for the remaining case: a surface that claims focus *later* than\n * the menu's own restore (after an async load, an entry animation, or a\n * `requestAnimationFrame`), where the trigger would otherwise take focus\n * first and produce a visible flash.\n */\n shouldRestoreFocus?: boolean;\n /**\n * External ref to the popover container element. When provided, it is\n * aliased to the internal `menuPopoverRef`, letting consumers (e.g.\n * `useAnchoredMenu` / `useContextMenu`) feed the popover container into\n * their own `usePopoverSync` so the nested-popover guard can recognize\n * submenus opened inside this menu. Optional.\n */\n popoverRef?: MutableRefObject<HTMLDivElement | null>;\n /**\n * Overlay variant to use on mobile screens. Defaults to `'popover'`, which\n * keeps the desktop overlay even on small viewports. Pass `'tray'` to opt\n * into the bottom-sheet `Tray` overlay on mobile (the previous implicit\n * default). Mirrors the `mobileType` API on `DialogTrigger`.\n */\n mobileType?: 'popover' | 'tray';\n };\n\nfunction MenuTrigger(props: CubeMenuTriggerProps, ref: Ref<HTMLElement>) {\n const internalPopoverRef = useRef<HTMLDivElement>(null);\n const menuPopoverRef = props.popoverRef ?? internalPopoverRef;\n const trayRef = useRef<HTMLElement>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const domRef = useObjectRef(ref);\n const menuTriggerRef = props.targetRef || domRef || triggerRef;\n const menuRef = useRef<HTMLUListElement>(null);\n const wasOpenRef = useRef(false);\n const {\n children,\n shouldFlip = true,\n closeOnSelect,\n trigger = 'press',\n isDisabled,\n isDummy,\n mobileType = 'popover',\n shouldRestoreFocus = true,\n } = props;\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n if (!Array.isArray(children) || children.length > 2) {\n throw new Error('MenuTrigger must have exactly 2 children');\n }\n\n let [menuTrigger, menu] = children;\n const state: MenuTriggerState = useMenuTriggerState(props);\n\n usePopoverSync({\n menuId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n enabled: !isDummy,\n triggerRef: menuTriggerRef,\n containerRef: menuPopoverRef,\n });\n\n if (typeof menuTrigger === 'function') {\n menuTrigger = menuTrigger(state);\n }\n\n const { menuTriggerProps, menuProps } = useMenuTrigger(\n { isDisabled },\n state,\n menuTriggerRef,\n );\n\n let initialPlacement: Placement = props.placement ?? 'bottom start';\n\n // Tray rendering is now opt-in via `mobileType=\"tray\"` (matches DialogTrigger).\n // Without that opt-in, MenuTrigger always renders a Popover so that environments\n // like jsdom (where `window.screen.width === 0` makes useIsMobileDevice() true)\n // don't accidentally swap in the tray overlay.\n const isMobileDevice = useIsMobileDevice();\n const isTray = mobileType === 'tray' && isMobileDevice;\n const { overlayProps: positionProps, placement } = useOverlayPosition({\n targetRef: menuTriggerRef,\n overlayRef: menuPopoverRef,\n scrollRef: menuRef,\n placement: initialPlacement,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen && !isTray,\n onClose: state.close,\n containerPadding: props.containerPadding,\n offset: props.offset ?? 8,\n crossOffset: props.crossOffset ?? 0,\n });\n\n // Whether focus has been claimed by something outside the closing menu —\n // the signal that a menu action handed focus off and the trigger must not\n // take it back.\n //\n // Focus still inside the menu overlay means nobody claimed it: the pressed\n // item keeps focus while the popover plays its ~350ms exit animation. Focus\n // on `<body>` (or on a detached element) means the focused node went away\n // with the menu. Both are cases where the trigger is where focus belongs.\n const hasFocusMovedOutsideMenu = useEvent(() => {\n const activeElement = document.activeElement;\n\n if (!activeElement || activeElement === document.body) return false;\n if (!activeElement.isConnected) return false;\n\n // `menuPopoverRef` is only wired to the `Popover` branch, so the overlay\n // container is `trayRef` when `mobileType=\"tray\"` is in effect.\n const overlay = isTray ? trayRef.current : menuPopoverRef.current;\n\n return !(\n overlay?.contains(activeElement) ||\n menuRef.current?.contains(activeElement) ||\n menuTriggerRef.current?.contains(activeElement)\n );\n });\n\n // Restore focus manually when the menu closes\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current && !isDummy) {\n wasOpenRef.current = false;\n\n if (!shouldRestoreFocus) return;\n\n // Use setTimeout to ensure focus restoration happens after any animations\n setTimeout(() => {\n // An action that opened a panel, a dialog or an inline editor has\n // already focused it by now — taking focus back to the trigger would\n // undo the hand-off, which consumers previously had to out-race by\n // re-focusing on every animation frame (CUB-3962).\n if (hasFocusMovedOutsideMenu()) return;\n\n menuTriggerRef.current?.focus();\n }, 0);\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [\n state.isOpen,\n menuTriggerRef,\n isDummy,\n shouldRestoreFocus,\n hasFocusMovedOutsideMenu,\n ]);\n\n const menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: (state.focusStrategy as any) ?? 'first',\n mods: {\n popover: !isTray,\n tray: isTray,\n },\n isClosing: !state.isOpen,\n } as MenuContextValue;\n\n // Wrap in a FocusScope so the menu popover registers as a child of any\n // outer contained FocusScope (e.g. a parent Dialog/Popover). Without this,\n // when the menu opens inside an outer contained FocusScope, the outer\n // scope rejects focus moving into the menu items (which live in a portal\n // and would otherwise belong to no scope) and yanks focus back to the\n // menu trigger.\n //\n // `restoreFocus` follows `shouldRestoreFocus`, so opting out silences the\n // scope's own unmount restore too. Scope registration (and therefore the\n // guarantee above) is unaffected — `FocusScope` joins the tree and tracks\n // the active scope regardless of `restoreFocus`.\n const contents = (\n <FocusScope restoreFocus={shouldRestoreFocus}>\n <DismissButton onDismiss={state.close} />\n {menu}\n <DismissButton onDismiss={state.close} />\n </FocusScope>\n );\n\n // Shared between the Popover and Tray branches so both react-aria\n // `useOverlay` calls see the same predicate. Without this, the Tray branch\n // falls back to unconditional dismiss-on-outside-interaction, which\n // `useOverlay` translates into stopPropagation/preventDefault in the\n // capture phase — that swallows clicks on sibling triggers (see Menu\n // rapid-open test).\n //\n // `useEvent` gives us a single stable callback reference for the lifetime\n // of the component while always reading the latest closure values. This\n // matters because `useMenuTriggerState` returns a fresh `state` object on\n // every render, so a vanilla `useCallback([..., state])` would produce a\n // new function every render and defeat any stability guarantees consumers\n // rely on.\n const shouldCloseOnInteractOutside = useEvent((el: Element) => {\n // While `Popover` is animating out, `useInteractOutside`'s capture-phase\n // listener is still attached (jsdom 29+ uses pointerdown/click capture).\n // The animation lasts ~350ms; without this guard, clicks on a sibling\n // trigger during the exit window get stopPropagation()'d and the\n // sibling's `onClick` never runs — breaking rapid-open and \"open menu\n // again with new props\" flows. Reading `state.isOpen` directly is safe\n // because `useEvent` always sees the latest closure.\n if (!state.isOpen) return false;\n\n // A press on our OWN trigger's actions run — an `ItemButton` row's\n // `actions` — is not a press outside. The run is rendered as a sibling of\n // the trigger (see `ItemActionsWrapper`), so the checks below cannot\n // recognise it and we closed instead, which cost the action its press: the\n // first press on it while the menu was open only closed the menu.\n if (isOwnActionsPress(el, menuTriggerRef.current)) return false;\n\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (!menuTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss`. We schedule the close via setTimeout(0) so\n // it lands AFTER the click event finishes — the button's onPress\n // fires first, then the popover closes. Without this, useOverlay\n // would stopPropagation() the click and the user would need a second\n // click to actually press the button.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n if (\n isDummy &&\n (menuTriggerEl === menuTriggerRef.current ||\n menuTriggerRef.current?.contains(el))\n ) {\n return true;\n }\n if (menuTriggerEl === menuTriggerRef.current) return true;\n return false;\n });\n\n let overlay;\n if (isTray) {\n overlay = (\n <Tray\n ref={trayRef}\n isOpen={state.isOpen}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n ref={menuPopoverRef}\n hideArrow\n isNonModal\n isOpen={state.isOpen}\n // oxlint-disable-next-line tasty/no-style-prop -- React Aria's overlay positioning computes these coordinates\n style={positionProps.style}\n placement={placement ?? undefined}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider\n slots={{ actionButton: { holdAffordance: trigger === 'longPress' } }}\n >\n {!isDummy ? (\n <PressResponder\n {...menuTriggerProps}\n ref={menuTriggerRef}\n data-popover-trigger\n isPressed={state.isOpen}\n >\n {menuTrigger}\n </PressResponder>\n ) : null}\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>{overlay}</MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\n\n_MenuTrigger.displayName = 'MenuTrigger';\n\nexport { _MenuTrigger as MenuTrigger };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.0 | 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";