@nuxt/ui 4.0.0-alpha.1 → 4.0.0-alpha.2

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 (251) 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/tree.ts +1 -1
  6. package/README.md +13 -1
  7. package/dist/module.d.mts +6 -6
  8. package/dist/module.json +2 -2
  9. package/dist/module.mjs +8 -6
  10. package/dist/runtime/components/Accordion.d.vue.ts +79 -0
  11. package/dist/runtime/components/Accordion.vue +3 -3
  12. package/dist/runtime/components/Accordion.vue.d.ts +2 -2
  13. package/dist/runtime/components/Alert.d.vue.ts +81 -0
  14. package/dist/runtime/components/App.d.vue.ts +25 -0
  15. package/dist/runtime/components/AuthForm.d.vue.ts +128 -0
  16. package/dist/runtime/components/AuthForm.vue.d.ts +39 -1
  17. package/dist/runtime/components/Avatar.d.vue.ts +41 -0
  18. package/dist/runtime/components/AvatarGroup.d.vue.ts +31 -0
  19. package/dist/runtime/components/Badge.d.vue.ts +43 -0
  20. package/dist/runtime/components/Banner.d.vue.ts +72 -0
  21. package/dist/runtime/components/Banner.vue +1 -1
  22. package/dist/runtime/components/BlogPost.d.vue.ts +60 -0
  23. package/dist/runtime/components/BlogPosts.d.vue.ts +31 -0
  24. package/dist/runtime/components/Breadcrumb.d.vue.ts +67 -0
  25. package/dist/runtime/components/Breadcrumb.vue +1 -1
  26. package/dist/runtime/components/Breadcrumb.vue.d.ts +2 -2
  27. package/dist/runtime/components/Button.d.vue.ts +44 -0
  28. package/dist/runtime/components/Calendar.d.vue.ts +112 -0
  29. package/dist/runtime/components/Card.d.vue.ts +29 -0
  30. package/dist/runtime/components/Carousel.d.vue.ts +127 -0
  31. package/dist/runtime/components/Carousel.vue.d.ts +10 -10
  32. package/dist/runtime/components/ChangelogVersion.d.vue.ts +59 -0
  33. package/dist/runtime/components/ChangelogVersions.d.vue.ts +78 -0
  34. package/dist/runtime/components/ChangelogVersions.vue +2 -2
  35. package/dist/runtime/components/ChatMessage.d.vue.ts +67 -0
  36. package/dist/runtime/components/ChatMessages.d.vue.ts +83 -0
  37. package/dist/runtime/components/ChatMessages.vue +2 -2
  38. package/dist/runtime/components/ChatPalette.d.vue.ts +24 -0
  39. package/dist/runtime/components/ChatPrompt.d.vue.ts +61 -0
  40. package/dist/runtime/components/ChatPrompt.vue +2 -2
  41. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +100 -0
  42. package/dist/runtime/components/Checkbox.d.vue.ts +74 -0
  43. package/dist/runtime/components/CheckboxGroup.d.vue.ts +89 -0
  44. package/dist/runtime/components/CheckboxGroup.vue +8 -8
  45. package/dist/runtime/components/CheckboxGroup.vue.d.ts +17 -13
  46. package/dist/runtime/components/Chip.d.vue.ts +57 -0
  47. package/dist/runtime/components/Collapsible.d.vue.ts +35 -0
  48. package/dist/runtime/components/ColorPicker.d.vue.ts +48 -0
  49. package/dist/runtime/components/CommandPalette.d.vue.ts +193 -0
  50. package/dist/runtime/components/CommandPalette.vue +5 -4
  51. package/dist/runtime/components/CommandPalette.vue.d.ts +2 -1
  52. package/dist/runtime/components/Container.d.vue.ts +18 -0
  53. package/dist/runtime/components/ContextMenu.d.vue.ts +110 -0
  54. package/dist/runtime/components/ContextMenu.vue +2 -2
  55. package/dist/runtime/components/ContextMenu.vue.d.ts +2 -2
  56. package/dist/runtime/components/ContextMenuContent.d.vue.ts +50 -0
  57. package/dist/runtime/components/ContextMenuContent.vue +2 -2
  58. package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -2
  59. package/dist/runtime/components/DashboardGroup.d.vue.ts +24 -0
  60. package/dist/runtime/components/DashboardNavbar.d.vue.ts +52 -0
  61. package/dist/runtime/components/DashboardPanel.d.vue.ts +30 -0
  62. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +18 -0
  63. package/dist/runtime/components/DashboardSearch.d.vue.ts +91 -0
  64. package/dist/runtime/components/DashboardSearch.vue +2 -2
  65. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +59 -0
  66. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  67. package/dist/runtime/components/DashboardSidebar.d.vue.ts +75 -0
  68. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +19 -0
  69. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +19 -0
  70. package/dist/runtime/components/DashboardToolbar.d.vue.ts +25 -0
  71. package/dist/runtime/components/Drawer.d.vue.ts +84 -0
  72. package/dist/runtime/components/DropdownMenu.d.vue.ts +120 -0
  73. package/dist/runtime/components/DropdownMenu.vue +2 -2
  74. package/dist/runtime/components/DropdownMenu.vue.d.ts +2 -2
  75. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +56 -0
  76. package/dist/runtime/components/DropdownMenuContent.vue +2 -2
  77. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +2 -2
  78. package/dist/runtime/components/Error.d.vue.ts +47 -0
  79. package/dist/runtime/components/FieldGroup.d.vue.ts +34 -0
  80. package/dist/runtime/components/FileUpload.d.vue.ts +166 -0
  81. package/dist/runtime/components/FileUpload.vue +1 -0
  82. package/dist/runtime/components/Footer.d.vue.ts +29 -0
  83. package/dist/runtime/components/FooterColumns.d.vue.ts +57 -0
  84. package/dist/runtime/components/Form.d.vue.ts +114 -0
  85. package/dist/runtime/components/Form.vue +111 -52
  86. package/dist/runtime/components/Form.vue.d.ts +54 -11
  87. package/dist/runtime/components/FormField.d.vue.ts +61 -0
  88. package/dist/runtime/components/Header.d.vue.ts +68 -0
  89. package/dist/runtime/components/Icon.d.vue.ts +8 -0
  90. package/dist/runtime/components/Input.d.vue.ts +74 -0
  91. package/dist/runtime/components/Input.vue.d.ts +4 -3
  92. package/dist/runtime/components/InputMenu.d.vue.ts +330 -0
  93. package/dist/runtime/components/InputMenu.vue +1 -1
  94. package/dist/runtime/components/InputMenu.vue.d.ts +4 -4
  95. package/dist/runtime/components/InputNumber.d.vue.ts +188 -0
  96. package/dist/runtime/components/InputNumber.vue +2 -2
  97. package/dist/runtime/components/InputNumber.vue.d.ts +0 -2
  98. package/dist/runtime/components/InputTags.d.vue.ts +186 -0
  99. package/dist/runtime/components/Kbd.d.vue.ts +38 -0
  100. package/dist/runtime/components/Link.d.vue.ts +91 -0
  101. package/dist/runtime/components/LinkBase.d.vue.ts +25 -0
  102. package/dist/runtime/components/Main.d.vue.ts +20 -0
  103. package/dist/runtime/components/Marquee.d.vue.ts +32 -0
  104. package/dist/runtime/components/Marquee.vue +1 -1
  105. package/dist/runtime/components/Modal.d.vue.ts +107 -0
  106. package/dist/runtime/components/NavigationMenu.d.vue.ts +171 -0
  107. package/dist/runtime/components/NavigationMenu.vue.d.ts +2 -2
  108. package/dist/runtime/components/OverlayProvider.d.vue.ts +2 -0
  109. package/dist/runtime/components/Page.d.vue.ts +25 -0
  110. package/dist/runtime/components/PageAnchors.d.vue.ts +47 -0
  111. package/dist/runtime/components/PageAside.d.vue.ts +27 -0
  112. package/dist/runtime/components/PageBody.d.vue.ts +18 -0
  113. package/dist/runtime/components/PageCTA.d.vue.ts +56 -0
  114. package/dist/runtime/components/PageCard.d.vue.ts +72 -0
  115. package/dist/runtime/components/PageColumns.d.vue.ts +18 -0
  116. package/dist/runtime/components/PageFeature.d.vue.ts +44 -0
  117. package/dist/runtime/components/PageGrid.d.vue.ts +18 -0
  118. package/dist/runtime/components/PageHeader.d.vue.ts +36 -0
  119. package/dist/runtime/components/PageHero.d.vue.ts +53 -0
  120. package/dist/runtime/components/PageLinks.d.vue.ts +49 -0
  121. package/dist/runtime/components/PageList.d.vue.ts +21 -0
  122. package/dist/runtime/components/PageLogos.d.vue.ts +33 -0
  123. package/dist/runtime/components/PageSection.d.vue.ts +68 -0
  124. package/dist/runtime/components/Pagination.d.vue.ts +118 -0
  125. package/dist/runtime/components/PinInput.d.vue.ts +60 -0
  126. package/dist/runtime/components/Popover.d.vue.ts +71 -0
  127. package/dist/runtime/components/PricingPlan.d.vue.ts +112 -0
  128. package/dist/runtime/components/PricingPlans.d.vue.ts +44 -0
  129. package/dist/runtime/components/PricingTable.d.vue.ts +105 -0
  130. package/dist/runtime/components/Progress.d.vue.ts +66 -0
  131. package/dist/runtime/components/Progress.vue +2 -3
  132. package/dist/runtime/components/RadioGroup.d.vue.ts +99 -0
  133. package/dist/runtime/components/RadioGroup.vue +13 -11
  134. package/dist/runtime/components/RadioGroup.vue.d.ts +17 -13
  135. package/dist/runtime/components/Select.d.vue.ts +254 -0
  136. package/dist/runtime/components/Select.vue +3 -3
  137. package/dist/runtime/components/Select.vue.d.ts +5 -5
  138. package/dist/runtime/components/SelectMenu.d.vue.ts +303 -0
  139. package/dist/runtime/components/SelectMenu.vue.d.ts +4 -4
  140. package/dist/runtime/components/Separator.d.vue.ts +54 -0
  141. package/dist/runtime/components/Skeleton.d.vue.ts +17 -0
  142. package/dist/runtime/components/Slideover.d.vue.ts +108 -0
  143. package/dist/runtime/components/Slider.d.vue.ts +57 -0
  144. package/dist/runtime/components/Stepper.d.vue.ts +87 -0
  145. package/dist/runtime/components/Switch.d.vue.ts +71 -0
  146. package/dist/runtime/components/Table.d.vue.ts +201 -0
  147. package/dist/runtime/components/Table.vue.d.ts +26 -26
  148. package/dist/runtime/components/Tabs.d.vue.ts +99 -0
  149. package/dist/runtime/components/Tabs.vue +10 -3
  150. package/dist/runtime/components/Tabs.vue.d.ts +2 -2
  151. package/dist/runtime/components/Textarea.d.vue.ts +74 -0
  152. package/dist/runtime/components/Timeline.d.vue.ts +71 -0
  153. package/dist/runtime/components/Toast.d.vue.ts +165 -0
  154. package/dist/runtime/components/Toaster.d.vue.ts +44 -0
  155. package/dist/runtime/components/Tooltip.d.vue.ts +57 -0
  156. package/dist/runtime/components/Tree.d.vue.ts +116 -0
  157. package/dist/runtime/components/Tree.vue +68 -40
  158. package/dist/runtime/components/Tree.vue.d.ts +1 -1
  159. package/dist/runtime/components/User.d.vue.ts +47 -0
  160. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +7 -0
  161. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +23 -0
  162. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +6 -0
  163. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
  164. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
  165. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +102 -0
  166. package/dist/runtime/components/content/ContentNavigation.vue +5 -4
  167. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +2 -2
  168. package/dist/runtime/components/content/ContentSearch.d.vue.ts +114 -0
  169. package/dist/runtime/components/content/ContentSearch.vue +2 -2
  170. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +59 -0
  171. package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
  172. package/dist/runtime/components/content/ContentSurround.d.vue.ts +59 -0
  173. package/dist/runtime/components/content/ContentToc.d.vue.ts +88 -0
  174. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +15 -0
  175. package/dist/runtime/components/prose/A.d.vue.ts +15 -0
  176. package/dist/runtime/components/prose/Accordion.d.vue.ts +16 -0
  177. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +15 -0
  178. package/dist/runtime/components/prose/Badge.d.vue.ts +13 -0
  179. package/dist/runtime/components/prose/Blockquote.d.vue.ts +13 -0
  180. package/dist/runtime/components/prose/Callout.d.vue.ts +26 -0
  181. package/dist/runtime/components/prose/Card.d.vue.ts +29 -0
  182. package/dist/runtime/components/prose/CardGroup.d.vue.ts +13 -0
  183. package/dist/runtime/components/prose/Code.d.vue.ts +22 -0
  184. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +47 -0
  185. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +37 -0
  186. package/dist/runtime/components/prose/CodeIcon.d.vue.ts +7 -0
  187. package/dist/runtime/components/prose/CodePreview.d.vue.ts +19 -0
  188. package/dist/runtime/components/prose/CodeTree.d.vue.ts +28 -0
  189. package/dist/runtime/components/prose/CodeTree.vue +38 -31
  190. package/dist/runtime/components/prose/Collapsible.d.vue.ts +39 -0
  191. package/dist/runtime/components/prose/Em.d.vue.ts +13 -0
  192. package/dist/runtime/components/prose/Field.d.vue.ts +39 -0
  193. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +18 -0
  194. package/dist/runtime/components/prose/H1.d.vue.ts +19 -0
  195. package/dist/runtime/components/prose/H2.d.vue.ts +19 -0
  196. package/dist/runtime/components/prose/H3.d.vue.ts +19 -0
  197. package/dist/runtime/components/prose/H4.d.vue.ts +19 -0
  198. package/dist/runtime/components/prose/Hr.d.vue.ts +5 -0
  199. package/dist/runtime/components/prose/Icon.d.vue.ts +6 -0
  200. package/dist/runtime/components/prose/Img.d.vue.ts +21 -0
  201. package/dist/runtime/components/prose/Kbd.d.vue.ts +6 -0
  202. package/dist/runtime/components/prose/Li.d.vue.ts +13 -0
  203. package/dist/runtime/components/prose/Ol.d.vue.ts +13 -0
  204. package/dist/runtime/components/prose/P.d.vue.ts +13 -0
  205. package/dist/runtime/components/prose/Pre.d.vue.ts +26 -0
  206. package/dist/runtime/components/prose/Script.d.vue.ts +5 -0
  207. package/dist/runtime/components/prose/Steps.d.vue.ts +22 -0
  208. package/dist/runtime/components/prose/Strong.d.vue.ts +13 -0
  209. package/dist/runtime/components/prose/Table.d.vue.ts +18 -0
  210. package/dist/runtime/components/prose/Tabs.d.vue.ts +36 -0
  211. package/dist/runtime/components/prose/TabsItem.d.vue.ts +15 -0
  212. package/dist/runtime/components/prose/Tbody.d.vue.ts +13 -0
  213. package/dist/runtime/components/prose/Td.d.vue.ts +13 -0
  214. package/dist/runtime/components/prose/Th.d.vue.ts +13 -0
  215. package/dist/runtime/components/prose/Thead.d.vue.ts +13 -0
  216. package/dist/runtime/components/prose/Tr.d.vue.ts +13 -0
  217. package/dist/runtime/components/prose/Ul.d.vue.ts +13 -0
  218. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +14 -0
  219. package/dist/runtime/components/prose/callout/Note.d.vue.ts +14 -0
  220. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +14 -0
  221. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +14 -0
  222. package/dist/runtime/composables/useFormField.d.ts +1 -0
  223. package/dist/runtime/composables/useFormField.js +1 -0
  224. package/dist/runtime/inertia/components/Link.d.vue.ts +63 -0
  225. package/dist/runtime/inertia/components/LinkBase.d.vue.ts +25 -0
  226. package/dist/runtime/locale/de_ch.d.ts +3 -0
  227. package/dist/runtime/locale/de_ch.js +129 -0
  228. package/dist/runtime/locale/id.js +1 -1
  229. package/dist/runtime/locale/index.d.ts +2 -0
  230. package/dist/runtime/locale/index.js +2 -0
  231. package/dist/runtime/locale/ka.d.ts +3 -0
  232. package/dist/runtime/locale/ka.js +132 -0
  233. package/dist/runtime/types/form.d.ts +9 -8
  234. package/dist/runtime/types/form.js +1 -3
  235. package/dist/runtime/types/index.d.ts +1 -0
  236. package/dist/runtime/types/index.js +1 -0
  237. package/dist/runtime/types/utils.d.ts +7 -3
  238. package/dist/runtime/utils/form.d.ts +2 -0
  239. package/dist/runtime/utils/form.js +28 -0
  240. package/dist/runtime/utils/fuse.d.ts +2 -1
  241. package/dist/runtime/utils/index.d.ts +3 -3
  242. package/dist/runtime/utils/index.js +6 -3
  243. package/dist/runtime/vue/components/Icon.d.vue.ts +6 -0
  244. package/dist/runtime/vue/components/Link.d.vue.ts +93 -0
  245. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +16 -0
  246. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
  247. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
  248. package/dist/shared/{ui.BEZXPd3d.mjs → ui.Bs5uUhtm.mjs} +17 -12
  249. package/dist/unplugin.mjs +1 -1
  250. package/dist/vite.mjs +1 -1
  251. package/package.json +21 -34
@@ -0,0 +1,116 @@
1
+ import type { TreeRootProps, TreeRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/tree';
4
+ import type { IconProps } from '../types';
5
+ import type { DynamicSlots, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem } from '../types/utils';
6
+ import type { ComponentConfig } from '../types/tv';
7
+ type Tree = ComponentConfig<typeof theme, AppConfig, 'tree'>;
8
+ export type TreeItem = {
9
+ /**
10
+ * @IconifyIcon
11
+ */
12
+ icon?: IconProps['name'];
13
+ label?: string;
14
+ /**
15
+ * @IconifyIcon
16
+ */
17
+ trailingIcon?: IconProps['name'];
18
+ defaultExpanded?: boolean;
19
+ disabled?: boolean;
20
+ value?: string;
21
+ slot?: string;
22
+ children?: TreeItem[];
23
+ onToggle?(e: Event): void;
24
+ onSelect?(e?: Event): void;
25
+ class?: any;
26
+ ui?: Pick<Tree['slots'], 'item' | 'itemWithChildren' | 'link' | 'linkLeadingIcon' | 'linkLabel' | 'linkTrailing' | 'linkTrailingIcon' | 'listWithChildren'>;
27
+ [key: string]: any;
28
+ };
29
+ export interface TreeProps<T extends TreeItem[] = TreeItem[], VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Pick<TreeRootProps<T>, 'expanded' | 'defaultExpanded' | 'selectionBehavior' | 'propagateSelect' | 'disabled' | 'bubbleSelect'> {
30
+ /**
31
+ * The element or component this component should render as.
32
+ * @defaultValue 'ul'
33
+ */
34
+ as?: any;
35
+ /**
36
+ * @defaultValue 'primary'
37
+ */
38
+ color?: Tree['variants']['color'];
39
+ /**
40
+ * @defaultValue 'md'
41
+ */
42
+ size?: Tree['variants']['size'];
43
+ /**
44
+ * The key used to get the value from the item.
45
+ * @defaultValue 'value'
46
+ */
47
+ valueKey?: VK;
48
+ /**
49
+ * The key used to get the label from the item.
50
+ * @defaultValue 'label'
51
+ */
52
+ labelKey?: GetItemKeys<T>;
53
+ /**
54
+ * The icon displayed on the right side of a parent node.
55
+ * @defaultValue appConfig.ui.icons.chevronDown
56
+ * @IconifyIcon
57
+ */
58
+ trailingIcon?: IconProps['name'];
59
+ /**
60
+ * The icon displayed when a parent node is expanded.
61
+ * @defaultValue appConfig.ui.icons.folderOpen
62
+ * @IconifyIcon
63
+ */
64
+ expandedIcon?: IconProps['name'];
65
+ /**
66
+ * The icon displayed when a parent node is collapsed.
67
+ * @defaultValue appConfig.ui.icons.folder
68
+ * @IconifyIcon
69
+ */
70
+ collapsedIcon?: IconProps['name'];
71
+ items?: T;
72
+ /** The controlled value of the Tree. Can be bind as `v-model`. */
73
+ modelValue?: GetModelValue<T, VK, M>;
74
+ /** The value of the Tree when initially rendered. Use when you do not need to control the state of the Tree. */
75
+ defaultValue?: GetModelValue<T, VK, M>;
76
+ /** Whether multiple options can be selected or not. */
77
+ multiple?: M & boolean;
78
+ class?: any;
79
+ ui?: Tree['slots'];
80
+ }
81
+ export type TreeEmits<A extends TreeItem[], VK extends GetItemKeys<A> | undefined, M extends boolean> = Omit<TreeRootEmits, 'update:modelValue'> & GetModelValueEmits<A, VK, M>;
82
+ type SlotProps<T extends TreeItem> = (props: {
83
+ item: T;
84
+ index: number;
85
+ level: number;
86
+ expanded: boolean;
87
+ selected: boolean;
88
+ }) => any;
89
+ export type TreeSlots<A extends TreeItem[] = TreeItem[], T extends NestedItem<A> = NestedItem<A>> = {
90
+ 'item-wrapper': SlotProps<T>;
91
+ 'item': SlotProps<T>;
92
+ 'item-leading': SlotProps<T>;
93
+ 'item-label': SlotProps<T>;
94
+ 'item-trailing': SlotProps<T>;
95
+ } & DynamicSlots<T, undefined, {
96
+ index: number;
97
+ level: number;
98
+ expanded: boolean;
99
+ selected: boolean;
100
+ }>;
101
+ declare const _default: <T extends TreeItem[], VK extends GetItemKeys<T> = "value", M extends boolean = false>(__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<{
102
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
103
+ readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
104
+ readonly "onUpdate:expanded"?: ((val: string[]) => any) | undefined;
105
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue" | "onUpdate:expanded"> & TreeProps<T, VK, M> & {}> & import("vue").PublicProps;
106
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
107
+ attrs: any;
108
+ slots: TreeSlots<T, NestedItem<T>>;
109
+ emit: ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "update:expanded", val: string[]) => void);
110
+ }>) => import("vue").VNode & {
111
+ __ctx?: Awaited<typeof __VLS_setup>;
112
+ };
113
+ export default _default;
114
+ type __VLS_PrettifyLocal<T> = {
115
+ [K in keyof T as K]: T[K];
116
+ } & {};
@@ -60,56 +60,84 @@ const defaultExpanded = computed(
60
60
 
61
61
  <template>
62
62
  <DefineTreeTemplate v-slot="{ items, level }">
63
- <li
63
+ <TreeItem
64
64
  v-for="(item, index) in items"
65
65
  :key="`${level}-${index}`"
66
- :class="level > 0 ? ui.itemWithChildren({ class: [props.ui?.itemWithChildren, item.ui?.itemWithChildren] }) : ui.item({ class: [props.ui?.item, item.ui?.item] })"
66
+ v-slot="{ isExpanded, isSelected }"
67
+ :level="level"
68
+ :value="item"
69
+ :class="level > 1 ? ui.itemWithChildren({ class: [props.ui?.itemWithChildren, item.ui?.itemWithChildren] }) : ui.item({ class: [props.ui?.item, item.ui?.item] })"
70
+ @toggle="item.onToggle"
71
+ @select="item.onSelect"
67
72
  >
68
- <TreeItem
69
- v-slot="{ isExpanded, isSelected }"
70
- as-child
71
- :level="level"
72
- :value="item"
73
- @toggle="item.onToggle"
74
- @select="item.onSelect"
73
+ <slot
74
+ :name="item.slot ? `${item.slot}-wrapper` : 'item-wrapper'"
75
+ v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }"
75
76
  >
76
- <slot :name="item.slot ? `${item.slot}-wrapper` : 'item-wrapper'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }" :item="item">
77
- <button type="button" :disabled="item.disabled || disabled" :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], selected: isSelected, disabled: item.disabled || disabled })">
78
- <slot :name="item.slot || 'item'" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="item">
79
- <slot :name="item.slot ? `${item.slot}-leading` : 'item-leading'" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="item">
77
+ <button
78
+ type="button"
79
+ :disabled="item.disabled || disabled"
80
+ :data-expanded="isExpanded"
81
+ :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], selected: isSelected, disabled: item.disabled || disabled })"
82
+ >
83
+ <slot :name="item.slot || 'item'" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="item">
84
+ <slot :name="item.slot ? `${item.slot}-leading` : 'item-leading'" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="item">
85
+ <UIcon
86
+ v-if="item.icon"
87
+ :name="item.icon"
88
+ :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, item.ui?.linkLeadingIcon] })"
89
+ />
90
+ <UIcon
91
+ v-else-if="item.children?.length"
92
+ :name="isExpanded ? expandedIcon ?? appConfig.ui.icons.folderOpen : collapsedIcon ?? appConfig.ui.icons.folder"
93
+ :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, item.ui?.linkLeadingIcon] })"
94
+ />
95
+ </slot>
96
+
97
+ <span
98
+ v-if="getItemLabel(item) || !!slots[item.slot ? `${item.slot}-label` : 'item-label']"
99
+ :class="ui.linkLabel({ class: [props.ui?.linkLabel, item.ui?.linkLabel] })"
100
+ >
101
+ <slot
102
+ :name="item.slot ? `${item.slot}-label` : 'item-label'"
103
+ v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }"
104
+ >
105
+ {{ getItemLabel(item) }}
106
+ </slot>
107
+ </span>
108
+
109
+ <span
110
+ v-if="item.trailingIcon || item.children?.length || !!slots[item.slot ? `${item.slot}-trailing` : 'item-trailing']"
111
+ :class="ui.linkTrailing({ class: [props.ui?.linkTrailing, item.ui?.linkTrailing] })"
112
+ >
113
+ <slot
114
+ :name="item.slot ? `${item.slot}-trailing` : 'item-trailing'"
115
+ v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }"
116
+ >
80
117
  <UIcon
81
- v-if="item.icon"
82
- :name="item.icon"
83
- :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, item.ui?.linkLeadingIcon] })"
118
+ v-if="item.trailingIcon"
119
+ :name="item.trailingIcon"
120
+ :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon] })"
84
121
  />
85
122
  <UIcon
86
123
  v-else-if="item.children?.length"
87
- :name="isExpanded ? expandedIcon ?? appConfig.ui.icons.folderOpen : collapsedIcon ?? appConfig.ui.icons.folder"
88
- :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, item.ui?.linkLeadingIcon] })"
124
+ :name="trailingIcon ?? appConfig.ui.icons.chevronDown"
125
+ :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon] })"
89
126
  />
90
127
  </slot>
128
+ </span>
129
+ </slot>
130
+ </button>
131
+ </slot>
91
132
 
92
- <span v-if="getItemLabel(item) || !!slots[item.slot ? `${item.slot}-label` : 'item-label']" :class="ui.linkLabel({ class: [props.ui?.linkLabel, item.ui?.linkLabel] })">
93
- <slot :name="item.slot ? `${item.slot}-label` : 'item-label'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }" :item="item">
94
- {{ getItemLabel(item) }}
95
- </slot>
96
- </span>
97
-
98
- <span v-if="item.trailingIcon || item.children?.length || !!slots[item.slot ? `${item.slot}-trailing` : 'item-trailing']" :class="ui.linkTrailing({ class: [props.ui?.linkTrailing, item.ui?.linkTrailing] })">
99
- <slot :name="item.slot ? `${item.slot}-trailing` : 'item-trailing'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }" :item="item">
100
- <UIcon v-if="item.trailingIcon" :name="item.trailingIcon" :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon] })" />
101
- <UIcon v-else-if="item.children?.length" :name="trailingIcon ?? appConfig.ui.icons.chevronDown" :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon] })" />
102
- </slot>
103
- </span>
104
- </slot>
105
- </button>
106
- </slot>
107
-
108
- <ul v-if="item.children?.length && isExpanded" :class="ui.listWithChildren({ class: [props.ui?.listWithChildren, item.ui?.listWithChildren] })">
109
- <ReuseTreeTemplate :items="item.children" :level="level + 1" />
110
- </ul>
111
- </TreeItem>
112
- </li>
133
+ <ul
134
+ v-if="item.children?.length && isExpanded"
135
+ role="group"
136
+ :class="ui.listWithChildren({ class: [props.ui?.listWithChildren, item.ui?.listWithChildren] })"
137
+ >
138
+ <ReuseTreeTemplate :items="item.children" :level="level + 1" />
139
+ </ul>
140
+ </TreeItem>
113
141
  </DefineTreeTemplate>
114
142
 
115
143
  <TreeRoot
@@ -119,6 +147,6 @@ const defaultExpanded = computed(
119
147
  :default-expanded="defaultExpanded"
120
148
  :selection-behavior="selectionBehavior"
121
149
  >
122
- <ReuseTreeTemplate :items="items" :level="0" />
150
+ <ReuseTreeTemplate :items="items" :level="1" />
123
151
  </TreeRoot>
124
152
  </template>
@@ -49,7 +49,7 @@ export interface TreeProps<T extends TreeItem[] = TreeItem[], VK extends GetItem
49
49
  * The key used to get the label from the item.
50
50
  * @defaultValue 'label'
51
51
  */
52
- labelKey?: keyof NestedItem<T>;
52
+ labelKey?: GetItemKeys<T>;
53
53
  /**
54
54
  * The icon displayed on the right side of a parent node.
55
55
  * @defaultValue appConfig.ui.icons.chevronDown
@@ -0,0 +1,47 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/user';
3
+ import type { AvatarProps, ChipProps, LinkProps } from '../types';
4
+ import type { ComponentConfig } from '../types/tv';
5
+ type User = ComponentConfig<typeof theme, AppConfig, 'user'>;
6
+ export interface UserProps {
7
+ /**
8
+ * The element or component this component should render as.
9
+ * @defaultValue 'div'
10
+ */
11
+ as?: any;
12
+ name?: string;
13
+ description?: string;
14
+ avatar?: Omit<AvatarProps, 'size'> & {
15
+ [key: string]: any;
16
+ };
17
+ chip?: boolean | Omit<ChipProps, 'size' | 'inset'>;
18
+ /**
19
+ * @defaultValue 'md'
20
+ */
21
+ size?: User['variants']['size'];
22
+ /**
23
+ * The orientation of the user.
24
+ * @defaultValue 'horizontal'
25
+ */
26
+ orientation?: User['variants']['orientation'];
27
+ to?: LinkProps['to'];
28
+ target?: LinkProps['target'];
29
+ onClick?: (event: MouseEvent) => void | Promise<void>;
30
+ class?: any;
31
+ ui?: User['slots'];
32
+ }
33
+ export interface UserSlots {
34
+ avatar(props?: {}): any;
35
+ name(props?: {}): any;
36
+ description(props?: {}): any;
37
+ default(props?: {}): any;
38
+ }
39
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<UserProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<UserProps> & Readonly<{}>, {
40
+ orientation: User["variants"]["orientation"];
41
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, UserSlots>;
42
+ export default _default;
43
+ type __VLS_WithSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,7 @@
1
+ import type { AvatarProps } from '@nuxt/ui';
2
+ export interface ColorModeAvatarProps extends /** @vue-ignore */ Omit<AvatarProps, 'src'> {
3
+ light: string;
4
+ dark: string;
5
+ }
6
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import type { ButtonProps } from '@nuxt/ui';
2
+ export interface ColorModeButtonProps extends /** @vue-ignore */ Pick<ButtonProps, 'as' | 'size' | 'disabled' | 'ui'> {
3
+ /**
4
+ * @defaultValue 'neutral'
5
+ */
6
+ color?: ButtonProps['color'];
7
+ /**
8
+ * @defaultValue 'ghost'
9
+ */
10
+ variant?: ButtonProps['variant'];
11
+ }
12
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ColorModeButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ColorModeButtonProps> & Readonly<{}>, {
13
+ color: ButtonProps["color"];
14
+ variant: ButtonProps["variant"];
15
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
16
+ fallback(props?: {}): any;
17
+ }>;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ dark: string;
3
+ light: string;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import type { SelectMenuProps } from '@nuxt/ui';
2
+ export interface ColorModeSelectProps extends /** @vue-ignore */ Pick<SelectMenuProps<any>, 'color' | 'variant' | 'size' | 'trailingIcon' | 'selectedIcon' | 'content' | 'arrow' | 'portal' | 'disabled' | 'ui'> {
3
+ }
4
+ declare const _default: import("vue").DefineComponent<ColorModeSelectProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ColorModeSelectProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import type { SwitchProps } from '@nuxt/ui';
2
+ export interface ColorModeSwitchProps extends /** @vue-ignore */ Pick<SwitchProps, 'as' | 'color' | 'size' | 'disabled' | 'ui'> {
3
+ }
4
+ declare const _default: import("vue").DefineComponent<ColorModeSwitchProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ColorModeSwitchProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ export default _default;
@@ -0,0 +1,102 @@
1
+ import type { AccordionRootProps, AccordionRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import type { ContentNavigationItem } from '@nuxt/content';
4
+ import theme from '#build/ui/content/content-navigation';
5
+ import type { BadgeProps, IconProps, LinkProps } from '../../types';
6
+ import type { ComponentConfig } from '../../types/tv';
7
+ type ContentNavigation = ComponentConfig<typeof theme, AppConfig, 'contentNavigation'>;
8
+ export interface ContentNavigationLink extends ContentNavigationItem {
9
+ /**
10
+ * @IconifyIcon
11
+ */
12
+ icon?: IconProps['name'];
13
+ /**
14
+ * Display a badge on the link.
15
+ * `{ color: 'neutral', variant: 'outline', size: 'sm' }`{lang="ts-type"}
16
+ */
17
+ badge?: string | number | BadgeProps;
18
+ target?: LinkProps['target'];
19
+ /**
20
+ * @IconifyIcon
21
+ */
22
+ trailingIcon?: IconProps['name'];
23
+ disabled?: boolean;
24
+ children?: ContentNavigationLink[];
25
+ defaultOpen?: boolean;
26
+ active?: boolean;
27
+ class?: any;
28
+ ui?: Pick<ContentNavigation['slots'], 'link' | 'linkLeadingIcon' | 'linkTitle' | 'linkTrailing' | 'linkTrailingIcon' | 'linkTrailingBadge' | 'linkTrailingBadgeSize' | 'linkTrailingIcon' | 'linkTitleExternalIcon' | 'trigger' | 'content' | 'item' | 'itemWithChildren'>;
29
+ }
30
+ export interface ContentNavigationProps<T extends ContentNavigationLink = ContentNavigationLink> extends Pick<AccordionRootProps, 'disabled' | 'type' | 'unmountOnHide'> {
31
+ /**
32
+ * The element or component this component should render as.
33
+ * @defaultValue 'nav'
34
+ */
35
+ as?: any;
36
+ /**
37
+ * When `true`, the tree will be opened based on the current route.
38
+ * When `false`, the tree will be closed.
39
+ * When `undefined` (default), the first item will be opened with `type="single"` and the first level will be opened with `type="multiple"`.
40
+ */
41
+ defaultOpen?: boolean;
42
+ /**
43
+ * The icon displayed to toggle the accordion.
44
+ * @defaultValue appConfig.ui.icons.chevronDown
45
+ * @IconifyIcon
46
+ */
47
+ trailingIcon?: IconProps['name'];
48
+ /**
49
+ * @defaultValue 'primary'
50
+ */
51
+ color?: ContentNavigation['variants']['color'];
52
+ /**
53
+ * @defaultValue 'pill'
54
+ */
55
+ variant?: ContentNavigation['variants']['variant'];
56
+ /**
57
+ * Display a line next to the active link.
58
+ * @defaultValue false
59
+ */
60
+ highlight?: boolean;
61
+ /**
62
+ * @defaultValue 'primary'
63
+ */
64
+ highlightColor?: ContentNavigation['variants']['highlightColor'];
65
+ /**
66
+ * When type is "single", prevents closing the open item when clicking its trigger.
67
+ * When type is "multiple", disables the collapsible behavior.
68
+ * @defaultValue true
69
+ */
70
+ collapsible?: boolean;
71
+ level?: number;
72
+ navigation?: T[];
73
+ class?: any;
74
+ ui?: ContentNavigation['slots'];
75
+ }
76
+ export interface ContentNavigationEmits extends AccordionRootEmits {
77
+ }
78
+ type SlotProps<T> = (props: {
79
+ link: T;
80
+ active?: boolean;
81
+ }) => any;
82
+ export interface ContentNavigationSlots<T extends ContentNavigationLink = ContentNavigationLink> {
83
+ 'link': SlotProps<T>;
84
+ 'link-leading': SlotProps<T>;
85
+ 'link-title': SlotProps<T>;
86
+ 'link-trailing': SlotProps<T>;
87
+ }
88
+ declare const _default: <T extends ContentNavigationLink>(__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<{
89
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
90
+ readonly "onUpdate:modelValue"?: ((value: string | string[] | undefined) => any) | undefined;
91
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue"> & ContentNavigationProps<T> & {}> & import("vue").PublicProps;
92
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
93
+ attrs: any;
94
+ slots: ContentNavigationSlots<T>;
95
+ emit: (evt: "update:modelValue", value: string | string[] | undefined) => void;
96
+ }>) => import("vue").VNode & {
97
+ __ctx?: Awaited<typeof __VLS_setup>;
98
+ };
99
+ export default _default;
100
+ type __VLS_PrettifyLocal<T> = {
101
+ [K in keyof T as K]: T[K];
102
+ } & {};
@@ -35,7 +35,7 @@ const props = defineProps({
35
35
  });
36
36
  const emits = defineEmits(["update:modelValue"]);
37
37
  const slots = defineSlots();
38
- const rootProps = useForwardPropsEmits(reactivePick(props, "collapsible", "disabled", "type", "unmountOnHide"), emits);
38
+ const rootProps = useForwardPropsEmits(reactivePick(props, "collapsible", "type", "unmountOnHide"), emits);
39
39
  const route = useRoute();
40
40
  const appConfig = useAppConfig();
41
41
  const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate();
@@ -45,6 +45,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contentNaviga
45
45
  highlight: props.highlight,
46
46
  highlightColor: props.highlightColor || props.color
47
47
  }));
48
+ const disabled = computed(() => props.disabled || props.type === "multiple" && props.collapsible === false);
48
49
  const defaultValue = computed(() => {
49
50
  if (props.defaultOpen === false) {
50
51
  return void 0;
@@ -91,14 +92,14 @@ const defaultValue = computed(() => {
91
92
  </DefineLinkTemplate>
92
93
 
93
94
  <Primitive :as="as" v-bind="$attrs" :as-child="level > 0" :class="ui.root({ class: [props.ui?.root, props.class] })">
94
- <AccordionRoot as="ul" v-bind="rootProps" :default-value="defaultValue" :class="level > 0 ? ui.listWithChildren({ class: props.ui?.listWithChildren }) : ui.list({ class: props.ui?.list })">
95
+ <AccordionRoot as="ul" :disabled="disabled" v-bind="rootProps" :default-value="defaultValue" :class="level > 0 ? ui.listWithChildren({ class: props.ui?.listWithChildren }) : ui.list({ class: props.ui?.list })">
95
96
  <template v-for="(link, index) in navigation" :key="index">
96
97
  <AccordionItem v-if="link.children?.length" as="li" :class="ui.itemWithChildren({ class: [props.ui?.itemWithChildren, link.ui?.itemWithChildren], level: level > 0 })" :value="String(index)">
97
98
  <AccordionTrigger
98
99
  as="button"
99
100
  :class="[
100
- ui.link({ class: [props.ui?.link, link.ui?.link, link.class], active: link.active, disabled: !!link.disabled }),
101
- ui.trigger({ class: [props.ui?.trigger, link.ui?.trigger] })
101
+ ui.link({ class: [props.ui?.link, link.ui?.link, link.class], active: link.active, disabled: !!link.disabled || disabled }),
102
+ ui.trigger({ class: [props.ui?.trigger, link.ui?.trigger], disabled })
102
103
  ]"
103
104
  >
104
105
  <ReuseLinkTemplate :link="link" :active="link.active" />
@@ -63,8 +63,8 @@ export interface ContentNavigationProps<T extends ContentNavigationLink = Conten
63
63
  */
64
64
  highlightColor?: ContentNavigation['variants']['highlightColor'];
65
65
  /**
66
- * When type is "single", allows closing content when clicking trigger for an open item.
67
- * When type is "multiple", this prop has no effect.
66
+ * When type is "single", prevents closing the open item when clicking its trigger.
67
+ * When type is "multiple", disables the collapsible behavior.
68
68
  * @defaultValue true
69
69
  */
70
70
  collapsible?: boolean;
@@ -0,0 +1,114 @@
1
+ import type { ContentNavigationItem } from '@nuxt/content';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import type { UseFuseOptions } from '@vueuse/integrations/useFuse';
4
+ import theme from '#build/ui/content/content-search';
5
+ import type { ButtonProps, InputProps, LinkProps, ModalProps, CommandPaletteProps, CommandPaletteSlots, CommandPaletteGroup, CommandPaletteItem, IconProps } from '../../types';
6
+ import type { ComponentConfig } from '../../types/tv';
7
+ type ContentSearch = ComponentConfig<typeof theme, AppConfig, 'contentSearch'>;
8
+ export interface ContentSearchLink extends Omit<LinkProps, 'custom'> {
9
+ label?: string;
10
+ description?: string;
11
+ /**
12
+ * @IconifyIcon
13
+ */
14
+ icon?: IconProps['name'];
15
+ children?: ContentSearchLink[];
16
+ }
17
+ export interface ContentSearchFile {
18
+ id: string;
19
+ title: string;
20
+ titles: string[];
21
+ level: number;
22
+ content: string;
23
+ }
24
+ export interface ContentSearchItem extends Omit<LinkProps, 'custom'>, CommandPaletteItem {
25
+ level?: number;
26
+ /**
27
+ * @IconifyIcon
28
+ */
29
+ icon?: IconProps['name'];
30
+ }
31
+ export interface ContentSearchProps<T extends ContentSearchLink = ContentSearchLink> extends /* @vue-ignore */ Pick<ModalProps, 'title' | 'description' | 'overlay' | 'transition' | 'content' | 'dismissible' | 'fullscreen' | 'modal' | 'portal'> {
32
+ /**
33
+ * The icon displayed in the input.
34
+ * @defaultValue appConfig.ui.icons.search
35
+ * @IconifyIcon
36
+ */
37
+ icon?: IconProps['name'];
38
+ /**
39
+ * The placeholder text for the input.
40
+ * @defaultValue t('commandPalette.placeholder')
41
+ */
42
+ placeholder?: InputProps['placeholder'];
43
+ /**
44
+ * Automatically focus the input when component is mounted.
45
+ * @defaultValue true
46
+ */
47
+ autofocus?: boolean;
48
+ /** When `true`, the loading icon will be displayed. */
49
+ loading?: boolean;
50
+ /**
51
+ * The icon when the `loading` prop is `true`.
52
+ * @defaultValue appConfig.ui.icons.loading
53
+ * @IconifyIcon
54
+ */
55
+ loadingIcon?: IconProps['name'];
56
+ /**
57
+ * Display a close button in the input (useful when inside a Modal for example).
58
+ * `{ size: 'md', color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
59
+ * @emits 'update:open'
60
+ * @defaultValue true
61
+ */
62
+ close?: boolean | Partial<ButtonProps>;
63
+ /**
64
+ * The icon displayed in the close button.
65
+ * @defaultValue appConfig.ui.icons.close
66
+ * @IconifyIcon
67
+ */
68
+ closeIcon?: IconProps['name'];
69
+ /**
70
+ * Keyboard shortcut to open the search (used by [`defineShortcuts`](https://ui.nuxt.com/docs/composables/define-shortcuts))
71
+ * @defaultValue 'meta_k'
72
+ */
73
+ shortcut?: string;
74
+ /** Links group displayed as the first group in the command palette. */
75
+ links?: T[];
76
+ navigation?: ContentNavigationItem[];
77
+ /** Custom groups displayed between navigation and color mode group. */
78
+ groups?: CommandPaletteGroup<ContentSearchItem>[];
79
+ files?: ContentSearchFile[];
80
+ /**
81
+ * Options for [useFuse](https://vueuse.org/integrations/useFuse) passed to the [CommandPalette](https://ui.nuxt.com/docs/components/command-palette).
82
+ * @defaultValue { fuseOptions: { includeMatches: true } }
83
+ */
84
+ fuse?: UseFuseOptions<T>;
85
+ /**
86
+ * When `true`, the theme command will be added to the groups.
87
+ * @defaultValue true
88
+ */
89
+ colorMode?: boolean;
90
+ class?: any;
91
+ ui?: ContentSearch['slots'] & CommandPaletteProps<CommandPaletteGroup<ContentSearchItem>, ContentSearchItem>['ui'];
92
+ }
93
+ export type ContentSearchSlots = CommandPaletteSlots<CommandPaletteGroup<ContentSearchItem>, ContentSearchItem> & {
94
+ content(props?: {}): any;
95
+ };
96
+ declare const _default: <T extends ContentSearchLink>(__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:searchTerm"?: ((value: string) => any) | undefined;
99
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:searchTerm"> & (ContentSearchProps<T> & {
100
+ searchTerm?: string;
101
+ }) & {}> & import("vue").PublicProps;
102
+ expose(exposed: import("vue").ShallowUnwrapRef<{
103
+ commandPaletteRef: Readonly<import("vue").ShallowRef<import("vue").ShallowUnwrapRef<{}> | null>>;
104
+ }>): void;
105
+ attrs: any;
106
+ slots: ContentSearchSlots;
107
+ emit: (evt: "update:searchTerm", value: string) => void;
108
+ }>) => import("vue").VNode & {
109
+ __ctx?: Awaited<typeof __VLS_setup>;
110
+ };
111
+ export default _default;
112
+ type __VLS_PrettifyLocal<T> = {
113
+ [K in keyof T as K]: T[K];
114
+ } & {};
@@ -39,7 +39,7 @@ const { open } = useContentSearch();
39
39
  const colorMode = useColorMode();
40
40
  const appConfig = useAppConfig();
41
41
  const commandPaletteProps = useForwardProps(reactivePick(props, "icon", "placeholder", "autofocus", "loading", "loadingIcon", "close", "closeIcon"));
42
- const proxySlots = omit(slots, ["content"]);
42
+ const getProxySlots = () => omit(slots, ["content"]);
43
43
  const fuse = computed(() => defu({}, props.fuse, {
44
44
  fuseOptions: {
45
45
  includeMatches: true
@@ -164,7 +164,7 @@ defineExpose({
164
164
  @update:model-value="onSelect"
165
165
  @update:open="open = $event"
166
166
  >
167
- <template v-for="(_, name) in proxySlots" #[name]="slotData">
167
+ <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
168
168
  <slot :name="name" v-bind="slotData" />
169
169
  </template>
170
170
  </UCommandPalette>