@nuxt/ui 4.0.0-alpha.1 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/.nuxt/ui/content/content-navigation.ts +2 -1
  2. package/.nuxt/ui/marquee.ts +1 -1
  3. package/.nuxt/ui/progress.ts +3 -3
  4. package/.nuxt/ui/prose/code-tree.ts +1 -1
  5. package/.nuxt/ui/prose/img.ts +1 -1
  6. package/.nuxt/ui/tree.ts +1 -1
  7. package/README.md +14 -1
  8. package/dist/module.d.mts +6 -6
  9. package/dist/module.json +2 -2
  10. package/dist/module.mjs +8 -6
  11. package/dist/runtime/components/Accordion.d.vue.ts +79 -0
  12. package/dist/runtime/components/Accordion.vue +3 -3
  13. package/dist/runtime/components/Accordion.vue.d.ts +2 -2
  14. package/dist/runtime/components/Alert.d.vue.ts +81 -0
  15. package/dist/runtime/components/App.d.vue.ts +25 -0
  16. package/dist/runtime/components/AuthForm.d.vue.ts +128 -0
  17. package/dist/runtime/components/AuthForm.vue.d.ts +39 -1
  18. package/dist/runtime/components/Avatar.d.vue.ts +41 -0
  19. package/dist/runtime/components/AvatarGroup.d.vue.ts +31 -0
  20. package/dist/runtime/components/Badge.d.vue.ts +43 -0
  21. package/dist/runtime/components/Banner.d.vue.ts +72 -0
  22. package/dist/runtime/components/Banner.vue +1 -1
  23. package/dist/runtime/components/BlogPost.d.vue.ts +60 -0
  24. package/dist/runtime/components/BlogPosts.d.vue.ts +31 -0
  25. package/dist/runtime/components/Breadcrumb.d.vue.ts +67 -0
  26. package/dist/runtime/components/Breadcrumb.vue +1 -1
  27. package/dist/runtime/components/Breadcrumb.vue.d.ts +2 -2
  28. package/dist/runtime/components/Button.d.vue.ts +44 -0
  29. package/dist/runtime/components/Calendar.d.vue.ts +112 -0
  30. package/dist/runtime/components/Card.d.vue.ts +29 -0
  31. package/dist/runtime/components/Carousel.d.vue.ts +127 -0
  32. package/dist/runtime/components/Carousel.vue.d.ts +10 -10
  33. package/dist/runtime/components/ChangelogVersion.d.vue.ts +59 -0
  34. package/dist/runtime/components/ChangelogVersions.d.vue.ts +78 -0
  35. package/dist/runtime/components/ChangelogVersions.vue +2 -2
  36. package/dist/runtime/components/ChatMessage.d.vue.ts +67 -0
  37. package/dist/runtime/components/ChatMessages.d.vue.ts +83 -0
  38. package/dist/runtime/components/ChatMessages.vue +6 -6
  39. package/dist/runtime/components/ChatPalette.d.vue.ts +24 -0
  40. package/dist/runtime/components/ChatPrompt.d.vue.ts +61 -0
  41. package/dist/runtime/components/ChatPrompt.vue +2 -2
  42. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +100 -0
  43. package/dist/runtime/components/Checkbox.d.vue.ts +74 -0
  44. package/dist/runtime/components/CheckboxGroup.d.vue.ts +89 -0
  45. package/dist/runtime/components/CheckboxGroup.vue +8 -8
  46. package/dist/runtime/components/CheckboxGroup.vue.d.ts +20 -16
  47. package/dist/runtime/components/Chip.d.vue.ts +57 -0
  48. package/dist/runtime/components/Collapsible.d.vue.ts +35 -0
  49. package/dist/runtime/components/ColorPicker.d.vue.ts +48 -0
  50. package/dist/runtime/components/CommandPalette.d.vue.ts +193 -0
  51. package/dist/runtime/components/CommandPalette.vue +5 -4
  52. package/dist/runtime/components/CommandPalette.vue.d.ts +2 -1
  53. package/dist/runtime/components/Container.d.vue.ts +18 -0
  54. package/dist/runtime/components/ContextMenu.d.vue.ts +110 -0
  55. package/dist/runtime/components/ContextMenu.vue +2 -2
  56. package/dist/runtime/components/ContextMenu.vue.d.ts +2 -2
  57. package/dist/runtime/components/ContextMenuContent.d.vue.ts +50 -0
  58. package/dist/runtime/components/ContextMenuContent.vue +2 -2
  59. package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -2
  60. package/dist/runtime/components/DashboardGroup.d.vue.ts +24 -0
  61. package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -1
  62. package/dist/runtime/components/DashboardNavbar.d.vue.ts +52 -0
  63. package/dist/runtime/components/DashboardPanel.d.vue.ts +30 -0
  64. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +18 -0
  65. package/dist/runtime/components/DashboardSearch.d.vue.ts +91 -0
  66. package/dist/runtime/components/DashboardSearch.vue +2 -2
  67. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +59 -0
  68. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  69. package/dist/runtime/components/DashboardSidebar.d.vue.ts +75 -0
  70. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +19 -0
  71. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +19 -0
  72. package/dist/runtime/components/DashboardToolbar.d.vue.ts +25 -0
  73. package/dist/runtime/components/Drawer.d.vue.ts +84 -0
  74. package/dist/runtime/components/DropdownMenu.d.vue.ts +120 -0
  75. package/dist/runtime/components/DropdownMenu.vue +2 -2
  76. package/dist/runtime/components/DropdownMenu.vue.d.ts +2 -2
  77. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +56 -0
  78. package/dist/runtime/components/DropdownMenuContent.vue +2 -2
  79. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +2 -2
  80. package/dist/runtime/components/Error.d.vue.ts +47 -0
  81. package/dist/runtime/components/FieldGroup.d.vue.ts +34 -0
  82. package/dist/runtime/components/FileUpload.d.vue.ts +166 -0
  83. package/dist/runtime/components/FileUpload.vue +1 -0
  84. package/dist/runtime/components/Footer.d.vue.ts +29 -0
  85. package/dist/runtime/components/FooterColumns.d.vue.ts +57 -0
  86. package/dist/runtime/components/Form.d.vue.ts +114 -0
  87. package/dist/runtime/components/Form.vue +144 -60
  88. package/dist/runtime/components/Form.vue.d.ts +54 -11
  89. package/dist/runtime/components/FormField.d.vue.ts +61 -0
  90. package/dist/runtime/components/FormField.vue +9 -3
  91. package/dist/runtime/components/Header.d.vue.ts +68 -0
  92. package/dist/runtime/components/Icon.d.vue.ts +8 -0
  93. package/dist/runtime/components/Input.d.vue.ts +74 -0
  94. package/dist/runtime/components/Input.vue.d.ts +4 -3
  95. package/dist/runtime/components/InputMenu.d.vue.ts +330 -0
  96. package/dist/runtime/components/InputMenu.vue +2 -2
  97. package/dist/runtime/components/InputMenu.vue.d.ts +4 -4
  98. package/dist/runtime/components/InputNumber.d.vue.ts +188 -0
  99. package/dist/runtime/components/InputNumber.vue +2 -2
  100. package/dist/runtime/components/InputNumber.vue.d.ts +0 -2
  101. package/dist/runtime/components/InputTags.d.vue.ts +186 -0
  102. package/dist/runtime/components/InputTags.vue +2 -2
  103. package/dist/runtime/components/Kbd.d.vue.ts +38 -0
  104. package/dist/runtime/components/Link.d.vue.ts +91 -0
  105. package/dist/runtime/components/LinkBase.d.vue.ts +25 -0
  106. package/dist/runtime/components/Main.d.vue.ts +20 -0
  107. package/dist/runtime/components/Marquee.d.vue.ts +32 -0
  108. package/dist/runtime/components/Marquee.vue +1 -1
  109. package/dist/runtime/components/Modal.d.vue.ts +107 -0
  110. package/dist/runtime/components/NavigationMenu.d.vue.ts +171 -0
  111. package/dist/runtime/components/NavigationMenu.vue.d.ts +2 -2
  112. package/dist/runtime/components/OverlayProvider.d.vue.ts +2 -0
  113. package/dist/runtime/components/Page.d.vue.ts +25 -0
  114. package/dist/runtime/components/PageAnchors.d.vue.ts +47 -0
  115. package/dist/runtime/components/PageAside.d.vue.ts +27 -0
  116. package/dist/runtime/components/PageBody.d.vue.ts +18 -0
  117. package/dist/runtime/components/PageCTA.d.vue.ts +56 -0
  118. package/dist/runtime/components/PageCard.d.vue.ts +72 -0
  119. package/dist/runtime/components/PageColumns.d.vue.ts +18 -0
  120. package/dist/runtime/components/PageFeature.d.vue.ts +44 -0
  121. package/dist/runtime/components/PageGrid.d.vue.ts +18 -0
  122. package/dist/runtime/components/PageHeader.d.vue.ts +36 -0
  123. package/dist/runtime/components/PageHero.d.vue.ts +53 -0
  124. package/dist/runtime/components/PageLinks.d.vue.ts +49 -0
  125. package/dist/runtime/components/PageList.d.vue.ts +21 -0
  126. package/dist/runtime/components/PageLogos.d.vue.ts +33 -0
  127. package/dist/runtime/components/PageSection.d.vue.ts +68 -0
  128. package/dist/runtime/components/Pagination.d.vue.ts +118 -0
  129. package/dist/runtime/components/PinInput.d.vue.ts +60 -0
  130. package/dist/runtime/components/Popover.d.vue.ts +71 -0
  131. package/dist/runtime/components/PricingPlan.d.vue.ts +112 -0
  132. package/dist/runtime/components/PricingPlans.d.vue.ts +44 -0
  133. package/dist/runtime/components/PricingTable.d.vue.ts +105 -0
  134. package/dist/runtime/components/Progress.d.vue.ts +66 -0
  135. package/dist/runtime/components/Progress.vue +2 -3
  136. package/dist/runtime/components/RadioGroup.d.vue.ts +99 -0
  137. package/dist/runtime/components/RadioGroup.vue +13 -11
  138. package/dist/runtime/components/RadioGroup.vue.d.ts +17 -13
  139. package/dist/runtime/components/Select.d.vue.ts +254 -0
  140. package/dist/runtime/components/Select.vue +3 -3
  141. package/dist/runtime/components/Select.vue.d.ts +5 -5
  142. package/dist/runtime/components/SelectMenu.d.vue.ts +303 -0
  143. package/dist/runtime/components/SelectMenu.vue.d.ts +4 -4
  144. package/dist/runtime/components/Separator.d.vue.ts +54 -0
  145. package/dist/runtime/components/Skeleton.d.vue.ts +17 -0
  146. package/dist/runtime/components/Slideover.d.vue.ts +108 -0
  147. package/dist/runtime/components/Slider.d.vue.ts +57 -0
  148. package/dist/runtime/components/Stepper.d.vue.ts +87 -0
  149. package/dist/runtime/components/Switch.d.vue.ts +71 -0
  150. package/dist/runtime/components/Table.d.vue.ts +201 -0
  151. package/dist/runtime/components/Table.vue.d.ts +26 -26
  152. package/dist/runtime/components/Tabs.d.vue.ts +99 -0
  153. package/dist/runtime/components/Tabs.vue +12 -5
  154. package/dist/runtime/components/Tabs.vue.d.ts +2 -2
  155. package/dist/runtime/components/Textarea.d.vue.ts +74 -0
  156. package/dist/runtime/components/Timeline.d.vue.ts +71 -0
  157. package/dist/runtime/components/Toast.d.vue.ts +165 -0
  158. package/dist/runtime/components/Toaster.d.vue.ts +44 -0
  159. package/dist/runtime/components/Tooltip.d.vue.ts +57 -0
  160. package/dist/runtime/components/Tree.d.vue.ts +112 -0
  161. package/dist/runtime/components/Tree.vue +88 -47
  162. package/dist/runtime/components/Tree.vue.d.ts +20 -24
  163. package/dist/runtime/components/User.d.vue.ts +47 -0
  164. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +7 -0
  165. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +23 -0
  166. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +6 -0
  167. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
  168. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
  169. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +102 -0
  170. package/dist/runtime/components/content/ContentNavigation.vue +5 -4
  171. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +2 -2
  172. package/dist/runtime/components/content/ContentSearch.d.vue.ts +114 -0
  173. package/dist/runtime/components/content/ContentSearch.vue +2 -2
  174. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +59 -0
  175. package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
  176. package/dist/runtime/components/content/ContentSurround.d.vue.ts +59 -0
  177. package/dist/runtime/components/content/ContentToc.d.vue.ts +88 -0
  178. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +15 -0
  179. package/dist/runtime/components/prose/A.d.vue.ts +15 -0
  180. package/dist/runtime/components/prose/Accordion.d.vue.ts +16 -0
  181. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +15 -0
  182. package/dist/runtime/components/prose/Badge.d.vue.ts +13 -0
  183. package/dist/runtime/components/prose/Blockquote.d.vue.ts +13 -0
  184. package/dist/runtime/components/prose/Callout.d.vue.ts +26 -0
  185. package/dist/runtime/components/prose/Card.d.vue.ts +29 -0
  186. package/dist/runtime/components/prose/CardGroup.d.vue.ts +13 -0
  187. package/dist/runtime/components/prose/Code.d.vue.ts +22 -0
  188. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +47 -0
  189. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +37 -0
  190. package/dist/runtime/components/prose/CodeIcon.d.vue.ts +7 -0
  191. package/dist/runtime/components/prose/CodePreview.d.vue.ts +19 -0
  192. package/dist/runtime/components/prose/CodeTree.d.vue.ts +28 -0
  193. package/dist/runtime/components/prose/CodeTree.vue +38 -31
  194. package/dist/runtime/components/prose/Collapsible.d.vue.ts +39 -0
  195. package/dist/runtime/components/prose/Em.d.vue.ts +13 -0
  196. package/dist/runtime/components/prose/Field.d.vue.ts +39 -0
  197. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +18 -0
  198. package/dist/runtime/components/prose/H1.d.vue.ts +19 -0
  199. package/dist/runtime/components/prose/H2.d.vue.ts +19 -0
  200. package/dist/runtime/components/prose/H3.d.vue.ts +19 -0
  201. package/dist/runtime/components/prose/H4.d.vue.ts +19 -0
  202. package/dist/runtime/components/prose/Hr.d.vue.ts +5 -0
  203. package/dist/runtime/components/prose/Icon.d.vue.ts +6 -0
  204. package/dist/runtime/components/prose/Img.d.vue.ts +21 -0
  205. package/dist/runtime/components/prose/Kbd.d.vue.ts +6 -0
  206. package/dist/runtime/components/prose/Li.d.vue.ts +13 -0
  207. package/dist/runtime/components/prose/Ol.d.vue.ts +13 -0
  208. package/dist/runtime/components/prose/P.d.vue.ts +13 -0
  209. package/dist/runtime/components/prose/Pre.d.vue.ts +26 -0
  210. package/dist/runtime/components/prose/Script.d.vue.ts +5 -0
  211. package/dist/runtime/components/prose/Steps.d.vue.ts +22 -0
  212. package/dist/runtime/components/prose/Strong.d.vue.ts +13 -0
  213. package/dist/runtime/components/prose/Table.d.vue.ts +18 -0
  214. package/dist/runtime/components/prose/Tabs.d.vue.ts +36 -0
  215. package/dist/runtime/components/prose/TabsItem.d.vue.ts +15 -0
  216. package/dist/runtime/components/prose/Tbody.d.vue.ts +13 -0
  217. package/dist/runtime/components/prose/Td.d.vue.ts +13 -0
  218. package/dist/runtime/components/prose/Th.d.vue.ts +13 -0
  219. package/dist/runtime/components/prose/Thead.d.vue.ts +13 -0
  220. package/dist/runtime/components/prose/Tr.d.vue.ts +13 -0
  221. package/dist/runtime/components/prose/Ul.d.vue.ts +13 -0
  222. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +14 -0
  223. package/dist/runtime/components/prose/callout/Note.d.vue.ts +14 -0
  224. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +14 -0
  225. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +14 -0
  226. package/dist/runtime/composables/useFormField.d.ts +1 -0
  227. package/dist/runtime/composables/useFormField.js +1 -4
  228. package/dist/runtime/inertia/components/Link.d.vue.ts +63 -0
  229. package/dist/runtime/inertia/components/LinkBase.d.vue.ts +25 -0
  230. package/dist/runtime/locale/de_ch.d.ts +3 -0
  231. package/dist/runtime/locale/de_ch.js +129 -0
  232. package/dist/runtime/locale/id.js +1 -1
  233. package/dist/runtime/locale/index.d.ts +2 -0
  234. package/dist/runtime/locale/index.js +2 -0
  235. package/dist/runtime/locale/ka.d.ts +3 -0
  236. package/dist/runtime/locale/ka.js +132 -0
  237. package/dist/runtime/locale/pt.js +2 -2
  238. package/dist/runtime/types/form.d.ts +12 -13
  239. package/dist/runtime/types/form.js +1 -3
  240. package/dist/runtime/types/index.d.ts +1 -0
  241. package/dist/runtime/types/index.js +1 -0
  242. package/dist/runtime/types/tv.d.ts +9 -2
  243. package/dist/runtime/types/utils.d.ts +7 -3
  244. package/dist/runtime/utils/form.d.ts +2 -6
  245. package/dist/runtime/utils/form.js +28 -60
  246. package/dist/runtime/utils/fuse.d.ts +2 -1
  247. package/dist/runtime/utils/index.d.ts +3 -3
  248. package/dist/runtime/utils/index.js +6 -3
  249. package/dist/runtime/vue/components/Icon.d.vue.ts +6 -0
  250. package/dist/runtime/vue/components/Link.d.vue.ts +93 -0
  251. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +16 -0
  252. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
  253. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
  254. package/dist/shared/{ui.BEZXPd3d.mjs → ui.DGJZ-1aX.mjs} +18 -13
  255. package/dist/unplugin.mjs +1 -1
  256. package/dist/vite.mjs +1 -1
  257. package/package.json +27 -40
@@ -0,0 +1,193 @@
1
+ import type { ListboxRootProps, ListboxRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import type { UseFuseOptions } from '@vueuse/integrations/useFuse';
4
+ import theme from '#build/ui/command-palette';
5
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
6
+ import type { AvatarProps, ButtonProps, ChipProps, KbdProps, InputProps, LinkProps, IconProps } from '../types';
7
+ import type { GetItemKeys } from '../types/utils';
8
+ import type { ComponentConfig } from '../types/tv';
9
+ type CommandPalette = ComponentConfig<typeof theme, AppConfig, 'commandPalette'>;
10
+ export interface CommandPaletteItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'> {
11
+ prefix?: string;
12
+ label?: string;
13
+ suffix?: string;
14
+ /**
15
+ * @IconifyIcon
16
+ */
17
+ icon?: IconProps['name'];
18
+ avatar?: AvatarProps;
19
+ chip?: ChipProps;
20
+ kbds?: KbdProps['value'][] | KbdProps[];
21
+ active?: boolean;
22
+ loading?: boolean;
23
+ disabled?: boolean;
24
+ slot?: string;
25
+ /**
26
+ * The placeholder to display when the item has children.
27
+ */
28
+ placeholder?: string;
29
+ children?: CommandPaletteItem[];
30
+ onSelect?(e?: Event): void;
31
+ class?: any;
32
+ ui?: Pick<CommandPalette['slots'], 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemLabelPrefix' | 'itemLabelBase' | 'itemLabelSuffix' | 'itemTrailing' | 'itemTrailingKbds' | 'itemTrailingKbdsSize' | 'itemTrailingHighlightedIcon' | 'itemTrailingIcon'>;
33
+ [key: string]: any;
34
+ }
35
+ export interface CommandPaletteGroup<T extends CommandPaletteItem = CommandPaletteItem> {
36
+ id: string;
37
+ label?: string;
38
+ slot?: string;
39
+ items?: T[];
40
+ /**
41
+ * Whether to filter group items with [useFuse](https://vueuse.org/integrations/useFuse).
42
+ * When `true`, items will not be filtered which is useful for custom filtering (useAsyncData, useFetch, etc.).
43
+ * @defaultValue false
44
+ */
45
+ ignoreFilter?: boolean;
46
+ /** Filter group items after the search happened. */
47
+ postFilter?: (searchTerm: string, items: T[]) => T[];
48
+ /**
49
+ * The icon displayed when an item is highlighted.
50
+ * @IconifyIcon
51
+ */
52
+ highlightedIcon?: IconProps['name'];
53
+ }
54
+ export interface CommandPaletteProps<G extends CommandPaletteGroup<T> = CommandPaletteGroup<any>, T extends CommandPaletteItem = CommandPaletteItem> extends Pick<ListboxRootProps, 'multiple' | 'disabled' | 'modelValue' | 'defaultValue' | 'highlightOnHover' | 'selectionBehavior'>, Pick<UseComponentIconsProps, 'loading' | 'loadingIcon'> {
55
+ /**
56
+ * The element or component this component should render as.
57
+ * @defaultValue 'div'
58
+ */
59
+ as?: any;
60
+ /**
61
+ * The icon displayed in the input.
62
+ * @defaultValue appConfig.ui.icons.search
63
+ * @IconifyIcon
64
+ */
65
+ icon?: IconProps['name'];
66
+ /**
67
+ * The icon displayed when an item is selected.
68
+ * @defaultValue appConfig.ui.icons.check
69
+ * @IconifyIcon
70
+ */
71
+ selectedIcon?: IconProps['name'];
72
+ /**
73
+ * The icon displayed when an item has children.
74
+ * @defaultValue appConfig.ui.icons.chevronRight
75
+ * @IconifyIcon
76
+ */
77
+ trailingIcon?: IconProps['name'];
78
+ /**
79
+ * The placeholder text for the input.
80
+ * @defaultValue t('commandPalette.placeholder')
81
+ */
82
+ placeholder?: InputProps['placeholder'];
83
+ /**
84
+ * Automatically focus the input when component is mounted.
85
+ * @defaultValue true
86
+ */
87
+ autofocus?: boolean;
88
+ /**
89
+ * Display a close button in the input (useful when inside a Modal for example).
90
+ * `{ size: 'md', color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
91
+ * @emits 'update:open'
92
+ * @defaultValue false
93
+ */
94
+ close?: boolean | Partial<ButtonProps>;
95
+ /**
96
+ * The icon displayed in the close button.
97
+ * @defaultValue appConfig.ui.icons.close
98
+ * @IconifyIcon
99
+ */
100
+ closeIcon?: IconProps['name'];
101
+ /**
102
+ * Display a button to navigate back in history.
103
+ * `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts-type"}
104
+ * @defaultValue true
105
+ */
106
+ back?: boolean | ButtonProps;
107
+ /**
108
+ * The icon displayed in the back button.
109
+ * @defaultValue appConfig.ui.icons.arrowLeft
110
+ * @IconifyIcon
111
+ */
112
+ backIcon?: IconProps['name'];
113
+ groups?: G[];
114
+ /**
115
+ * Options for [useFuse](https://vueuse.org/integrations/useFuse).
116
+ * @defaultValue {
117
+ fuseOptions: {
118
+ ignoreLocation: true,
119
+ threshold: 0.1,
120
+ keys: ['label', 'suffix']
121
+ },
122
+ resultLimit: 12,
123
+ matchAllWhenSearchEmpty: true
124
+ }
125
+ */
126
+ fuse?: UseFuseOptions<T>;
127
+ /**
128
+ * The key used to get the label from the item.
129
+ * @defaultValue 'label'
130
+ */
131
+ labelKey?: GetItemKeys<T>;
132
+ class?: any;
133
+ ui?: CommandPalette['slots'];
134
+ }
135
+ export type CommandPaletteEmits<T extends CommandPaletteItem = CommandPaletteItem> = ListboxRootEmits<T> & {
136
+ 'update:open': [value: boolean];
137
+ };
138
+ type SlotProps<T> = (props: {
139
+ item: T;
140
+ index: number;
141
+ }) => any;
142
+ export type CommandPaletteSlots<G extends CommandPaletteGroup<T> = CommandPaletteGroup<any>, T extends CommandPaletteItem = CommandPaletteItem> = {
143
+ 'empty'(props: {
144
+ searchTerm?: string;
145
+ }): any;
146
+ 'footer'(props: {
147
+ ui: {
148
+ [K in keyof Required<CommandPalette['slots']>]: (props?: Record<string, any>) => string;
149
+ };
150
+ }): any;
151
+ 'back'(props: {
152
+ ui: {
153
+ [K in keyof Required<CommandPalette['slots']>]: (props?: Record<string, any>) => string;
154
+ };
155
+ }): any;
156
+ 'close'(props: {
157
+ ui: {
158
+ [K in keyof Required<CommandPalette['slots']>]: (props?: Record<string, any>) => string;
159
+ };
160
+ }): any;
161
+ 'item': SlotProps<T>;
162
+ 'item-leading': SlotProps<T>;
163
+ 'item-label': SlotProps<T>;
164
+ 'item-trailing': SlotProps<T>;
165
+ } & Record<string, SlotProps<G>> & Record<string, SlotProps<T>>;
166
+ declare const _default: <G extends CommandPaletteGroup<T>, T extends CommandPaletteItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
167
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
168
+ readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
169
+ readonly "onUpdate:modelValue"?: ((value: T) => any) | undefined;
170
+ readonly onHighlight?: ((payload: {
171
+ ref: HTMLElement;
172
+ value: T;
173
+ } | undefined) => any) | undefined;
174
+ readonly "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
175
+ readonly onEntryFocus?: ((event: CustomEvent<any>) => any) | undefined;
176
+ readonly onLeave?: ((event: Event) => any) | undefined;
177
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:open" | "onUpdate:modelValue" | "onHighlight" | "onUpdate:searchTerm" | "onEntryFocus" | "onLeave"> & (CommandPaletteProps<G, T> & {
178
+ searchTerm?: string;
179
+ }) & {}> & import("vue").PublicProps;
180
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
181
+ attrs: any;
182
+ slots: CommandPaletteSlots<G, T>;
183
+ emit: (((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: T) => void) & ((evt: "highlight", payload: {
184
+ ref: HTMLElement;
185
+ value: T;
186
+ } | undefined) => void) & ((evt: "entryFocus", event: CustomEvent<any>) => void) & ((evt: "leave", event: Event) => void)) & ((evt: "update:searchTerm", value: string) => void);
187
+ }>) => import("vue").VNode & {
188
+ __ctx?: Awaited<typeof __VLS_setup>;
189
+ };
190
+ export default _default;
191
+ type __VLS_PrettifyLocal<T> = {
192
+ [K in keyof T as K]: T[K];
193
+ } & {};
@@ -35,7 +35,7 @@ const props = defineProps({
35
35
  backIcon: { type: [String, Object], required: false },
36
36
  groups: { type: Array, required: false },
37
37
  fuse: { type: Object, required: false },
38
- labelKey: { type: String, required: false, default: "label" },
38
+ labelKey: { type: null, required: false, default: "label" },
39
39
  class: { type: null, required: false },
40
40
  ui: { type: null, required: false },
41
41
  multiple: { type: Boolean, required: false },
@@ -52,8 +52,8 @@ const slots = defineSlots();
52
52
  const searchTerm = defineModel("searchTerm", { type: String, ...{ default: "" } });
53
53
  const { t } = useLocale();
54
54
  const appConfig = useAppConfig();
55
- const rootProps = useForwardPropsEmits(reactivePick(props, "as", "disabled", "multiple", "modelValue", "defaultValue", "highlightOnHover", "selectionBehavior"), emits);
56
- const inputProps = useForwardProps(reactivePick(props, "loading", "loadingIcon"));
55
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "disabled", "multiple", "modelValue", "defaultValue", "highlightOnHover"), emits);
56
+ const inputProps = useForwardProps(reactivePick(props, "loading"));
57
57
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.commandPalette || {} })());
58
58
  const fuse = computed(() => defu({}, props.fuse, {
59
59
  fuseOptions: {
@@ -155,13 +155,14 @@ function onSelect(e, item) {
155
155
  </script>
156
156
 
157
157
  <template>
158
- <ListboxRoot v-bind="rootProps" ref="listboxRootRef" :class="ui.root({ class: [props.ui?.root, props.class] })">
158
+ <ListboxRoot v-bind="rootProps" ref="listboxRootRef" :selection-behavior="selectionBehavior" :class="ui.root({ class: [props.ui?.root, props.class] })">
159
159
  <ListboxFilter v-model="searchTerm" as-child>
160
160
  <UInput
161
161
  :placeholder="placeholder"
162
162
  variant="none"
163
163
  :autofocus="autofocus"
164
164
  v-bind="inputProps"
165
+ :loading-icon="loadingIcon"
165
166
  :icon="icon || appConfig.ui.icons.search"
166
167
  :class="ui.input({ class: props.ui?.input })"
167
168
  @keydown.backspace="onBackspace"
@@ -4,6 +4,7 @@ import type { UseFuseOptions } from '@vueuse/integrations/useFuse';
4
4
  import theme from '#build/ui/command-palette';
5
5
  import type { UseComponentIconsProps } from '../composables/useComponentIcons';
6
6
  import type { AvatarProps, ButtonProps, ChipProps, KbdProps, InputProps, LinkProps, IconProps } from '../types';
7
+ import type { GetItemKeys } from '../types/utils';
7
8
  import type { ComponentConfig } from '../types/tv';
8
9
  type CommandPalette = ComponentConfig<typeof theme, AppConfig, 'commandPalette'>;
9
10
  export interface CommandPaletteItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'> {
@@ -127,7 +128,7 @@ export interface CommandPaletteProps<G extends CommandPaletteGroup<T> = CommandP
127
128
  * The key used to get the label from the item.
128
129
  * @defaultValue 'label'
129
130
  */
130
- labelKey?: string;
131
+ labelKey?: GetItemKeys<T>;
131
132
  class?: any;
132
133
  ui?: CommandPalette['slots'];
133
134
  }
@@ -0,0 +1,18 @@
1
+ export interface ContainerProps {
2
+ /**
3
+ * The element or component this component should render as.
4
+ * @defaultValue 'div'
5
+ */
6
+ as?: any;
7
+ class?: any;
8
+ }
9
+ export interface ContainerSlots {
10
+ default(props?: {}): any;
11
+ }
12
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ContainerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ContainerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ContainerSlots>;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,110 @@
1
+ import type { ContextMenuRootProps, ContextMenuRootEmits, ContextMenuContentProps, ContextMenuContentEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/context-menu';
4
+ import type { AvatarProps, IconProps, KbdProps, LinkProps } from '../types';
5
+ import type { ArrayOrNested, DynamicSlots, GetItemKeys, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
6
+ import type { ComponentConfig } from '../types/tv';
7
+ type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
8
+ export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'> {
9
+ label?: string;
10
+ /**
11
+ * @IconifyIcon
12
+ */
13
+ icon?: IconProps['name'];
14
+ color?: ContextMenu['variants']['color'];
15
+ avatar?: AvatarProps;
16
+ content?: Omit<ContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<ContextMenuContentEmits>>;
17
+ kbds?: KbdProps['value'][] | KbdProps[];
18
+ /**
19
+ * The item type.
20
+ * @defaultValue 'link'
21
+ */
22
+ type?: 'label' | 'separator' | 'link' | 'checkbox';
23
+ slot?: string;
24
+ loading?: boolean;
25
+ disabled?: boolean;
26
+ checked?: boolean;
27
+ open?: boolean;
28
+ defaultOpen?: boolean;
29
+ children?: ArrayOrNested<ContextMenuItem>;
30
+ onSelect?(e: Event): void;
31
+ onUpdateChecked?(checked: boolean): void;
32
+ class?: any;
33
+ ui?: Pick<ContextMenu['slots'], 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLabel' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
34
+ [key: string]: any;
35
+ }
36
+ export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>> extends Omit<ContextMenuRootProps, 'dir'> {
37
+ /**
38
+ * @defaultValue 'md'
39
+ */
40
+ size?: ContextMenu['variants']['size'];
41
+ items?: T;
42
+ /**
43
+ * The icon displayed when an item is checked.
44
+ * @defaultValue appConfig.ui.icons.check
45
+ * @IconifyIcon
46
+ */
47
+ checkedIcon?: IconProps['name'];
48
+ /**
49
+ * The icon displayed when an item is loading.
50
+ * @defaultValue appConfig.ui.icons.loading
51
+ * @IconifyIcon
52
+ */
53
+ loadingIcon?: IconProps['name'];
54
+ /**
55
+ * The icon displayed when the item is an external link.
56
+ * Set to `false` to hide the external icon.
57
+ * @defaultValue appConfig.ui.icons.external
58
+ * @IconifyIcon
59
+ */
60
+ externalIcon?: boolean | IconProps['name'];
61
+ /** The content of the menu. */
62
+ content?: Omit<ContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<ContextMenuContentEmits>>;
63
+ /**
64
+ * Render the menu in a portal.
65
+ * @defaultValue true
66
+ */
67
+ portal?: boolean | string | HTMLElement;
68
+ /**
69
+ * The key used to get the label from the item.
70
+ * @defaultValue 'label'
71
+ */
72
+ labelKey?: GetItemKeys<T>;
73
+ disabled?: boolean;
74
+ class?: any;
75
+ ui?: ContextMenu['slots'];
76
+ }
77
+ export interface ContextMenuEmits extends ContextMenuRootEmits {
78
+ }
79
+ type SlotProps<T extends ContextMenuItem> = (props: {
80
+ item: T;
81
+ active?: boolean;
82
+ index: number;
83
+ }) => any;
84
+ export type ContextMenuSlots<A extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>, T extends NestedItem<A> = NestedItem<A>> = {
85
+ 'default'(props?: {}): any;
86
+ 'item': SlotProps<T>;
87
+ 'item-leading': SlotProps<T>;
88
+ 'item-label': SlotProps<T>;
89
+ 'item-trailing': SlotProps<T>;
90
+ 'content-top': (props?: {}) => any;
91
+ 'content-bottom': (props?: {}) => any;
92
+ } & DynamicSlots<MergeTypes<T>, 'leading' | 'label' | 'trailing', {
93
+ active?: boolean;
94
+ index: number;
95
+ }>;
96
+ declare const _default: <T extends ArrayOrNested<ContextMenuItem>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
97
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
98
+ readonly "onUpdate:open"?: ((payload: boolean) => any) | undefined;
99
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:open"> & ContextMenuProps<T> & {}> & import("vue").PublicProps;
100
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
101
+ attrs: any;
102
+ slots: ContextMenuSlots<T, NestedItem<T>>;
103
+ emit: (evt: "update:open", payload: boolean) => void;
104
+ }>) => import("vue").VNode & {
105
+ __ctx?: Awaited<typeof __VLS_setup>;
106
+ };
107
+ export default _default;
108
+ type __VLS_PrettifyLocal<T> = {
109
+ [K in keyof T as K]: T[K];
110
+ } & {};
@@ -30,7 +30,7 @@ const slots = defineSlots();
30
30
  const appConfig = useAppConfig();
31
31
  const rootProps = useForwardPropsEmits(reactivePick(props, "modal"), emits);
32
32
  const contentProps = toRef(() => props.content);
33
- const proxySlots = omit(slots, ["default"]);
33
+ const getProxySlots = () => omit(slots, ["default"]);
34
34
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contextMenu || {} })({
35
35
  size: props.size
36
36
  }));
@@ -54,7 +54,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contextMenu |
54
54
  :loading-icon="loadingIcon"
55
55
  :external-icon="externalIcon"
56
56
  >
57
- <template v-for="(_, name) in proxySlots" #[name]="slotData">
57
+ <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
58
58
  <slot :name="name" v-bind="slotData" />
59
59
  </template>
60
60
  </UContextMenuContent>
@@ -2,7 +2,7 @@ import type { ContextMenuRootProps, ContextMenuRootEmits, ContextMenuContentProp
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/ui/context-menu';
4
4
  import type { AvatarProps, IconProps, KbdProps, LinkProps } from '../types';
5
- import type { ArrayOrNested, DynamicSlots, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
5
+ import type { ArrayOrNested, DynamicSlots, GetItemKeys, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
6
6
  import type { ComponentConfig } from '../types/tv';
7
7
  type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
8
8
  export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'> {
@@ -69,7 +69,7 @@ export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = Arr
69
69
  * The key used to get the label from the item.
70
70
  * @defaultValue 'label'
71
71
  */
72
- labelKey?: keyof NestedItem<T>;
72
+ labelKey?: GetItemKeys<T>;
73
73
  disabled?: boolean;
74
74
  class?: any;
75
75
  ui?: ContextMenu['slots'];
@@ -0,0 +1,50 @@
1
+ import { ContextMenu } from 'reka-ui/namespaced';
2
+ import type { ContextMenuContentProps as RekaContextMenuContentProps } from 'reka-ui';
3
+ import type { AppConfig } from '@nuxt/schema';
4
+ import type theme from '#build/ui/context-menu';
5
+ import type { ContextMenuItem, ContextMenuSlots, IconProps } from '../types';
6
+ import type { ArrayOrNested, GetItemKeys } from '../types/utils';
7
+ import type { ComponentConfig } from '../types/tv';
8
+ type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
9
+ interface ContextMenuContentProps<T extends ArrayOrNested<ContextMenuItem>> extends Omit<RekaContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> {
10
+ items?: T;
11
+ portal?: boolean | string | HTMLElement;
12
+ sub?: boolean;
13
+ labelKey: GetItemKeys<T>;
14
+ /**
15
+ * @IconifyIcon
16
+ */
17
+ checkedIcon?: IconProps['name'];
18
+ /**
19
+ * @IconifyIcon
20
+ */
21
+ loadingIcon?: IconProps['name'];
22
+ /**
23
+ * @IconifyIcon
24
+ */
25
+ externalIcon?: boolean | IconProps['name'];
26
+ class?: any;
27
+ ui: {
28
+ [K in keyof Required<ContextMenu['slots']>]: (props?: Record<string, any>) => string;
29
+ };
30
+ uiOverride?: ContextMenu['slots'];
31
+ }
32
+ declare const _default: <T extends ArrayOrNested<ContextMenuItem>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
33
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
34
+ readonly onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
35
+ readonly onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
36
+ readonly onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
37
+ readonly onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
38
+ readonly onCloseAutoFocus?: ((event: Event) => any) | undefined;
39
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onEscapeKeyDown" | "onPointerDownOutside" | "onFocusOutside" | "onInteractOutside" | "onCloseAutoFocus"> & ContextMenuContentProps<T> & {}> & import("vue").PublicProps;
40
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
41
+ attrs: any;
42
+ slots: ContextMenuSlots<T>;
43
+ emit: ((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: import("reka-ui").PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: import("reka-ui").FocusOutsideEvent) => void) & ((evt: "interactOutside", event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => void) & ((evt: "closeAutoFocus", event: Event) => void);
44
+ }>) => import("vue").VNode & {
45
+ __ctx?: Awaited<typeof __VLS_setup>;
46
+ };
47
+ export default _default;
48
+ type __VLS_PrettifyLocal<T> = {
49
+ [K in keyof T as K]: T[K];
50
+ } & {};
@@ -49,7 +49,7 @@ const { dir } = useLocale();
49
49
  const appConfig = useAppConfig();
50
50
  const portalProps = usePortal(toRef(() => props.portal));
51
51
  const contentProps = useForwardPropsEmits(reactiveOmit(props, "sub", "items", "portal", "labelKey", "checkedIcon", "loadingIcon", "externalIcon", "class", "ui", "uiOverride"), emits);
52
- const proxySlots = omit(slots, ["default"]);
52
+ const getProxySlots = () => omit(slots, ["default"]);
53
53
  const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate();
54
54
  const childrenIcon = computed(() => dir.value === "rtl" ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight);
55
55
  const groups = computed(
@@ -125,7 +125,7 @@ const groups = computed(
125
125
  :external-icon="externalIcon"
126
126
  v-bind="item.content"
127
127
  >
128
- <template v-for="(_, name) in proxySlots" #[name]="slotData">
128
+ <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
129
129
  <slot :name="name" v-bind="slotData" />
130
130
  </template>
131
131
  </UContextMenuContent>
@@ -3,14 +3,14 @@ import type { ContextMenuContentProps as RekaContextMenuContentProps } from 'rek
3
3
  import type { AppConfig } from '@nuxt/schema';
4
4
  import type theme from '#build/ui/context-menu';
5
5
  import type { ContextMenuItem, ContextMenuSlots, IconProps } from '../types';
6
- import type { ArrayOrNested, NestedItem } from '../types/utils';
6
+ import type { ArrayOrNested, GetItemKeys } from '../types/utils';
7
7
  import type { ComponentConfig } from '../types/tv';
8
8
  type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
9
9
  interface ContextMenuContentProps<T extends ArrayOrNested<ContextMenuItem>> extends Omit<RekaContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> {
10
10
  items?: T;
11
11
  portal?: boolean | string | HTMLElement;
12
12
  sub?: boolean;
13
- labelKey: keyof NestedItem<T>;
13
+ labelKey: GetItemKeys<T>;
14
14
  /**
15
15
  * @IconifyIcon
16
16
  */
@@ -0,0 +1,24 @@
1
+ import type { UseResizableProps } from '../composables/useResizable';
2
+ export interface DashboardGroupProps extends Pick<UseResizableProps, 'storage' | 'storageKey' | 'persistent' | 'unit'> {
3
+ /**
4
+ * The element or component this component should render as.
5
+ * @defaultValue 'div'
6
+ */
7
+ as?: any;
8
+ class?: any;
9
+ }
10
+ export interface DashboardGroupSlots {
11
+ default(props?: {}): any;
12
+ }
13
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardGroupProps> & Readonly<{}>, {
14
+ storage: "cookie" | "local";
15
+ storageKey: string;
16
+ persistent: boolean;
17
+ unit: "%" | "rem" | "px";
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardGroupSlots>;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -12,9 +12,9 @@ export interface DashboardGroupSlots {
12
12
  }
13
13
  declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardGroupProps> & Readonly<{}>, {
14
14
  storage: "cookie" | "local";
15
- unit: "%" | "rem" | "px";
16
15
  storageKey: string;
17
16
  persistent: boolean;
17
+ unit: "%" | "rem" | "px";
18
18
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardGroupSlots>;
19
19
  export default _default;
20
20
  type __VLS_WithSlots<T, S> = T & {
@@ -0,0 +1,52 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/dashboard-navbar';
3
+ import type { DashboardContext } from '../utils/dashboard';
4
+ import type { ButtonProps, IconProps } from '../types';
5
+ import type { ComponentConfig } from '../types/tv';
6
+ type DashboardNavbar = ComponentConfig<typeof theme, AppConfig, 'dashboardNavbar'>;
7
+ export interface DashboardNavbarProps {
8
+ /**
9
+ * The element or component this component should render as.
10
+ * @defaultValue 'div'
11
+ */
12
+ as?: any;
13
+ /**
14
+ * The icon displayed next to the title.
15
+ * @IconifyIcon
16
+ */
17
+ icon?: IconProps['name'];
18
+ title?: string;
19
+ /**
20
+ * Customize the toggle button to open the sidebar.
21
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
22
+ * @defaultValue true
23
+ */
24
+ toggle?: boolean | Partial<ButtonProps>;
25
+ /**
26
+ * The side to render the toggle button on.
27
+ * @defaultValue 'left'
28
+ */
29
+ toggleSide?: 'left' | 'right';
30
+ class?: any;
31
+ ui?: DashboardNavbar['slots'];
32
+ }
33
+ type DashboardNavbarSlotsProps = Omit<DashboardContext, 'storage' | 'storageKey' | 'persistent' | 'unit'>;
34
+ export interface DashboardNavbarSlots {
35
+ title(props?: {}): any;
36
+ leading(props: DashboardNavbarSlotsProps): any;
37
+ trailing(props: DashboardNavbarSlotsProps): any;
38
+ left(props: DashboardNavbarSlotsProps): any;
39
+ default(props: DashboardNavbarSlotsProps): any;
40
+ right(props: DashboardNavbarSlotsProps): any;
41
+ toggle(props: DashboardNavbarSlotsProps): any;
42
+ }
43
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardNavbarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardNavbarProps> & Readonly<{}>, {
44
+ toggle: boolean | Partial<ButtonProps>;
45
+ toggleSide: "left" | "right";
46
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardNavbarSlots>;
47
+ export default _default;
48
+ type __VLS_WithSlots<T, S> = T & {
49
+ new (): {
50
+ $slots: S;
51
+ };
52
+ };
@@ -0,0 +1,30 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/dashboard-panel';
3
+ import type { UseResizableProps } from '../composables/useResizable';
4
+ import type { ComponentConfig } from '../types/tv';
5
+ type DashboardPanel = ComponentConfig<typeof theme, AppConfig, 'dashboardPanel'>;
6
+ export interface DashboardPanelProps extends Pick<UseResizableProps, 'id' | 'minSize' | 'maxSize' | 'defaultSize' | 'resizable'> {
7
+ class?: any;
8
+ ui?: DashboardPanel['slots'];
9
+ }
10
+ export interface DashboardPanelSlots {
11
+ 'default'(props?: {}): any;
12
+ 'header'(props?: {}): any;
13
+ 'body'(props?: {}): any;
14
+ 'footer'(props?: {}): any;
15
+ 'resize-handle'(props: {
16
+ onMouseDown: (e: MouseEvent) => void;
17
+ onTouchStart: (e: TouchEvent) => void;
18
+ onDoubleClick: (e: MouseEvent) => void;
19
+ }): any;
20
+ }
21
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardPanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardPanelProps> & Readonly<{}>, {
22
+ minSize: number;
23
+ resizable: boolean;
24
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardPanelSlots>;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -0,0 +1,18 @@
1
+ export interface DashboardResizeHandleProps {
2
+ /**
3
+ * The element or component this component should render as.
4
+ * @defaultValue 'div'
5
+ */
6
+ as?: any;
7
+ class?: any;
8
+ }
9
+ export interface DashboardResizeHandleSlots {
10
+ default(props?: {}): any;
11
+ }
12
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardResizeHandleProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardResizeHandleProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardResizeHandleSlots>;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };