@cube-dev/ui-kit 0.190.7 → 0.190.9

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 (719) hide show
  1. package/dist/CHANGELOG.md +14 -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.d.ts +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.d.ts +2 -2
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Action/Action.js.map +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.d.ts +2 -2
  22. package/dist/components/actions/Button/Button.js +1 -1
  23. package/dist/components/actions/Button/Button.js.map +1 -1
  24. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  26. package/dist/components/actions/ButtonSplit/context.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +18 -5
  28. package/dist/components/actions/CommandMenu/CommandMenu.js +207 -197
  29. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  30. package/dist/components/actions/CommandMenu/styled.js +1 -1
  31. package/dist/components/actions/ItemAction/ItemAction.d.ts +2 -1
  32. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  33. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  34. package/dist/components/actions/ItemActionContext.js +1 -1
  35. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  36. package/dist/components/actions/ItemButton/ItemButton.d.ts +3 -3
  37. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  38. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  39. package/dist/components/actions/Link/Link.d.ts +1 -1
  40. package/dist/components/actions/Link/Link.js +1 -1
  41. package/dist/components/actions/Menu/Menu.d.ts +20 -5
  42. package/dist/components/actions/Menu/Menu.js +51 -41
  43. package/dist/components/actions/Menu/Menu.js.map +1 -1
  44. package/dist/components/actions/Menu/MenuItem.js +1 -1
  45. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  46. package/dist/components/actions/Menu/MenuSection.js +2 -3
  47. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  48. package/dist/components/actions/Menu/MenuTrigger.d.ts +42 -3
  49. package/dist/components/actions/Menu/MenuTrigger.js +22 -22
  50. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  51. package/dist/components/actions/Menu/SubMenuTrigger.js +4 -4
  52. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  53. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  54. package/dist/components/actions/Menu/context.d.ts +2 -2
  55. package/dist/components/actions/Menu/context.js +1 -1
  56. package/dist/components/actions/Menu/context.js.map +1 -1
  57. package/dist/components/actions/Menu/styled.js +1 -1
  58. package/dist/components/actions/Menu/styled.js.map +1 -1
  59. package/dist/components/actions/actions-run.js +1 -1
  60. package/dist/components/actions/index.d.ts +1 -1
  61. package/dist/components/actions/index.js +1 -1
  62. package/dist/components/actions/use-action.d.ts +4 -5
  63. package/dist/components/actions/use-action.js +3 -2
  64. package/dist/components/actions/use-action.js.map +1 -1
  65. package/dist/components/actions/use-anchored-menu.js +1 -1
  66. package/dist/components/actions/use-context-menu.js +1 -1
  67. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  68. package/dist/components/content/Alert/Alert.js +1 -1
  69. package/dist/components/content/Alert/use-alert.js +1 -1
  70. package/dist/components/content/Avatar/Avatar.js +1 -1
  71. package/dist/components/content/Badge/Badge.js +1 -1
  72. package/dist/components/content/Card/Card.js +1 -1
  73. package/dist/components/content/Content.js +1 -1
  74. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -2
  75. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  76. package/dist/components/content/CopySnippet/CopySnippet.d.ts +964 -6
  77. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  78. package/dist/components/content/Disclosure/Disclosure.d.ts +1 -1
  79. package/dist/components/content/Disclosure/Disclosure.js +69 -67
  80. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  81. package/dist/components/content/Divider.js +1 -1
  82. package/dist/components/content/Footer.js +1 -1
  83. package/dist/components/content/Header.js +1 -1
  84. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  85. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  86. package/dist/components/content/InlineInput/InlineInput.d.ts +2 -2
  87. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  88. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  89. package/dist/components/content/Item/Item.d.ts +3 -3
  90. package/dist/components/content/Item/Item.js +1 -1
  91. package/dist/components/content/Item/Item.js.map +1 -1
  92. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  93. package/dist/components/content/ItemCard/ItemCard.d.ts +1 -1
  94. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  95. package/dist/components/content/Layout/GridLayout.js +1 -1
  96. package/dist/components/content/Layout/Layout.js +1 -1
  97. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  98. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  99. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  100. package/dist/components/content/Layout/LayoutContent.js +1 -1
  101. package/dist/components/content/Layout/LayoutContext.js +1 -1
  102. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  103. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  104. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  105. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  106. package/dist/components/content/Layout/LayoutPane.js +1 -1
  107. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  108. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  109. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  110. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  111. package/dist/components/content/Layout/index.js +1 -1
  112. package/dist/components/content/Layout/utils.js +1 -1
  113. package/dist/components/content/Paragraph.js +1 -1
  114. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  115. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  116. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  117. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  118. package/dist/components/content/Result/Result.d.ts +2 -2
  119. package/dist/components/content/Result/Result.js +1 -1
  120. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  121. package/dist/components/content/Tag/Tag.js +1 -1
  122. package/dist/components/content/Text.js +1 -1
  123. package/dist/components/content/TextItem/TextItem.d.ts +2 -2
  124. package/dist/components/content/TextItem/TextItem.js +1 -1
  125. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  126. package/dist/components/content/Title.js +1 -1
  127. package/dist/components/content/Tree/Tree.js +1 -1
  128. package/dist/components/content/Tree/TreeNode.js +1 -1
  129. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  130. package/dist/components/content/Tree/styled.js +1 -1
  131. package/dist/components/content/Tree/tree-index.js +1 -1
  132. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  133. package/dist/components/content/Tree/use-load-data.js +1 -1
  134. package/dist/components/content/highlightText.js +1 -1
  135. package/dist/components/content/use-auto-tooltip.d.ts +1 -1
  136. package/dist/components/content/use-auto-tooltip.js +1 -1
  137. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  138. package/dist/components/data/DataTable/DataTable.js +1 -1
  139. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  140. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  141. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  142. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  143. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  144. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  145. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  146. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  147. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  148. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  149. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  150. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  151. package/dist/components/data/TableBase/RowCollection.js +1 -1
  152. package/dist/components/data/TableBase/TableHeaderCell.js +3 -2
  153. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  154. package/dist/components/data/TableBase/TableRow.js +2 -2
  155. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  156. package/dist/components/data/TableBase/TableView.js +1 -1
  157. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  158. package/dist/components/data/TableBase/column-header.js +1 -1
  159. package/dist/components/data/TableBase/column-menu.d.ts +2 -1
  160. package/dist/components/data/TableBase/column-menu.js +1 -1
  161. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  162. package/dist/components/data/TableBase/column-styles.js +1 -1
  163. package/dist/components/data/TableBase/column-tint.js +1 -1
  164. package/dist/components/data/TableBase/row-menu.js +1 -1
  165. package/dist/components/data/TableBase/styled.d.ts +3 -1
  166. package/dist/components/data/TableBase/styled.js +1 -1
  167. package/dist/components/data/TableBase/table-tree.js +1 -1
  168. package/dist/components/data/TableBase/types.js +1 -1
  169. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  170. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  171. package/dist/components/data/TableBase/use-column-order.js +1 -1
  172. package/dist/components/data/TableBase/use-container-width.js +1 -1
  173. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  174. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  175. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  176. package/dist/components/data/TableBase/use-table-search.js +1 -1
  177. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  178. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  179. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  180. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  181. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  182. package/dist/components/fields/Checkbox/Checkbox.d.ts +7 -14
  183. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  184. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  185. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +4 -2
  186. package/dist/components/fields/Checkbox/CheckboxGroup.js +7 -7
  187. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  188. package/dist/components/fields/Checkbox/context.js +1 -1
  189. package/dist/components/fields/ColorInput/ColorInput.js +34 -29
  190. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  191. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  192. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  193. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  194. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  195. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  196. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +10 -5
  197. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  198. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  199. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  200. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  201. package/dist/components/fields/DatePicker/DateInput.js +3 -3
  202. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  203. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  204. package/dist/components/fields/DatePicker/DatePicker.d.ts +2 -2
  205. package/dist/components/fields/DatePicker/DatePicker.js +4 -4
  206. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  207. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  208. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  209. package/dist/components/fields/DatePicker/DatePickerInput.js +8 -5
  210. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  211. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  212. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -1
  213. package/dist/components/fields/DatePicker/DateRangePicker.js +76 -72
  214. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  215. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -1
  216. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +357 -323
  217. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  218. package/dist/components/fields/DatePicker/MonthPicker.d.ts +1 -1
  219. package/dist/components/fields/DatePicker/MonthPicker.js +3 -3
  220. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +6 -5
  221. package/dist/components/fields/DatePicker/PeriodPicker.js +6 -5
  222. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  223. package/dist/components/fields/DatePicker/QuarterPicker.d.ts +1 -1
  224. package/dist/components/fields/DatePicker/QuarterPicker.js +3 -3
  225. package/dist/components/fields/DatePicker/TimeInput.d.ts +3 -3
  226. package/dist/components/fields/DatePicker/TimeInput.js +10 -5
  227. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  228. package/dist/components/fields/DatePicker/WeekPicker.d.ts +1 -1
  229. package/dist/components/fields/DatePicker/WeekPicker.js +3 -3
  230. package/dist/components/fields/DatePicker/YearPicker.d.ts +1 -1
  231. package/dist/components/fields/DatePicker/YearPicker.js +3 -3
  232. package/dist/components/fields/DatePicker/index.d.ts +1 -1
  233. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  234. package/dist/components/fields/DatePicker/period.js +1 -1
  235. package/dist/components/fields/DatePicker/props.js +1 -1
  236. package/dist/components/fields/DatePicker/props.js.map +1 -1
  237. package/dist/components/fields/DatePicker/utils.js +1 -1
  238. package/dist/components/fields/FileInput/FileInput.d.ts +2 -6
  239. package/dist/components/fields/FileInput/FileInput.js +1 -1
  240. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  241. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  242. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  243. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  244. package/dist/components/fields/Input/Input.js +1 -1
  245. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  246. package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
  247. package/dist/components/fields/ListBox/ListBox.js +5 -10
  248. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  249. package/dist/components/fields/ListBox/optionId.js +1 -1
  250. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +125 -93
  251. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  252. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -1
  253. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  254. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +48 -1
  255. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  256. package/dist/components/fields/NumberInput/NumberInput.d.ts +6 -3
  257. package/dist/components/fields/NumberInput/NumberInput.js +98 -59
  258. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  259. package/dist/components/fields/NumberInput/StepButton.js +1 -3
  260. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  261. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +5 -2
  262. package/dist/components/fields/PasswordInput/PasswordInput.js +7 -7
  263. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  264. package/dist/components/fields/Picker/Picker.js +1 -1
  265. package/dist/components/fields/RadioGroup/Radio.d.ts +596 -17
  266. package/dist/components/fields/RadioGroup/Radio.js +114 -111
  267. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  268. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +5 -3
  269. package/dist/components/fields/RadioGroup/RadioGroup.js +8 -8
  270. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  271. package/dist/components/fields/RadioGroup/context.js +1 -1
  272. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  273. package/dist/components/fields/SearchInput/SearchInput.d.ts +5 -3
  274. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  275. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  276. package/dist/components/fields/Select/Select.d.ts +5 -4
  277. package/dist/components/fields/Select/Select.js +7 -4
  278. package/dist/components/fields/Select/Select.js.map +1 -1
  279. package/dist/components/fields/Slider/Gradation.js +1 -1
  280. package/dist/components/fields/Slider/HueSlider.d.ts +1 -1
  281. package/dist/components/fields/Slider/HueSlider.js +1 -1
  282. package/dist/components/fields/Slider/RangeSlider.d.ts +1 -1
  283. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  284. package/dist/components/fields/Slider/Slider.d.ts +1 -1
  285. package/dist/components/fields/Slider/Slider.js +1 -1
  286. package/dist/components/fields/Slider/SliderBase.js +1 -1
  287. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  288. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  289. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  290. package/dist/components/fields/Slider/elements.js +1 -1
  291. package/dist/components/fields/Slider/index.js +1 -1
  292. package/dist/components/fields/Switch/Switch.d.ts +3 -7
  293. package/dist/components/fields/Switch/Switch.js +7 -7
  294. package/dist/components/fields/Switch/Switch.js.map +1 -1
  295. package/dist/components/fields/TagInput/TagInput.js +2 -2
  296. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  297. package/dist/components/fields/TagInput/TagList.js +1 -1
  298. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  299. package/dist/components/fields/TagInput/useTagError.js +1 -1
  300. package/dist/components/fields/TextArea/TextArea.d.ts +11 -3
  301. package/dist/components/fields/TextArea/TextArea.js +7 -8
  302. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  303. package/dist/components/fields/TextInput/TextInput.d.ts +10 -3
  304. package/dist/components/fields/TextInput/TextInput.js +7 -8
  305. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  306. package/dist/components/fields/TextInput/TextInputBase.d.ts +7 -5
  307. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  308. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  309. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  310. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  311. package/dist/components/fields/TriggerActions.js +1 -1
  312. package/dist/components/fields/color/ColorPanel.js +1 -1
  313. package/dist/components/fields/color/channels.js +1 -1
  314. package/dist/components/fields/color/color.js +1 -1
  315. package/dist/components/fields/color/context.js +1 -1
  316. package/dist/components/fields/index.d.ts +1 -1
  317. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  318. package/dist/components/form/Form/Field.js +1 -1
  319. package/dist/components/form/Form/Form.js +1 -1
  320. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  321. package/dist/components/form/Form/ResetButton/ResetButton.d.ts +2 -2
  322. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  323. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  324. package/dist/components/form/Form/SubmitButton/SubmitButton.d.ts +2 -2
  325. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  326. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  327. package/dist/components/form/Form/SubmitError.js +1 -1
  328. package/dist/components/form/Form/backend.js +1 -1
  329. package/dist/components/form/Form/index.d.ts +2 -2
  330. package/dist/components/form/Form/index.js +1 -1
  331. package/dist/components/form/Form/modern/actions.js +1 -1
  332. package/dist/components/form/Form/modern/context.js +1 -1
  333. package/dist/components/form/Form/modern/controller.js +1 -1
  334. package/dist/components/form/Form/modern/field-binding.js +1 -1
  335. package/dist/components/form/Form/modern/field.js +1 -1
  336. package/dist/components/form/Form/modern/react.js +1 -1
  337. package/dist/components/form/Form/modern/store.js +1 -1
  338. package/dist/components/form/Form/modern/validation.js +1 -1
  339. package/dist/components/form/Form/modern/values.js +1 -1
  340. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  341. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  342. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  343. package/dist/components/form/Form/use-field/use-field.js +1 -1
  344. package/dist/components/form/Form/use-form.js +1 -1
  345. package/dist/components/form/Form/validation.js +1 -1
  346. package/dist/components/form/Label.js +1 -1
  347. package/dist/components/form/legacy-tooltip.js +1 -1
  348. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  349. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  350. package/dist/components/form/validation/use-validation-props.js +1 -1
  351. package/dist/components/form/wrapper.js +1 -1
  352. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  353. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  354. package/dist/components/layout/Board/Board.js +1 -1
  355. package/dist/components/layout/Board/BoardProvider.js +1 -1
  356. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  357. package/dist/components/layout/Board/Widget.js +1 -1
  358. package/dist/components/layout/Board/WidgetHost.js +1 -1
  359. package/dist/components/layout/Board/board-context.js +1 -1
  360. package/dist/components/layout/Board/board-store.js +1 -1
  361. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  362. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  363. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  364. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  365. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  366. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  367. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  368. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  369. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  370. package/dist/components/layout/Board/index.js +1 -1
  371. package/dist/components/layout/Board/responsive-utils.js +1 -1
  372. package/dist/components/layout/Board/use-board-layout.js +1 -1
  373. package/dist/components/layout/Board/use-board-registry.js +1 -1
  374. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  375. package/dist/components/layout/Board/use-board-selection.js +1 -1
  376. package/dist/components/layout/Flex.js +1 -1
  377. package/dist/components/layout/Flow.js +1 -1
  378. package/dist/components/layout/Grid.js +1 -1
  379. package/dist/components/layout/Panel.js +1 -1
  380. package/dist/components/layout/Prefix.js +1 -1
  381. package/dist/components/layout/ResizablePanel.js +1 -1
  382. package/dist/components/layout/Space.js +1 -1
  383. package/dist/components/layout/Suffix.js +1 -1
  384. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  385. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  386. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  387. package/dist/components/navigation/Tabs/TabButton.js +387 -379
  388. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  389. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  390. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  391. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  392. package/dist/components/navigation/Tabs/Tabs.d.ts +2 -2
  393. package/dist/components/navigation/Tabs/Tabs.js +2 -2
  394. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  395. package/dist/components/navigation/Tabs/TabsAction.d.ts +1 -1
  396. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  397. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  398. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  399. package/dist/components/navigation/Tabs/styled.js +1 -1
  400. package/dist/components/navigation/Tabs/types.js +1 -1
  401. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  402. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  403. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  404. package/dist/components/other/Calendar/Calendar.js +1 -1
  405. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  406. package/dist/components/other/Calendar/CalendarGrid.js +50 -45
  407. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  408. package/dist/components/other/Calendar/CalendarHeader.js +2 -2
  409. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  410. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  411. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  412. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  413. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  414. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  415. package/dist/components/other/Calendar/styled.js +1 -1
  416. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  417. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  418. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  419. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  420. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  421. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  422. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  423. package/dist/components/overlays/Dialog/DialogForm.d.ts +1 -1
  424. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  425. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  426. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
  427. package/dist/components/overlays/Dialog/DialogTrigger.js +25 -24
  428. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  429. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  430. package/dist/components/overlays/Dialog/context.js +1 -1
  431. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  432. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  433. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  434. package/dist/components/overlays/Modal/Modal.js +1 -1
  435. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  436. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  437. package/dist/components/overlays/Modal/Overlay.d.ts +1 -2
  438. package/dist/components/overlays/Modal/Overlay.js +1 -1
  439. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  440. package/dist/components/overlays/Modal/Popover.d.ts +2 -1
  441. package/dist/components/overlays/Modal/Popover.js +1 -1
  442. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  443. package/dist/components/overlays/Modal/Tray.d.ts +2 -2
  444. package/dist/components/overlays/Modal/Tray.js +1 -1
  445. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  446. package/dist/components/overlays/Modal/Underlay.js +1 -1
  447. package/dist/components/overlays/Modal/index.d.ts +1 -1
  448. package/dist/components/overlays/Modal/types.d.ts +2 -1
  449. package/dist/components/overlays/Notifications/Notification.js +1 -1
  450. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  451. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  452. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  453. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  454. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  455. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  456. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  457. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  458. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  459. package/dist/components/overlays/Notifications/index.js +1 -1
  460. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  461. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  462. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  463. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  464. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  465. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  466. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  467. package/dist/components/overlays/Toast/index.js +1 -1
  468. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  469. package/dist/components/overlays/Toast/useToast.js +1 -1
  470. package/dist/components/overlays/Tooltip/Tooltip.js +2 -5
  471. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  472. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  473. package/dist/components/overlays/Tooltip/TooltipTrigger.js +2 -5
  474. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  475. package/dist/components/overlays/Tooltip/context.js +1 -1
  476. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  477. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  478. package/dist/components/portal/Portal.js +1 -1
  479. package/dist/components/portal/PortalProvider.js +1 -1
  480. package/dist/components/portal/usePortal.js +1 -1
  481. package/dist/components/shared/DraggableCollection.js +11 -6
  482. package/dist/components/shared/DraggableCollection.js.map +1 -1
  483. package/dist/components/shared/InvalidIcon.js +1 -1
  484. package/dist/components/shared/ValidIcon.js +1 -1
  485. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  486. package/dist/components/status/Spin/Cube.js +1 -1
  487. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  488. package/dist/components/status/Spin/Spin.js +1 -1
  489. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  490. package/dist/data/item-themes.js +1 -1
  491. package/dist/data/themes.js +1 -1
  492. package/dist/eslint-plugin/defaults.generated.js +1 -1
  493. package/dist/eslint-plugin/index.js +1 -1
  494. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  495. package/dist/i18n/I18nProvider.js +1 -1
  496. package/dist/i18n/createFormatter.js +1 -1
  497. package/dist/i18n/index.js +1 -1
  498. package/dist/i18n/instance.js +1 -1
  499. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  500. package/dist/i18n/locales/en-US/uikit.js +1 -1
  501. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  502. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  503. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  504. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  505. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  506. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  507. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  508. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  509. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  510. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  511. package/dist/i18n/locales.js +1 -1
  512. package/dist/i18n/useFormatter.js +1 -1
  513. package/dist/i18n/useI18n.js +1 -1
  514. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  515. package/dist/icons/AdjustmentsIcon.js +1 -1
  516. package/dist/icons/AiIcon.js +1 -1
  517. package/dist/icons/AreaChartIcon.js +1 -1
  518. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  519. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  520. package/dist/icons/BackwardIcon.js +1 -1
  521. package/dist/icons/BarChartIcon.js +1 -1
  522. package/dist/icons/BellFilledIcon.js +1 -1
  523. package/dist/icons/BellIcon.js +1 -1
  524. package/dist/icons/BooleanIcon.js +1 -1
  525. package/dist/icons/CalendarEditIcon.js +1 -1
  526. package/dist/icons/CalendarIcon.js +1 -1
  527. package/dist/icons/CaretDownIcon.js +1 -1
  528. package/dist/icons/CaretUpIcon.js +1 -1
  529. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  530. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  531. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  532. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  533. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  534. package/dist/icons/ChartBarLineIcon.js +1 -1
  535. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  536. package/dist/icons/ChartBarStackedIcon.js +1 -1
  537. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  538. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  539. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  540. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  541. package/dist/icons/ChartBubbleIcon.js +1 -1
  542. package/dist/icons/ChartDonut2Icon.js +1 -1
  543. package/dist/icons/ChartFunnelIcon.js +1 -1
  544. package/dist/icons/ChartHeatmapIcon.js +1 -1
  545. package/dist/icons/ChartKPIIcon.js +1 -1
  546. package/dist/icons/ChartPie2Icon.js +1 -1
  547. package/dist/icons/ChartScatterIcon.js +1 -1
  548. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  549. package/dist/icons/CheckCircleIcon.js +1 -1
  550. package/dist/icons/CheckIcon.js +1 -1
  551. package/dist/icons/CircleFilledIcon.js +1 -1
  552. package/dist/icons/ClearIcon.js +1 -1
  553. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  554. package/dist/icons/CloseCircleIcon.js +1 -1
  555. package/dist/icons/CloseIcon.js +1 -1
  556. package/dist/icons/CodeIcon.js +1 -1
  557. package/dist/icons/ColumnTotalIcon.js +1 -1
  558. package/dist/icons/CopyIcon.js +1 -1
  559. package/dist/icons/CountIcon.js +1 -1
  560. package/dist/icons/CubeIcon.js +1 -1
  561. package/dist/icons/CubePauseIcon.js +1 -1
  562. package/dist/icons/CubePlayIcon.js +1 -1
  563. package/dist/icons/CurrencyDollarIcon.js +1 -1
  564. package/dist/icons/DangerIcon.js +1 -1
  565. package/dist/icons/DashboardIcon.js +1 -1
  566. package/dist/icons/DatabaseIcon.js +1 -1
  567. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  568. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  569. package/dist/icons/DirectionIcon.js +1 -1
  570. package/dist/icons/DonutIcon.js +1 -1
  571. package/dist/icons/DownIcon.js +1 -1
  572. package/dist/icons/EditIcon.js +1 -1
  573. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  574. package/dist/icons/ExclamationCircleIcon.js +1 -1
  575. package/dist/icons/ExclamationIcon.js +1 -1
  576. package/dist/icons/EyeIcon.js +1 -1
  577. package/dist/icons/EyeInvisibleIcon.js +1 -1
  578. package/dist/icons/FilterIcon.js +1 -1
  579. package/dist/icons/FolderFilledIcon.js +1 -1
  580. package/dist/icons/FolderIcon.js +1 -1
  581. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  582. package/dist/icons/FolderOpenIcon.js +1 -1
  583. package/dist/icons/ForwardIcon.js +1 -1
  584. package/dist/icons/GripVerticalIcon.js +1 -1
  585. package/dist/icons/HierarchyIcon.js +1 -1
  586. package/dist/icons/HierarchyOpenIcon.js +1 -1
  587. package/dist/icons/Icon.js +1 -1
  588. package/dist/icons/InfoCircleIcon.js +1 -1
  589. package/dist/icons/InfoIcon.js +1 -1
  590. package/dist/icons/KeyIcon.js +1 -1
  591. package/dist/icons/LeftIcon.js +1 -1
  592. package/dist/icons/LineChartIcon.js +1 -1
  593. package/dist/icons/LoadingIcon.js +1 -1
  594. package/dist/icons/LockFilledIcon.js +1 -1
  595. package/dist/icons/LockIcon.js +1 -1
  596. package/dist/icons/MoreIcon.js +1 -1
  597. package/dist/icons/NotAllowedIcon.js +1 -1
  598. package/dist/icons/Number123Icon.js +1 -1
  599. package/dist/icons/NumberIcon.js +1 -1
  600. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  601. package/dist/icons/PauseCircleIcon.js +1 -1
  602. package/dist/icons/PauseIcon.js +1 -1
  603. package/dist/icons/PercentageIcon.js +1 -1
  604. package/dist/icons/PieChartIcon.js +1 -1
  605. package/dist/icons/PipetteIcon.js +1 -1
  606. package/dist/icons/PlayCircleIcon.js +1 -1
  607. package/dist/icons/PlayIcon.js +1 -1
  608. package/dist/icons/PlusIcon.js +1 -1
  609. package/dist/icons/ProgressBarIcon.js +1 -1
  610. package/dist/icons/ReloadIcon.js +1 -1
  611. package/dist/icons/ReportIcon.js +1 -1
  612. package/dist/icons/ReturnIcon.js +1 -1
  613. package/dist/icons/RightIcon.js +1 -1
  614. package/dist/icons/RowTotalsIcon.js +1 -1
  615. package/dist/icons/SchemeIcon.js +1 -1
  616. package/dist/icons/SearchIcon.js +1 -1
  617. package/dist/icons/SemanticQueryIcon.js +1 -1
  618. package/dist/icons/SettingsIcon.js +1 -1
  619. package/dist/icons/ShieldFilledIcon.js +1 -1
  620. package/dist/icons/ShieldIcon.js +1 -1
  621. package/dist/icons/SlashIcon.js +1 -1
  622. package/dist/icons/SparklesIcon.js +1 -1
  623. package/dist/icons/SqlIcon.js +1 -1
  624. package/dist/icons/StatsIcon.js +1 -1
  625. package/dist/icons/StopIcon.js +1 -1
  626. package/dist/icons/StringIcon.js +1 -1
  627. package/dist/icons/SubtotalsIcon.js +1 -1
  628. package/dist/icons/SwitchIcon.js +1 -1
  629. package/dist/icons/TableIcon.js +1 -1
  630. package/dist/icons/ThumbsDownIcon.js +1 -1
  631. package/dist/icons/ThumbsUpIcon.js +1 -1
  632. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  633. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  634. package/dist/icons/ThunderboltIcon.js +1 -1
  635. package/dist/icons/TimeIcon.js +1 -1
  636. package/dist/icons/TrashIcon.js +1 -1
  637. package/dist/icons/UnlockIcon.js +1 -1
  638. package/dist/icons/UpIcon.js +1 -1
  639. package/dist/icons/UserGroupIcon.js +1 -1
  640. package/dist/icons/UserIcon.js +1 -1
  641. package/dist/icons/UserLockIcon.js +1 -1
  642. package/dist/icons/ViewIcon.js +1 -1
  643. package/dist/icons/WarningFilledIcon.js +1 -1
  644. package/dist/icons/WarningIcon.js +1 -1
  645. package/dist/icons/wrap-icon.js +1 -1
  646. package/dist/index.d.ts +18 -18
  647. package/dist/index.js +3 -3
  648. package/dist/probe/canonicalize.js +1 -1
  649. package/dist/probe/css.js +1 -1
  650. package/dist/probe/index.js +1 -1
  651. package/dist/provider.js +1 -1
  652. package/dist/providers/TrackingProvider.js +1 -1
  653. package/dist/providers/navigationAdapter.default.js +1 -1
  654. package/dist/shared/form.d.ts +4 -21
  655. package/dist/tokens/all-tokens.js +1 -1
  656. package/dist/tokens/base.js +1 -1
  657. package/dist/tokens/color-seed.js +1 -1
  658. package/dist/tokens/color-theme.js +1 -1
  659. package/dist/tokens/colors.js +1 -1
  660. package/dist/tokens/layout.js +1 -1
  661. package/dist/tokens/lazy-styles.js +1 -1
  662. package/dist/tokens/legacy-color.js +1 -1
  663. package/dist/tokens/palette-config.js +1 -1
  664. package/dist/tokens/palette.js +1 -1
  665. package/dist/tokens/resolve.js +1 -1
  666. package/dist/tokens/shadows.js +1 -1
  667. package/dist/tokens/sizes.js +1 -1
  668. package/dist/tokens/spacing.js +1 -1
  669. package/dist/tokens/typography.js +1 -1
  670. package/dist/utils/ResizeSensor.js +1 -1
  671. package/dist/utils/colors.js +1 -1
  672. package/dist/utils/dotize.js +1 -1
  673. package/dist/utils/is-dev-env.js +1 -1
  674. package/dist/utils/modules.js +1 -1
  675. package/dist/utils/promise.js +1 -1
  676. package/dist/utils/raf.js +1 -1
  677. package/dist/utils/random.js +1 -1
  678. package/dist/utils/range.js +1 -1
  679. package/dist/utils/react/RenderCache.js +1 -1
  680. package/dist/utils/react/Slots.js +1 -1
  681. package/dist/utils/react/chain.js +1 -1
  682. package/dist/utils/react/disabledProps.js +1 -1
  683. package/dist/utils/react/escapePropagation.js +1 -1
  684. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  685. package/dist/utils/react/index.js +1 -1
  686. package/dist/utils/react/interactions.js +1 -1
  687. package/dist/utils/react/isTextOnly.js +1 -1
  688. package/dist/utils/react/mapProps.js +1 -1
  689. package/dist/utils/react/mapProps.js.map +1 -1
  690. package/dist/utils/react/mergeProps.js +1 -1
  691. package/dist/utils/react/nullableValue.d.ts +2 -2
  692. package/dist/utils/react/nullableValue.js +1 -1
  693. package/dist/utils/react/nullableValue.js.map +1 -1
  694. package/dist/utils/react/programmaticFocus.js +1 -1
  695. package/dist/utils/react/resolveIcon.js +1 -1
  696. package/dist/utils/react/sharedStore.js +1 -1
  697. package/dist/utils/react/useBufferedValue.js +1 -1
  698. package/dist/utils/react/useCombinedRefs.js +1 -1
  699. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  700. package/dist/utils/react/useEventBus.js +1 -1
  701. package/dist/utils/react/useId.js +1 -1
  702. package/dist/utils/react/useIsDarwin.js +1 -1
  703. package/dist/utils/react/useKeySymbols.js +1 -1
  704. package/dist/utils/react/useLayoutEffect.js +1 -1
  705. package/dist/utils/react/useLocalStorage.js +1 -1
  706. package/dist/utils/react/useMergeStyles.js +1 -1
  707. package/dist/utils/react/useOverlayEscapeGuard.js +12 -1
  708. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  709. package/dist/utils/react/usePopoverSync.js +1 -1
  710. package/dist/utils/react/useQaProps.js +1 -1
  711. package/dist/utils/react/useScheme.js +1 -1
  712. package/dist/utils/react/useViewportSize.js +1 -1
  713. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  714. package/dist/utils/selection.js +1 -1
  715. package/dist/utils/styles.js +1 -1
  716. package/dist/utils/tree.js +1 -1
  717. package/dist/utils/warnings.js +1 -1
  718. package/dist/version.js +2 -2
  719. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"CommandMenu.js","names":["useObjectRef","useSyncRef","FocusStrategy","BaseProps","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","Key","ReactElement","ReactNode","Ref","useRef","useState","useFilter","useMenu","Section","useTreeState","useI18n","LoadingIcon","mergeProps","extractStyles","mergeStyleLayers","CollectionItem","Item","useMenuContext","CubeMenuProps","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledCommandMenu","StyledEmptyState","StyledLoadingWrapper","StyledSearchInput","CommandMenuItem","id","textValue","keywords","forceMount","key","CubeCommandMenuProps","Omit","T","searchPlaceholder","searchValue","onSearchChange","value","filter","inputValue","emptyLabel","searchInputStyles","headerStyles","footerStyles","isLoading","shouldFilter","autoFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","CommandMenu","props","ref","$","_c","t","t0","controlledSearchValue","customFilter","t1","t2","t3","t4","t5","qa","styles","header","footer","restMenuProps","t6","undefined","t7","domRef","searchInputRef","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","treeState","collection","getKeys","map","_temp","_temp2","completeProps","internalSearchValue","setInternalSearchValue","t8","handleSearchChange","t9","Symbol","for","sensitivity","contains","t10","item","searchWords","trim","toLowerCase","split","_temp3","length","searchableTexts","push","isArray","_temp4","every","searchWord","some","text","includes","enhancedFilter","t11","nodes","term","searchWords_0","_temp5","filterNodes","iter","result","node","type","filteredChildren","childNodes","text_0","String","rendered","collectionFilter","treeStateProps","shouldUseVirtualFocus","collectionItems","_temp6","focusedKey","setFocusedKey","focusedKeyRef","filteredCollectionItems","hasFilteredItems","viewHasSections","_temp7","findFirstSelectableItem","selectionManager","visit","items","node_0","childResult","isDisabled","menuRef","menuProps","renderedItems","isFirstSection","forEach","item_2","sectionStyles","itemStyles","sectionHeadingStyles","menuItem","onAction","wrapper","cloneElement","t12","t13","current","timeoutId","setTimeout","focus","clearTimeout","useEffect","t14","t15","timeoutId_0","prevSearchValueRef","t16","currentSearchValue","prevSearchValue","firstSelectableKey","t17","extractedStyles","t18","hasSearchTerm","showEmptyState","t19","t20","t21","mods","popover","t22","tray","t23","sections","T0","t24","t25","Record","t26","t27","t28","border","t29","t30","t31","e","target","t32","e_0","preventDefault","isArrowDown","selectionManager_0","currentKey","getVisibleItemKeys","keys_0","visit_0","items_0","node_1","findNextSelectableKey","currentIndex","direction","visibleKeys","increment","i","key_1","findFirstLastSelectableKey","direction_0","visibleKeys_0","keysToCheck","reverse","key_2","visibleKeys_1","nextKey","direction_1","currentIndex_0","indexOf","currentFocusedKey","selectionMode","select","node_2","getItem","onClose","closeOnSelect","t33","t34","t35","boxShadow","radius","padding","t36","t37","t38","item_1","item_0","word_0","word","keyword","key_0","_CommandMenu","forwardRef","RefAttributes","HTMLDivElement","__CommandMenu","Object","assign","Trigger","displayName"],"sources":["../../../../src/components/actions/CommandMenu/CommandMenu.tsx"],"sourcesContent":["import { useObjectRef, useSyncRef } from '@react-aria/utils';\nimport { FocusStrategy } from '@react-types/shared';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, {\n Key,\n ReactElement,\n ReactNode,\n Ref,\n useRef,\n useState,\n} from 'react';\nimport { useFilter, useMenu } from 'react-aria';\nimport { Section, useTreeState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\n// `CollectionItem` (not react-stately's bare `Item`) is what CommandMenu\n// actually renders through `MenuItem`, so it carries the `Item` props.\nimport { CollectionItem as Item } from '../../CollectionItem';\nimport { useMenuContext } from '../Menu';\nimport { CubeMenuProps } from '../Menu/Menu';\nimport { MenuItem } from '../Menu/MenuItem';\nimport { MenuSection } from '../Menu/MenuSection';\nimport { MenuTrigger } from '../Menu/MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n} from '../Menu/styled';\n\nimport {\n StyledCommandMenu,\n StyledEmptyState,\n StyledLoadingWrapper,\n StyledSearchInput,\n} from './styled';\n\nexport interface CommandMenuItem {\n // Standard item props\n id: string;\n textValue: string;\n\n // Enhanced search features\n keywords?: string[];\n forceMount?: boolean;\n\n // Standard Menu item props inherited\n [key: string]: any;\n}\n\nexport interface CubeCommandMenuProps<T>\n extends BaseProps,\n ContainerStyleProps,\n Omit<\n CubeMenuProps<T>,\n 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'\n > {\n // Search-specific props\n searchPlaceholder?: string;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n filter?: (textValue: string, inputValue: string) => boolean;\n emptyLabel?: ReactNode;\n searchInputStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n\n // Advanced search features\n isLoading?: boolean;\n shouldFilter?: boolean;\n\n // Focus management - override the autoFocus from CubeMenuProps to allow boolean | FocusStrategy\n autoFocus?: boolean | FocusStrategy;\n\n // Size prop\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction CommandMenu<T extends object>(\n props: CubeCommandMenuProps<T>,\n ref: Ref<HTMLDivElement>,\n) {\n const { t } = useI18n();\n\n const {\n searchPlaceholder = t(\n 'commandMenu.searchPlaceholder',\n 'Search commands...',\n ),\n searchValue: controlledSearchValue,\n onSearchChange,\n filter: customFilter,\n emptyLabel = t('commandMenu.empty', 'No commands found'),\n searchInputStyles,\n headerStyles,\n footerStyles,\n isLoading = false,\n shouldFilter = true,\n autoFocus = true,\n size = 'medium',\n qa,\n styles,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n header,\n footer,\n ...restMenuProps\n } = props;\n\n const domRef = useObjectRef(ref);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: 'all' | Set<Key>) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(treeState.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, restMenuProps, {\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Search state management\n const [internalSearchValue, setInternalSearchValue] = useState('');\n const searchValue = controlledSearchValue ?? internalSearchValue;\n\n const handleSearchChange = (value: string) => {\n if (controlledSearchValue === undefined) {\n setInternalSearchValue(value);\n }\n onSearchChange?.(value);\n };\n\n // Filter setup\n const { contains } = useFilter({ sensitivity: 'base' });\n const textFilterFn = customFilter || contains;\n\n // Enhanced filter function that supports keywords and forceMount\n const enhancedFilter = (\n textValue: string,\n inputValue: string,\n item?: any,\n ) => {\n // Always show force-mounted items\n if (item?.forceMount) {\n return true;\n }\n\n // If shouldFilter is false, show all items\n if (!shouldFilter) {\n return true;\n }\n\n // Split input value into individual words and filter out empty strings\n const searchWords = inputValue\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no search words, show all items\n if (searchWords.length === 0) {\n return true;\n }\n\n // Collect all searchable text for this item\n const searchableTexts: string[] = [];\n\n // Add main text value\n searchableTexts.push(textValue.toLowerCase());\n\n // Add keywords if available\n if (item?.keywords && Array.isArray(item.keywords)) {\n searchableTexts.push(\n ...item.keywords.map((keyword: string) => keyword.toLowerCase()),\n );\n }\n\n // Check if ALL search words match at least one of the searchable texts\n return searchWords.every((searchWord) =>\n searchableTexts.some((text) => text.includes(searchWord)),\n );\n };\n\n // Collection filter for React Stately\n const collectionFilter = (nodes: Iterable<any>): Iterable<any> => {\n const term = searchValue.trim();\n\n // If no search term, return all nodes\n if (!term) {\n return nodes;\n }\n\n // Split search term into words for multi-word filtering\n const searchWords = term\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no valid search words, return all nodes\n if (searchWords.length === 0) {\n return nodes;\n }\n\n // Recursive helper to filter sections and items\n const filterNodes = (iter: Iterable<any>): any[] => {\n const result: any[] = [];\n\n for (const node of iter) {\n if (node.type === 'section') {\n const filteredChildren = filterNodes(node.childNodes);\n\n if (filteredChildren.length) {\n result.push({\n ...node,\n childNodes: filteredChildren,\n });\n }\n } else {\n const text = node.textValue ?? String(node.rendered ?? '');\n\n if (enhancedFilter(text, term, node.props)) {\n result.push(node);\n }\n }\n }\n\n return result;\n };\n\n return filterNodes(nodes);\n };\n\n // Create tree state with filter for both keyboard navigation and rendering\n const treeStateProps = {\n ...completeProps,\n filter: collectionFilter,\n shouldUseVirtualFocus: true, // Always use virtual focus for CommandMenu\n };\n\n const treeState = useTreeState(treeStateProps);\n\n const collectionItems = [...treeState.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n // Track focused key for aria-activedescendant\n const [focusedKey, setFocusedKey] = React.useState<React.Key | null>(null);\n const focusedKeyRef = useRef<React.Key | null>(null);\n\n // Apply filtering to collection items for rendering and empty state checks\n const filteredCollectionItems = [...collectionFilter(collectionItems)];\n\n const hasFilteredItems = filteredCollectionItems.length > 0;\n const viewHasSections = filteredCollectionItems.some(\n (item) => item.type === 'section',\n );\n\n // Helper function to find the first selectable item from filtered results\n const findFirstSelectableItem = () => {\n const { selectionManager } = treeState;\n\n const visit = (items: any[]): Key | null => {\n for (const node of items) {\n if (node?.type === 'section') {\n const childResult = visit(Array.from(node.childNodes ?? []));\n if (childResult != null) return childResult;\n } else if (\n node?.type === 'item' &&\n !selectionManager.isDisabled(node.key)\n ) {\n return node.key;\n }\n }\n return null;\n };\n\n return visit(filteredCollectionItems);\n };\n\n // Create a ref for the menu container\n const menuRef = useRef<HTMLUListElement>(null);\n\n // Use menu hook for accessibility\n const { menuProps } = useMenu(\n {\n ...completeProps,\n 'aria-label': 'Command palette menu',\n filter: collectionFilter,\n shouldUseVirtualFocus: true,\n },\n treeState,\n menuRef,\n );\n\n // Manual rendering of menu items (similar to Menu component)\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n filteredCollectionItems.forEach((item) => {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${String(item.key)}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={item.key}\n item={item}\n state={treeState}\n styles={completeProps.sectionStyles}\n itemStyles={completeProps.itemStyles}\n headingStyles={completeProps.sectionHeadingStyles}\n size={size}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={item.key}\n item={item}\n state={treeState}\n styles={completeProps.itemStyles}\n size={size}\n onAction={item.onAction}\n />\n );\n\n // Apply custom wrapper if provided\n if (item.props.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: item.key }));\n });\n\n // Auto-focus search input\n React.useEffect(() => {\n if (autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the element is visible and focusable\n // This is especially important when the CommandMenu is opened in a popover\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 0);\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus]);\n\n // Also focus when the component becomes visible (for trigger/popover usage)\n React.useEffect(() => {\n // Check if autoFocus is enabled and we're in a trigger context\n if (autoFocus && contextProps.autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the popover is fully rendered\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 50); // Slightly longer timeout for popover context\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, contextProps.autoFocus]);\n\n // Track the previous search value to only run auto-focus when search actually changes\n const prevSearchValueRef = useRef<string>('');\n\n // Auto-focus first item when search value changes (but not on initial render)\n React.useEffect(() => {\n const currentSearchValue = searchValue.trim();\n const prevSearchValue = prevSearchValueRef.current;\n\n // Only auto-focus when search value actually changes\n if (currentSearchValue !== prevSearchValue && currentSearchValue !== '') {\n const firstSelectableKey = findFirstSelectableItem();\n\n if (firstSelectableKey && hasFilteredItems) {\n // Focus the first item in the selection manager\n treeState.selectionManager.setFocusedKey(firstSelectableKey);\n setFocusedKey(firstSelectableKey);\n focusedKeyRef.current = firstSelectableKey;\n } else {\n // Clear focus if no items are available\n treeState.selectionManager.setFocusedKey(null);\n setFocusedKey(null);\n focusedKeyRef.current = null;\n }\n }\n\n // Update the previous search value\n prevSearchValueRef.current = currentSearchValue;\n }, [searchValue, findFirstSelectableItem, hasFilteredItems]);\n\n // Extract styles\n const extractedStyles = extractStyles(props, CONTAINER_STYLES);\n\n // Determine if we should show empty state based on actual filtered collection\n const hasSearchTerm = searchValue.trim().length > 0;\n const showEmptyState = hasSearchTerm && !hasFilteredItems && !isLoading;\n\n // Sync refs\n useSyncRef(contextProps, menuRef);\n\n // Determine mods based on menu context\n const mods = {\n sections: viewHasSections,\n footer: !!footer,\n header: !!header,\n popover: completeProps.mods?.popover,\n tray: completeProps.mods?.tray,\n };\n\n return (\n <StyledCommandMenu\n {...(filterBaseProps(props) as Record<string, unknown>)}\n ref={domRef}\n qa={qa || 'CommandMenu'}\n data-size={size}\n mods={mods}\n styles={mergeStyleLayers(extractedStyles, styles)}\n >\n {/* Header */}\n {header && (\n <StyledHeader\n role=\"presentation\"\n data-size={size}\n styles={mergeStyleLayers({ border: 'none' }, headerStyles)}\n >\n {header}\n </StyledHeader>\n )}\n\n {/* Search Input */}\n <StyledSearchInput\n ref={searchInputRef}\n type=\"search\"\n placeholder={searchPlaceholder}\n value={searchValue}\n styles={searchInputStyles}\n data-size={size}\n aria-controls={`${qa || 'CommandMenu'}-menu`}\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-haspopup=\"listbox\"\n aria-activedescendant={\n focusedKey != null\n ? `${qa || 'CommandMenu'}-menu-option-${focusedKey}`\n : undefined\n }\n onChange={(e) => handleSearchChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n\n const isArrowDown = e.key === 'ArrowDown';\n const { selectionManager } = treeState;\n // Use the ref to get the current focused key synchronously\n const currentKey =\n focusedKeyRef.current || selectionManager.focusedKey;\n\n // Helper function to get all visible item keys accounting for sections\n const getVisibleItemKeys = (): Key[] => {\n const keys: Key[] = [];\n\n const visit = (items: any[]) => {\n for (const node of items) {\n if (node?.type === 'section') {\n visit(Array.from(node.childNodes ?? []));\n } else if (node?.type === 'item') {\n keys.push(node.key);\n }\n }\n };\n\n visit(filteredCollectionItems);\n return keys;\n };\n\n // Helper function to find next selectable key in a direction\n const findNextSelectableKey = (\n currentIndex: number,\n direction: 'forward' | 'backward',\n visibleKeys: Key[],\n ) => {\n const increment = direction === 'forward' ? 1 : -1;\n\n for (\n let i = currentIndex + increment;\n i >= 0 && i < visibleKeys.length;\n i += increment\n ) {\n const key = visibleKeys[i];\n if (!selectionManager.isDisabled(key)) {\n return key;\n }\n }\n\n return null;\n };\n\n // Helper function to find first or last selectable key\n const findFirstLastSelectableKey = (\n direction: 'forward' | 'backward',\n visibleKeys: Key[],\n ) => {\n const keysToCheck =\n direction === 'forward'\n ? visibleKeys\n : [...visibleKeys].reverse();\n\n for (const key of keysToCheck) {\n if (!selectionManager.isDisabled(key)) {\n return key;\n }\n }\n\n return null;\n };\n\n const visibleKeys = getVisibleItemKeys();\n\n if (visibleKeys.length === 0) {\n return; // No visible items to navigate\n }\n\n let nextKey;\n const direction = isArrowDown ? 'forward' : 'backward';\n\n if (currentKey == null) {\n // No current focus, start from the first/last item\n nextKey = findFirstLastSelectableKey(direction, visibleKeys);\n } else {\n // Find current position in visible keys\n const currentIndex = visibleKeys.indexOf(currentKey);\n\n if (currentIndex === -1) {\n // Current key not in visible items, start from beginning/end\n nextKey = findFirstLastSelectableKey(direction, visibleKeys);\n } else {\n // Find next selectable item from current position\n nextKey = findNextSelectableKey(\n currentIndex,\n direction,\n visibleKeys,\n );\n\n // If no next key found, wrap to first/last selectable item\n if (nextKey == null) {\n nextKey = findFirstLastSelectableKey(direction, visibleKeys);\n }\n }\n }\n\n if (nextKey != null) {\n selectionManager.setFocusedKey(nextKey);\n setFocusedKey(nextKey);\n focusedKeyRef.current = nextKey; // Update ref immediately\n }\n } else if (\n e.key === 'Enter' ||\n (e.key === ' ' && !searchValue.trim())\n ) {\n const currentFocusedKey =\n focusedKey || treeState.selectionManager.focusedKey;\n if (currentFocusedKey != null) {\n e.preventDefault();\n\n // Trigger action for the focused item (like Menu does)\n // First check if there's a selection mode, if so, handle selection\n if (treeState.selectionManager.selectionMode !== 'none') {\n treeState.selectionManager.select(currentFocusedKey, e);\n } else {\n // Default behavior: trigger action\n const node = treeState.collection.getItem(currentFocusedKey);\n if (node) {\n // Call the tree state's action handler\n const onAction = (completeProps as any).onAction;\n if (onAction) {\n onAction(currentFocusedKey);\n }\n // Also call the item's individual onAction if it exists\n if (node.props?.onAction) {\n node.props.onAction(currentFocusedKey);\n }\n }\n }\n\n // Close the menu if we're in a trigger context and closeOnSelect is enabled (default behavior)\n const { onClose, closeOnSelect } = contextProps;\n if (onClose && closeOnSelect !== false) {\n onClose();\n }\n }\n } else if (e.key === 'Escape') {\n if (searchValue) {\n e.preventDefault();\n handleSearchChange('');\n }\n }\n }}\n />\n\n {/* Loading State */}\n {isLoading && (\n <StyledLoadingWrapper>\n <LoadingIcon\n role=\"progressbar\"\n aria-label=\"Loading commands\"\n aria-hidden={false}\n />\n </StyledLoadingWrapper>\n )}\n\n {/* Menu Content - always render unless loading */}\n {!isLoading && !showEmptyState && (\n <StyledMenu\n {...menuProps}\n ref={menuRef}\n id={`${qa || 'CommandMenu'}-menu`}\n aria-label=\"Command menu\"\n qa=\"Menu\"\n data-size={size}\n mods={mods}\n styles={{\n border: 'none',\n boxShadow: 'none',\n radius: 0,\n padding: '0.5x',\n }}\n >\n {renderedItems}\n </StyledMenu>\n )}\n\n {/* Empty State - show when search term exists but no results */}\n {!isLoading && showEmptyState && (\n <StyledEmptyState>{emptyLabel}</StyledEmptyState>\n )}\n\n {/* Footer */}\n {footer && (\n <StyledFooter\n role=\"presentation\"\n data-size={size}\n styles={footerStyles}\n >\n {footer}\n </StyledFooter>\n )}\n </StyledCommandMenu>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\nconst _CommandMenu = React.forwardRef(CommandMenu) as <T>(\n props: CubeCommandMenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => ReactElement;\n\n// Attach Trigger alias from MenuTrigger for consistent API\n// Also attach Item and Section for compound component pattern\nconst __CommandMenu = Object.assign(_CommandMenu, {\n Trigger: MenuTrigger,\n Item,\n Section,\n displayName: 'CommandMenu',\n});\n\nexport { __CommandMenu as CommandMenu };\n"],"mappings":"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"}
1
+ {"version":3,"file":"CommandMenu.js","names":["useObjectRef","useSyncRef","CollectionChildren","FocusStrategy","Key","BasePropsWithoutChildren","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","ReactElement","ReactNode","Ref","useRef","useState","useFilter","useMenu","Section","useTreeState","useI18n","LoadingIcon","mergeProps","extractStyles","mergeStyleLayers","CollectionItem","Item","useMenuContext","CubeMenuProps","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledCommandMenu","StyledEmptyState","StyledLoadingWrapper","StyledSearchInput","CommandMenuItem","id","textValue","keywords","forceMount","key","CubeCommandMenuProps","Omit","T","searchPlaceholder","searchValue","onSearchChange","value","filter","inputValue","emptyLabel","searchInputStyles","headerStyles","footerStyles","isLoading","shouldFilter","autoFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","CommandMenu","props","ref","$","_c","t","t0","controlledSearchValue","customFilter","t1","t2","t3","t4","t5","qa","styles","onAction","header","footer","restMenuProps","t6","undefined","t7","domRef","searchInputRef","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","treeState","collection","getKeys","map","_temp","_temp2","t8","key_1","completeProps","internalSearchValue","setInternalSearchValue","t9","handleSearchChange","t10","Symbol","for","sensitivity","contains","t11","item","searchWords","trim","toLowerCase","split","_temp3","length","searchableTexts","push","isArray","_temp4","every","searchWord","some","text","includes","enhancedFilter","t12","nodes","term","searchWords_0","_temp5","filterNodes","iter","result","node","type","filteredChildren","childNodes","text_0","String","rendered","collectionFilter","treeStateProps","children","shouldUseVirtualFocus","collectionItems","_temp6","focusedKey","setFocusedKey","focusedKeyRef","filteredCollectionItems","hasFilteredItems","viewHasSections","_temp7","findFirstSelectableItem","selectionManager","visit","items","node_0","childResult","isDisabled","menuRef","menuProps","renderedItems","isFirstSection","forEach","item_2","sectionStyles","itemStyles","sectionHeadingStyles","menuItem","wrapper","cloneElement","t13","t14","current","timeoutId","setTimeout","focus","clearTimeout","useEffect","t15","t16","timeoutId_0","prevSearchValueRef","t17","currentSearchValue","prevSearchValue","firstSelectableKey","t18","extractedStyles","t19","hasSearchTerm","showEmptyState","t20","t21","t22","mods","popover","t23","tray","t24","sections","T0","t25","t26","Record","t27","t28","t29","border","t30","t31","t32","e","target","t33","e_0","preventDefault","isArrowDown","selectionManager_0","currentKey","getVisibleItemKeys","keys_0","visit_0","items_0","node_1","findNextSelectableKey","currentIndex","direction","visibleKeys","increment","i","key_2","findFirstLastSelectableKey","direction_0","visibleKeys_0","keysToCheck","reverse","key_3","visibleKeys_1","nextKey","direction_1","currentIndex_0","indexOf","currentFocusedKey","selectionMode","select","node_2","getItem","onAction_0","onClose","closeOnSelect","t34","t35","t36","boxShadow","radius","padding","t37","t38","t39","item_1","item_0","word_0","word","keyword","key_0","_CommandMenu","forwardRef","RefAttributes","HTMLDivElement","__CommandMenu","Object","assign","Trigger","displayName"],"sources":["../../../../src/components/actions/CommandMenu/CommandMenu.tsx"],"sourcesContent":["import { useObjectRef, useSyncRef } from '@react-aria/utils';\nimport { CollectionChildren, FocusStrategy, Key } from '@react-types/shared';\nimport {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, { ReactElement, ReactNode, Ref, useRef, useState } from 'react';\nimport { useFilter, useMenu } from 'react-aria';\nimport { Section, useTreeState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\n// `CollectionItem` (not react-stately's bare `Item`) is what CommandMenu\n// actually renders through `MenuItem`, so it carries the `Item` props.\nimport { CollectionItem as Item } from '../../CollectionItem';\nimport { useMenuContext } from '../Menu';\nimport { CubeMenuProps } from '../Menu/Menu';\nimport { MenuItem } from '../Menu/MenuItem';\nimport { MenuSection } from '../Menu/MenuSection';\nimport { MenuTrigger } from '../Menu/MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n} from '../Menu/styled';\n\nimport {\n StyledCommandMenu,\n StyledEmptyState,\n StyledLoadingWrapper,\n StyledSearchInput,\n} from './styled';\n\nexport interface CommandMenuItem {\n // Standard item props\n id: string;\n textValue: string;\n\n // Enhanced search features\n keywords?: string[];\n forceMount?: boolean;\n\n // Standard Menu item props inherited\n [key: string]: any;\n}\n\nexport interface CubeCommandMenuProps<T>\n extends BasePropsWithoutChildren,\n ContainerStyleProps,\n Omit<\n CubeMenuProps<T>,\n 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'\n > {\n // Search-specific props\n searchPlaceholder?: string;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n filter?: (textValue: string, inputValue: string) => boolean;\n emptyLabel?: ReactNode;\n searchInputStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n\n // Advanced search features\n isLoading?: boolean;\n shouldFilter?: boolean;\n\n // Focus management - override the autoFocus from CubeMenuProps to allow boolean | FocusStrategy\n autoFocus?: boolean | FocusStrategy;\n\n // Size prop\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction CommandMenu<T extends object>(\n props: CubeCommandMenuProps<T>,\n ref: Ref<HTMLDivElement>,\n) {\n const { t } = useI18n();\n\n const {\n searchPlaceholder = t(\n 'commandMenu.searchPlaceholder',\n 'Search commands...',\n ),\n searchValue: controlledSearchValue,\n onSearchChange,\n filter: customFilter,\n emptyLabel = t('commandMenu.empty', 'No commands found'),\n searchInputStyles,\n headerStyles,\n footerStyles,\n isLoading = false,\n shouldFilter = true,\n autoFocus = true,\n size = 'medium',\n qa,\n styles,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n onAction,\n header,\n footer,\n ...restMenuProps\n } = props;\n\n const domRef = useObjectRef(ref);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: 'all' | Set<Key>) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(treeState.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, restMenuProps, {\n onAction: onAction ? (key: Key) => onAction(key) : undefined,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Search state management\n const [internalSearchValue, setInternalSearchValue] = useState('');\n const searchValue = controlledSearchValue ?? internalSearchValue;\n\n const handleSearchChange = (value: string) => {\n if (controlledSearchValue === undefined) {\n setInternalSearchValue(value);\n }\n onSearchChange?.(value);\n };\n\n // Filter setup\n const { contains } = useFilter({ sensitivity: 'base' });\n const textFilterFn = customFilter || contains;\n\n // Enhanced filter function that supports keywords and forceMount\n const enhancedFilter = (\n textValue: string,\n inputValue: string,\n item?: any,\n ) => {\n // Always show force-mounted items\n if (item?.forceMount) {\n return true;\n }\n\n // If shouldFilter is false, show all items\n if (!shouldFilter) {\n return true;\n }\n\n // Split input value into individual words and filter out empty strings\n const searchWords = inputValue\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no search words, show all items\n if (searchWords.length === 0) {\n return true;\n }\n\n // Collect all searchable text for this item\n const searchableTexts: string[] = [];\n\n // Add main text value\n searchableTexts.push(textValue.toLowerCase());\n\n // Add keywords if available\n if (item?.keywords && Array.isArray(item.keywords)) {\n searchableTexts.push(\n ...item.keywords.map((keyword: string) => keyword.toLowerCase()),\n );\n }\n\n // Check if ALL search words match at least one of the searchable texts\n return searchWords.every((searchWord) =>\n searchableTexts.some((text) => text.includes(searchWord)),\n );\n };\n\n // Collection filter for React Stately\n const collectionFilter = (nodes: Iterable<any>): Iterable<any> => {\n const term = searchValue.trim();\n\n // If no search term, return all nodes\n if (!term) {\n return nodes;\n }\n\n // Split search term into words for multi-word filtering\n const searchWords = term\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no valid search words, return all nodes\n if (searchWords.length === 0) {\n return nodes;\n }\n\n // Recursive helper to filter sections and items\n const filterNodes = (iter: Iterable<any>): any[] => {\n const result: any[] = [];\n\n for (const node of iter) {\n if (node.type === 'section') {\n const filteredChildren = filterNodes(node.childNodes);\n\n if (filteredChildren.length) {\n result.push({\n ...node,\n childNodes: filteredChildren,\n });\n }\n } else {\n const text = node.textValue ?? String(node.rendered ?? '');\n\n if (enhancedFilter(text, term, node.props)) {\n result.push(node);\n }\n }\n }\n\n return result;\n };\n\n return filterNodes(nodes);\n };\n\n // Create tree state with filter for both keyboard navigation and rendering\n const treeStateProps = {\n ...completeProps,\n children: completeProps.children as CollectionChildren<T>,\n filter: collectionFilter,\n shouldUseVirtualFocus: true, // Always use virtual focus for CommandMenu\n };\n\n const treeState = useTreeState(treeStateProps);\n\n const collectionItems = [...treeState.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n // Track focused key for aria-activedescendant\n const [focusedKey, setFocusedKey] = React.useState<Key | null>(null);\n const focusedKeyRef = useRef<Key | null>(null);\n\n // Apply filtering to collection items for rendering and empty state checks\n const filteredCollectionItems = [...collectionFilter(collectionItems)];\n\n const hasFilteredItems = filteredCollectionItems.length > 0;\n const viewHasSections = filteredCollectionItems.some(\n (item) => item.type === 'section',\n );\n\n // Helper function to find the first selectable item from filtered results\n const findFirstSelectableItem = () => {\n const { selectionManager } = treeState;\n\n const visit = (items: any[]): Key | null => {\n for (const node of items) {\n if (node?.type === 'section') {\n const childResult = visit(Array.from(node.childNodes ?? []));\n if (childResult != null) return childResult;\n } else if (\n node?.type === 'item' &&\n !selectionManager.isDisabled(node.key)\n ) {\n return node.key;\n }\n }\n return null;\n };\n\n return visit(filteredCollectionItems);\n };\n\n // Create a ref for the menu container\n const menuRef = useRef<HTMLUListElement>(null);\n\n // Use menu hook for accessibility\n const { menuProps } = useMenu(\n {\n ...completeProps,\n 'aria-label': 'Command palette menu',\n shouldUseVirtualFocus: true,\n },\n treeState,\n menuRef,\n );\n\n // Manual rendering of menu items (similar to Menu component)\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n filteredCollectionItems.forEach((item) => {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${String(item.key)}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={item.key}\n item={item}\n state={treeState}\n styles={completeProps.sectionStyles}\n itemStyles={completeProps.itemStyles}\n headingStyles={completeProps.sectionHeadingStyles}\n size={size}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={item.key}\n item={item}\n state={treeState}\n styles={completeProps.itemStyles}\n size={size}\n onAction={item.onAction}\n />\n );\n\n // Apply custom wrapper if provided\n if (item.props.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: item.key }));\n });\n\n // Auto-focus search input\n React.useEffect(() => {\n if (autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the element is visible and focusable\n // This is especially important when the CommandMenu is opened in a popover\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 0);\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus]);\n\n // Also focus when the component becomes visible (for trigger/popover usage)\n React.useEffect(() => {\n // Check if autoFocus is enabled and we're in a trigger context\n if (autoFocus && contextProps.autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the popover is fully rendered\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 50); // Slightly longer timeout for popover context\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, contextProps.autoFocus]);\n\n // Track the previous search value to only run auto-focus when search actually changes\n const prevSearchValueRef = useRef<string>('');\n\n // Auto-focus first item when search value changes (but not on initial render)\n React.useEffect(() => {\n const currentSearchValue = searchValue.trim();\n const prevSearchValue = prevSearchValueRef.current;\n\n // Only auto-focus when search value actually changes\n if (currentSearchValue !== prevSearchValue && currentSearchValue !== '') {\n const firstSelectableKey = findFirstSelectableItem();\n\n if (firstSelectableKey && hasFilteredItems) {\n // Focus the first item in the selection manager\n treeState.selectionManager.setFocusedKey(firstSelectableKey);\n setFocusedKey(firstSelectableKey);\n focusedKeyRef.current = firstSelectableKey;\n } else {\n // Clear focus if no items are available\n treeState.selectionManager.setFocusedKey(null);\n setFocusedKey(null);\n focusedKeyRef.current = null;\n }\n }\n\n // Update the previous search value\n prevSearchValueRef.current = currentSearchValue;\n }, [searchValue, findFirstSelectableItem, hasFilteredItems]);\n\n // Extract styles\n const extractedStyles = extractStyles(props, CONTAINER_STYLES);\n\n // Determine if we should show empty state based on actual filtered collection\n const hasSearchTerm = searchValue.trim().length > 0;\n const showEmptyState = hasSearchTerm && !hasFilteredItems && !isLoading;\n\n // Sync refs\n useSyncRef(contextProps, menuRef);\n\n // Determine mods based on menu context\n const mods = {\n sections: viewHasSections,\n footer: !!footer,\n header: !!header,\n popover: completeProps.mods?.popover,\n tray: completeProps.mods?.tray,\n };\n\n return (\n <StyledCommandMenu\n {...(filterBaseProps(props) as Record<string, unknown>)}\n ref={domRef}\n qa={qa || 'CommandMenu'}\n data-size={size}\n mods={mods}\n styles={mergeStyleLayers(extractedStyles, styles)}\n >\n {/* Header */}\n {header && (\n <StyledHeader\n role=\"presentation\"\n data-size={size}\n styles={mergeStyleLayers({ border: 'none' }, headerStyles)}\n >\n {header}\n </StyledHeader>\n )}\n\n {/* Search Input */}\n <StyledSearchInput\n ref={searchInputRef}\n type=\"search\"\n placeholder={searchPlaceholder}\n value={searchValue}\n styles={searchInputStyles}\n data-size={size}\n aria-controls={`${qa || 'CommandMenu'}-menu`}\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-haspopup=\"listbox\"\n aria-activedescendant={\n focusedKey != null\n ? `${qa || 'CommandMenu'}-menu-option-${focusedKey}`\n : undefined\n }\n onChange={(e) => handleSearchChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n\n const isArrowDown = e.key === 'ArrowDown';\n const { selectionManager } = treeState;\n // Use the ref to get the current focused key synchronously\n const currentKey =\n focusedKeyRef.current || selectionManager.focusedKey;\n\n // Helper function to get all visible item keys accounting for sections\n const getVisibleItemKeys = (): Key[] => {\n const keys: Key[] = [];\n\n const visit = (items: any[]) => {\n for (const node of items) {\n if (node?.type === 'section') {\n visit(Array.from(node.childNodes ?? []));\n } else if (node?.type === 'item') {\n keys.push(node.key);\n }\n }\n };\n\n visit(filteredCollectionItems);\n return keys;\n };\n\n // Helper function to find next selectable key in a direction\n const findNextSelectableKey = (\n currentIndex: number,\n direction: 'forward' | 'backward',\n visibleKeys: Key[],\n ) => {\n const increment = direction === 'forward' ? 1 : -1;\n\n for (\n let i = currentIndex + increment;\n i >= 0 && i < visibleKeys.length;\n i += increment\n ) {\n const key = visibleKeys[i];\n if (!selectionManager.isDisabled(key)) {\n return key;\n }\n }\n\n return null;\n };\n\n // Helper function to find first or last selectable key\n const findFirstLastSelectableKey = (\n direction: 'forward' | 'backward',\n visibleKeys: Key[],\n ) => {\n const keysToCheck =\n direction === 'forward'\n ? visibleKeys\n : [...visibleKeys].reverse();\n\n for (const key of keysToCheck) {\n if (!selectionManager.isDisabled(key)) {\n return key;\n }\n }\n\n return null;\n };\n\n const visibleKeys = getVisibleItemKeys();\n\n if (visibleKeys.length === 0) {\n return; // No visible items to navigate\n }\n\n let nextKey;\n const direction = isArrowDown ? 'forward' : 'backward';\n\n if (currentKey == null) {\n // No current focus, start from the first/last item\n nextKey = findFirstLastSelectableKey(direction, visibleKeys);\n } else {\n // Find current position in visible keys\n const currentIndex = visibleKeys.indexOf(currentKey);\n\n if (currentIndex === -1) {\n // Current key not in visible items, start from beginning/end\n nextKey = findFirstLastSelectableKey(direction, visibleKeys);\n } else {\n // Find next selectable item from current position\n nextKey = findNextSelectableKey(\n currentIndex,\n direction,\n visibleKeys,\n );\n\n // If no next key found, wrap to first/last selectable item\n if (nextKey == null) {\n nextKey = findFirstLastSelectableKey(direction, visibleKeys);\n }\n }\n }\n\n if (nextKey != null) {\n selectionManager.setFocusedKey(nextKey);\n setFocusedKey(nextKey);\n focusedKeyRef.current = nextKey; // Update ref immediately\n }\n } else if (\n e.key === 'Enter' ||\n (e.key === ' ' && !searchValue.trim())\n ) {\n const currentFocusedKey =\n focusedKey || treeState.selectionManager.focusedKey;\n if (currentFocusedKey != null) {\n e.preventDefault();\n\n // Trigger action for the focused item (like Menu does)\n // First check if there's a selection mode, if so, handle selection\n if (treeState.selectionManager.selectionMode !== 'none') {\n treeState.selectionManager.select(currentFocusedKey);\n } else {\n // Default behavior: trigger action\n const node = treeState.collection.getItem(currentFocusedKey);\n if (node) {\n // Call the tree state's action handler\n const onAction = (completeProps as any).onAction;\n if (onAction) {\n onAction(currentFocusedKey);\n }\n // Also call the item's individual onAction if it exists\n if (node.props?.onAction) {\n node.props.onAction(currentFocusedKey);\n }\n }\n }\n\n // Close the menu if we're in a trigger context and closeOnSelect is enabled (default behavior)\n const { onClose, closeOnSelect } = contextProps;\n if (onClose && closeOnSelect !== false) {\n onClose();\n }\n }\n } else if (e.key === 'Escape') {\n if (searchValue) {\n e.preventDefault();\n handleSearchChange('');\n }\n }\n }}\n />\n\n {/* Loading State */}\n {isLoading && (\n <StyledLoadingWrapper>\n <LoadingIcon\n role=\"progressbar\"\n aria-label=\"Loading commands\"\n aria-hidden={false}\n />\n </StyledLoadingWrapper>\n )}\n\n {/* Menu Content - always render unless loading */}\n {!isLoading && !showEmptyState && (\n <StyledMenu\n {...menuProps}\n ref={menuRef}\n id={`${qa || 'CommandMenu'}-menu`}\n aria-label=\"Command menu\"\n qa=\"Menu\"\n data-size={size}\n mods={mods}\n styles={{\n border: 'none',\n boxShadow: 'none',\n radius: 0,\n padding: '0.5x',\n }}\n >\n {renderedItems}\n </StyledMenu>\n )}\n\n {/* Empty State - show when search term exists but no results */}\n {!isLoading && showEmptyState && (\n <StyledEmptyState>{emptyLabel}</StyledEmptyState>\n )}\n\n {/* Footer */}\n {footer && (\n <StyledFooter\n role=\"presentation\"\n data-size={size}\n styles={footerStyles}\n >\n {footer}\n </StyledFooter>\n )}\n </StyledCommandMenu>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\nconst _CommandMenu = React.forwardRef(CommandMenu) as <T>(\n props: CubeCommandMenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => ReactElement;\n\n// Attach Trigger alias from MenuTrigger for consistent API\n// Also attach Item and Section for compound component pattern\nconst __CommandMenu = Object.assign(_CommandMenu, {\n Trigger: MenuTrigger,\n Item,\n Section,\n displayName: 'CommandMenu',\n});\n\nexport { __CommandMenu as CommandMenu };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.9 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/actions/CommandMenu/styled.tsx
@@ -8,6 +8,7 @@ import * as _react_types_shared0 from "@react-types/shared";
8
8
 
9
9
  //#region src/components/actions/ItemAction/ItemAction.d.ts
10
10
  interface CubeItemActionProps extends Omit<CubeUseActionProps, 'as' | 'htmlType'>, Omit<BaseProps, 'as'> {
11
+ size?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'inline' | (string & {});
11
12
  icon?: ReactNode | 'checkmark';
12
13
  children?: ReactNode;
13
14
  isLoading?: boolean;
@@ -20,7 +21,7 @@ interface CubeItemActionProps extends Omit<CubeUseActionProps, 'as' | 'htmlType'
20
21
  styles?: Styles;
21
22
  tabIndex?: number;
22
23
  }
23
- declare const ItemAction: react.ForwardRefExoticComponent<Omit<CubeItemActionProps, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
24
+ declare const ItemAction: react.ForwardRefExoticComponent<CubeItemActionProps & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
24
25
  //#endregion
25
26
  export { CubeItemActionProps, ItemAction };
26
27
  //# sourceMappingURL=ItemAction.d.ts.map
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.9 | Cube Dev Team */
2
2
  import { getDisabledElementProps, omitActivationEventProps } from "../../../utils/react/disabledProps.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
@@ -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","TooltipProvider","useItemActionContext","CubeUseActionProps","useAction","CubeItemActionProps","Omit","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","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","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"],"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 { 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'>,\n Omit<BaseProps, 'as'> {\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 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.\n const finalTabIndex = disableActionsFocus || isLoading ? -1 : rest.tabIndex;\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(elementProps, tooltipTriggerProps || {}, inertProps, {\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 : mergeProps(elementProps, tooltipTriggerProps || {}, inertProps);\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 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","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","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","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","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"],"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 { 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'>,\n 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 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.\n const finalTabIndex = disableActionsFocus || isLoading ? -1 : rest.tabIndex;\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(elementProps, tooltipTriggerProps || {}, inertProps, {\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 : mergeProps(elementProps, tooltipTriggerProps || {}, inertProps);\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 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.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.9 | 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,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.9 | 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";
@@ -12,7 +12,7 @@ import { HTMLAttributes, ReactNode } from "react";
12
12
  import * as _react_types_shared0 from "@react-types/shared";
13
13
 
14
14
  //#region src/components/actions/ItemButton/ItemButton.d.ts
15
- interface CubeItemButtonProps extends Omit<CubeItemProps, 'size'>, Omit<CubeUseActionProps, 'as'> {
15
+ interface CubeItemButtonProps extends Omit<CubeItemProps, 'size'>, Omit<CubeUseActionProps, keyof CubeItemProps | 'as'> {
16
16
  /**
17
17
  * The row's trailing controls, rendered beside the button rather than inside
18
18
  * it. Pass `null` to keep an empty run — the row reserves no space for it, and
@@ -27,8 +27,8 @@ interface CubeItemButtonProps extends Omit<CubeItemProps, 'size'>, Omit<CubeUseA
27
27
  */
28
28
  actionsProps?: HTMLAttributes<HTMLDivElement>;
29
29
  }
30
- declare const _ItemButton: react.ForwardRefExoticComponent<Omit<CubeItemButtonProps, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>> & {
31
- Action: react.ForwardRefExoticComponent<Omit<CubeItemActionProps, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
30
+ declare const _ItemButton: react.ForwardRefExoticComponent<CubeItemButtonProps & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>> & {
31
+ Action: react.ForwardRefExoticComponent<CubeItemActionProps & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
32
32
  Badge: react.ForwardRefExoticComponent<CubeItemBadgeProps & react.RefAttributes<HTMLDivElement>>;
33
33
  };
34
34
  //#endregion
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.9 | 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 +1 @@
1
- {"version":3,"file":"ItemButton.js","names":["FocusableRef","PressEvent","Styles","tasty","forwardRef","HTMLAttributes","ReactNode","useMemo","useRef","useEvent","mergeProps","mergeRefs","useDismissParentPopover","CubeItemProps","Item","ItemBadge","CubeItemActionProps","ItemAction","ItemActionsWrapper","CubeUseActionProps","useAction","CubeItemButtonProps","Omit","actions","size","wrapperStyles","actionsProps","HTMLDivElement","StyledItem","as","type","theme","styles","recipe","placeContent","ItemButton","allProps","ref","HTMLElement","mods","to","htmlType","onPress","onPressStart","_onPressStart","onPressEnd","_onPressEnd","onPressChange","_onPressChange","onPressUp","_onPressUp","navigationOptions","_navigationOptions","label","_label","autoHideActions","disableActionsFocus","isDisabled","isLoading","rest","finalIsDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","combinedRef","hasHadActions","undefined","withWrapper","ariaPressed","isSelected","role","renderButton","showActions","skipActionsWidthTransition","_ItemButton","Object","assign","Action","Badge","ItemButtonProps","ItemActionProps"],"sources":["../../../../src/components/actions/ItemButton/ItemButton.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes, ReactNode, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport {\n mergeProps,\n mergeRefs,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { ItemBadge } from '../../content/ItemBadge';\nimport { CubeItemActionProps, ItemAction } from '../ItemAction';\nimport { ItemActionsWrapper } from '../ItemActionsWrapper';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemButtonProps\n extends Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, 'as'> {\n /**\n * The row's trailing controls, rendered beside the button rather than inside\n * it. Pass `null` to keep an empty run — the row reserves no space for it, and\n * the button is not remounted when the actions arrive later.\n */\n actions?: ReactNode;\n size?: Omit<CubeItemProps['size'], 'inline'>;\n wrapperStyles?: Styles;\n /**\n * Extra props spread on the actions run's container, e.g. event handlers.\n * Only meaningful together with `actions`.\n */\n actionsProps?: HTMLAttributes<HTMLDivElement>;\n}\n\nconst StyledItem = tasty(Item, {\n as: 'button',\n type: 'item',\n theme: 'default',\n styles: {\n recipe: 'reset button',\n placeContent: 'center stretch',\n },\n});\n\nconst ItemButton = forwardRef(function ItemButton(\n allProps: CubeItemButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n mods,\n to,\n htmlType,\n as,\n type = 'item',\n theme = 'default',\n onPress,\n // Extract react-aria press callbacks to prevent them from leaking to DOM via rest.\n // These are handled by useButton inside useAction.\n onPressStart: _onPressStart,\n onPressEnd: _onPressEnd,\n onPressChange: _onPressChange,\n onPressUp: _onPressUp,\n // Consumed by useAction (it reads `allProps`); kept off the DOM element.\n navigationOptions: _navigationOptions,\n label: _label,\n actions,\n actionsProps,\n size = 'medium',\n wrapperStyles,\n autoHideActions = false,\n disableActionsFocus = false,\n isDisabled,\n isLoading = false,\n ...rest\n } = allProps as CubeItemButtonProps & {\n as?: 'a' | 'button' | 'div' | 'span';\n };\n\n // Loading state makes the component disabled (same logic as Item)\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Default: pressing an ItemButton inside an open popover closes that\n // popover. Opt-outs: `data-popover-trigger` on self (applied by\n // FilterPicker / Picker / Select / MenuTrigger for their own triggers) and\n // `data-popover-keep` or `data-popover-keep-on-press` (presses only, see\n // Button) on self or any ancestor. Modals don't subscribe.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n onPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps } = useAction(\n {\n ...(allProps as any),\n htmlType,\n to,\n as,\n mods,\n isDisabled: finalIsDisabled,\n onPress: wrappedOnPress,\n },\n ref,\n );\n\n // Merge the useAction-supplied ref with our internal ref so the dismiss\n // wrapper can read the rendered DOM node at press time.\n const combinedRef = useMemo(\n () => mergeRefs(actionProps.ref as any, buttonElementRef),\n [actionProps.ref],\n );\n\n // Once a row has had actions it keeps the wrapper, even after they go away.\n // Adding or removing a DOM level around the button remounts it — losing focus,\n // any running transition, and the element every ref in the tree is holding —\n // and a row whose actions come and go with a permission or a loading flag\n // would do that on every flip. The empty run costs nothing: it publishes a\n // width of 0, so the row reserves no space for it.\n //\n // `null` is how a caller asks for the run up front — \"there is a run here, it\n // just has nothing in it right now\" — so a row that knows its actions are\n // coming never has to remount to receive them. Only `undefined` means the row\n // has no run at all.\n const hasHadActions = useRef(false);\n\n if (actions !== undefined) {\n hasHadActions.current = true;\n }\n\n const withWrapper = hasHadActions.current;\n\n // `isSelected` on a button is a toggle state, so it reads as `aria-pressed`,\n // as `Button` does. Skipped on a link (`to`), for a call site's own `role` (a\n // tab or option wants `aria-selected`), and on a trigger that reports\n // `aria-expanded`, which is its state instead. An explicit value still wins.\n //\n // Set after the spread: `useButton` always returns an `aria-pressed` key,\n // undefined when the caller passed none, which would overwrite it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (allProps.isSelected != null &&\n actionProps.as !== 'a' &&\n allProps.role == null &&\n allProps['aria-expanded'] == null\n ? allProps.isSelected\n : undefined);\n\n const renderButton = (\n showActions: boolean,\n skipActionsWidthTransition = false,\n ) => (\n <StyledItem\n // Two different questions. `insideWrapper` is \"am I laid out for a\n // sibling run\", which stays true so the DOM does not restructure;\n // `actions` is \"is there anything in that run to reserve width for\",\n // which must go back to false when the run empties — it drives the\n // two-square minimum width and the suffix's padding, and a row that\n // reserved space for nothing would sit wider than it needs to.\n insideWrapper={withWrapper}\n showActions={showActions}\n skipActionsWidthTransition={skipActionsWidthTransition}\n actions={actions ? true : undefined}\n {...(mergeProps(rest, actionProps) as any)}\n aria-pressed={ariaPressed}\n ref={combinedRef}\n data-popover-dismiss=\"\"\n htmlType={actionProps.type}\n type={type}\n theme={theme}\n size={size}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n );\n\n if (withWrapper) {\n return (\n <ItemActionsWrapper\n type={type}\n theme={theme}\n size={size as CubeItemProps['size']}\n mods={mods}\n styles={wrapperStyles}\n actions={actions}\n actionsProps={actionsProps}\n autoHideActions={autoHideActions}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {({ showActions, skipActionsWidthTransition }) =>\n renderButton(showActions, skipActionsWidthTransition)\n }\n </ItemActionsWrapper>\n );\n }\n\n return renderButton(false);\n});\n\nconst _ItemButton = Object.assign(ItemButton, {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _ItemButton as ItemButton };\nexport type {\n CubeItemButtonProps as ItemButtonProps,\n CubeItemActionProps as ItemActionProps,\n};\n"],"mappings":";;;;;;;;;;;;;;;AAkCA,MAAM4B,aAAazB,MAAMW,OAAM;CAC7Be,IAAI;CACJC,MAAM;CACNC,OAAO;CACPC,QAAQ;EACNC,QAAQ;EACRC,cAAc;EAChB;CACD,CAAC;AAEF,MAAMC,aAAa/B,WAAW,SAAS+B,WACrCC,UACAC,KACA;CACA,MAAM,EACJE,MACAC,IACAC,UACAZ,IACAC,OAAO,QACPC,QAAQ,WACRW,SAGAC,cAAcC,eACdC,YAAYC,aACZC,eAAeC,gBACfC,WAAWC,YAEXC,mBAAmBC,oBACnBC,OAAOC,QACP/B,SACAG,cACAF,OAAO,UACPC,eACA8B,kBAAkB,OAClBC,sBAAsB,OACtBC,YACAC,YAAY,OACZ,GAAGC,SACDvB;CAKJ,MAAMwB,kBACJH,eAAe,QAASC,aAAaD,eAAe;CAOtD,MAAMI,uBAAuBjD,yBAAyB;CACtD,MAAMkD,mBAAmBtD,OAA2B,KAAK;CAEzD,MAAMuD,iBAAiBtD,UAAUuD,MAAkB;AACjDtB,YAAUsB,EAAE;EACZ,MAAMC,KAAKH,iBAAiBI;AAC5B,MAAI,CAACD,GAAI;AACT,MAAIA,GAAGE,aAAa,uBAAuB,CAAE;AAC7C,MAAIF,GAAGG,QAAQ,oDAAoD,CACjE;AAEFP,uBAAqBI,GAAG;GACxB;CAEF,MAAM,EAAEI,gBAAgBjD,UACtB;EACE,GAAIgB;EACJK;EACAD;EACAX;EACAU;EACAkB,YAAYG;EACZlB,SAASqB;EACV,EACD1B,IACD;CAID,MAAMiC,cAAc/D,cACZI,UAAU0D,YAAYhC,KAAYyB,iBAAiB,EACzD,CAACO,YAAYhC,IACf,CAAC;CAaD,MAAMkC,gBAAgB/D,OAAO,MAAM;AAEnC,KAAIe,YAAYiD,OACdD,eAAcL,UAAU;CAG1B,MAAMO,cAAcF,cAAcL;CASlC,MAAMQ,cACJtC,SAAS,oBACRA,SAASuC,cAAc,QACxBN,YAAYxC,OAAO,OACnBO,SAASwC,QAAQ,QACjBxC,SAAS,oBAAoB,OACzBA,SAASuC,aACTH;CAEN,MAAMK,gBACJC,aACAC,6BAA6B,UAE7B,oBAAC;EAOC,eAAeN;EACFK;EACeC;EAC5B,SAASxD,UAAU,OAAOiD;EAC1B,GAAK9D,WAAWiD,MAAMU,YAAY;EAClC,gBAAcK;EACd,KAAKJ;EACL,wBAAqB;EACrB,UAAUD,YAAYvC;EAChBA;EACCC;EACDP;EACKkC;EACCD;GAEf;AAED,KAAIgB,YACF,QACE,oBAAC;EACO3C;EACCC;EACDP;EACAe;EACN,QAAQd;EACCF;EACKG;EACG6B;EACIC;EACrB,YAAYI;aAEV,EAAEkB,aAAAA,eAAaC,4BAAAA,mCACfF,aAAaC,eAAaC,6BAC5B;GACmB;AAIzB,QAAOF,aAAa,MAAM;EAC1B;AAEF,MAAMG,cAAcC,OAAOC,OAAO/C,YAAY;CAC5CgD,QAAQlE;CACRmE,OAAOrE;CACR,CAAC"}
1
+ {"version":3,"file":"ItemButton.js","names":["FocusableRef","PressEvent","Styles","tasty","forwardRef","HTMLAttributes","ReactNode","useMemo","useRef","useEvent","mergeProps","mergeRefs","useDismissParentPopover","CubeItemProps","Item","ItemBadge","CubeItemActionProps","ItemAction","ItemActionsWrapper","CubeUseActionProps","useAction","CubeItemButtonProps","Omit","actions","size","wrapperStyles","actionsProps","HTMLDivElement","StyledItem","as","type","theme","styles","recipe","placeContent","ItemButton","allProps","ref","HTMLElement","mods","to","htmlType","onPress","onPressStart","_onPressStart","onPressEnd","_onPressEnd","onPressChange","_onPressChange","onPressUp","_onPressUp","navigationOptions","_navigationOptions","label","_label","autoHideActions","disableActionsFocus","isDisabled","isLoading","rest","finalIsDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","combinedRef","hasHadActions","undefined","withWrapper","ariaPressed","isSelected","role","renderButton","showActions","skipActionsWidthTransition","_ItemButton","Object","assign","Action","Badge","ItemButtonProps","ItemActionProps"],"sources":["../../../../src/components/actions/ItemButton/ItemButton.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes, ReactNode, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport {\n mergeProps,\n mergeRefs,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { ItemBadge } from '../../content/ItemBadge';\nimport { CubeItemActionProps, ItemAction } from '../ItemAction';\nimport { ItemActionsWrapper } from '../ItemActionsWrapper';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemButtonProps\n extends Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, keyof CubeItemProps | 'as'> {\n /**\n * The row's trailing controls, rendered beside the button rather than inside\n * it. Pass `null` to keep an empty run — the row reserves no space for it, and\n * the button is not remounted when the actions arrive later.\n */\n actions?: ReactNode;\n size?: Omit<CubeItemProps['size'], 'inline'>;\n wrapperStyles?: Styles;\n /**\n * Extra props spread on the actions run's container, e.g. event handlers.\n * Only meaningful together with `actions`.\n */\n actionsProps?: HTMLAttributes<HTMLDivElement>;\n}\n\nconst StyledItem = tasty(Item, {\n as: 'button',\n type: 'item',\n theme: 'default',\n styles: {\n recipe: 'reset button',\n placeContent: 'center stretch',\n },\n});\n\nconst ItemButton = forwardRef(function ItemButton(\n allProps: CubeItemButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n mods,\n to,\n htmlType,\n as,\n type = 'item',\n theme = 'default',\n onPress,\n // Extract react-aria press callbacks to prevent them from leaking to DOM via rest.\n // These are handled by useButton inside useAction.\n onPressStart: _onPressStart,\n onPressEnd: _onPressEnd,\n onPressChange: _onPressChange,\n onPressUp: _onPressUp,\n // Consumed by useAction (it reads `allProps`); kept off the DOM element.\n navigationOptions: _navigationOptions,\n label: _label,\n actions,\n actionsProps,\n size = 'medium',\n wrapperStyles,\n autoHideActions = false,\n disableActionsFocus = false,\n isDisabled,\n isLoading = false,\n ...rest\n } = allProps as CubeItemButtonProps & {\n as?: 'a' | 'button' | 'div' | 'span';\n };\n\n // Loading state makes the component disabled (same logic as Item)\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Default: pressing an ItemButton inside an open popover closes that\n // popover. Opt-outs: `data-popover-trigger` on self (applied by\n // FilterPicker / Picker / Select / MenuTrigger for their own triggers) and\n // `data-popover-keep` or `data-popover-keep-on-press` (presses only, see\n // Button) on self or any ancestor. Modals don't subscribe.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n onPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps } = useAction(\n {\n ...(allProps as any),\n htmlType,\n to,\n as,\n mods,\n isDisabled: finalIsDisabled,\n onPress: wrappedOnPress,\n },\n ref,\n );\n\n // Merge the useAction-supplied ref with our internal ref so the dismiss\n // wrapper can read the rendered DOM node at press time.\n const combinedRef = useMemo(\n () => mergeRefs(actionProps.ref as any, buttonElementRef),\n [actionProps.ref],\n );\n\n // Once a row has had actions it keeps the wrapper, even after they go away.\n // Adding or removing a DOM level around the button remounts it — losing focus,\n // any running transition, and the element every ref in the tree is holding —\n // and a row whose actions come and go with a permission or a loading flag\n // would do that on every flip. The empty run costs nothing: it publishes a\n // width of 0, so the row reserves no space for it.\n //\n // `null` is how a caller asks for the run up front — \"there is a run here, it\n // just has nothing in it right now\" — so a row that knows its actions are\n // coming never has to remount to receive them. Only `undefined` means the row\n // has no run at all.\n const hasHadActions = useRef(false);\n\n if (actions !== undefined) {\n hasHadActions.current = true;\n }\n\n const withWrapper = hasHadActions.current;\n\n // `isSelected` on a button is a toggle state, so it reads as `aria-pressed`,\n // as `Button` does. Skipped on a link (`to`), for a call site's own `role` (a\n // tab or option wants `aria-selected`), and on a trigger that reports\n // `aria-expanded`, which is its state instead. An explicit value still wins.\n //\n // Set after the spread: `useButton` always returns an `aria-pressed` key,\n // undefined when the caller passed none, which would overwrite it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (allProps.isSelected != null &&\n actionProps.as !== 'a' &&\n allProps.role == null &&\n allProps['aria-expanded'] == null\n ? allProps.isSelected\n : undefined);\n\n const renderButton = (\n showActions: boolean,\n skipActionsWidthTransition = false,\n ) => (\n <StyledItem\n // Two different questions. `insideWrapper` is \"am I laid out for a\n // sibling run\", which stays true so the DOM does not restructure;\n // `actions` is \"is there anything in that run to reserve width for\",\n // which must go back to false when the run empties — it drives the\n // two-square minimum width and the suffix's padding, and a row that\n // reserved space for nothing would sit wider than it needs to.\n insideWrapper={withWrapper}\n showActions={showActions}\n skipActionsWidthTransition={skipActionsWidthTransition}\n actions={actions ? true : undefined}\n {...(mergeProps(rest, actionProps) as any)}\n aria-pressed={ariaPressed}\n ref={combinedRef}\n data-popover-dismiss=\"\"\n htmlType={actionProps.type}\n type={type}\n theme={theme}\n size={size}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n );\n\n if (withWrapper) {\n return (\n <ItemActionsWrapper\n type={type}\n theme={theme}\n size={size as CubeItemProps['size']}\n mods={mods}\n styles={wrapperStyles}\n actions={actions}\n actionsProps={actionsProps}\n autoHideActions={autoHideActions}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {({ showActions, skipActionsWidthTransition }) =>\n renderButton(showActions, skipActionsWidthTransition)\n }\n </ItemActionsWrapper>\n );\n }\n\n return renderButton(false);\n});\n\nconst _ItemButton = Object.assign(ItemButton, {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _ItemButton as ItemButton };\nexport type {\n CubeItemButtonProps as ItemButtonProps,\n CubeItemActionProps as ItemActionProps,\n};\n"],"mappings":";;;;;;;;;;;;;;;AAkCA,MAAM4B,aAAazB,MAAMW,OAAM;CAC7Be,IAAI;CACJC,MAAM;CACNC,OAAO;CACPC,QAAQ;EACNC,QAAQ;EACRC,cAAc;EAChB;CACD,CAAC;AAEF,MAAMC,aAAa/B,WAAW,SAAS+B,WACrCC,UACAC,KACA;CACA,MAAM,EACJE,MACAC,IACAC,UACAZ,IACAC,OAAO,QACPC,QAAQ,WACRW,SAGAC,cAAcC,eACdC,YAAYC,aACZC,eAAeC,gBACfC,WAAWC,YAEXC,mBAAmBC,oBACnBC,OAAOC,QACP/B,SACAG,cACAF,OAAO,UACPC,eACA8B,kBAAkB,OAClBC,sBAAsB,OACtBC,YACAC,YAAY,OACZ,GAAGC,SACDvB;CAKJ,MAAMwB,kBACJH,eAAe,QAASC,aAAaD,eAAe;CAOtD,MAAMI,uBAAuBjD,yBAAyB;CACtD,MAAMkD,mBAAmBtD,OAA2B,KAAK;CAEzD,MAAMuD,iBAAiBtD,UAAUuD,MAAkB;AACjDtB,YAAUsB,EAAE;EACZ,MAAMC,KAAKH,iBAAiBI;AAC5B,MAAI,CAACD,GAAI;AACT,MAAIA,GAAGE,aAAa,uBAAuB,CAAE;AAC7C,MAAIF,GAAGG,QAAQ,oDAAoD,CACjE;AAEFP,uBAAqBI,GAAG;GACxB;CAEF,MAAM,EAAEI,gBAAgBjD,UACtB;EACE,GAAIgB;EACJK;EACAD;EACAX;EACAU;EACAkB,YAAYG;EACZlB,SAASqB;EACV,EACD1B,IACD;CAID,MAAMiC,cAAc/D,cACZI,UAAU0D,YAAYhC,KAAYyB,iBAAiB,EACzD,CAACO,YAAYhC,IACf,CAAC;CAaD,MAAMkC,gBAAgB/D,OAAO,MAAM;AAEnC,KAAIe,YAAYiD,OACdD,eAAcL,UAAU;CAG1B,MAAMO,cAAcF,cAAcL;CASlC,MAAMQ,cACJtC,SAAS,oBACRA,SAASuC,cAAc,QACxBN,YAAYxC,OAAO,OACnBO,SAASwC,QAAQ,QACjBxC,SAAS,oBAAoB,OACzBA,SAASuC,aACTH;CAEN,MAAMK,gBACJC,aACAC,6BAA6B,UAE7B,oBAAC;EAOC,eAAeN;EACFK;EACeC;EAC5B,SAASxD,UAAU,OAAOiD;EAC1B,GAAK9D,WAAWiD,MAAMU,YAAY;EAClC,gBAAcK;EACd,KAAKJ;EACL,wBAAqB;EACrB,UAAUD,YAAYvC;EAChBA;EACCC;EACDP;EACKkC;EACCD;GAEf;AAED,KAAIgB,YACF,QACE,oBAAC;EACO3C;EACCC;EACDP;EACAe;EACN,QAAQd;EACCF;EACKG;EACG6B;EACIC;EACrB,YAAYI;aAEV,EAAEkB,aAAAA,eAAaC,4BAAAA,mCACfF,aAAaC,eAAaC,6BAC5B;GACmB;AAIzB,QAAOF,aAAa,MAAM;EAC1B;AAEF,MAAMG,cAAcC,OAAOC,OAAO/C,YAAY;CAC5CgD,QAAQlE;CACRmE,OAAOrE;CACR,CAAC"}
@@ -4,7 +4,7 @@ import * as react from "react";
4
4
  import * as _react_types_shared0 from "@react-types/shared";
5
5
 
6
6
  //#region src/components/actions/Link/Link.d.ts
7
- declare const Link: react.ForwardRefExoticComponent<Omit<CubeButtonProps, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
7
+ declare const Link: react.ForwardRefExoticComponent<CubeButtonProps & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
8
8
  //#endregion
9
9
  export { Link };
10
10
  //# sourceMappingURL=Link.d.ts.map
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.9 | 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";
@@ -8,13 +8,17 @@ import { CubeCollectionItemProps, _CollectionItem } from "../../CollectionItem.j
8
8
  import "../../../index.js";
9
9
  import { BasePropsWithoutChildren, ContainerStyleProps, Styles } from "@tenphi/tasty";
10
10
  import React, { ReactElement, ReactNode } from "react";
11
+ import * as react_aria0 from "react-aria";
11
12
  import { AriaMenuProps } from "react-aria";
13
+ import * as react_stately0 from "react-stately";
12
14
  import { Section } from "react-stately";
13
15
  import * as _react_types_shared0 from "@react-types/shared";
14
- import { FocusStrategy } from "@react-types/shared";
16
+ import { CollectionChildren, FocusStrategy, Key as Key$2 } from "@react-types/shared";
15
17
 
16
18
  //#region src/components/actions/Menu/Menu.d.ts
17
- interface CubeMenuProps<T> extends BasePropsWithoutChildren, ContainerStyleProps, Omit<AriaMenuProps<T>, 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'> {
19
+ interface CubeMenuProps<T> extends BasePropsWithoutChildren, ContainerStyleProps, Omit<AriaMenuProps<T>, 'children' | 'onAction' | 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'> {
20
+ children?: ReactNode | CollectionChildren<T>;
21
+ onAction?: (key: Key$2) => void;
18
22
  header?: ReactNode;
19
23
  footer?: ReactNode;
20
24
  menuStyles?: Styles;
@@ -53,12 +57,23 @@ declare const __Menu: (<T>(props: CubeMenuProps<T> & React.RefAttributes<HTMLULi
53
57
  Trigger: typeof _MenuTrigger;
54
58
  } & {
55
59
  Item: (<T>(props: CubeCollectionItemProps<T>) => ReactElement) & {
56
- Action: React.ForwardRefExoticComponent<Omit<CubeItemActionProps, "ref"> & React.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
60
+ Action: React.ForwardRefExoticComponent<CubeItemActionProps & React.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
57
61
  Badge: React.ForwardRefExoticComponent<CubeItemBadgeProps & React.RefAttributes<HTMLDivElement>>;
58
62
  };
59
- Section: any;
63
+ Section: <T>(props: react_stately0.SectionProps<T>) => React.JSX.Element;
60
64
  SubMenuTrigger: typeof SubMenuTrigger;
61
- Trigger: React.ForwardRefExoticComponent<any>;
65
+ Trigger: React.ForwardRefExoticComponent<Omit<react_aria0.AriaMenuTriggerProps, "children"> & react_aria0.PositionProps & {
66
+ isDisabled?: boolean;
67
+ defaultOpen?: boolean;
68
+ onOpenChange?: (isOpen: boolean) => void;
69
+ targetRef?: React.RefObject<HTMLElement | null>;
70
+ children: [ReactElement | ((state: react_stately0.MenuTriggerState) => ReactElement), ReactElement];
71
+ closeOnSelect?: boolean;
72
+ isDummy?: boolean;
73
+ shouldRestoreFocus?: boolean;
74
+ popoverRef?: React.MutableRefObject<HTMLDivElement | null>;
75
+ mobileType?: "popover" | "tray";
76
+ } & React.RefAttributes<HTMLElement>>;
62
77
  displayName: string;
63
78
  };
64
79
  //#endregion