@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,254 @@
1
+ import type { SelectRootProps, SelectRootEmits, SelectContentProps, SelectContentEmits, SelectArrowProps } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/select';
4
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
5
+ import type { AvatarProps, ChipProps, IconProps } from '../types';
6
+ import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
7
+ import type { ComponentConfig } from '../types/tv';
8
+ type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
9
+ export type SelectValue = AcceptableValue;
10
+ export type SelectItem = SelectValue | {
11
+ label?: string;
12
+ /**
13
+ * @IconifyIcon
14
+ */
15
+ icon?: IconProps['name'];
16
+ avatar?: AvatarProps;
17
+ chip?: ChipProps;
18
+ /**
19
+ * The item type.
20
+ * @defaultValue 'item'
21
+ */
22
+ type?: 'label' | 'separator' | 'item';
23
+ value?: SelectValue;
24
+ disabled?: boolean;
25
+ onSelect?(e?: Event): void;
26
+ class?: any;
27
+ ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
28
+ [key: string]: any;
29
+ };
30
+ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps {
31
+ id?: string;
32
+ /** The placeholder text when the select is empty. */
33
+ placeholder?: string;
34
+ /**
35
+ * @defaultValue 'primary'
36
+ */
37
+ color?: Select['variants']['color'];
38
+ /**
39
+ * @defaultValue 'outline'
40
+ */
41
+ variant?: Select['variants']['variant'];
42
+ /**
43
+ * @defaultValue 'md'
44
+ */
45
+ size?: Select['variants']['size'];
46
+ /**
47
+ * The icon displayed to open the menu.
48
+ * @defaultValue appConfig.ui.icons.chevronDown
49
+ * @IconifyIcon
50
+ */
51
+ trailingIcon?: IconProps['name'];
52
+ /**
53
+ * The icon displayed when an item is selected.
54
+ * @defaultValue appConfig.ui.icons.check
55
+ * @IconifyIcon
56
+ */
57
+ selectedIcon?: IconProps['name'];
58
+ /**
59
+ * The content of the menu.
60
+ * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' }
61
+ */
62
+ content?: Omit<SelectContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<SelectContentEmits>>;
63
+ /**
64
+ * Display an arrow alongside the menu.
65
+ * @defaultValue false
66
+ */
67
+ arrow?: boolean | Omit<SelectArrowProps, 'as' | 'asChild'>;
68
+ /**
69
+ * Render the menu in a portal.
70
+ * @defaultValue true
71
+ */
72
+ portal?: boolean | string | HTMLElement;
73
+ /**
74
+ * When `items` is an array of objects, select the field to use as the value.
75
+ * @defaultValue 'value'
76
+ */
77
+ valueKey?: VK;
78
+ /**
79
+ * When `items` is an array of objects, select the field to use as the label.
80
+ * @defaultValue 'label'
81
+ */
82
+ labelKey?: GetItemKeys<T>;
83
+ items?: T;
84
+ /** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
85
+ defaultValue?: GetModelValue<T, VK, M>;
86
+ /** The controlled value of the Select. Can be bind as `v-model`. */
87
+ modelValue?: GetModelValue<T, VK, M>;
88
+ /** Whether multiple options can be selected or not. */
89
+ multiple?: M & boolean;
90
+ /** Highlight the ring color like a focus state. */
91
+ highlight?: boolean;
92
+ autofocus?: boolean;
93
+ autofocusDelay?: number;
94
+ class?: any;
95
+ ui?: Select['slots'];
96
+ }
97
+ export type SelectEmits<A extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined, M extends boolean> = Omit<SelectRootEmits, 'update:modelValue'> & {
98
+ change: [event: Event];
99
+ blur: [event: FocusEvent];
100
+ focus: [event: FocusEvent];
101
+ } & GetModelValueEmits<A, VK, M>;
102
+ type SlotProps<T extends SelectItem> = (props: {
103
+ item: T;
104
+ index: number;
105
+ }) => any;
106
+ export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
107
+ 'leading'(props: {
108
+ modelValue?: GetModelValue<A, VK, M>;
109
+ open: boolean;
110
+ ui: {
111
+ [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
112
+ };
113
+ }): any;
114
+ 'default'(props: {
115
+ modelValue?: GetModelValue<A, VK, M>;
116
+ open: boolean;
117
+ }): any;
118
+ 'trailing'(props: {
119
+ modelValue?: GetModelValue<A, VK, M>;
120
+ open: boolean;
121
+ ui: {
122
+ [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
123
+ };
124
+ }): any;
125
+ 'item': SlotProps<T>;
126
+ 'item-leading': SlotProps<T>;
127
+ 'item-label': SlotProps<T>;
128
+ 'item-trailing': SlotProps<T>;
129
+ 'content-top': (props?: {}) => any;
130
+ 'content-bottom': (props?: {}) => any;
131
+ }
132
+ declare const _default: <T extends ArrayOrNested<SelectItem>, 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<{
133
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
134
+ readonly onBlur?: ((event: FocusEvent) => any) | undefined;
135
+ readonly onChange?: ((event: Event) => any) | undefined;
136
+ readonly onFocus?: ((event: FocusEvent) => any) | undefined;
137
+ readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
138
+ readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
139
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue"> & SelectProps<T, VK, M> & {}> & import("vue").PublicProps;
140
+ expose(exposed: import("vue").ShallowUnwrapRef<{
141
+ triggerRef: import("vue").Ref<({
142
+ $: import("vue").ComponentInternalInstance;
143
+ $data: {};
144
+ $props: {
145
+ readonly disabled?: boolean | undefined;
146
+ readonly reference?: import("reka-ui").ReferenceElement | undefined;
147
+ readonly asChild?: boolean | undefined;
148
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
149
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
150
+ $attrs: {
151
+ [x: string]: unknown;
152
+ };
153
+ $refs: {
154
+ [x: string]: unknown;
155
+ };
156
+ $slots: Readonly<{
157
+ [name: string]: import("vue").Slot<any> | undefined;
158
+ }>;
159
+ $root: import("vue").ComponentPublicInstance | null;
160
+ $parent: import("vue").ComponentPublicInstance | null;
161
+ $host: Element | null;
162
+ $emit: (event: string, ...args: any[]) => void;
163
+ $el: any;
164
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
165
+ as: import("reka-ui").AsTag | import("vue").Component;
166
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
167
+ beforeCreate?: (() => void) | (() => void)[];
168
+ created?: (() => void) | (() => void)[];
169
+ beforeMount?: (() => void) | (() => void)[];
170
+ mounted?: (() => void) | (() => void)[];
171
+ beforeUpdate?: (() => void) | (() => void)[];
172
+ updated?: (() => void) | (() => void)[];
173
+ activated?: (() => void) | (() => void)[];
174
+ deactivated?: (() => void) | (() => void)[];
175
+ beforeDestroy?: (() => void) | (() => void)[];
176
+ beforeUnmount?: (() => void) | (() => void)[];
177
+ destroyed?: (() => void) | (() => void)[];
178
+ unmounted?: (() => void) | (() => void)[];
179
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
180
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
181
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
182
+ };
183
+ $forceUpdate: () => void;
184
+ $nextTick: typeof import("vue").nextTick;
185
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
186
+ } & Readonly<{
187
+ as: import("reka-ui").AsTag | import("vue").Component;
188
+ }> & Omit<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
189
+ $slots: {
190
+ default?: (props: {}) => any;
191
+ };
192
+ }) | null, ({
193
+ $: import("vue").ComponentInternalInstance;
194
+ $data: {};
195
+ $props: {
196
+ readonly disabled?: boolean | undefined;
197
+ readonly reference?: import("reka-ui").ReferenceElement | undefined;
198
+ readonly asChild?: boolean | undefined;
199
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
200
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
201
+ $attrs: {
202
+ [x: string]: unknown;
203
+ };
204
+ $refs: {
205
+ [x: string]: unknown;
206
+ };
207
+ $slots: Readonly<{
208
+ [name: string]: import("vue").Slot<any> | undefined;
209
+ }>;
210
+ $root: import("vue").ComponentPublicInstance | null;
211
+ $parent: import("vue").ComponentPublicInstance | null;
212
+ $host: Element | null;
213
+ $emit: (event: string, ...args: any[]) => void;
214
+ $el: any;
215
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
216
+ as: import("reka-ui").AsTag | import("vue").Component;
217
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
218
+ beforeCreate?: (() => void) | (() => void)[];
219
+ created?: (() => void) | (() => void)[];
220
+ beforeMount?: (() => void) | (() => void)[];
221
+ mounted?: (() => void) | (() => void)[];
222
+ beforeUpdate?: (() => void) | (() => void)[];
223
+ updated?: (() => void) | (() => void)[];
224
+ activated?: (() => void) | (() => void)[];
225
+ deactivated?: (() => void) | (() => void)[];
226
+ beforeDestroy?: (() => void) | (() => void)[];
227
+ beforeUnmount?: (() => void) | (() => void)[];
228
+ destroyed?: (() => void) | (() => void)[];
229
+ unmounted?: (() => void) | (() => void)[];
230
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
231
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
232
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
233
+ };
234
+ $forceUpdate: () => void;
235
+ $nextTick: typeof import("vue").nextTick;
236
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
237
+ } & Readonly<{
238
+ as: import("reka-ui").AsTag | import("vue").Component;
239
+ }> & Omit<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
240
+ $slots: {
241
+ default?: (props: {}) => any;
242
+ };
243
+ }) | null>;
244
+ }>): void;
245
+ attrs: any;
246
+ slots: SelectSlots<T, VK, M, NestedItem<T>>;
247
+ emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void);
248
+ }>) => import("vue").VNode & {
249
+ __ctx?: Awaited<typeof __VLS_setup>;
250
+ };
251
+ export default _default;
252
+ type __VLS_PrettifyLocal<T> = {
253
+ [K in keyof T as K]: T[K];
254
+ } & {};
@@ -4,7 +4,7 @@ import theme from "#build/ui/select";
4
4
 
5
5
  <script setup>
6
6
  import { ref, computed, onMounted, toRef } from "vue";
7
- import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectLabel, SelectGroup, SelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from "reka-ui";
7
+ import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectLabel, SelectGroup, SelectItem as RSelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from "reka-ui";
8
8
  import { defu } from "defu";
9
9
  import { reactivePick } from "@vueuse/core";
10
10
  import { useAppConfig } from "#imports";
@@ -186,7 +186,7 @@ defineExpose({
186
186
 
187
187
  <SelectSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
188
188
 
189
- <SelectItem
189
+ <RSelectItem
190
190
  v-else
191
191
  :class="ui.item({ class: [props.ui?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
192
192
  :disabled="isSelectItem(item) && item.disabled"
@@ -221,7 +221,7 @@ defineExpose({
221
221
  </SelectItemIndicator>
222
222
  </span>
223
223
  </slot>
224
- </SelectItem>
224
+ </RSelectItem>
225
225
  </template>
226
226
  </SelectGroup>
227
227
  </div>
@@ -6,7 +6,8 @@ import type { AvatarProps, ChipProps, IconProps } from '../types';
6
6
  import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
7
7
  import type { ComponentConfig } from '../types/tv';
8
8
  type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
9
- interface SelectItemBase {
9
+ export type SelectValue = AcceptableValue;
10
+ export type SelectItem = SelectValue | {
10
11
  label?: string;
11
12
  /**
12
13
  * @IconifyIcon
@@ -19,14 +20,13 @@ interface SelectItemBase {
19
20
  * @defaultValue 'item'
20
21
  */
21
22
  type?: 'label' | 'separator' | 'item';
22
- value?: AcceptableValue | boolean;
23
+ value?: SelectValue;
23
24
  disabled?: boolean;
24
25
  onSelect?(e?: Event): void;
25
26
  class?: any;
26
27
  ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
27
28
  [key: string]: any;
28
- }
29
- export type SelectItem = SelectItemBase | AcceptableValue | boolean;
29
+ };
30
30
  export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps {
31
31
  id?: string;
32
32
  /** The placeholder text when the select is empty. */
@@ -79,7 +79,7 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
79
79
  * When `items` is an array of objects, select the field to use as the label.
80
80
  * @defaultValue 'label'
81
81
  */
82
- labelKey?: keyof NestedItem<T>;
82
+ labelKey?: GetItemKeys<T>;
83
83
  items?: T;
84
84
  /** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
85
85
  defaultValue?: GetModelValue<T, VK, M>;
@@ -0,0 +1,303 @@
1
+ import type { ComboboxRootProps, ComboboxRootEmits, ComboboxContentProps, ComboboxContentEmits, ComboboxArrowProps } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/select-menu';
4
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
5
+ import type { AvatarProps, ChipProps, IconProps, InputProps } from '../types';
6
+ import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
7
+ import type { ComponentConfig } from '../types/tv';
8
+ type SelectMenu = ComponentConfig<typeof theme, AppConfig, 'selectMenu'>;
9
+ export type SelectMenuValue = AcceptableValue;
10
+ export type SelectMenuItem = SelectMenuValue | {
11
+ label?: string;
12
+ /**
13
+ * @IconifyIcon
14
+ */
15
+ icon?: IconProps['name'];
16
+ avatar?: AvatarProps;
17
+ chip?: ChipProps;
18
+ /**
19
+ * The item type.
20
+ * @defaultValue 'item'
21
+ */
22
+ type?: 'label' | 'separator' | 'item';
23
+ disabled?: boolean;
24
+ onSelect?(e?: Event): void;
25
+ class?: any;
26
+ ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
27
+ [key: string]: any;
28
+ };
29
+ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'resetSearchTermOnSelect' | 'highlightOnHover'>, UseComponentIconsProps {
30
+ id?: string;
31
+ /** The placeholder text when the select is empty. */
32
+ placeholder?: string;
33
+ /**
34
+ * Whether to display the search input or not.
35
+ * Can be an object to pass additional props to the input.
36
+ * `{ placeholder: 'Search...', variant: 'none' }`{lang="ts-type"}
37
+ * @defaultValue true
38
+ */
39
+ searchInput?: boolean | InputProps;
40
+ /**
41
+ * @defaultValue 'primary'
42
+ */
43
+ color?: SelectMenu['variants']['color'];
44
+ /**
45
+ * @defaultValue 'outline'
46
+ */
47
+ variant?: SelectMenu['variants']['variant'];
48
+ /**
49
+ * @defaultValue 'md'
50
+ */
51
+ size?: SelectMenu['variants']['size'];
52
+ required?: boolean;
53
+ /**
54
+ * The icon displayed to open the menu.
55
+ * @defaultValue appConfig.ui.icons.chevronDown
56
+ * @IconifyIcon
57
+ */
58
+ trailingIcon?: IconProps['name'];
59
+ /**
60
+ * The icon displayed when an item is selected.
61
+ * @defaultValue appConfig.ui.icons.check
62
+ * @IconifyIcon
63
+ */
64
+ selectedIcon?: IconProps['name'];
65
+ /**
66
+ * The content of the menu.
67
+ * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' }
68
+ */
69
+ content?: Omit<ComboboxContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<ComboboxContentEmits>>;
70
+ /**
71
+ * Display an arrow alongside the menu.
72
+ * @defaultValue false
73
+ * @IconifyIcon
74
+ */
75
+ arrow?: boolean | Omit<ComboboxArrowProps, 'as' | 'asChild'>;
76
+ /**
77
+ * Render the menu in a portal.
78
+ * @defaultValue true
79
+ */
80
+ portal?: boolean | string | HTMLElement;
81
+ /**
82
+ * When `items` is an array of objects, select the field to use as the value instead of the object itself.
83
+ * @defaultValue undefined
84
+ */
85
+ valueKey?: VK;
86
+ /**
87
+ * When `items` is an array of objects, select the field to use as the label.
88
+ * @defaultValue 'label'
89
+ */
90
+ labelKey?: GetItemKeys<T>;
91
+ items?: T;
92
+ /** The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. */
93
+ defaultValue?: GetModelValue<T, VK, M>;
94
+ /** The controlled value of the SelectMenu. Can be binded-with with `v-model`. */
95
+ modelValue?: GetModelValue<T, VK, M>;
96
+ /** Whether multiple options can be selected or not. */
97
+ multiple?: M & boolean;
98
+ /** Highlight the ring color like a focus state. */
99
+ highlight?: boolean;
100
+ /**
101
+ * Determines if custom user input that does not exist in options can be added.
102
+ * @defaultValue false
103
+ */
104
+ createItem?: boolean | 'always' | {
105
+ position?: 'top' | 'bottom';
106
+ when?: 'empty' | 'always';
107
+ };
108
+ /**
109
+ * Fields to filter items by.
110
+ * @defaultValue [labelKey]
111
+ */
112
+ filterFields?: string[];
113
+ /**
114
+ * When `true`, disable the default filters, useful for custom filtering (useAsyncData, useFetch, etc.).
115
+ * @defaultValue false
116
+ */
117
+ ignoreFilter?: boolean;
118
+ autofocus?: boolean;
119
+ autofocusDelay?: number;
120
+ class?: any;
121
+ ui?: SelectMenu['slots'];
122
+ }
123
+ export type SelectMenuEmits<A extends ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<A> | undefined, M extends boolean> = Pick<ComboboxRootEmits, 'update:open'> & {
124
+ change: [event: Event];
125
+ blur: [event: FocusEvent];
126
+ focus: [event: FocusEvent];
127
+ create: [item: string];
128
+ /** Event handler when highlighted element changes. */
129
+ highlight: [
130
+ payload: {
131
+ ref: HTMLElement;
132
+ value: GetModelValue<A, VK, M>;
133
+ } | undefined
134
+ ];
135
+ } & GetModelValueEmits<A, VK, M>;
136
+ type SlotProps<T extends SelectMenuItem> = (props: {
137
+ item: T;
138
+ index: number;
139
+ }) => any;
140
+ export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
141
+ 'leading'(props: {
142
+ modelValue?: GetModelValue<A, VK, M>;
143
+ open: boolean;
144
+ ui: {
145
+ [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
146
+ };
147
+ }): any;
148
+ 'default'(props: {
149
+ modelValue?: GetModelValue<A, VK, M>;
150
+ open: boolean;
151
+ }): any;
152
+ 'trailing'(props: {
153
+ modelValue?: GetModelValue<A, VK, M>;
154
+ open: boolean;
155
+ ui: {
156
+ [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
157
+ };
158
+ }): any;
159
+ 'empty'(props: {
160
+ searchTerm?: string;
161
+ }): any;
162
+ 'item': SlotProps<T>;
163
+ 'item-leading': SlotProps<T>;
164
+ 'item-label': SlotProps<T>;
165
+ 'item-trailing': SlotProps<T>;
166
+ 'content-top': (props?: {}) => any;
167
+ 'content-bottom': (props?: {}) => any;
168
+ 'create-item-label'(props: {
169
+ item: string;
170
+ }): any;
171
+ }
172
+ declare const _default: <T extends ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, 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<{
173
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
174
+ readonly onBlur?: ((event: FocusEvent) => any) | undefined;
175
+ readonly onChange?: ((event: Event) => any) | undefined;
176
+ readonly onFocus?: ((event: FocusEvent) => any) | undefined;
177
+ readonly onCreate?: ((item: string) => any) | undefined;
178
+ readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
179
+ readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
180
+ readonly onHighlight?: ((payload: {
181
+ ref: HTMLElement;
182
+ value: GetModelValue<T, VK, M>;
183
+ } | undefined) => any) | undefined;
184
+ readonly "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
185
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue" | "onCreate" | "onHighlight" | "onUpdate:searchTerm"> & (SelectMenuProps<T, VK, M> & {
186
+ searchTerm?: string;
187
+ }) & {}> & import("vue").PublicProps;
188
+ expose(exposed: import("vue").ShallowUnwrapRef<{
189
+ triggerRef: import("vue").Ref<({
190
+ $: import("vue").ComponentInternalInstance;
191
+ $data: {};
192
+ $props: {
193
+ readonly disabled?: boolean | undefined;
194
+ readonly asChild?: boolean | undefined;
195
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
196
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
197
+ $attrs: {
198
+ [x: string]: unknown;
199
+ };
200
+ $refs: {
201
+ [x: string]: unknown;
202
+ };
203
+ $slots: Readonly<{
204
+ [name: string]: import("vue").Slot<any> | undefined;
205
+ }>;
206
+ $root: import("vue").ComponentPublicInstance | null;
207
+ $parent: import("vue").ComponentPublicInstance | null;
208
+ $host: Element | null;
209
+ $emit: (event: string, ...args: any[]) => void;
210
+ $el: any;
211
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
212
+ as: import("reka-ui").AsTag | import("vue").Component;
213
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
214
+ beforeCreate?: (() => void) | (() => void)[];
215
+ created?: (() => void) | (() => void)[];
216
+ beforeMount?: (() => void) | (() => void)[];
217
+ mounted?: (() => void) | (() => void)[];
218
+ beforeUpdate?: (() => void) | (() => void)[];
219
+ updated?: (() => void) | (() => void)[];
220
+ activated?: (() => void) | (() => void)[];
221
+ deactivated?: (() => void) | (() => void)[];
222
+ beforeDestroy?: (() => void) | (() => void)[];
223
+ beforeUnmount?: (() => void) | (() => void)[];
224
+ destroyed?: (() => void) | (() => void)[];
225
+ unmounted?: (() => void) | (() => void)[];
226
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
227
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
228
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
229
+ };
230
+ $forceUpdate: () => void;
231
+ $nextTick: typeof import("vue").nextTick;
232
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
233
+ } & Readonly<{
234
+ as: import("reka-ui").AsTag | import("vue").Component;
235
+ }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
236
+ $slots: {
237
+ default?: (props: {}) => any;
238
+ };
239
+ }) | null, ({
240
+ $: import("vue").ComponentInternalInstance;
241
+ $data: {};
242
+ $props: {
243
+ readonly disabled?: boolean | undefined;
244
+ readonly asChild?: boolean | undefined;
245
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
246
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
247
+ $attrs: {
248
+ [x: string]: unknown;
249
+ };
250
+ $refs: {
251
+ [x: string]: unknown;
252
+ };
253
+ $slots: Readonly<{
254
+ [name: string]: import("vue").Slot<any> | undefined;
255
+ }>;
256
+ $root: import("vue").ComponentPublicInstance | null;
257
+ $parent: import("vue").ComponentPublicInstance | null;
258
+ $host: Element | null;
259
+ $emit: (event: string, ...args: any[]) => void;
260
+ $el: any;
261
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
262
+ as: import("reka-ui").AsTag | import("vue").Component;
263
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
264
+ beforeCreate?: (() => void) | (() => void)[];
265
+ created?: (() => void) | (() => void)[];
266
+ beforeMount?: (() => void) | (() => void)[];
267
+ mounted?: (() => void) | (() => void)[];
268
+ beforeUpdate?: (() => void) | (() => void)[];
269
+ updated?: (() => void) | (() => void)[];
270
+ activated?: (() => void) | (() => void)[];
271
+ deactivated?: (() => void) | (() => void)[];
272
+ beforeDestroy?: (() => void) | (() => void)[];
273
+ beforeUnmount?: (() => void) | (() => void)[];
274
+ destroyed?: (() => void) | (() => void)[];
275
+ unmounted?: (() => void) | (() => void)[];
276
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
277
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
278
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
279
+ };
280
+ $forceUpdate: () => void;
281
+ $nextTick: typeof import("vue").nextTick;
282
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
283
+ } & Readonly<{
284
+ as: import("reka-ui").AsTag | import("vue").Component;
285
+ }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
286
+ $slots: {
287
+ default?: (props: {}) => any;
288
+ };
289
+ }) | null>;
290
+ }>): void;
291
+ attrs: any;
292
+ slots: SelectMenuSlots<T, VK, M, NestedItem<T>>;
293
+ emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
294
+ ref: HTMLElement;
295
+ value: GetModelValue<T, VK, M>;
296
+ } | undefined) => void)) & ((evt: "update:searchTerm", value: string) => void);
297
+ }>) => import("vue").VNode & {
298
+ __ctx?: Awaited<typeof __VLS_setup>;
299
+ };
300
+ export default _default;
301
+ type __VLS_PrettifyLocal<T> = {
302
+ [K in keyof T as K]: T[K];
303
+ } & {};
@@ -6,7 +6,8 @@ import type { AvatarProps, ChipProps, IconProps, InputProps } from '../types';
6
6
  import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
7
7
  import type { ComponentConfig } from '../types/tv';
8
8
  type SelectMenu = ComponentConfig<typeof theme, AppConfig, 'selectMenu'>;
9
- interface _SelectMenuItem {
9
+ export type SelectMenuValue = AcceptableValue;
10
+ export type SelectMenuItem = SelectMenuValue | {
10
11
  label?: string;
11
12
  /**
12
13
  * @IconifyIcon
@@ -24,8 +25,7 @@ interface _SelectMenuItem {
24
25
  class?: any;
25
26
  ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
26
27
  [key: string]: any;
27
- }
28
- export type SelectMenuItem = _SelectMenuItem | AcceptableValue | boolean;
28
+ };
29
29
  export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'resetSearchTermOnSelect' | 'highlightOnHover'>, UseComponentIconsProps {
30
30
  id?: string;
31
31
  /** The placeholder text when the select is empty. */
@@ -87,7 +87,7 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
87
87
  * When `items` is an array of objects, select the field to use as the label.
88
88
  * @defaultValue 'label'
89
89
  */
90
- labelKey?: keyof NestedItem<T>;
90
+ labelKey?: GetItemKeys<T>;
91
91
  items?: T;
92
92
  /** The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. */
93
93
  defaultValue?: GetModelValue<T, VK, M>;