@cube-dev/ui-kit 0.0.0-canary-84c1a2c → 0.0.0-canary-afff9bd

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 (614) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GlobalStyles.js.map +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  25. package/dist/components/actions/CommandMenu/styled.js +1 -1
  26. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  30. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  31. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  32. package/dist/components/actions/Link/Link.js +1 -1
  33. package/dist/components/actions/Menu/Menu.js +1 -1
  34. package/dist/components/actions/Menu/MenuItem.js +1 -1
  35. package/dist/components/actions/Menu/MenuSection.js +1 -1
  36. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  37. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  38. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  39. package/dist/components/actions/Menu/context.js +1 -1
  40. package/dist/components/actions/Menu/styled.js +1 -1
  41. package/dist/components/actions/Menu/styled.js.map +1 -1
  42. package/dist/components/actions/actions-run.js +1 -1
  43. package/dist/components/actions/index.js +1 -1
  44. package/dist/components/actions/use-action.js +1 -1
  45. package/dist/components/actions/use-anchored-menu.js +1 -1
  46. package/dist/components/actions/use-context-menu.js +1 -1
  47. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  48. package/dist/components/content/Alert/Alert.js +1 -1
  49. package/dist/components/content/Alert/Alert.js.map +1 -1
  50. package/dist/components/content/Alert/use-alert.js +1 -1
  51. package/dist/components/content/Avatar/Avatar.js +1 -1
  52. package/dist/components/content/Badge/Badge.js +1 -1
  53. package/dist/components/content/Badge/Badge.js.map +1 -1
  54. package/dist/components/content/Card/Card.js +1 -1
  55. package/dist/components/content/Content.js +1 -1
  56. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  57. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  58. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  59. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  60. package/dist/components/content/Divider.js +1 -1
  61. package/dist/components/content/Footer.js +1 -1
  62. package/dist/components/content/Header.js +1 -1
  63. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  64. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  65. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  66. package/dist/components/content/Item/Item.js +10 -11
  67. package/dist/components/content/Item/Item.js.map +1 -1
  68. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  69. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  70. package/dist/components/content/Layout/GridLayout.js +1 -1
  71. package/dist/components/content/Layout/Layout.js +1 -1
  72. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  73. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  74. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  75. package/dist/components/content/Layout/LayoutContent.js +1 -1
  76. package/dist/components/content/Layout/LayoutContext.js +1 -1
  77. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  78. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  79. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  80. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  81. package/dist/components/content/Layout/LayoutPane.js +1 -1
  82. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  83. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  84. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  85. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  86. package/dist/components/content/Layout/index.js +1 -1
  87. package/dist/components/content/Layout/utils.js +1 -1
  88. package/dist/components/content/Paragraph.js +1 -1
  89. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  90. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  91. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  92. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  93. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  94. package/dist/components/content/Result/Result.d.ts +34 -4
  95. package/dist/components/content/Result/Result.js +199 -95
  96. package/dist/components/content/Result/Result.js.map +1 -1
  97. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  98. package/dist/components/content/Tag/Tag.js +1 -1
  99. package/dist/components/content/Tag/Tag.js.map +1 -1
  100. package/dist/components/content/Text.d.ts +14 -14
  101. package/dist/components/content/Text.js +1 -1
  102. package/dist/components/content/TextItem/TextItem.js +1 -1
  103. package/dist/components/content/Title.d.ts +2 -0
  104. package/dist/components/content/Title.js +1 -1
  105. package/dist/components/content/Title.js.map +1 -1
  106. package/dist/components/content/Tree/Tree.js +1 -1
  107. package/dist/components/content/Tree/TreeNode.js +1 -1
  108. package/dist/components/content/Tree/styled.js +1 -1
  109. package/dist/components/content/Tree/styled.js.map +1 -1
  110. package/dist/components/content/Tree/tree-index.js +1 -1
  111. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  112. package/dist/components/content/Tree/use-load-data.js +1 -1
  113. package/dist/components/content/highlightText.js +1 -1
  114. package/dist/components/content/use-auto-tooltip.js +1 -1
  115. package/dist/components/data/DataTable/DataTable.js +1 -1
  116. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  117. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  118. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  119. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  120. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  121. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  122. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  123. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  124. package/dist/components/data/TableBase/RowCollection.js +1 -1
  125. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  126. package/dist/components/data/TableBase/TableRow.js +1 -1
  127. package/dist/components/data/TableBase/TableView.js +1 -1
  128. package/dist/components/data/TableBase/column-menu.js +1 -1
  129. package/dist/components/data/TableBase/column-styles.js +1 -1
  130. package/dist/components/data/TableBase/column-tint.js +1 -1
  131. package/dist/components/data/TableBase/row-menu.js +1 -1
  132. package/dist/components/data/TableBase/styled.js +10 -8
  133. package/dist/components/data/TableBase/styled.js.map +1 -1
  134. package/dist/components/data/TableBase/table-tree.js +1 -1
  135. package/dist/components/data/TableBase/types.js +1 -1
  136. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  137. package/dist/components/data/TableBase/use-column-order.js +1 -1
  138. package/dist/components/data/TableBase/use-container-width.js +1 -1
  139. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  140. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  141. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  142. package/dist/components/data/TableBase/use-table-search.js +1 -1
  143. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  144. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  145. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  146. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  147. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  148. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  149. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  150. package/dist/components/fields/Checkbox/context.js +1 -1
  151. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  152. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  153. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  154. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  155. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  156. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  157. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  158. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  159. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  160. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  161. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  162. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  163. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  164. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  165. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  166. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  167. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  168. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  169. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  170. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  171. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  172. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  173. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  174. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  175. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  176. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  177. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  178. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  179. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  180. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  181. package/dist/components/fields/DatePicker/period.js +1 -1
  182. package/dist/components/fields/DatePicker/props.js +1 -1
  183. package/dist/components/fields/DatePicker/utils.js +1 -1
  184. package/dist/components/fields/FileInput/FileInput.js +1 -1
  185. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  186. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  187. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  188. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  189. package/dist/components/fields/Input/Input.js +1 -1
  190. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  191. package/dist/components/fields/ListBox/ListBox.js +1 -1
  192. package/dist/components/fields/ListBox/optionId.js +1 -1
  193. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  194. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  195. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  196. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  197. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  198. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  199. package/dist/components/fields/Picker/Picker.js +1 -1
  200. package/dist/components/fields/Picker/Picker.js.map +1 -1
  201. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  202. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  203. package/dist/components/fields/RadioGroup/context.js +1 -1
  204. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  205. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  206. package/dist/components/fields/Select/Select.js +1 -1
  207. package/dist/components/fields/Select/Select.js.map +1 -1
  208. package/dist/components/fields/Slider/Gradation.js +1 -1
  209. package/dist/components/fields/Slider/HueSlider.js +1 -1
  210. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  211. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  212. package/dist/components/fields/Slider/Slider.js +1 -1
  213. package/dist/components/fields/Slider/SliderBase.js +1 -1
  214. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  215. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  216. package/dist/components/fields/Slider/elements.js +1 -1
  217. package/dist/components/fields/Slider/index.js +1 -1
  218. package/dist/components/fields/Switch/Switch.js +1 -1
  219. package/dist/components/fields/TagInput/TagInput.js +1 -1
  220. package/dist/components/fields/TagInput/TagList.js +1 -1
  221. package/dist/components/fields/TextArea/TextArea.js +1 -1
  222. package/dist/components/fields/TextInput/TextInput.js +1 -1
  223. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  224. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  225. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  226. package/dist/components/fields/TriggerActions.js +1 -1
  227. package/dist/components/fields/color/ColorPanel.js +1 -1
  228. package/dist/components/fields/color/channels.js +1 -1
  229. package/dist/components/fields/color/color.js +1 -1
  230. package/dist/components/fields/color/context.js +1 -1
  231. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  232. package/dist/components/form/Form/Field.js +1 -1
  233. package/dist/components/form/Form/Form.js +1 -1
  234. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  235. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  236. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  237. package/dist/components/form/Form/SubmitError.js +1 -1
  238. package/dist/components/form/Form/backend.js +1 -1
  239. package/dist/components/form/Form/index.js +1 -1
  240. package/dist/components/form/Form/modern/actions.js +1 -1
  241. package/dist/components/form/Form/modern/context.js +1 -1
  242. package/dist/components/form/Form/modern/controller.js +1 -1
  243. package/dist/components/form/Form/modern/field-binding.js +1 -1
  244. package/dist/components/form/Form/modern/field.js +1 -1
  245. package/dist/components/form/Form/modern/react.js +1 -1
  246. package/dist/components/form/Form/modern/store.js +1 -1
  247. package/dist/components/form/Form/modern/validation.js +1 -1
  248. package/dist/components/form/Form/modern/values.js +1 -1
  249. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  250. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  251. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  252. package/dist/components/form/Form/use-field/use-field.js +1 -1
  253. package/dist/components/form/Form/use-form.js +1 -1
  254. package/dist/components/form/Form/validation.js +1 -1
  255. package/dist/components/form/Label.js +1 -1
  256. package/dist/components/form/legacy-tooltip.js +1 -1
  257. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  258. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  259. package/dist/components/form/validation/use-validation-props.js +1 -1
  260. package/dist/components/form/wrapper.js +1 -1
  261. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  262. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  263. package/dist/components/layout/Board/Board.js +2 -2
  264. package/dist/components/layout/Board/Board.js.map +1 -1
  265. package/dist/components/layout/Board/BoardProvider.js +1 -1
  266. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  267. package/dist/components/layout/Board/Widget.js +1 -1
  268. package/dist/components/layout/Board/WidgetHost.js +4 -4
  269. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  270. package/dist/components/layout/Board/board-context.js +1 -1
  271. package/dist/components/layout/Board/board-store.js +1 -1
  272. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  273. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  274. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  275. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  276. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  277. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  278. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  279. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  280. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  281. package/dist/components/layout/Board/index.js +1 -1
  282. package/dist/components/layout/Board/responsive-utils.js +1 -1
  283. package/dist/components/layout/Board/use-board-layout.js +1 -1
  284. package/dist/components/layout/Board/use-board-registry.js +1 -1
  285. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  286. package/dist/components/layout/Board/use-board-selection.js +1 -1
  287. package/dist/components/layout/Flex.js +1 -1
  288. package/dist/components/layout/Flow.js +1 -1
  289. package/dist/components/layout/Grid.js +1 -1
  290. package/dist/components/layout/Panel.js +1 -1
  291. package/dist/components/layout/Prefix.js +1 -1
  292. package/dist/components/layout/ResizablePanel.js +1 -1
  293. package/dist/components/layout/Space.js +1 -1
  294. package/dist/components/layout/Suffix.js +1 -1
  295. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  296. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  297. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  298. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  299. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  300. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  301. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  302. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  303. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  304. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  305. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  306. package/dist/components/navigation/Tabs/styled.js +1 -1
  307. package/dist/components/navigation/Tabs/types.js +1 -1
  308. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  309. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  310. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  311. package/dist/components/other/Calendar/Calendar.js +1 -1
  312. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  313. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  314. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  315. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  316. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  317. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  318. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  319. package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
  320. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  321. package/dist/components/other/Calendar/styled.js +1 -1
  322. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  323. package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
  324. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  325. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  326. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  327. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  328. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  329. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  330. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  331. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  332. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  333. package/dist/components/overlays/Dialog/context.js +1 -1
  334. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  335. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  336. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  337. package/dist/components/overlays/Modal/Modal.js +1 -1
  338. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  339. package/dist/components/overlays/Modal/Overlay.js +1 -1
  340. package/dist/components/overlays/Modal/Popover.js +2 -2
  341. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  342. package/dist/components/overlays/Modal/Tray.js +1 -1
  343. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  344. package/dist/components/overlays/Modal/Underlay.js +1 -1
  345. package/dist/components/overlays/Notifications/Notification.js +1 -1
  346. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  347. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  348. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  349. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  350. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  351. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  352. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  353. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  354. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  355. package/dist/components/overlays/Notifications/index.js +1 -1
  356. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  357. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  358. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  359. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  360. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  361. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  362. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  363. package/dist/components/overlays/Toast/index.js +1 -1
  364. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  365. package/dist/components/overlays/Toast/useToast.js +1 -1
  366. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  367. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  368. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  369. package/dist/components/overlays/Tooltip/context.js +1 -1
  370. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  371. package/dist/components/portal/Portal.js +1 -1
  372. package/dist/components/portal/PortalProvider.js +1 -1
  373. package/dist/components/portal/usePortal.js +1 -1
  374. package/dist/components/shared/DraggableCollection.js +1 -1
  375. package/dist/components/shared/InvalidIcon.js +1 -1
  376. package/dist/components/shared/ValidIcon.js +1 -1
  377. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  378. package/dist/components/status/Spin/Cube.js +1 -1
  379. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  380. package/dist/components/status/Spin/Spin.js +1 -1
  381. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  382. package/dist/data/item-themes.js +1 -1
  383. package/dist/data/themes.js +1 -1
  384. package/dist/eslint-plugin/defaults.generated.js +17 -1
  385. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  386. package/dist/eslint-plugin/index.js +1 -1
  387. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  388. package/dist/i18n/I18nProvider.js +1 -1
  389. package/dist/i18n/createFormatter.js +1 -1
  390. package/dist/i18n/index.js +1 -1
  391. package/dist/i18n/instance.js +1 -1
  392. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  393. package/dist/i18n/locales/en-US/uikit.js +1 -1
  394. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  395. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  396. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  397. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  398. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  399. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  400. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  401. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  402. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  403. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  404. package/dist/i18n/locales.js +1 -1
  405. package/dist/i18n/useFormatter.js +1 -1
  406. package/dist/i18n/useI18n.js +1 -1
  407. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  408. package/dist/icons/AdjustmentsIcon.js +1 -1
  409. package/dist/icons/AiIcon.js +1 -1
  410. package/dist/icons/AreaChartIcon.js +1 -1
  411. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  412. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  413. package/dist/icons/BackwardIcon.js +1 -1
  414. package/dist/icons/BarChartIcon.js +1 -1
  415. package/dist/icons/BellFilledIcon.js +1 -1
  416. package/dist/icons/BellIcon.js +1 -1
  417. package/dist/icons/BooleanIcon.js +1 -1
  418. package/dist/icons/CalendarEditIcon.js +1 -1
  419. package/dist/icons/CalendarIcon.js +1 -1
  420. package/dist/icons/CaretDownIcon.js +1 -1
  421. package/dist/icons/CaretUpIcon.js +1 -1
  422. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  423. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  424. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  425. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  426. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  427. package/dist/icons/ChartBarLineIcon.js +1 -1
  428. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  429. package/dist/icons/ChartBarStackedIcon.js +1 -1
  430. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  431. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  432. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  433. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  434. package/dist/icons/ChartBubbleIcon.js +1 -1
  435. package/dist/icons/ChartDonut2Icon.js +1 -1
  436. package/dist/icons/ChartFunnelIcon.js +1 -1
  437. package/dist/icons/ChartHeatmapIcon.js +1 -1
  438. package/dist/icons/ChartKPIIcon.js +1 -1
  439. package/dist/icons/ChartPie2Icon.js +1 -1
  440. package/dist/icons/ChartScatterIcon.js +1 -1
  441. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  442. package/dist/icons/CheckCircleIcon.js +1 -1
  443. package/dist/icons/CheckIcon.js +1 -1
  444. package/dist/icons/CircleFilledIcon.js +1 -1
  445. package/dist/icons/ClearIcon.js +1 -1
  446. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  447. package/dist/icons/CloseCircleIcon.js +1 -1
  448. package/dist/icons/CloseIcon.js +1 -1
  449. package/dist/icons/CodeIcon.js +1 -1
  450. package/dist/icons/ColumnTotalIcon.js +1 -1
  451. package/dist/icons/CopyIcon.js +1 -1
  452. package/dist/icons/CountIcon.js +1 -1
  453. package/dist/icons/CubeIcon.js +1 -1
  454. package/dist/icons/CubePauseIcon.js +1 -1
  455. package/dist/icons/CubePlayIcon.js +1 -1
  456. package/dist/icons/CurrencyDollarIcon.js +1 -1
  457. package/dist/icons/DangerIcon.js +1 -1
  458. package/dist/icons/DashboardIcon.js +1 -1
  459. package/dist/icons/DatabaseIcon.js +1 -1
  460. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  461. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  462. package/dist/icons/DirectionIcon.js +1 -1
  463. package/dist/icons/DonutIcon.js +1 -1
  464. package/dist/icons/DownIcon.js +1 -1
  465. package/dist/icons/EditIcon.js +1 -1
  466. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  467. package/dist/icons/ExclamationCircleIcon.js +1 -1
  468. package/dist/icons/ExclamationIcon.js +1 -1
  469. package/dist/icons/EyeIcon.js +1 -1
  470. package/dist/icons/EyeInvisibleIcon.js +1 -1
  471. package/dist/icons/FilterIcon.js +1 -1
  472. package/dist/icons/FolderFilledIcon.js +1 -1
  473. package/dist/icons/FolderIcon.js +1 -1
  474. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  475. package/dist/icons/FolderOpenIcon.js +1 -1
  476. package/dist/icons/ForwardIcon.js +1 -1
  477. package/dist/icons/GripVerticalIcon.js +1 -1
  478. package/dist/icons/HierarchyIcon.js +1 -1
  479. package/dist/icons/HierarchyOpenIcon.js +1 -1
  480. package/dist/icons/Icon.js +1 -1
  481. package/dist/icons/InfoCircleIcon.js +1 -1
  482. package/dist/icons/InfoIcon.js +1 -1
  483. package/dist/icons/KeyIcon.js +1 -1
  484. package/dist/icons/LeftIcon.js +1 -1
  485. package/dist/icons/LineChartIcon.js +1 -1
  486. package/dist/icons/LoadingIcon.js +1 -1
  487. package/dist/icons/LockFilledIcon.js +1 -1
  488. package/dist/icons/LockIcon.js +1 -1
  489. package/dist/icons/MoreIcon.js +1 -1
  490. package/dist/icons/NotAllowedIcon.js +1 -1
  491. package/dist/icons/Number123Icon.js +1 -1
  492. package/dist/icons/NumberIcon.js +1 -1
  493. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  494. package/dist/icons/PauseCircleIcon.js +1 -1
  495. package/dist/icons/PauseIcon.js +1 -1
  496. package/dist/icons/PercentageIcon.js +1 -1
  497. package/dist/icons/PieChartIcon.js +1 -1
  498. package/dist/icons/PipetteIcon.js +1 -1
  499. package/dist/icons/PlayCircleIcon.js +1 -1
  500. package/dist/icons/PlayIcon.js +1 -1
  501. package/dist/icons/PlusIcon.js +1 -1
  502. package/dist/icons/ProgressBarIcon.js +1 -1
  503. package/dist/icons/ReloadIcon.js +1 -1
  504. package/dist/icons/ReportIcon.js +1 -1
  505. package/dist/icons/ReturnIcon.js +1 -1
  506. package/dist/icons/RightIcon.js +1 -1
  507. package/dist/icons/RowTotalsIcon.js +1 -1
  508. package/dist/icons/SchemeIcon.js +1 -1
  509. package/dist/icons/SearchIcon.js +1 -1
  510. package/dist/icons/SemanticQueryIcon.js +1 -1
  511. package/dist/icons/SettingsIcon.js +1 -1
  512. package/dist/icons/ShieldFilledIcon.js +1 -1
  513. package/dist/icons/ShieldIcon.js +1 -1
  514. package/dist/icons/SlashIcon.js +1 -1
  515. package/dist/icons/SparklesIcon.js +1 -1
  516. package/dist/icons/SqlIcon.js +1 -1
  517. package/dist/icons/StatsIcon.js +1 -1
  518. package/dist/icons/StopIcon.js +1 -1
  519. package/dist/icons/StringIcon.js +1 -1
  520. package/dist/icons/SubtotalsIcon.js +1 -1
  521. package/dist/icons/SwitchIcon.js +1 -1
  522. package/dist/icons/TableIcon.js +1 -1
  523. package/dist/icons/ThumbsDownIcon.js +1 -1
  524. package/dist/icons/ThumbsUpIcon.js +1 -1
  525. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  526. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  527. package/dist/icons/ThunderboltIcon.js +1 -1
  528. package/dist/icons/TimeIcon.js +1 -1
  529. package/dist/icons/TrashIcon.js +1 -1
  530. package/dist/icons/UnlockIcon.js +1 -1
  531. package/dist/icons/UpIcon.js +1 -1
  532. package/dist/icons/UserGroupIcon.js +1 -1
  533. package/dist/icons/UserIcon.js +1 -1
  534. package/dist/icons/UserLockIcon.js +1 -1
  535. package/dist/icons/ViewIcon.js +1 -1
  536. package/dist/icons/WarningFilledIcon.js +1 -1
  537. package/dist/icons/WarningIcon.js +1 -1
  538. package/dist/icons/wrap-icon.js +1 -1
  539. package/dist/index.d.ts +2 -2
  540. package/dist/index.js +3 -3
  541. package/dist/index.js.map +1 -1
  542. package/dist/probe/canonicalize.js +1 -1
  543. package/dist/probe/css.js +1 -1
  544. package/dist/probe/index.js +1 -1
  545. package/dist/provider.js +1 -1
  546. package/dist/providers/TrackingProvider.js +1 -1
  547. package/dist/providers/navigationAdapter.default.js +1 -1
  548. package/dist/tokens/all-tokens.js +1 -1
  549. package/dist/tokens/base.js +1 -1
  550. package/dist/tokens/color-seed.js +1 -1
  551. package/dist/tokens/color-theme.js +1 -1
  552. package/dist/tokens/colors.js +1 -1
  553. package/dist/tokens/layout.js +1 -1
  554. package/dist/tokens/lazy-styles.js +1 -1
  555. package/dist/tokens/legacy-color.js +1 -1
  556. package/dist/tokens/palette-config.js +1 -1
  557. package/dist/tokens/palette.js +1 -1
  558. package/dist/tokens/resolve.js +1 -1
  559. package/dist/tokens/shadows.js +1 -1
  560. package/dist/tokens/sizes.js +1 -1
  561. package/dist/tokens/spacing.js +1 -1
  562. package/dist/tokens/typography.js +1 -1
  563. package/dist/utils/ResizeSensor.js +1 -1
  564. package/dist/utils/colors.js +1 -1
  565. package/dist/utils/dotize.js +1 -1
  566. package/dist/utils/is-dev-env.js +1 -1
  567. package/dist/utils/modules.js +1 -1
  568. package/dist/utils/promise.js +1 -1
  569. package/dist/utils/raf.js +1 -1
  570. package/dist/utils/random.js +1 -1
  571. package/dist/utils/range.js +1 -1
  572. package/dist/utils/react/RenderCache.js +1 -1
  573. package/dist/utils/react/Slots.js +1 -1
  574. package/dist/utils/react/chain.js +1 -1
  575. package/dist/utils/react/disabledProps.js +1 -1
  576. package/dist/utils/react/escapePropagation.js +1 -1
  577. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  578. package/dist/utils/react/index.js +1 -1
  579. package/dist/utils/react/interactions.js +1 -1
  580. package/dist/utils/react/isTextOnly.js +1 -1
  581. package/dist/utils/react/mapProps.js +1 -1
  582. package/dist/utils/react/mergeProps.js +1 -1
  583. package/dist/utils/react/nullableValue.js +1 -1
  584. package/dist/utils/react/programmaticFocus.js +1 -1
  585. package/dist/utils/react/resolveIcon.js +1 -1
  586. package/dist/utils/react/sharedStore.js +1 -1
  587. package/dist/utils/react/useBufferedValue.js +1 -1
  588. package/dist/utils/react/useCombinedRefs.js +1 -1
  589. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  590. package/dist/utils/react/useEventBus.js +1 -1
  591. package/dist/utils/react/useId.js +1 -1
  592. package/dist/utils/react/useIsDarwin.js +1 -1
  593. package/dist/utils/react/useKeySymbols.js +1 -1
  594. package/dist/utils/react/useLayoutEffect.d.ts +1 -1
  595. package/dist/utils/react/useLayoutEffect.js +1 -1
  596. package/dist/utils/react/useLocalStorage.js +1 -1
  597. package/dist/utils/react/useMergeStyles.js +1 -1
  598. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  599. package/dist/utils/react/usePopoverSync.js +1 -1
  600. package/dist/utils/react/useQaProps.js +1 -1
  601. package/dist/utils/react/useScheme.js +1 -1
  602. package/dist/utils/react/useViewportSize.js +1 -1
  603. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  604. package/dist/utils/selection.js +1 -1
  605. package/dist/utils/styles.js +1 -1
  606. package/dist/utils/styles.js.map +1 -1
  607. package/dist/utils/tree.js +1 -1
  608. package/dist/utils/warnings.js +1 -1
  609. package/dist/version.js +3 -3
  610. package/docs/components/content/Result.md +202 -12
  611. package/docs/components/content/Title.md +1 -0
  612. package/docs/tasty/dsl.md +6 -28
  613. package/docs/tasty/styles.md +0 -18
  614. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { c } from "react-compiler-runtime";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { deprecationWarning } from "../../utils/warnings.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import React, { useEffect } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useSyncRef } from "./use-sync-ref.js";
3
3
  import { useCallback } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
 
4
4
  //#region src/_internal/hooks/use-is-first-render.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../utils/react/useLayoutEffect.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  //#region src/_internal/hooks/use-timer/timer.ts
3
3
  var Timer = class {
4
4
  callback;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useEvent } from "../use-event.js";
3
3
  import { Timer } from "./timer.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useEvent } from "./use-event.js";
3
3
  import { warn } from "../../utils/warnings.js";
4
4
  import { useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { extractStyles } from "../utils/styles.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { ItemAction } from "./actions/ItemAction/ItemAction.js";
3
3
  import { ItemBadge } from "./content/ItemBadge/ItemBadge.js";
4
4
  import { Item } from "react-stately";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { usePaletteValue } from "../tokens/palette-config.js";
3
3
  import { getTokens } from "../tokens/all-tokens.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalStyles.js","names":["useGlobalStyles","useRawCSS","getTokens","usePaletteValue","Styles","GlobalStylesProps","bodyStyles","key","fonts","fontDisplay","publicUrl","font","monospaceFont","applyLegacyTokens","BODY_STYLES","overscrollBehaviorY","fill","fontFamily","margin","padding","color","preset","letterSpacing","STATIC_CSS","GlobalStyles","props","$","_c","tokens","t0","bodyTokenStyles","t1","Symbol","for","id","t2","t3","fontValue","monospaceFontValue"],"sources":["../../src/components/GlobalStyles.tsx"],"sourcesContent":["import { useGlobalStyles, useRawCSS } from '@tenphi/tasty';\n\nimport { getTokens } from '../tokens';\nimport { usePaletteValue } from '../tokens/palette-config';\n\nimport type { Styles } from '@tenphi/tasty';\n\ninterface GlobalStylesProps {\n bodyStyles?: { [key: string]: string };\n fonts?: boolean;\n fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n publicUrl?: string;\n font?: string;\n monospaceFont?: string;\n /** @deprecated Tokens are now always applied via useGlobalStyles */\n applyLegacyTokens?: boolean;\n}\n\n/**\n * Body styles applied via useGlobalStyles.\n *\n * `fill` and `color` use scheme-aware Glaze tokens so the whole page flips\n * automatically when `<html data-scheme=\"dark\">` (or `prefers-color-scheme: dark`)\n * is active — see `src/tokens/palette.ts` and `src/components/Root.tsx`.\n */\nconst BODY_STYLES: Styles = {\n overscrollBehaviorY: 'none',\n fill: '#surface',\n fontFamily: 'var(--font-sans)',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n margin: 0,\n padding: 0,\n color: '#surface-text-soft',\n preset: 't3',\n letterSpacing: '0.02em',\n};\n\n// Static CSS that doesn't depend on props\nconst STATIC_CSS = `\n @font-face {\n font-family: text-security-disc;\n src: url(data:font/woff2;base64,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) format('woff2');\n }\n\n kbd {\n font-family: var(--c2-font-family);\n font-weight: var(--c2-font-weight);\n font-size: var(--c2-font-size);\n border: var(--border-width) solid var(--dark-04-color);\n background-color: var(--surface-color);\n color: var(--dark-color);\n border-radius: var(--radius);\n padding: 0 var(--outline-width);\n }\n\n :not([data-qa$=\"Icon\"]) > .tabler-icon {\n font-size: var(--icon-size);\n width: 1em;\n height: 1em;\n min-width: 1em;\n min-height: 1em;\n max-height: 1em;\n stroke-width: var(--stroke-width);\n }\n\n .cube-animation-spin {\n animation: cube-animation-spin 1s linear infinite;\n }\n\n @keyframes cube-animation-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n b, strong {\n font-weight: var(--bold-font-weight, 700);\n }\n\n [type=reset], [type=submit], button, html [type=button] {\n -webkit-appearance: none;\n }\n\n code {\n font-family: var(--font-mono);\n }\n\n /*\n * Prism syntax highlighting.\n *\n * All token colors come from the scheme-aware Glaze \\`code-*\\` palette\n * (defined in src/tokens/palette.ts). Each \\`code-*\\` token has \\`mode: 'auto'\\`\n * with a numeric contrast floor of 4.5 against \\`#surface\\` so every token\n * reads at WCAG AA in light AND dark schemes (AAA in high-contrast).\n * Diff insertion / deletion re-use the adaptive \\`success-*\\` and \\`danger-*\\`\n * ramps for both the line bg and the token color.\n */\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n color: var(--surface-text-color);\n background: none;\n font-family: var(--s3-font-family, var(--font-mono));\n text-align: left;\n font-weight: var(--s3-font-weight, 400);\n font-size: var(--s3-font-size, 14px);\n line-height: var(--s3-line-height, 20px);\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n border-radius: 6px;\n border: none;\n\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n }\n\n pre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\n code[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n text-shadow: none;\n background: oklch(from var(--primary-color) l c h / .2);\n }\n\n pre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\n code[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: oklch(from var(--primary-color) l c h / .2);\n }\n\n @media print {\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n text-shadow: none;\n }\n }\n\n /* Code blocks */\n pre[class*=\"language-\"] {\n overflow: auto;\n }\n\n :not(pre) > code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n background: transparent;\n }\n\n /* Inline code */\n :not(pre) > code[class*=\"language-\"] {\n border-radius: .3em;\n white-space: normal;\n }\n\n /* Diff (re-uses success/danger ramps; both bg and text adapt to scheme) */\n .token.inserted-sign {\n background-color: var(--success-bg-color);\n color: var(--success-text-color);\n }\n\n .token.inserted {\n color: var(--success-text-color);\n }\n\n .token.deleted-sign {\n background-color: var(--danger-bg-color);\n color: var(--danger-text-color);\n }\n\n .token.deleted {\n color: var(--danger-text-color);\n }\n\n /* Comments — subdued gray-ish, AA floor */\n .token.comment,\n .token.prolog,\n .token.doctype,\n .token.cdata {\n color: var(--code-comment-color);\n }\n\n /* Operators / punctuation — subdued purple, AA floor */\n .token.operator,\n .token.punctuation {\n color: var(--code-punctuation-color);\n }\n\n .namespace {\n opacity: .7;\n }\n\n /* Keywords / language constructs — violet */\n .token.boolean,\n .token.constant,\n .token.keyword,\n .token.atrule {\n color: var(--code-keyword-color);\n font-weight: 500;\n }\n\n /* Numbers / numeric entities — orange */\n .token.entity,\n .token.number {\n color: var(--code-number-color);\n }\n\n /* Strings / character literals / URLs — green */\n .token.string,\n .token.char,\n .token.attr-value,\n .token.url,\n .language-css .token.string,\n .style .token.string {\n color: var(--code-string-color);\n }\n\n /* Names: functions, class names, regex, variables — pink/coral */\n .token.function,\n .token.class-name,\n .token.regex,\n .token.important,\n .token.variable {\n color: var(--code-function-color);\n }\n\n /* HTML/XML tag names — same hue as keywords (see Colors / CodeSyntax) */\n .token.tag {\n color: var(--code-keyword-color);\n }\n\n /* Attributes / properties / selectors / built-ins — cyan */\n .token.attr-name,\n .token.property,\n .token.symbol,\n .token.key,\n .token.builtin,\n .token.selector {\n color: var(--code-attribute-color);\n }\n\n /*\n * prism-react-renderer flattens nested markup tokens and prefixes parent\n * types onto each leaf (e.g. \\`token tag attr-value\\`). Re-assert leaf\n * colors so the bare \\`.token.tag\\` rule does not wash the whole tag.\n */\n .token.tag.attr-name {\n color: var(--code-attribute-color);\n }\n\n .token.tag.attr-value {\n color: var(--code-string-color);\n }\n\n .token.tag.punctuation {\n color: var(--code-punctuation-color);\n }\n\n .token.important,\n .token.bold {\n font-weight: bold;\n }\n\n .token.italic {\n font-style: italic;\n }\n\n .token.entity {\n cursor: help;\n }\n`;\n\nexport function GlobalStyles(props: GlobalStylesProps) {\n const { bodyStyles, font, monospaceFont } = props;\n\n // Re-resolve the tokens whenever the palette is re-seeded at runtime (see\n // `src/tokens/palette-config.ts`). Nothing else has to re-render: every color\n // in the kit compiles to `var(--<name>-color)`, so replacing this one rule\n // recolors the whole UI. `getTokens()` returns a new map only when the palette\n // changes, and taking it as the store value makes it the memo's dependency —\n // a version listed in the deps but never read is dropped by React Compiler.\n const tokens = usePaletteValue(getTokens);\n\n // Merge token styles with the base body styles, then the custom ones. Keys\n // are passed through as-is (tasty handles both camelCase and kebab-case).\n // eslint-disable-next-line tasty/no-style-spread -- palette tokens, then body defaults, then consumer `bodyStyles`, each layer overriding the last\n const bodyTokenStyles: Styles = { ...tokens, ...BODY_STYLES, ...bodyStyles };\n\n // Apply tokens and body styles via useGlobalStyles.\n //\n // Replacement does not depend on the `id`: tasty keys its injection slot on\n // `id ?? selector`, so `'body'` on its own already disposes the previous block\n // before writing the new one — which is what removes stale `@hc` rules when the\n // palette is re-seeded, rather than shadowing them. The `id` buys two other\n // things. It gives the token block its own slot, so a host app calling\n // `useGlobalStyles('body', …)` for its own body styles cannot evict ours (and\n // vice versa) — they would otherwise share the `'body'` slot and dispose each\n // other on every change. And under SSR it makes the collector key stable and\n // last-write-wins, instead of content-hashed and first-write-wins.\n useGlobalStyles('body', bodyTokenStyles, { id: 'cube-ui-kit-tokens' });\n\n // Apply static CSS and font definitions via useRawCSS\n useRawCSS(() => {\n const fontValue = font ? `${font}, ` : '';\n const monospaceFontValue = monospaceFont ? `${monospaceFont}, ` : '';\n\n return `\n html {\n overscroll-behavior-y: none;\n --font-sans: ${fontValue}system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", sans-serif;\n --font-mono: ${monospaceFontValue}ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n }\n${STATIC_CSS}`;\n }, [font, monospaceFont]);\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;AAyBA,MAAMc,cAAsB;CAC1BC,qBAAqB;CACrBC,MAAM;CACNC,YAAY;CACZ,0BAA0B;CAC1B,2BAA2B;CAC3BC,QAAQ;CACRC,SAAS;CACTC,OAAO;CACPC,QAAQ;CACRC,eAAe;CAChB;AAGD,MAAMC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgPnB,SAAOC,aAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACL,MAAA,EAAArB,YAAAK,MAAAC,kBAA4Ca;CAQ5C,MAAAG,SAAezB,gBAAgBD,UAAU;CAAC,IAAA2B;AAAA,KAAAH,EAAA,OAAApB,cAAAoB,EAAA,OAAAE,QAAA;AAKVC,OAAA;GAAA,GAAKD;GAAM,GAAKd;GAAW,GAAKR;GAAY;AAAAoB,IAAA,KAAApB;AAAAoB,IAAA,KAAAE;AAAAF,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAA5E,MAAAI,kBAAgCD;CAA6C,IAAAE;AAAA,KAAAL,EAAA,OAAAM,OAAAC,IAAA,4BAAA,EAAA;AAapCF,OAAA,EAAAG,IAAM,sBAAsB;AAAAR,IAAA,KAAAK;OAAAA,MAAAL,EAAA;AAArE1B,iBAAgB,QAAQ8B,iBAAiBC,GAA6B;CAAA,IAAAI;CAAA,IAAAC;AAAA,KAAAV,EAAA,OAAAf,QAAAe,EAAA,OAAAd,eAAA;AAG5DuB,aAAA;AAE6D,UAE9D;;;mBAHWxB,OAAA,GAAUA,KAAI,MAAd,GAMM;mBALGC,gBAAA,GAAmBA,cAAa,MAAhC,GAMM;;EAEnCW;;AACGa,OAAA,CAACzB,MAAMC,cAAc;AAAAc,IAAA,KAAAf;AAAAe,IAAA,KAAAd;AAAAc,IAAA,KAAAS;AAAAT,IAAA,KAAAU;QAAA;AAAAD,OAAAT,EAAA;AAAAU,OAAAV,EAAA;;AAXxBzB,WAAUkC,IAWPC,GAAsB;AAAA,QAElB"}
1
+ {"version":3,"file":"GlobalStyles.js","names":["useGlobalStyles","useRawCSS","getTokens","usePaletteValue","Styles","GlobalStylesProps","bodyStyles","key","fonts","fontDisplay","publicUrl","font","monospaceFont","applyLegacyTokens","BODY_STYLES","overscrollBehaviorY","fill","fontFamily","margin","padding","color","preset","letterSpacing","STATIC_CSS","GlobalStyles","props","$","_c","tokens","t0","bodyTokenStyles","t1","Symbol","for","id","t2","t3","fontValue","monospaceFontValue"],"sources":["../../src/components/GlobalStyles.tsx"],"sourcesContent":["import { useGlobalStyles, useRawCSS } from '@tenphi/tasty';\n\nimport { getTokens } from '../tokens';\nimport { usePaletteValue } from '../tokens/palette-config';\n\nimport type { Styles } from '@tenphi/tasty';\n\ninterface GlobalStylesProps {\n bodyStyles?: { [key: string]: string };\n fonts?: boolean;\n fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n publicUrl?: string;\n font?: string;\n monospaceFont?: string;\n /** @deprecated Tokens are now always applied via useGlobalStyles */\n applyLegacyTokens?: boolean;\n}\n\n/**\n * Body styles applied via useGlobalStyles.\n *\n * `fill` and `color` use scheme-aware Glaze tokens so the whole page flips\n * automatically when `<html data-scheme=\"dark\">` (or `prefers-color-scheme: dark`)\n * is active — see `src/tokens/palette.ts` and `src/components/Root.tsx`.\n */\nconst BODY_STYLES: Styles = {\n overscrollBehaviorY: 'none',\n fill: '#surface',\n fontFamily: 'var(--font-sans)',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n margin: 0,\n padding: 0,\n color: '#surface-text-soft',\n preset: 't3',\n letterSpacing: '0.02em',\n};\n\n// Static CSS that doesn't depend on props\nconst STATIC_CSS = `\n @font-face {\n font-family: text-security-disc;\n src: url(data:font/woff2;base64,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) format('woff2');\n }\n\n kbd {\n font-family: var(--c2-font-family);\n font-weight: var(--c2-font-weight);\n font-size: var(--c2-font-size);\n border: var(--border-width) solid var(--dark-04-color);\n background-color: var(--surface-color);\n color: var(--dark-color);\n border-radius: var(--radius);\n padding: 0 var(--outline-width);\n }\n\n :not([data-qa$=\"Icon\"]) > .tabler-icon {\n font-size: var(--icon-size);\n width: 1em;\n height: 1em;\n min-width: 1em;\n min-height: 1em;\n max-height: 1em;\n stroke-width: var(--stroke-width);\n }\n\n .cube-animation-spin {\n animation: cube-animation-spin 1s linear infinite;\n }\n\n @keyframes cube-animation-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n b, strong {\n font-weight: var(--bold-font-weight, 700);\n }\n\n [type=reset], [type=submit], button, html [type=button] {\n -webkit-appearance: none;\n }\n\n code {\n font-family: var(--font-mono);\n }\n\n /*\n * Prism syntax highlighting.\n *\n * All token colors come from the scheme-aware Glaze \\`code-*\\` palette\n * (defined in src/tokens/palette.ts). Each \\`code-*\\` token has \\`mode: 'auto'\\`\n * with a numeric contrast floor of 4.5 against \\`#surface\\` so every token\n * reads at WCAG AA in light AND dark schemes (AAA in high-contrast).\n * Diff insertion / deletion re-use the adaptive \\`success-*\\` and \\`danger-*\\`\n * ramps for both the line bg and the token color.\n */\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n color: var(--surface-text-color);\n background: none;\n font-family: var(--s3-font-family, var(--font-mono));\n text-align: left;\n font-weight: var(--s3-font-weight, 400);\n font-size: var(--s3-font-size, 14px);\n line-height: var(--s3-line-height, 20px);\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n border-radius: 6px;\n border: none;\n\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n }\n\n pre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\n code[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n text-shadow: none;\n background: oklch(from var(--primary-color) l c h / .2);\n }\n\n pre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\n code[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: oklch(from var(--primary-color) l c h / .2);\n }\n\n @media print {\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n text-shadow: none;\n }\n }\n\n /* Code blocks */\n pre[class*=\"language-\"] {\n overflow: auto;\n }\n\n :not(pre) > code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n background: transparent;\n }\n\n /* Inline code */\n :not(pre) > code[class*=\"language-\"] {\n border-radius: .3em;\n white-space: normal;\n }\n\n /* Diff (re-uses success/danger ramps; both bg and text adapt to scheme) */\n .token.inserted-sign {\n background-color: var(--success-bg-color);\n color: var(--success-text-color);\n }\n\n .token.inserted {\n color: var(--success-text-color);\n }\n\n .token.deleted-sign {\n background-color: var(--danger-bg-color);\n color: var(--danger-text-color);\n }\n\n .token.deleted {\n color: var(--danger-text-color);\n }\n\n /* Comments — subdued gray-ish, AA floor */\n .token.comment,\n .token.prolog,\n .token.doctype,\n .token.cdata {\n color: var(--code-comment-color);\n }\n\n /* Operators / punctuation — subdued purple, AA floor */\n .token.operator,\n .token.punctuation {\n color: var(--code-punctuation-color);\n }\n\n .namespace {\n opacity: .7;\n }\n\n /* Keywords / language constructs — violet */\n .token.boolean,\n .token.constant,\n .token.keyword,\n .token.atrule {\n color: var(--code-keyword-color);\n font-weight: 500;\n }\n\n /* Numbers / numeric entities — orange */\n .token.entity,\n .token.number {\n color: var(--code-number-color);\n }\n\n /* Strings / character literals / URLs — green */\n .token.string,\n .token.char,\n .token.attr-value,\n .token.url,\n .language-css .token.string,\n .style .token.string {\n color: var(--code-string-color);\n }\n\n /* Names: functions, class names, regex, variables — pink/coral */\n .token.function,\n .token.class-name,\n .token.regex,\n .token.important,\n .token.variable {\n color: var(--code-function-color);\n }\n\n /* HTML/XML tag names — same hue as keywords (see Colors / CodeSyntax) */\n .token.tag {\n color: var(--code-keyword-color);\n }\n\n /* Attributes / properties / selectors / built-ins — cyan */\n .token.attr-name,\n .token.property,\n .token.symbol,\n .token.key,\n .token.builtin,\n .token.selector {\n color: var(--code-attribute-color);\n }\n\n /*\n * prism-react-renderer flattens nested markup tokens and prefixes parent\n * types onto each leaf (e.g. \\`token tag attr-value\\`). Re-assert leaf\n * colors so the bare \\`.token.tag\\` rule does not wash the whole tag.\n */\n .token.tag.attr-name {\n color: var(--code-attribute-color);\n }\n\n .token.tag.attr-value {\n color: var(--code-string-color);\n }\n\n .token.tag.punctuation {\n color: var(--code-punctuation-color);\n }\n\n .token.important,\n .token.bold {\n font-weight: bold;\n }\n\n .token.italic {\n font-style: italic;\n }\n\n .token.entity {\n cursor: help;\n }\n`;\n\nexport function GlobalStyles(props: GlobalStylesProps) {\n const { bodyStyles, font, monospaceFont } = props;\n\n // Re-resolve the tokens whenever the palette is re-seeded at runtime (see\n // `src/tokens/palette-config.ts`). Nothing else has to re-render: every color\n // in the kit compiles to `var(--<name>-color)`, so replacing this one rule\n // recolors the whole UI. `getTokens()` returns a new map only when the palette\n // changes, and taking it as the store value makes it the memo's dependency —\n // a version listed in the deps but never read is dropped by React Compiler.\n const tokens = usePaletteValue(getTokens);\n\n // Merge token styles with the base body styles, then the custom ones. Keys\n // are passed through as-is (tasty handles both camelCase and kebab-case).\n const bodyTokenStyles: Styles = { ...tokens, ...BODY_STYLES, ...bodyStyles };\n\n // Apply tokens and body styles via useGlobalStyles.\n //\n // Replacement does not depend on the `id`: tasty keys its injection slot on\n // `id ?? selector`, so `'body'` on its own already disposes the previous block\n // before writing the new one — which is what removes stale `@hc` rules when the\n // palette is re-seeded, rather than shadowing them. The `id` buys two other\n // things. It gives the token block its own slot, so a host app calling\n // `useGlobalStyles('body', …)` for its own body styles cannot evict ours (and\n // vice versa) — they would otherwise share the `'body'` slot and dispose each\n // other on every change. And under SSR it makes the collector key stable and\n // last-write-wins, instead of content-hashed and first-write-wins.\n useGlobalStyles('body', bodyTokenStyles, { id: 'cube-ui-kit-tokens' });\n\n // Apply static CSS and font definitions via useRawCSS\n useRawCSS(() => {\n const fontValue = font ? `${font}, ` : '';\n const monospaceFontValue = monospaceFont ? `${monospaceFont}, ` : '';\n\n return `\n html {\n overscroll-behavior-y: none;\n --font-sans: ${fontValue}system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, \"Apple Color Emoji\", \"Segoe UI Emoji\", sans-serif;\n --font-mono: ${monospaceFontValue}ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n }\n${STATIC_CSS}`;\n }, [font, monospaceFont]);\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;AAyBA,MAAMc,cAAsB;CAC1BC,qBAAqB;CACrBC,MAAM;CACNC,YAAY;CACZ,0BAA0B;CAC1B,2BAA2B;CAC3BC,QAAQ;CACRC,SAAS;CACTC,OAAO;CACPC,QAAQ;CACRC,eAAe;CAChB;AAGD,MAAMC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgPnB,SAAOC,aAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACL,MAAA,EAAArB,YAAAK,MAAAC,kBAA4Ca;CAQ5C,MAAAG,SAAezB,gBAAgBD,UAAU;CAAC,IAAA2B;AAAA,KAAAH,EAAA,OAAApB,cAAAoB,EAAA,OAAAE,QAAA;AAIVC,OAAA;GAAA,GAAKD;GAAM,GAAKd;GAAW,GAAKR;GAAY;AAAAoB,IAAA,KAAApB;AAAAoB,IAAA,KAAAE;AAAAF,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAA5E,MAAAI,kBAAgCD;CAA6C,IAAAE;AAAA,KAAAL,EAAA,OAAAM,OAAAC,IAAA,4BAAA,EAAA;AAapCF,OAAA,EAAAG,IAAM,sBAAsB;AAAAR,IAAA,KAAAK;OAAAA,MAAAL,EAAA;AAArE1B,iBAAgB,QAAQ8B,iBAAiBC,GAA6B;CAAA,IAAAI;CAAA,IAAAC;AAAA,KAAAV,EAAA,OAAAf,QAAAe,EAAA,OAAAd,eAAA;AAG5DuB,aAAA;AAE6D,UAE9D;;;mBAHWxB,OAAA,GAAUA,KAAI,MAAd,GAMM;mBALGC,gBAAA,GAAmBA,cAAa,MAAhC,GAMM;;EAEnCW;;AACGa,OAAA,CAACzB,MAAMC,cAAc;AAAAc,IAAA,KAAAf;AAAAe,IAAA,KAAAd;AAAAc,IAAA,KAAAS;AAAAT,IAAA,KAAAU;QAAA;AAAAD,OAAAT,EAAA;AAAAU,OAAAV,EAAA;;AAXxBzB,WAAUkC,IAWPC,GAAsB;AAAA,QAElB"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useCombinedRefs } from "../utils/react/useCombinedRefs.js";
3
3
  import { filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef, useCallback, useEffect, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/HiddenInput.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { extractStyles } from "../utils/styles.js";
3
3
  import { AMBIENT_PREDEFINED_STATES } from "../utils/react/useScheme.js";
4
4
  import { EventBusProvider } from "../utils/react/useEventBus.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useAction } from "../use-action.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Item } from "../../content/Item/Item.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { getDisabledElementProps } from "../../../utils/react/disabledProps.js";
4
4
  import { mergeProps } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { useSlotProps } from "../../../utils/react/Slots.js";
3
3
  import { Space } from "../../layout/Space.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { ButtonSplitContext } from "./context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonSplit.js","names":["CONTAINER_STYLES","filterBaseProps","tasty","forwardRef","ReactNode","useMemo","useState","DirectionIcon","mergeProps","extractStyles","Button","Menu","ButtonSplitContext","BaseProps","ContainerStyleProps","Styles","CubeCollectionItemProps","CubeButtonProps","CubeMenuProps","ButtonSplitAction","Omit","key","label","CubeButtonSplitProps","actions","actionKey","defaultActionKey","onAction","onActionChange","type","theme","size","isDisabled","actionProps","Partial","triggerProps","menuProps","styles","children","STYLE_PROPS","ButtonSplitElement","as","qa","display","position","verticalAlign","ButtonSplit","HTMLDivElement","props","ref","$","_c","controlledActionKey","role","rest","isControlled","undefined","t0","uncontrolledKey","setUncontrolledKey","currentKey","t1","find","a","currentAction","t2","handleActionPress","t3","keys","newKey","handleSelectionChange","containerStyles","mergedStyles","t4","contextValue","isCustomMode","t5","icon","tooltip","onPress","_temp","map","_temp2","eventProps","displayName","pressed","textValue","itemProps"],"sources":["../../../../src/components/actions/ButtonSplit/ButtonSplit.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode, useMemo, useState } from 'react';\n\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { Button } from '../Button/Button';\nimport { Menu } from '../Menu/Menu';\n\nimport { ButtonSplitContext } from './context';\n\nimport type { BaseProps, ContainerStyleProps, Styles } from '@tenphi/tasty';\nimport type { CubeCollectionItemProps } from '../../CollectionItem';\nimport type { CubeButtonProps } from '../Button/Button';\nimport type { CubeMenuProps } from '../Menu/Menu';\n\nexport interface ButtonSplitAction\n extends Omit<\n CubeCollectionItemProps<object>,\n 'children' | 'onAction' | 'wrapper'\n > {\n key: string;\n label: ReactNode;\n}\n\nexport interface CubeButtonSplitProps extends BaseProps, ContainerStyleProps {\n /** Actions for strict mode. When provided, renders action + trigger buttons automatically. */\n actions?: ButtonSplitAction[];\n /** Currently selected action key (controlled). */\n actionKey?: string;\n /** Initially selected action key (uncontrolled). */\n defaultActionKey?: string;\n /** Called when the action button is pressed. Receives the current action key. */\n onAction?: (key: string) => void;\n /** Called when the selected action changes via the trigger menu. */\n onActionChange?: (key: string) => void;\n\n /** Button type applied to both action and trigger buttons in strict mode. */\n type?: CubeButtonProps['type'];\n /** Button theme applied to both action and trigger buttons in strict mode. */\n theme?: CubeButtonProps['theme'];\n /** Button size applied to both action and trigger buttons in strict mode. */\n size?: CubeButtonProps['size'];\n /** Disables both buttons in strict mode. */\n isDisabled?: boolean;\n\n /** Additional props for the action button in strict mode. */\n actionProps?: Partial<CubeButtonProps>;\n /** Additional props for the trigger button in strict mode. */\n triggerProps?: Partial<CubeButtonProps>;\n /** Additional props for the dropdown menu in strict mode. */\n menuProps?: Partial<CubeMenuProps<object>>;\n\n /** Custom styles for the wrapper element. */\n styles?: Styles;\n\n /** Custom mode: render arbitrary Button children. */\n children?: ReactNode;\n}\n\nconst STYLE_PROPS = CONTAINER_STYLES;\n\nconst ButtonSplitElement = tasty({\n as: 'div',\n qa: 'ButtonSplit',\n styles: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'bottom',\n },\n});\n\nexport const ButtonSplit = forwardRef<HTMLDivElement, CubeButtonSplitProps>(\n function ButtonSplit(props, ref) {\n const {\n actions,\n actionKey: controlledActionKey,\n defaultActionKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n actionProps,\n triggerProps,\n menuProps,\n styles,\n children,\n role,\n ...rest\n } = props;\n\n const isControlled = controlledActionKey !== undefined;\n const [uncontrolledKey, setUncontrolledKey] = useState(\n () => defaultActionKey ?? actions?.[0]?.key,\n );\n\n const currentKey = isControlled ? controlledActionKey : uncontrolledKey;\n\n const currentAction =\n actions?.find((a) => a.key === currentKey) ?? actions?.[0];\n\n const handleActionPress = () => {\n if (currentKey) {\n onAction?.(currentKey);\n }\n };\n\n const handleSelectionChange = (keys: string[]) => {\n const newKey = keys[0];\n\n if (newKey) {\n if (!isControlled) {\n setUncontrolledKey(newKey);\n }\n\n onActionChange?.(newKey);\n }\n };\n\n const containerStyles = extractStyles(rest, STYLE_PROPS);\n\n // eslint-disable-next-line tasty/no-style-spread -- consumer `styles` override the extracted container style props\n const mergedStyles: Styles = { ...containerStyles, ...styles };\n\n const contextValue = useMemo(\n () => ({\n currentKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n }),\n [currentKey, onAction, onActionChange, type, theme, size, isDisabled],\n );\n\n const isCustomMode = children != null;\n\n return (\n <ButtonSplitContext.Provider value={contextValue}>\n <ButtonSplitElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n data-button-split\n styles={mergedStyles}\n qa={rest.qa}\n // Custom mode renders peer buttons with no visible group label, which\n // is exactly when a caller needs `aria-label` to land on something the\n // AT will announce. `role` comes from `BaseProps`, so a caller that\n // wants something else — including `presentation` to opt out — just\n // passes it. Strict mode keeps its previous shape.\n role={role ?? (isCustomMode ? 'group' : undefined)}\n >\n {isCustomMode ? (\n children\n ) : actions ? (\n <>\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n icon={currentAction?.icon}\n tooltip={currentAction?.tooltip}\n {...mergeProps(actionProps, { onPress: handleActionPress })}\n >\n {currentAction?.label}\n </Button>\n <Menu.Trigger placement=\"bottom end\">\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n aria-label=\"More options\"\n icon={({ pressed }) => (\n <DirectionIcon to={pressed ? 'up' : 'down'} />\n )}\n {...triggerProps}\n />\n <Menu\n selectionMode=\"single\"\n selectedKeys={currentKey ? [currentKey] : []}\n onSelectionChange={handleSelectionChange}\n {...menuProps}\n >\n {actions.map(({ key, label, textValue, ...itemProps }) => (\n <Menu.Item\n key={key}\n textValue={\n textValue ?? (typeof label === 'string' ? label : key)\n }\n {...itemProps}\n >\n {label}\n </Menu.Item>\n ))}\n </Menu>\n </Menu.Trigger>\n </>\n ) : null}\n </ButtonSplitElement>\n </ButtonSplitContext.Provider>\n );\n },\n);\n\nButtonSplit.displayName = 'ButtonSplit';\n"],"mappings":"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"}
1
+ {"version":3,"file":"ButtonSplit.js","names":["CONTAINER_STYLES","filterBaseProps","tasty","forwardRef","ReactNode","useMemo","useState","DirectionIcon","mergeProps","extractStyles","Button","Menu","ButtonSplitContext","BaseProps","ContainerStyleProps","Styles","CubeCollectionItemProps","CubeButtonProps","CubeMenuProps","ButtonSplitAction","Omit","key","label","CubeButtonSplitProps","actions","actionKey","defaultActionKey","onAction","onActionChange","type","theme","size","isDisabled","actionProps","Partial","triggerProps","menuProps","styles","children","STYLE_PROPS","ButtonSplitElement","as","qa","display","position","verticalAlign","ButtonSplit","HTMLDivElement","props","ref","$","_c","controlledActionKey","role","rest","isControlled","undefined","t0","uncontrolledKey","setUncontrolledKey","currentKey","t1","find","a","currentAction","t2","handleActionPress","t3","keys","newKey","handleSelectionChange","containerStyles","mergedStyles","t4","contextValue","isCustomMode","t5","icon","tooltip","onPress","_temp","map","_temp2","eventProps","displayName","pressed","textValue","itemProps"],"sources":["../../../../src/components/actions/ButtonSplit/ButtonSplit.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode, useMemo, useState } from 'react';\n\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { Button } from '../Button/Button';\nimport { Menu } from '../Menu/Menu';\n\nimport { ButtonSplitContext } from './context';\n\nimport type { BaseProps, ContainerStyleProps, Styles } from '@tenphi/tasty';\nimport type { CubeCollectionItemProps } from '../../CollectionItem';\nimport type { CubeButtonProps } from '../Button/Button';\nimport type { CubeMenuProps } from '../Menu/Menu';\n\nexport interface ButtonSplitAction\n extends Omit<\n CubeCollectionItemProps<object>,\n 'children' | 'onAction' | 'wrapper'\n > {\n key: string;\n label: ReactNode;\n}\n\nexport interface CubeButtonSplitProps extends BaseProps, ContainerStyleProps {\n /** Actions for strict mode. When provided, renders action + trigger buttons automatically. */\n actions?: ButtonSplitAction[];\n /** Currently selected action key (controlled). */\n actionKey?: string;\n /** Initially selected action key (uncontrolled). */\n defaultActionKey?: string;\n /** Called when the action button is pressed. Receives the current action key. */\n onAction?: (key: string) => void;\n /** Called when the selected action changes via the trigger menu. */\n onActionChange?: (key: string) => void;\n\n /** Button type applied to both action and trigger buttons in strict mode. */\n type?: CubeButtonProps['type'];\n /** Button theme applied to both action and trigger buttons in strict mode. */\n theme?: CubeButtonProps['theme'];\n /** Button size applied to both action and trigger buttons in strict mode. */\n size?: CubeButtonProps['size'];\n /** Disables both buttons in strict mode. */\n isDisabled?: boolean;\n\n /** Additional props for the action button in strict mode. */\n actionProps?: Partial<CubeButtonProps>;\n /** Additional props for the trigger button in strict mode. */\n triggerProps?: Partial<CubeButtonProps>;\n /** Additional props for the dropdown menu in strict mode. */\n menuProps?: Partial<CubeMenuProps<object>>;\n\n /** Custom styles for the wrapper element. */\n styles?: Styles;\n\n /** Custom mode: render arbitrary Button children. */\n children?: ReactNode;\n}\n\nconst STYLE_PROPS = CONTAINER_STYLES;\n\nconst ButtonSplitElement = tasty({\n as: 'div',\n qa: 'ButtonSplit',\n styles: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'bottom',\n },\n});\n\nexport const ButtonSplit = forwardRef<HTMLDivElement, CubeButtonSplitProps>(\n function ButtonSplit(props, ref) {\n const {\n actions,\n actionKey: controlledActionKey,\n defaultActionKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n actionProps,\n triggerProps,\n menuProps,\n styles,\n children,\n role,\n ...rest\n } = props;\n\n const isControlled = controlledActionKey !== undefined;\n const [uncontrolledKey, setUncontrolledKey] = useState(\n () => defaultActionKey ?? actions?.[0]?.key,\n );\n\n const currentKey = isControlled ? controlledActionKey : uncontrolledKey;\n\n const currentAction =\n actions?.find((a) => a.key === currentKey) ?? actions?.[0];\n\n const handleActionPress = () => {\n if (currentKey) {\n onAction?.(currentKey);\n }\n };\n\n const handleSelectionChange = (keys: string[]) => {\n const newKey = keys[0];\n\n if (newKey) {\n if (!isControlled) {\n setUncontrolledKey(newKey);\n }\n\n onActionChange?.(newKey);\n }\n };\n\n const containerStyles = extractStyles(rest, STYLE_PROPS);\n\n const mergedStyles: Styles = {\n ...containerStyles,\n ...styles,\n };\n\n const contextValue = useMemo(\n () => ({\n currentKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n }),\n [currentKey, onAction, onActionChange, type, theme, size, isDisabled],\n );\n\n const isCustomMode = children != null;\n\n return (\n <ButtonSplitContext.Provider value={contextValue}>\n <ButtonSplitElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n data-button-split\n styles={mergedStyles}\n qa={rest.qa}\n // Custom mode renders peer buttons with no visible group label, which\n // is exactly when a caller needs `aria-label` to land on something the\n // AT will announce. `role` comes from `BaseProps`, so a caller that\n // wants something else — including `presentation` to opt out — just\n // passes it. Strict mode keeps its previous shape.\n role={role ?? (isCustomMode ? 'group' : undefined)}\n >\n {isCustomMode ? (\n children\n ) : actions ? (\n <>\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n icon={currentAction?.icon}\n tooltip={currentAction?.tooltip}\n {...mergeProps(actionProps, { onPress: handleActionPress })}\n >\n {currentAction?.label}\n </Button>\n <Menu.Trigger placement=\"bottom end\">\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n aria-label=\"More options\"\n icon={({ pressed }) => (\n <DirectionIcon to={pressed ? 'up' : 'down'} />\n )}\n {...triggerProps}\n />\n <Menu\n selectionMode=\"single\"\n selectedKeys={currentKey ? [currentKey] : []}\n onSelectionChange={handleSelectionChange}\n {...menuProps}\n >\n {actions.map(({ key, label, textValue, ...itemProps }) => (\n <Menu.Item\n key={key}\n textValue={\n textValue ?? (typeof label === 'string' ? label : key)\n }\n {...itemProps}\n >\n {label}\n </Menu.Item>\n ))}\n </Menu>\n </Menu.Trigger>\n </>\n ) : null}\n </ButtonSplitElement>\n </ButtonSplitContext.Provider>\n );\n },\n);\n\nButtonSplit.displayName = 'ButtonSplit';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/actions/ButtonSplit/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
@@ -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","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 } 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={mergeProps(extractedStyles, styles)}\n >\n {/* Header */}\n {header && (\n <StyledHeader\n role=\"presentation\"\n data-size={size}\n // eslint-disable-next-line tasty/no-style-spread -- consumer `headerStyles` override the default borderless header\n styles={{ 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","FocusStrategy","BaseProps","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","Key","ReactElement","ReactNode","Ref","useRef","useState","useFilter","useMenu","Section","useTreeState","useI18n","LoadingIcon","mergeProps","extractStyles","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 } 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={mergeProps(extractedStyles, styles)}\n >\n {/* Header */}\n {header && (\n <StyledHeader\n role=\"presentation\"\n data-size={size}\n styles={{ 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":";;;;;;;;;;;;;;;;;;;;;AA8FA,SAAAiE,YAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAIE,MAAA,EAAAC,MAAcnD,SAAS;CAEvB,MAAA,EAAA4B,mBAAAwB,IAAAvB,aAAAwB,uBAAAvB,gBAAAE,QAAAsB,cAAApB,YAAAqB,IAAApB,mBAAAC,cAAAC,cAAAC,WAAAkB,IAAAjB,cAAAkB,IAAAjB,WAAAkB,IAAAjB,MAAAkB,IAAAC,IAAAC,QAAAnB,cAAAC,qBAAAC,mBAAAkB,QAAAC,QAAA,GAAAC,kBAwBIjB;CAAM,IAAAkB;AAAA,KAAAhB,EAAA,OAAAE,KAAAF,EAAA,OAAAG,IAAA;AAvBRa,OAAAb,OAAAc,SAAoBf,EAClB,iCACA,qBACD,GAHDC;AAGCH,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAgB;OAAAA,MAAAhB,EAAA;CAHD,MAAArB,oBAAAqC;CAGC,IAAAE;AAAA,KAAAlB,EAAA,OAAAE,KAAAF,EAAA,OAAAM,IAAA;AAIDY,OAAAZ,OAAAW,SAAaf,EAAE,qBAAqB,oBAAoB,GAAxDI;AAAwDN,IAAA,KAAAE;AAAAF,IAAA,KAAAM;AAAAN,IAAA,KAAAkB;OAAAA,MAAAlB,EAAA;CAAxD,MAAAf,aAAAiC;CAIA,MAAA7B,YAAAkB,OAAAU,SAAA,QAAAV;CACA,MAAAjB,eAAAkB,OAAAS,SAAA,OAAAT;CACA,MAAAjB,YAAAkB,OAAAQ,SAAA,OAAAR;CACA,MAAAjB,OAAAkB,OAAAO,SAAA,WAAAP;CAWF,MAAAS,SAAevF,aAAamE,IAAI;CAChC,MAAAqB,iBAAuB3E,OAAyB,KAAK;CACrD,MAAA4E,eAAqBhE,gBAAgB;CAwBrC,MAAA8E,gBAAsBlF,aAAWoE,cAAcN,eAAe;EAAAtB,cArBrCA,eAAA,IAAmB8B,IAAI9B,aAAyB,GAAhDwB;EAsBOvB,qBArBAA,sBAAA,IACxB6B,IAAI7B,oBACC,GAFmBuB;EAsBctB,mBAlBhBA,qBAAAC,SAAA;AAExB,OAAIA,SAAS,MAKXD,mBAHgBgC,MAAKC,KAAMC,UAASC,WAAWC,SAAU,CAAC,CAAAC,IACxDC,MACD,CACyB;YACjBrC,gBAAgB2B,IACzB5B,mBAAkBgC,MAAKC,KAAMhC,KAAK,CAAAoC,IAAKE,OAAqB,CAAC;OAE7DvC,mBAAkB,EAAE,CAAC;MAXCsB;EAoB7B,CAAC;CAGF,MAAA,CAAAmB,qBAAAC,0BAAsD3F,SAAS,GAAG;CAClE,MAAAkC,cAAoBwB,yBAAAgC;CAA6C,IAAAE;AAAA,KAAAtC,EAAA,OAAAI,yBAAAJ,EAAA,OAAAnB,gBAAA;AAEtCyD,QAAAxD,UAAA;AACzB,OAAIsB,0BAA0Ba,OAC5BoB,wBAAuBvD,MAAM;AAE/BD,oBAAiBC,MAAM;;AACxBkB,IAAA,KAAAI;AAAAJ,IAAA,KAAAnB;AAAAmB,IAAA,KAAAsC;OAAAA,MAAAtC,EAAA;CALD,MAAAuC,qBAA2BD;CAKzB,IAAAE;AAAA,KAAAxC,EAAA,OAAAyC,OAAAC,IAAA,4BAAA,EAAA;AAG6BF,OAAA,EAAAG,aAAe,QAAQ;AAAA3C,IAAA,KAAAwC;OAAAA,MAAAxC,EAAA;CAAtD,MAAA,EAAA4C,aAAqBjG,UAAU6F,GAAwB;CACV,IAAAK;AAAA,KAAA7C,EAAA,QAAAV,cAAA;AAGtBuD,SAAAzE,WAAAY,YAAA8D,SAAA;AAMrB,OAAIA,MAAIxE,WAAY,QACX;AAIT,OAAI,CAACgB,aAAY,QACR;GAIT,MAAAyD,cAAoB/D,WAAUgE,MACrB,CAAAC,aACO,CAAAC,MACP,MAAM,CAAAnE,OACLoE,OAA0B;AAGpC,OAAIJ,YAAWK,WAAY,EAAC,QACnB;GAIT,MAAAC,kBAAkC,EAAE;AAGpCA,mBAAeC,KAAMlF,UAAS6E,aAAc,CAAC;AAG7C,OAAIH,MAAIzE,YAAcsD,MAAK4B,QAAST,KAAIzE,SAAU,CAChDgF,iBAAeC,KAAK,GACfR,KAAIzE,SAAS2D,IAAKwB,OACvB,CAAC;AACF,UAGMT,YAAWU,OAAOC,eACvBL,gBAAeM,MAAMC,SAAUA,KAAIC,SAAUH,WAAW,CAC1D,CAAC;;AACF1D,IAAA,MAAAV;AAAAU,IAAA,MAAA6C;OAAAA,OAAA7C,EAAA;CA5CD,MAAA8D,iBAAuBjB;CA4CrB,IAAAkB;AAAA,KAAA/D,EAAA,QAAA8D,kBAAA9D,EAAA,QAAApB,aAAA;AAGuBmF,SAAAC,UAAA;GACvB,MAAAC,OAAarF,YAAWoE,MAAO;AAG/B,OAAI,CAACiB,KAAI,QACAD;AAUT,OANoBC,KAAIhB,aACR,CAAAC,MACP,MAAM,CAAAnE,OACLoF,OAA0B,CAGrBf,WAAY,EAAC,QACnBY;GAIT,MAAAI,eAAoBC,SAAA;IAClB,MAAAC,SAAsB,EAAE;AAExB,SAAK,MAAAC,QAAcF,KACjB,KAAIE,KAAIC,SAAU,WAAS;KACzB,MAAAC,mBAAyBL,YAAYG,KAAIG,WAAY;AAErD,SAAID,iBAAgBrB,OAClBkB,QAAMhB,KAAM;MAAA,GACPiB;MAAIG,YACKD;MACb,CAAC;eAKAX,eAFSS,KAAInG,aAAcwG,OAAOL,KAAIM,YAAJ,GAAoB,EAEjCZ,MAAMM,KAAIzE,MAAO,CACxCwE,QAAMhB,KAAMiB,KAAK;AAGtB,WAEMD;;AACP,UAEKF,YAAYJ,MAAM;;AAC1BhE,IAAA,MAAA8D;AAAA9D,IAAA,MAAApB;AAAAoB,IAAA,MAAA+D;OAAAA,OAAA/D,EAAA;CA9CD,MAAA8E,mBAAyBf;CAuDzB,MAAAlC,YAAkB/E,aANK;EAAA,GAClBqF;EAAapD,QACR+F;EAAgBE,uBACD;EACxB,CAE6C;CAE9C,MAAAC,kBAAwB,CAAA,GAAIpD,UAASC,WAAY;AAC7BmD,iBAAetB,KAAMuB,OAAkC;CAG3E,MAAA,CAAAC,YAAAC,iBAAoChJ,MAAKM,SAA4B,KAAK;CAC1E,MAAA2I,gBAAsB5I,OAAyB,KAAK;CAGpD,MAAA6I,0BAAgC,CAAA,GAAIR,iBAAiBG,gBAAgB,CAAC;CAEtE,MAAAM,mBAAyBD,wBAAuBlC,SAAU;CAC1D,MAAAoC,kBAAwBF,wBAAuB3B,KAC7C8B,OACD;CAGD,MAAAC,gCAAgC;EAC9B,MAAA,EAAAC,qBAA6B9D;EAE7B,MAAA+D,SAAcC,UAAA;AACZ,QAAK,MAAAC,UAAcD,MACjB,KAAItB,QAAIC,SAAW,WAAS;IAC1B,MAAAuB,cAAoBH,MAAMjE,MAAKC,KAAM2C,OAAIG,cAAJ,EAAqB,CAAC,CAAC;AAC5D,QAAIqB,eAAe,KAAI,QAASA;cAEhCxB,QAAIC,SAAW,UAAf,CACCmB,iBAAgBK,WAAYzB,OAAIhG,IAAK,CAAA,QAE/BgG,OAAIhG;AAEd,UACM;;AACP,SAEKqH,MAAMN,wBAAwB;;CAIvC,MAAAW,UAAgBxJ,OAAyB,KAAK;CAG9C,MAAA,EAAAyJ,cAAsBtJ,QACpB;EAAA,GACKuF;EAAa,cACF;EAAsBpD,QAC5B+F;EAAgBE,uBACD;EACxB,EACDnD,WACAoE,QACD;CAGD,MAAAE,gBAAyC,EAAE;CAC3C,IAAAC,iBAAqB;AAErBd,yBAAuBe,SAASC,WAAA;AAC9B,MAAIxD,OAAI0B,SAAU,WAAS;AACzB,OAAI,CAAC4B,eACHD,eAAa7C,KACX,oBAAC;IAEM,MAAA;IACY,oBAAA;MAFZ,WAAWsB,OAAO9B,OAAIvE,IAAK,GAIpC,CAAC;AAGH4H,iBAAa7C,KACX,oBAAC;IAEOR,MAAAA;IACCjB,OAAAA;IACC,QAAAM,cAAaoE;IACT,YAAApE,cAAaqE;IACV,eAAArE,cAAasE;IACtBjH;MANDsD,OAAIvE,IAQb,CAAC;AAED6H,oBAAiBA;AAAH;;EAIhB,IAAAM,WACE,oBAAC;GAEO5D,MAAAA;GACCjB,OAAAA;GACC,QAAAM,cAAaqE;GACfhH;GACI,UAAAsD,OAAI6D;KALT7D,OAAIvE,IAMT;AAIJ,MAAIuE,OAAIhD,MAAM8G,QACZF,YAAW5D,OAAIhD,MAAM8G,QAASF,SAAS;AAIzCP,gBAAa7C,KAAMlH,MAAKyK,aAAcH,UAAU,EAAAnI,KAAOuE,OAAIvE,KAAM,CAAC,CAAC;GACnE;CAAA,IAAAuI;CAAA,IAAAC;AAAA,KAAA/G,EAAA,QAAAT,WAAA;AAGcuH,cAAA;AACd,OAAIvH,aAAa6B,eAAc4F,SAAQ;IAGrC,MAAAC,YAAkBC,iBAAW;AAC3B,SAAI9F,eAAc4F,QAChB5F,gBAAc4F,QAAQG,OAAQ;OAE/B,EAAE;AAAC,iBAEOC,aAAaH,UAAU;;;AAErCF,QAAA,CAACxH,UAAU;AAAAS,IAAA,MAAAT;AAAAS,IAAA,MAAA8G;AAAA9G,IAAA,MAAA+G;QAAA;AAAAD,QAAA9G,EAAA;AAAA+G,QAAA/G,EAAA;;AAZd5D,OAAKiL,UAAWP,KAYbC,IAAY;CAAA,IAAAO;CAAA,IAAAC;AAAA,KAAAvH,EAAA,QAAAT,aAAAS,EAAA,QAAAqB,aAAA9B,WAAA;AAGC+H,cAAA;AAEd,OAAI/H,aAAa8B,aAAY9B,aAAc6B,eAAc4F,SAAQ;IAE/D,MAAAQ,cAAkBN,iBAAW;AAC3B,SAAI9F,eAAc4F,QAChB5F,gBAAc4F,QAAQG,OAAQ;OAE/B,GAAG;AAAC,iBAEMC,aAAaH,YAAU;;;AAErCM,QAAA,CAAChI,WAAW8B,aAAY9B,UAAW;AAAAS,IAAA,MAAAT;AAAAS,IAAA,MAAAqB,aAAA9B;AAAAS,IAAA,MAAAsH;AAAAtH,IAAA,MAAAuH;QAAA;AAAAD,QAAAtH,EAAA;AAAAuH,QAAAvH,EAAA;;AAZtC5D,OAAKiL,UAAWC,KAYbC,IAAoC;CAGvC,MAAAE,qBAA2BhL,OAAe,GAAG;CAAC,IAAAiL;AAAA,KAAA1H,EAAA,QAAA0F,2BAAA1F,EAAA,QAAAuF,oBAAAvF,EAAA,QAAApB,eAAAoB,EAAA,QAAAoF,iBAAApF,EAAA,QAAA6B,WAAA;AAG9B6F,cAAA;GACd,MAAAC,qBAA2B/I,YAAWoE,MAAO;AAI7C,OAAI2E,uBAHoBF,mBAAkBT,WAGIW,uBAAuB,IAAE;IACrE,MAAAE,qBAA2BnC,yBAAyB;AAEpD,QAAImC,sBAAAtC,kBAAsC;AAExC1D,eAAS8D,iBAAiBP,cAAeyC,mBAAmB;AAC5DzC,mBAAcyC,mBAAmB;AACjCxC,mBAAa2B,UAAWa;WAAH;AAGrBhG,eAAS8D,iBAAiBP,cAAe,KAAK;AAC9CA,mBAAc,KAAK;AACnBC,mBAAa2B,UAAW;;;AAK5BS,sBAAkBT,UAAWW;;AAC9B3H,IAAA,MAAA0F;AAAA1F,IAAA,MAAAuF;AAAAvF,IAAA,MAAApB;AAAAoB,IAAA,MAAAoF;AAAApF,IAAA,MAAA6B;AAAA7B,IAAA,MAAA0H;OAAAA,OAAA1H,EAAA;CAAA,IAAA8H;AAAA,KAAA9H,EAAA,QAAA0F,2BAAA1F,EAAA,QAAAuF,oBAAAvF,EAAA,QAAApB,aAAA;AAAEkJ,QAAA;GAAClJ;GAAa8G;GAAyBH;GAAiB;AAAAvF,IAAA,MAAA0F;AAAA1F,IAAA,MAAAuF;AAAAvF,IAAA,MAAApB;AAAAoB,IAAA,MAAA8H;OAAAA,OAAA9H,EAAA;AAvB3D5D,OAAKiL,UAAWK,KAuBbI,IAAyD;CAG5D,MAAAC,kBAAwB7K,cAAc4C,OAAO9D,iBAAiB;CAAC,IAAAgM;AAAA,KAAAhI,EAAA,QAAApB,aAAA;AAGzCoJ,QAAApJ,YAAWoE,MAAO;AAAAhD,IAAA,MAAApB;AAAAoB,IAAA,MAAAgI;OAAAA,OAAAhI,EAAA;CACxC,MAAAkI,iBADsBF,IAAkB5E,SAAU,KAC3B,CAAkBmC,oBAAlB,CAAuClG;AAG9DxD,YAAWwF,cAAc4E,QAAQ;CAKvB,MAAAkC,MAAA,CAAC,CAACrH;CACF,MAAAsH,MAAA,CAAC,CAACvH;CACD,MAAAwH,MAAAlG,cAAamG,MAAcC;CAC9B,MAAAC,MAAArG,cAAamG,MAAWG;CAAA,IAAAC;AAAA,KAAA1I,EAAA,QAAAmI,OAAAnI,EAAA,QAAAoI,OAAApI,EAAA,QAAAqI,OAAArI,EAAA,QAAAwI,OAAAxI,EAAA,QAAAwF,iBAAA;AALnBkD,QAAA;GAAAC,UACDnD;GAAe1E,QACjBqH;GAAQtH,QACRuH;GAAQG,SACPF;GAA2BI,MAC9BD;GACP;AAAAxI,IAAA,MAAAmI;AAAAnI,IAAA,MAAAoI;AAAApI,IAAA,MAAAqI;AAAArI,IAAA,MAAAwI;AAAAxI,IAAA,MAAAwF;AAAAxF,IAAA,MAAA0I;OAAAA,OAAA1I,EAAA;CAND,MAAAsI,OAAaI;CASV,MAAAE,KAAA9K;CAAiB,IAAA+K;AAAA,KAAA7I,EAAA,QAAAF,OAAA;AACX+I,QAAA3M,gBAAgB4D,MAAM;AAAAE,IAAA,MAAAF;AAAAE,IAAA,MAAA6I;OAAAA,OAAA7I,EAAA;CAAtB,MAAA8I,MAAAD;CAED,MAAAG,MAAArI,MAAA;CAGI,MAAAsI,MAAAhM,aAAW8K,iBAAiBnH,OAAO;CAAA,IAAAsI;AAAA,KAAAlJ,EAAA,QAAAa,UAAAb,EAAA,QAAAb,gBAAAa,EAAA,QAAAR,MAAA;AAG1C0J,QAAArI,UACC,oBAAC;GACM,MAAA;GACMrB,aAAAA;GACH,QAAA;IAAA2J,QAAU;IAAM,GAAKhK;IAAa;aAEzC0B;IAEJ;AAAAb,IAAA,MAAAa;AAAAb,IAAA,MAAAb;AAAAa,IAAA,MAAAR;AAAAQ,IAAA,MAAAkJ;OAAAA,OAAAlJ,EAAA;CAUgB,MAAAoJ,MAAA,GAAGzI,MAAA,cAAmB;CAKnC,MAAA0I,MAAAlE,cAAc,OAAd,GACOxE,MAAA,cAAmB,eAAgBwE,eAD1ClE;CAEa,IAAAqI;AAAA,KAAAtJ,EAAA,QAAAuC,oBAAA;AAEL+G,SAAAC,MAAOhH,mBAAmBgH,EAACC,OAAO1K,MAAO;AAAAkB,IAAA,MAAAuC;AAAAvC,IAAA,MAAAsJ;OAAAA,OAAAtJ,EAAA;CACxC,MAAAyJ,OAAAC,QAAA;AACT,MAAIH,IAAChL,QAAS,eAAegL,IAAChL,QAAS,WAAS;AAC9CgL,OAACI,gBAAiB;GAElB,MAAAC,cAAoBL,IAAChL,QAAS;GAC9B,MAAA,EAAAoH,kBAAAkE,uBAA6BhI;GAE7B,MAAAiI,aACEzE,cAAa2B,WAAYrB,mBAAgBR;GAG3C,MAAA4E,2BAA2B;IACzB,MAAAC,SAAoB,EAAE;IAEtB,MAAAC,WAAcC,YAAA;AACZ,UAAK,MAAAC,UAActE,QACjB,KAAItB,QAAIC,SAAW,UACjBoB,SAAMjE,MAAKC,KAAM2C,OAAIG,cAAJ,EAAqB,CAAC,CAAC;cAC/BH,QAAIC,SAAW,OACxB5E,QAAI0D,KAAMiB,OAAIhG,IAAK;;AAKzBqH,YAAMN,wBAAwB;AAAA,WACvB1F;;GAIT,MAAAwK,yBAA8BC,cAAAC,WAAAC,gBAAA;IAK5B,MAAAC,YAAkBF,cAAc,YAAd,IAAA;AAElB,SAAA,IAAAG,IACUJ,eAAeG,WACvBC,KAAK,KAAKA,IAAIF,YAAWnH,QAF3BqH,IAGEA,IAAKD,WAMN;KAJC,MAAAE,QAAYH,YAAYE;AACxB,SAAI,CAAC9E,mBAAgBK,WAAYzH,MAAI,CAAA,QAC5BA;;AAEV,WAEM;;GAIT,MAAAoM,8BAAmCC,aAAAC,kBAAA;IAIjC,MAAAC,cACER,gBAAc,YAAdO,gBAEI,CAAA,GAAIN,cAAY,CAAAQ,SAAU;AAEhC,SAAK,MAAAC,SAAaF,YAChB,KAAI,CAACnF,mBAAgBK,WAAYzH,MAAI,CAAA,QAC5BA;AAEV,WAEM;;GAGT,MAAA0M,gBAAoBlB,oBAAoB;AAExC,OAAIQ,cAAWnH,WAAY,EAAC;GAIxB8H,IAAAA;GACJ,MAAAC,cAAkBvB,cAAA,YAAA;AAElB,OAAIE,cAAc,KAEhBoB,WAAUP,2BAA2BL,aAAWC,cAAY;QAArD;IAGP,MAAAa,iBAAqBb,cAAWc,QAASvB,WAAW;AAEpD,QAAIO,mBAAiB,GAEnBa,WAAUP,2BAA2BL,aAAWC,cAAY;SAArD;AAGPW,eAAUd,sBACRC,gBACAC,aACAC,cACD;AAGD,SAAIW,WAAW,KACbA,WAAUP,2BAA2BL,aAAWC,cAAY;;;AAKlE,OAAIW,WAAW,MAAI;AACjBvF,uBAAgBP,cAAe8F,QAAQ;AACvC9F,kBAAc8F,QAAQ;AACtB7F,kBAAa2B,UAAWkE;;aAG1B3B,IAAChL,QAAS,WACTgL,IAAChL,QAAS,OAAV,CAAkBK,YAAWoE,MAAQ,EAAA;GAEtC,MAAAsI,oBACEnG,cAActD,UAAS8D,iBAAiBR;AAC1C,OAAImG,qBAAqB,MAAI;AAC3B/B,QAACI,gBAAiB;AAIlB,QAAI9H,UAAS8D,iBAAiB4F,kBAAmB,OAC/C1J,WAAS8D,iBAAiB6F,OAAQF,mBAAmB/B,IAAE;SAAA;KAGvD,MAAAkC,SAAa5J,UAASC,WAAW4J,QAASJ,kBAAkB;AAC5D,SAAI/G,QAAI;MAEN,MAAAoC,WAAkBxE,cAAoBwE;AACtC,UAAIA,SACFA,UAAS2E,kBAAkB;AAG7B,UAAI/G,OAAIzE,OAAgB6G,SACtBpC,QAAIzE,MAAM6G,SAAU2E,kBAAkB;;;IAM5C,MAAA,EAAAK,SAAAC,kBAAmCvK;AACnC,QAAIsK,WAAWC,kBAAkB,MAC/BD,UAAS;;aAGJpC,IAAChL,QAAS,UACnB;OAAIK,aAAW;AACb2K,QAACI,gBAAiB;AAClBpH,uBAAmB,GAAG;;;;CAG3B,IAAAsJ;AAAA,KAAA7L,EAAA,QAAAd,qBAAAc,EAAA,QAAArB,qBAAAqB,EAAA,QAAApB,eAAAoB,EAAA,QAAAR,QAAAQ,EAAA,QAAAoJ,OAAApJ,EAAA,QAAAqJ,OAAArJ,EAAA,QAAAsJ,OAAAtJ,EAAA,QAAAyJ,KAAA;AAtKHoC,QAAA,oBAAC;GACMzK,KAAAA;GACA,MAAA;GACQzC,aAAAA;GACNC,OAAAA;GACCM,QAAAA;GACGM,aAAAA;GACI,iBAAA4J;GACV,MAAA;GACS,iBAAA;GACA,iBAAA;GAEZ,yBAAAC;GAIQ,UAAAC;GACC,WAAAG;IAsJX;AAAAzJ,IAAA,MAAAd;AAAAc,IAAA,MAAArB;AAAAqB,IAAA,MAAApB;AAAAoB,IAAA,MAAAR;AAAAQ,IAAA,MAAAoJ;AAAApJ,IAAA,MAAAqJ;AAAArJ,IAAA,MAAAsJ;AAAAtJ,IAAA,MAAAyJ;AAAAzJ,IAAA,MAAA6L;OAAAA,OAAA7L,EAAA;CAAA,IAAA8L;AAAA,KAAA9L,EAAA,QAAAX,WAAA;AAGDyM,QAAAzM,aACC,oBAAC,kCACC,oBAAC;GACM,MAAA;GACM,cAAA;GACE,eAAA;IAEjB,GACD;AAAAW,IAAA,MAAAX;AAAAW,IAAA,MAAA8L;OAAAA,OAAA9L,EAAA;CAGA,MAAA+L,MAAA,CAAC1M,aAAD,CAAe6I,kBACd,oBAAC;EAAU,GACLhC;EACCD,KAAAA;EACD,IAAA,GAAGtF,MAAA,cAAmB;EACf,cAAA;EACR,IAAA;EACQnB,aAAAA;EACL8I;EACE,QAAA;GAAAa,QACE;GAAM6C,WACH;GAAMC,QACT;GAACC,SACA;GACX;YAEC/F;GAEJ;CAAA,IAAAgG;AAAA,KAAAnM,EAAA,QAAAf,cAAAe,EAAA,QAAAX,aAAAW,EAAA,QAAAkI,gBAAA;AAGAiE,QAAA,CAAC9M,aAAD6I,kBACC,oBAAC,8BAAkBjJ,aACpB;AAAAe,IAAA,MAAAf;AAAAe,IAAA,MAAAX;AAAAW,IAAA,MAAAkI;AAAAlI,IAAA,MAAAmM;OAAAA,OAAAnM,EAAA;CAAA,IAAAoM;AAAA,KAAApM,EAAA,QAAAc,UAAAd,EAAA,QAAAZ,gBAAAY,EAAA,QAAAR,MAAA;AAGA4M,QAAAtL,UACC,oBAAC;GACM,MAAA;GACMtB,aAAAA;GACHJ,QAAAA;aAEP0B;IAEJ;AAAAd,IAAA,MAAAc;AAAAd,IAAA,MAAAZ;AAAAY,IAAA,MAAAR;AAAAQ,IAAA,MAAAoM;OAAAA,OAAApM,EAAA;CAAA,IAAAqM;AAAA,KAAArM,EAAA,QAAA4I,MAAA5I,EAAA,QAAAmB,UAAAnB,EAAA,QAAAsI,QAAAtI,EAAA,QAAAR,QAAAQ,EAAA,QAAA8I,OAAA9I,EAAA,QAAAgJ,OAAAhJ,EAAA,QAAAiJ,OAAAjJ,EAAA,QAAAkJ,OAAAlJ,EAAA,QAAA6L,OAAA7L,EAAA,QAAA8L,OAAA9L,EAAA,QAAA+L,OAAA/L,EAAA,QAAAmM,OAAAnM,EAAA,QAAAoM,KAAA;AA3OHC,QAAA,qBAAC;GAAiB,GACXvD;GACA3H,KAAAA;GACD,IAAA6H;GACOxJ,aAAAA;GACL8I;GACE,QAAAW;;IAGPC;IAWD2C;IA0KCC;IAWAC;IAqBAI;IAKAC;;IASiB;AAAApM,IAAA,MAAA4I;AAAA5I,IAAA,MAAAmB;AAAAnB,IAAA,MAAAsI;AAAAtI,IAAA,MAAAR;AAAAQ,IAAA,MAAA8I;AAAA9I,IAAA,MAAAgJ;AAAAhJ,IAAA,MAAAiJ;AAAAjJ,IAAA,MAAAkJ;AAAAlJ,IAAA,MAAA6L;AAAA7L,IAAA,MAAA8L;AAAA9L,IAAA,MAAA+L;AAAA/L,IAAA,MAAAmM;AAAAnM,IAAA,MAAAoM;AAAApM,IAAA,MAAAqM;OAAAA,OAAArM,EAAA;AAAA,QA5OpBqM;;AA/WJ,SAAA5G,OAAA6G,QAAA;AAAA,QAoMcxJ,OAAI0B,SAAU;;AApM5B,SAAAU,OAAAqH,QAAA;AAAA,QAyLqDzJ,OAAI0B,SAAU;;AAzLnE,SAAAL,OAAAqI,QAAA;AAAA,QA2IwBC,OAAIrJ,SAAU;;AA3ItC,SAAAI,OAAAkJ,SAAA;AAAA,QAoHkDA,QAAOzJ,aAAc;;AApHvE,SAAAE,OAAAsJ,MAAA;AAAA,QAoGwBA,KAAIrJ,SAAU;;AApGtC,SAAAlB,OAAAyK,OAAA;AAAA,QAmD0D/H,OAAOrG,MAAI;;AAnDrE,SAAA0D,MAAA1D,KAAA;AAAA,QA+C0BqG,OAAOrG,IAAI;;AAijBrC,MAAMqO,eAAexQ,MAAMyQ,WAAWhN,YAAY;AAMlD,MAAMmN,gBAAgBC,OAAOC,OAAON,cAAc;CAChDO,SAAS1P;CACTL;CACAP;CACAuQ,aAAa;CACd,CAAC"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/actions/CommandMenu/styled.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-84c1a2c | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-afff9bd | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { CURRENT_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 } from "../../../data/item-themes.js";