@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
@@ -2,7 +2,7 @@ import type { TreeRootProps, TreeRootEmits } from 'reka-ui';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/ui/tree';
4
4
  import type { IconProps } from '../types';
5
- import type { DynamicSlots, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem } from '../types/utils';
5
+ import type { DynamicSlots, GetItemKeys } from '../types/utils';
6
6
  import type { ComponentConfig } from '../types/tv';
7
7
  type Tree = ComponentConfig<typeof theme, AppConfig, 'tree'>;
8
8
  export type TreeItem = {
@@ -17,7 +17,6 @@ export type TreeItem = {
17
17
  trailingIcon?: IconProps['name'];
18
18
  defaultExpanded?: boolean;
19
19
  disabled?: boolean;
20
- value?: string;
21
20
  slot?: string;
22
21
  children?: TreeItem[];
23
22
  onToggle?(e: Event): void;
@@ -26,7 +25,7 @@ export type TreeItem = {
26
25
  ui?: Pick<Tree['slots'], 'item' | 'itemWithChildren' | 'link' | 'linkLeadingIcon' | 'linkLabel' | 'linkTrailing' | 'linkTrailingIcon' | 'listWithChildren'>;
27
26
  [key: string]: any;
28
27
  };
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'> {
28
+ export interface TreeProps<T extends TreeItem[] = TreeItem[], M extends boolean = false> extends Pick<TreeRootProps<T>, 'expanded' | 'defaultExpanded' | 'selectionBehavior' | 'propagateSelect' | 'disabled' | 'bubbleSelect'> {
30
29
  /**
31
30
  * The element or component this component should render as.
32
31
  * @defaultValue 'ul'
@@ -40,16 +39,13 @@ export interface TreeProps<T extends TreeItem[] = TreeItem[], VK extends GetItem
40
39
  * @defaultValue 'md'
41
40
  */
42
41
  size?: Tree['variants']['size'];
43
- /**
44
- * The key used to get the value from the item.
45
- * @defaultValue 'value'
46
- */
47
- valueKey?: VK;
42
+ /** This function is passed the index of each item and should return a unique key for that item */
43
+ getKey?: (val: T[number]) => string;
48
44
  /**
49
45
  * The key used to get the label from the item.
50
46
  * @defaultValue 'label'
51
47
  */
52
- labelKey?: keyof NestedItem<T>;
48
+ labelKey?: GetItemKeys<T>;
53
49
  /**
54
50
  * The icon displayed on the right side of a parent node.
55
51
  * @defaultValue appConfig.ui.icons.chevronDown
@@ -70,15 +66,15 @@ export interface TreeProps<T extends TreeItem[] = TreeItem[], VK extends GetItem
70
66
  collapsedIcon?: IconProps['name'];
71
67
  items?: T;
72
68
  /** The controlled value of the Tree. Can be bind as `v-model`. */
73
- modelValue?: GetModelValue<T, VK, M>;
69
+ modelValue?: M extends true ? T[number][] : T[number];
74
70
  /** 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>;
71
+ defaultValue?: M extends true ? T[number][] : T[number];
76
72
  /** Whether multiple options can be selected or not. */
77
73
  multiple?: M & boolean;
78
74
  class?: any;
79
75
  ui?: Tree['slots'];
80
76
  }
81
- export type TreeEmits<A extends TreeItem[], VK extends GetItemKeys<A> | undefined, M extends boolean> = Omit<TreeRootEmits, 'update:modelValue'> & GetModelValueEmits<A, VK, M>;
77
+ export type TreeEmits<T extends TreeItem[] = TreeItem[], M extends boolean = false> = TreeRootEmits<T[number], M>;
82
78
  type SlotProps<T extends TreeItem> = (props: {
83
79
  item: T;
84
80
  index: number;
@@ -86,27 +82,27 @@ type SlotProps<T extends TreeItem> = (props: {
86
82
  expanded: boolean;
87
83
  selected: boolean;
88
84
  }) => 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, {
85
+ export type TreeSlots<T extends TreeItem[] = TreeItem[]> = {
86
+ 'item-wrapper': SlotProps<T[number]>;
87
+ 'item': SlotProps<T[number]>;
88
+ 'item-leading': SlotProps<T[number]>;
89
+ 'item-label': SlotProps<T[number]>;
90
+ 'item-trailing': SlotProps<T[number]>;
91
+ } & DynamicSlots<T[number], undefined, {
96
92
  index: number;
97
93
  level: number;
98
94
  expanded: boolean;
99
95
  selected: boolean;
100
96
  }>;
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<{
97
+ declare const _default: <T extends TreeItem[], 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
98
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
103
- readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
99
+ readonly "onUpdate:modelValue"?: ((val: M extends true ? T[number][] : T[number]) => any) | undefined;
104
100
  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;
101
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue" | "onUpdate:expanded"> & TreeProps<T, M> & {}> & import("vue").PublicProps;
106
102
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
107
103
  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);
104
+ slots: TreeSlots<T>;
105
+ emit: ((evt: "update:modelValue", val: M extends true ? T[number][] : T[number]) => void) & ((evt: "update:expanded", val: string[]) => void);
110
106
  }>) => import("vue").VNode & {
111
107
  __ctx?: Awaited<typeof __VLS_setup>;
112
108
  };
@@ -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>
@@ -0,0 +1,59 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/content/content-search-button';
3
+ import type { ButtonProps, ButtonSlots, IconProps, KbdProps, TooltipProps } from '../../types';
4
+ import type { ComponentConfig } from '../../types/tv';
5
+ type ContentSearchButton = ComponentConfig<typeof theme, AppConfig, 'contentSearchButton'>;
6
+ export interface ContentSearchButtonProps {
7
+ /**
8
+ * The icon displayed in the button.
9
+ * @defaultValue appConfig.ui.icons.search
10
+ * @IconifyIcon
11
+ */
12
+ icon?: IconProps['name'];
13
+ /**
14
+ * The label displayed in the button.
15
+ * @defaultValue t('contentSearchButton.label')
16
+ */
17
+ label?: string;
18
+ /**
19
+ * The color of the button.
20
+ * @defaultValue 'neutral'
21
+ */
22
+ color?: ButtonProps['color'];
23
+ /**
24
+ * The variant of the button.
25
+ * Defaults to 'outline' when not collapsed, 'ghost' when collapsed.
26
+ */
27
+ variant?: ButtonProps['variant'];
28
+ size?: ButtonProps['size'];
29
+ /**
30
+ * Whether the button is collapsed.
31
+ * @defaultValue true
32
+ */
33
+ collapsed?: boolean;
34
+ /**
35
+ * Display a tooltip on the button when is collapsed with the button label.
36
+ * This has priority over the global `tooltip` prop.
37
+ */
38
+ tooltip?: boolean | TooltipProps;
39
+ /**
40
+ * The keyboard keys to display in the button.
41
+ * `{ variant: 'subtle' }`{lang="ts-type"}
42
+ * @defaultValue ['meta', 'k']
43
+ */
44
+ kbds?: KbdProps['value'][] | KbdProps[];
45
+ ui?: ContentSearchButton['slots'] & ButtonProps['ui'];
46
+ class?: any;
47
+ }
48
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ContentSearchButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ContentSearchButtonProps> & Readonly<{}>, {
49
+ color: "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral";
50
+ tooltip: boolean | TooltipProps;
51
+ kbds: KbdProps["value"][] | KbdProps[];
52
+ collapsed: boolean;
53
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ButtonSlots>;
54
+ export default _default;
55
+ type __VLS_WithSlots<T, S> = T & {
56
+ new (): {
57
+ $slots: S;
58
+ };
59
+ };
@@ -30,7 +30,7 @@ const props = defineProps({
30
30
  });
31
31
  const slots = defineSlots();
32
32
  const [DefineButtonTemplate, ReuseButtonTemplate] = createReusableTemplate();
33
- const proxySlots = omit(slots, ["trailing"]);
33
+ const getProxySlots = () => omit(slots, ["trailing"]);
34
34
  const rootProps = useForwardProps(reactivePick(props, "color", "size"));
35
35
  const tooltipProps = toRef(() => defu(typeof props.tooltip === "boolean" ? {} : props.tooltip, { delayDuration: 0, content: { side: "right" } }));
36
36
  const { t } = useLocale();
@@ -58,7 +58,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contentSearch
58
58
  :ui="transformUI(ui, props.ui)"
59
59
  @click="open = true"
60
60
  >
61
- <template v-for="(_, name) in proxySlots" #[name]="slotData">
61
+ <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
62
62
  <slot :name="name" v-bind="slotData" />
63
63
  </template>
64
64
 
@@ -0,0 +1,59 @@
1
+ import type { ContentNavigationItem } from '@nuxt/content';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/content/content-surround';
4
+ import type { IconProps } from '../../types';
5
+ import type { ComponentConfig } from '../../types/tv';
6
+ type ContentSurround = ComponentConfig<typeof theme, AppConfig, 'contentSurround'>;
7
+ export interface ContentSurroundLink extends ContentNavigationItem {
8
+ description?: string;
9
+ /**
10
+ * @IconifyIcon
11
+ */
12
+ icon?: IconProps['name'];
13
+ class?: any;
14
+ ui?: Pick<ContentSurround['slots'], 'link' | 'linkLeading' | 'linkLeadingIcon' | 'linkTitle' | 'linkDescription'>;
15
+ }
16
+ export interface ContentSurroundProps<T extends ContentSurroundLink = ContentSurroundLink> {
17
+ /**
18
+ * The element or component this component should render as.
19
+ * @defaultValue 'div'
20
+ */
21
+ as?: any;
22
+ /**
23
+ * The icon displayed in the prev link.
24
+ * @defaultValue appConfig.ui.icons.arrowLeft
25
+ * @IconifyIcon
26
+ */
27
+ prevIcon?: IconProps['name'];
28
+ /**
29
+ * The icon displayed in the next link.
30
+ * @defaultValue appConfig.ui.icons.arrowRight
31
+ * @IconifyIcon
32
+ */
33
+ nextIcon?: IconProps['name'];
34
+ surround?: T[];
35
+ class?: any;
36
+ ui?: ContentSurround['slots'];
37
+ }
38
+ type SlotProps<T> = (props: {
39
+ link: T;
40
+ }) => any;
41
+ export interface ContentSurroundSlots<T extends ContentSurroundLink = ContentSurroundLink> {
42
+ 'link': SlotProps<T>;
43
+ 'link-leading': SlotProps<T>;
44
+ 'link-title': SlotProps<T>;
45
+ 'link-description': SlotProps<T>;
46
+ }
47
+ declare const _default: <T extends ContentSurroundLink>(__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<{
48
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, never> & ContentSurroundProps<T> & {}> & import("vue").PublicProps;
49
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
50
+ attrs: any;
51
+ slots: ContentSurroundSlots<T>;
52
+ emit: {};
53
+ }>) => import("vue").VNode & {
54
+ __ctx?: Awaited<typeof __VLS_setup>;
55
+ };
56
+ export default _default;
57
+ type __VLS_PrettifyLocal<T> = {
58
+ [K in keyof T as K]: T[K];
59
+ } & {};