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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/.nuxt/ui/content/content-navigation.ts +2 -1
  2. package/.nuxt/ui/marquee.ts +1 -1
  3. package/.nuxt/ui/progress.ts +3 -3
  4. package/.nuxt/ui/prose/code-tree.ts +1 -1
  5. package/.nuxt/ui/prose/img.ts +1 -1
  6. package/.nuxt/ui/tree.ts +1 -1
  7. package/README.md +14 -1
  8. package/dist/module.d.mts +6 -6
  9. package/dist/module.json +2 -2
  10. package/dist/module.mjs +8 -6
  11. package/dist/runtime/components/Accordion.d.vue.ts +79 -0
  12. package/dist/runtime/components/Accordion.vue +3 -3
  13. package/dist/runtime/components/Accordion.vue.d.ts +2 -2
  14. package/dist/runtime/components/Alert.d.vue.ts +81 -0
  15. package/dist/runtime/components/App.d.vue.ts +25 -0
  16. package/dist/runtime/components/AuthForm.d.vue.ts +128 -0
  17. package/dist/runtime/components/AuthForm.vue.d.ts +39 -1
  18. package/dist/runtime/components/Avatar.d.vue.ts +41 -0
  19. package/dist/runtime/components/AvatarGroup.d.vue.ts +31 -0
  20. package/dist/runtime/components/Badge.d.vue.ts +43 -0
  21. package/dist/runtime/components/Banner.d.vue.ts +72 -0
  22. package/dist/runtime/components/Banner.vue +1 -1
  23. package/dist/runtime/components/BlogPost.d.vue.ts +60 -0
  24. package/dist/runtime/components/BlogPosts.d.vue.ts +31 -0
  25. package/dist/runtime/components/Breadcrumb.d.vue.ts +67 -0
  26. package/dist/runtime/components/Breadcrumb.vue +1 -1
  27. package/dist/runtime/components/Breadcrumb.vue.d.ts +2 -2
  28. package/dist/runtime/components/Button.d.vue.ts +44 -0
  29. package/dist/runtime/components/Calendar.d.vue.ts +112 -0
  30. package/dist/runtime/components/Card.d.vue.ts +29 -0
  31. package/dist/runtime/components/Carousel.d.vue.ts +127 -0
  32. package/dist/runtime/components/Carousel.vue.d.ts +10 -10
  33. package/dist/runtime/components/ChangelogVersion.d.vue.ts +59 -0
  34. package/dist/runtime/components/ChangelogVersions.d.vue.ts +78 -0
  35. package/dist/runtime/components/ChangelogVersions.vue +2 -2
  36. package/dist/runtime/components/ChatMessage.d.vue.ts +67 -0
  37. package/dist/runtime/components/ChatMessages.d.vue.ts +83 -0
  38. package/dist/runtime/components/ChatMessages.vue +6 -6
  39. package/dist/runtime/components/ChatPalette.d.vue.ts +24 -0
  40. package/dist/runtime/components/ChatPrompt.d.vue.ts +61 -0
  41. package/dist/runtime/components/ChatPrompt.vue +2 -2
  42. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +100 -0
  43. package/dist/runtime/components/Checkbox.d.vue.ts +74 -0
  44. package/dist/runtime/components/CheckboxGroup.d.vue.ts +89 -0
  45. package/dist/runtime/components/CheckboxGroup.vue +8 -8
  46. package/dist/runtime/components/CheckboxGroup.vue.d.ts +20 -16
  47. package/dist/runtime/components/Chip.d.vue.ts +57 -0
  48. package/dist/runtime/components/Collapsible.d.vue.ts +35 -0
  49. package/dist/runtime/components/ColorPicker.d.vue.ts +48 -0
  50. package/dist/runtime/components/CommandPalette.d.vue.ts +193 -0
  51. package/dist/runtime/components/CommandPalette.vue +5 -4
  52. package/dist/runtime/components/CommandPalette.vue.d.ts +2 -1
  53. package/dist/runtime/components/Container.d.vue.ts +18 -0
  54. package/dist/runtime/components/ContextMenu.d.vue.ts +110 -0
  55. package/dist/runtime/components/ContextMenu.vue +2 -2
  56. package/dist/runtime/components/ContextMenu.vue.d.ts +2 -2
  57. package/dist/runtime/components/ContextMenuContent.d.vue.ts +50 -0
  58. package/dist/runtime/components/ContextMenuContent.vue +2 -2
  59. package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -2
  60. package/dist/runtime/components/DashboardGroup.d.vue.ts +24 -0
  61. package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -1
  62. package/dist/runtime/components/DashboardNavbar.d.vue.ts +52 -0
  63. package/dist/runtime/components/DashboardPanel.d.vue.ts +30 -0
  64. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +18 -0
  65. package/dist/runtime/components/DashboardSearch.d.vue.ts +91 -0
  66. package/dist/runtime/components/DashboardSearch.vue +2 -2
  67. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +59 -0
  68. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  69. package/dist/runtime/components/DashboardSidebar.d.vue.ts +75 -0
  70. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +19 -0
  71. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +19 -0
  72. package/dist/runtime/components/DashboardToolbar.d.vue.ts +25 -0
  73. package/dist/runtime/components/Drawer.d.vue.ts +84 -0
  74. package/dist/runtime/components/DropdownMenu.d.vue.ts +120 -0
  75. package/dist/runtime/components/DropdownMenu.vue +2 -2
  76. package/dist/runtime/components/DropdownMenu.vue.d.ts +2 -2
  77. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +56 -0
  78. package/dist/runtime/components/DropdownMenuContent.vue +2 -2
  79. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +2 -2
  80. package/dist/runtime/components/Error.d.vue.ts +47 -0
  81. package/dist/runtime/components/FieldGroup.d.vue.ts +34 -0
  82. package/dist/runtime/components/FileUpload.d.vue.ts +166 -0
  83. package/dist/runtime/components/FileUpload.vue +1 -0
  84. package/dist/runtime/components/Footer.d.vue.ts +29 -0
  85. package/dist/runtime/components/FooterColumns.d.vue.ts +57 -0
  86. package/dist/runtime/components/Form.d.vue.ts +114 -0
  87. package/dist/runtime/components/Form.vue +144 -60
  88. package/dist/runtime/components/Form.vue.d.ts +54 -11
  89. package/dist/runtime/components/FormField.d.vue.ts +61 -0
  90. package/dist/runtime/components/FormField.vue +9 -3
  91. package/dist/runtime/components/Header.d.vue.ts +68 -0
  92. package/dist/runtime/components/Icon.d.vue.ts +8 -0
  93. package/dist/runtime/components/Input.d.vue.ts +74 -0
  94. package/dist/runtime/components/Input.vue.d.ts +4 -3
  95. package/dist/runtime/components/InputMenu.d.vue.ts +330 -0
  96. package/dist/runtime/components/InputMenu.vue +2 -2
  97. package/dist/runtime/components/InputMenu.vue.d.ts +4 -4
  98. package/dist/runtime/components/InputNumber.d.vue.ts +188 -0
  99. package/dist/runtime/components/InputNumber.vue +2 -2
  100. package/dist/runtime/components/InputNumber.vue.d.ts +0 -2
  101. package/dist/runtime/components/InputTags.d.vue.ts +186 -0
  102. package/dist/runtime/components/InputTags.vue +2 -2
  103. package/dist/runtime/components/Kbd.d.vue.ts +38 -0
  104. package/dist/runtime/components/Link.d.vue.ts +91 -0
  105. package/dist/runtime/components/LinkBase.d.vue.ts +25 -0
  106. package/dist/runtime/components/Main.d.vue.ts +20 -0
  107. package/dist/runtime/components/Marquee.d.vue.ts +32 -0
  108. package/dist/runtime/components/Marquee.vue +1 -1
  109. package/dist/runtime/components/Modal.d.vue.ts +107 -0
  110. package/dist/runtime/components/NavigationMenu.d.vue.ts +171 -0
  111. package/dist/runtime/components/NavigationMenu.vue.d.ts +2 -2
  112. package/dist/runtime/components/OverlayProvider.d.vue.ts +2 -0
  113. package/dist/runtime/components/Page.d.vue.ts +25 -0
  114. package/dist/runtime/components/PageAnchors.d.vue.ts +47 -0
  115. package/dist/runtime/components/PageAside.d.vue.ts +27 -0
  116. package/dist/runtime/components/PageBody.d.vue.ts +18 -0
  117. package/dist/runtime/components/PageCTA.d.vue.ts +56 -0
  118. package/dist/runtime/components/PageCard.d.vue.ts +72 -0
  119. package/dist/runtime/components/PageColumns.d.vue.ts +18 -0
  120. package/dist/runtime/components/PageFeature.d.vue.ts +44 -0
  121. package/dist/runtime/components/PageGrid.d.vue.ts +18 -0
  122. package/dist/runtime/components/PageHeader.d.vue.ts +36 -0
  123. package/dist/runtime/components/PageHero.d.vue.ts +53 -0
  124. package/dist/runtime/components/PageLinks.d.vue.ts +49 -0
  125. package/dist/runtime/components/PageList.d.vue.ts +21 -0
  126. package/dist/runtime/components/PageLogos.d.vue.ts +33 -0
  127. package/dist/runtime/components/PageSection.d.vue.ts +68 -0
  128. package/dist/runtime/components/Pagination.d.vue.ts +118 -0
  129. package/dist/runtime/components/PinInput.d.vue.ts +60 -0
  130. package/dist/runtime/components/Popover.d.vue.ts +71 -0
  131. package/dist/runtime/components/PricingPlan.d.vue.ts +112 -0
  132. package/dist/runtime/components/PricingPlans.d.vue.ts +44 -0
  133. package/dist/runtime/components/PricingTable.d.vue.ts +105 -0
  134. package/dist/runtime/components/Progress.d.vue.ts +66 -0
  135. package/dist/runtime/components/Progress.vue +2 -3
  136. package/dist/runtime/components/RadioGroup.d.vue.ts +99 -0
  137. package/dist/runtime/components/RadioGroup.vue +13 -11
  138. package/dist/runtime/components/RadioGroup.vue.d.ts +17 -13
  139. package/dist/runtime/components/Select.d.vue.ts +254 -0
  140. package/dist/runtime/components/Select.vue +3 -3
  141. package/dist/runtime/components/Select.vue.d.ts +5 -5
  142. package/dist/runtime/components/SelectMenu.d.vue.ts +303 -0
  143. package/dist/runtime/components/SelectMenu.vue.d.ts +4 -4
  144. package/dist/runtime/components/Separator.d.vue.ts +54 -0
  145. package/dist/runtime/components/Skeleton.d.vue.ts +17 -0
  146. package/dist/runtime/components/Slideover.d.vue.ts +108 -0
  147. package/dist/runtime/components/Slider.d.vue.ts +57 -0
  148. package/dist/runtime/components/Stepper.d.vue.ts +87 -0
  149. package/dist/runtime/components/Switch.d.vue.ts +71 -0
  150. package/dist/runtime/components/Table.d.vue.ts +201 -0
  151. package/dist/runtime/components/Table.vue.d.ts +26 -26
  152. package/dist/runtime/components/Tabs.d.vue.ts +99 -0
  153. package/dist/runtime/components/Tabs.vue +12 -5
  154. package/dist/runtime/components/Tabs.vue.d.ts +2 -2
  155. package/dist/runtime/components/Textarea.d.vue.ts +74 -0
  156. package/dist/runtime/components/Timeline.d.vue.ts +71 -0
  157. package/dist/runtime/components/Toast.d.vue.ts +165 -0
  158. package/dist/runtime/components/Toaster.d.vue.ts +44 -0
  159. package/dist/runtime/components/Tooltip.d.vue.ts +57 -0
  160. package/dist/runtime/components/Tree.d.vue.ts +112 -0
  161. package/dist/runtime/components/Tree.vue +88 -47
  162. package/dist/runtime/components/Tree.vue.d.ts +20 -24
  163. package/dist/runtime/components/User.d.vue.ts +47 -0
  164. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +7 -0
  165. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +23 -0
  166. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +6 -0
  167. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
  168. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
  169. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +102 -0
  170. package/dist/runtime/components/content/ContentNavigation.vue +5 -4
  171. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +2 -2
  172. package/dist/runtime/components/content/ContentSearch.d.vue.ts +114 -0
  173. package/dist/runtime/components/content/ContentSearch.vue +2 -2
  174. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +59 -0
  175. package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
  176. package/dist/runtime/components/content/ContentSurround.d.vue.ts +59 -0
  177. package/dist/runtime/components/content/ContentToc.d.vue.ts +88 -0
  178. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +15 -0
  179. package/dist/runtime/components/prose/A.d.vue.ts +15 -0
  180. package/dist/runtime/components/prose/Accordion.d.vue.ts +16 -0
  181. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +15 -0
  182. package/dist/runtime/components/prose/Badge.d.vue.ts +13 -0
  183. package/dist/runtime/components/prose/Blockquote.d.vue.ts +13 -0
  184. package/dist/runtime/components/prose/Callout.d.vue.ts +26 -0
  185. package/dist/runtime/components/prose/Card.d.vue.ts +29 -0
  186. package/dist/runtime/components/prose/CardGroup.d.vue.ts +13 -0
  187. package/dist/runtime/components/prose/Code.d.vue.ts +22 -0
  188. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +47 -0
  189. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +37 -0
  190. package/dist/runtime/components/prose/CodeIcon.d.vue.ts +7 -0
  191. package/dist/runtime/components/prose/CodePreview.d.vue.ts +19 -0
  192. package/dist/runtime/components/prose/CodeTree.d.vue.ts +28 -0
  193. package/dist/runtime/components/prose/CodeTree.vue +38 -31
  194. package/dist/runtime/components/prose/Collapsible.d.vue.ts +39 -0
  195. package/dist/runtime/components/prose/Em.d.vue.ts +13 -0
  196. package/dist/runtime/components/prose/Field.d.vue.ts +39 -0
  197. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +18 -0
  198. package/dist/runtime/components/prose/H1.d.vue.ts +19 -0
  199. package/dist/runtime/components/prose/H2.d.vue.ts +19 -0
  200. package/dist/runtime/components/prose/H3.d.vue.ts +19 -0
  201. package/dist/runtime/components/prose/H4.d.vue.ts +19 -0
  202. package/dist/runtime/components/prose/Hr.d.vue.ts +5 -0
  203. package/dist/runtime/components/prose/Icon.d.vue.ts +6 -0
  204. package/dist/runtime/components/prose/Img.d.vue.ts +21 -0
  205. package/dist/runtime/components/prose/Kbd.d.vue.ts +6 -0
  206. package/dist/runtime/components/prose/Li.d.vue.ts +13 -0
  207. package/dist/runtime/components/prose/Ol.d.vue.ts +13 -0
  208. package/dist/runtime/components/prose/P.d.vue.ts +13 -0
  209. package/dist/runtime/components/prose/Pre.d.vue.ts +26 -0
  210. package/dist/runtime/components/prose/Script.d.vue.ts +5 -0
  211. package/dist/runtime/components/prose/Steps.d.vue.ts +22 -0
  212. package/dist/runtime/components/prose/Strong.d.vue.ts +13 -0
  213. package/dist/runtime/components/prose/Table.d.vue.ts +18 -0
  214. package/dist/runtime/components/prose/Tabs.d.vue.ts +36 -0
  215. package/dist/runtime/components/prose/TabsItem.d.vue.ts +15 -0
  216. package/dist/runtime/components/prose/Tbody.d.vue.ts +13 -0
  217. package/dist/runtime/components/prose/Td.d.vue.ts +13 -0
  218. package/dist/runtime/components/prose/Th.d.vue.ts +13 -0
  219. package/dist/runtime/components/prose/Thead.d.vue.ts +13 -0
  220. package/dist/runtime/components/prose/Tr.d.vue.ts +13 -0
  221. package/dist/runtime/components/prose/Ul.d.vue.ts +13 -0
  222. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +14 -0
  223. package/dist/runtime/components/prose/callout/Note.d.vue.ts +14 -0
  224. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +14 -0
  225. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +14 -0
  226. package/dist/runtime/composables/useFormField.d.ts +1 -0
  227. package/dist/runtime/composables/useFormField.js +1 -4
  228. package/dist/runtime/inertia/components/Link.d.vue.ts +63 -0
  229. package/dist/runtime/inertia/components/LinkBase.d.vue.ts +25 -0
  230. package/dist/runtime/locale/de_ch.d.ts +3 -0
  231. package/dist/runtime/locale/de_ch.js +129 -0
  232. package/dist/runtime/locale/id.js +1 -1
  233. package/dist/runtime/locale/index.d.ts +2 -0
  234. package/dist/runtime/locale/index.js +2 -0
  235. package/dist/runtime/locale/ka.d.ts +3 -0
  236. package/dist/runtime/locale/ka.js +132 -0
  237. package/dist/runtime/locale/pt.js +2 -2
  238. package/dist/runtime/types/form.d.ts +12 -13
  239. package/dist/runtime/types/form.js +1 -3
  240. package/dist/runtime/types/index.d.ts +1 -0
  241. package/dist/runtime/types/index.js +1 -0
  242. package/dist/runtime/types/tv.d.ts +9 -2
  243. package/dist/runtime/types/utils.d.ts +7 -3
  244. package/dist/runtime/utils/form.d.ts +2 -6
  245. package/dist/runtime/utils/form.js +28 -60
  246. package/dist/runtime/utils/fuse.d.ts +2 -1
  247. package/dist/runtime/utils/index.d.ts +3 -3
  248. package/dist/runtime/utils/index.js +6 -3
  249. package/dist/runtime/vue/components/Icon.d.vue.ts +6 -0
  250. package/dist/runtime/vue/components/Link.d.vue.ts +93 -0
  251. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +16 -0
  252. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
  253. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
  254. package/dist/shared/{ui.BEZXPd3d.mjs → ui.DGJZ-1aX.mjs} +18 -13
  255. package/dist/unplugin.mjs +1 -1
  256. package/dist/vite.mjs +1 -1
  257. package/package.json +27 -40
@@ -0,0 +1,66 @@
1
+ import type { ProgressRootProps, ProgressRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/progress';
4
+ import type { ComponentConfig } from '../types/tv';
5
+ type Progress = ComponentConfig<typeof theme, AppConfig, 'progress'>;
6
+ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'getValueText' | 'modelValue'> {
7
+ /**
8
+ * The element or component this component should render as.
9
+ * @defaultValue 'div'
10
+ */
11
+ as?: any;
12
+ /** The maximum progress value. */
13
+ max?: number | Array<any>;
14
+ /** Display the current progress value. */
15
+ status?: boolean;
16
+ /** Whether the progress is visually inverted. */
17
+ inverted?: boolean;
18
+ /**
19
+ * @defaultValue 'md'
20
+ */
21
+ size?: Progress['variants']['size'];
22
+ /**
23
+ * @defaultValue 'primary'
24
+ */
25
+ color?: Progress['variants']['color'];
26
+ /**
27
+ * The orientation of the progress bar.
28
+ * @defaultValue 'horizontal'
29
+ */
30
+ orientation?: Progress['variants']['orientation'];
31
+ /**
32
+ * The animation of the progress bar.
33
+ * @defaultValue 'carousel'
34
+ */
35
+ animation?: Progress['variants']['animation'];
36
+ class?: any;
37
+ ui?: Progress['slots'];
38
+ }
39
+ export interface ProgressEmits extends ProgressRootEmits {
40
+ }
41
+ export type ProgressSlots = {
42
+ status(props: {
43
+ percent?: number;
44
+ }): any;
45
+ } & {
46
+ [key: string]: (props: {
47
+ step: number;
48
+ }) => any;
49
+ };
50
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
51
+ "update:modelValue": (value: string[] | undefined) => any;
52
+ "update:max": (value: number) => any;
53
+ }, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
54
+ "onUpdate:modelValue"?: ((value: string[] | undefined) => any) | undefined;
55
+ "onUpdate:max"?: ((value: number) => any) | undefined;
56
+ }>, {
57
+ orientation: Progress["variants"]["orientation"];
58
+ modelValue: number | null;
59
+ inverted: boolean;
60
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
61
+ export default _default;
62
+ type __VLS_WithSlots<T, S> = T & {
63
+ new (): {
64
+ $slots: S;
65
+ };
66
+ };
@@ -74,9 +74,8 @@ const indicatorStyle = computed(() => {
74
74
  }
75
75
  });
76
76
  const statusStyle = computed(() => {
77
- return {
78
- [props.orientation === "vertical" ? "height" : "width"]: percent.value ? `${percent.value}%` : "fit-content"
79
- };
77
+ const value = `${Math.max(percent.value ?? 0, 0)}%`;
78
+ return props.orientation === "vertical" ? { height: value } : { width: value };
80
79
  });
81
80
  function isActive(index) {
82
81
  return index === Number(props.modelValue);
@@ -0,0 +1,99 @@
1
+ import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/radio-group';
4
+ import type { AcceptableValue, GetItemKeys, GetModelValue } from '../types/utils';
5
+ import type { ComponentConfig } from '../types/tv';
6
+ type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
7
+ export type RadioGroupValue = AcceptableValue;
8
+ export type RadioGroupItem = RadioGroupValue | {
9
+ label?: string;
10
+ description?: string;
11
+ disabled?: boolean;
12
+ value?: RadioGroupValue;
13
+ class?: any;
14
+ ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
15
+ [key: string]: any;
16
+ };
17
+ export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
18
+ /**
19
+ * The element or component this component should render as.
20
+ * @defaultValue 'div'
21
+ */
22
+ as?: any;
23
+ legend?: string;
24
+ /**
25
+ * When `items` is an array of objects, select the field to use as the value.
26
+ * @defaultValue 'value'
27
+ */
28
+ valueKey?: VK;
29
+ /**
30
+ * When `items` is an array of objects, select the field to use as the label.
31
+ * @defaultValue 'label'
32
+ */
33
+ labelKey?: GetItemKeys<T>;
34
+ /**
35
+ * When `items` is an array of objects, select the field to use as the description.
36
+ * @defaultValue 'description'
37
+ */
38
+ descriptionKey?: GetItemKeys<T>;
39
+ items?: T;
40
+ /** The controlled value of the RadioGroup. Can be bind as `v-model`. */
41
+ modelValue?: GetModelValue<T, VK, false>;
42
+ /** The value of the RadioGroup when initially rendered. Use when you do not need to control the state of the RadioGroup. */
43
+ defaultValue?: GetModelValue<T, VK, false>;
44
+ /**
45
+ * @defaultValue 'md'
46
+ */
47
+ size?: RadioGroup['variants']['size'];
48
+ /**
49
+ * @defaultValue 'list'
50
+ */
51
+ variant?: RadioGroup['variants']['variant'];
52
+ /**
53
+ * @defaultValue 'primary'
54
+ */
55
+ color?: RadioGroup['variants']['color'];
56
+ /**
57
+ * The orientation the radio buttons are laid out.
58
+ * @defaultValue 'vertical'
59
+ */
60
+ orientation?: RadioGroupRootProps['orientation'];
61
+ /**
62
+ * Position of the indicator.
63
+ * @defaultValue 'start'
64
+ */
65
+ indicator?: RadioGroup['variants']['indicator'];
66
+ class?: any;
67
+ ui?: RadioGroup['slots'];
68
+ }
69
+ export type RadioGroupEmits = RadioGroupRootEmits & {
70
+ change: [event: Event];
71
+ };
72
+ type NormalizeItem<T extends RadioGroupItem> = Exclude<T & {
73
+ id: string;
74
+ }, RadioGroupValue>;
75
+ type SlotProps<T extends RadioGroupItem> = (props: {
76
+ item: NormalizeItem<T>;
77
+ modelValue?: RadioGroupValue;
78
+ }) => any;
79
+ export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]> {
80
+ legend(props?: {}): any;
81
+ label: SlotProps<T[number]>;
82
+ description: SlotProps<T[number]>;
83
+ }
84
+ declare const _default: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__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<{
85
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
86
+ readonly onChange?: ((event: Event) => any) | undefined;
87
+ readonly "onUpdate:modelValue"?: ((payload: string) => any) | undefined;
88
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onChange" | "onUpdate:modelValue"> & RadioGroupProps<T, VK> & {}> & import("vue").PublicProps;
89
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
90
+ attrs: any;
91
+ slots: RadioGroupSlots<T>;
92
+ emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", payload: string) => void);
93
+ }>) => import("vue").VNode & {
94
+ __ctx?: Awaited<typeof __VLS_setup>;
95
+ };
96
+ export default _default;
97
+ type __VLS_PrettifyLocal<T> = {
98
+ [K in keyof T as K]: T[K];
99
+ } & {};
@@ -4,7 +4,7 @@ import theme from "#build/ui/radio-group";
4
4
 
5
5
  <script setup>
6
6
  import { computed, useId } from "vue";
7
- import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from "reka-ui";
7
+ import { RadioGroupRoot, RadioGroupItem as RRadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from "reka-ui";
8
8
  import { reactivePick } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
10
10
  import { useFormField } from "../composables/useFormField";
@@ -13,10 +13,12 @@ import { tv } from "../utils/tv";
13
13
  const props = defineProps({
14
14
  as: { type: null, required: false },
15
15
  legend: { type: String, required: false },
16
- valueKey: { type: String, required: false, default: "value" },
17
- labelKey: { type: String, required: false, default: "label" },
18
- descriptionKey: { type: String, required: false, default: "description" },
19
- items: { type: Array, required: false },
16
+ valueKey: { type: null, required: false, default: "value" },
17
+ labelKey: { type: null, required: false, default: "label" },
18
+ descriptionKey: { type: null, required: false, default: "description" },
19
+ items: { type: null, required: false },
20
+ modelValue: { type: null, required: false },
21
+ defaultValue: { type: null, required: false },
20
22
  size: { type: null, required: false },
21
23
  variant: { type: null, required: false },
22
24
  color: { type: null, required: false },
@@ -24,17 +26,15 @@ const props = defineProps({
24
26
  indicator: { type: null, required: false },
25
27
  class: { type: null, required: false },
26
28
  ui: { type: null, required: false },
27
- defaultValue: { type: null, required: false },
28
29
  disabled: { type: Boolean, required: false },
29
30
  loop: { type: Boolean, required: false },
30
- modelValue: { type: null, required: false },
31
31
  name: { type: String, required: false },
32
32
  required: { type: Boolean, required: false }
33
33
  });
34
34
  const emits = defineEmits(["update:modelValue", "change"]);
35
35
  const slots = defineSlots();
36
36
  const appConfig = useAppConfig();
37
- const rootProps = useForwardPropsEmits(reactivePick(props, "as", "modelValue", "defaultValue", "orientation", "loop", "required"), emits);
37
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "loop", "required"), emits);
38
38
  const { emitFormChange, emitFormInput, color, name, size, id: _id, disabled, ariaAttrs } = useFormField(props, { bind: false });
39
39
  const id = _id.value ?? useId();
40
40
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.radioGroup || {} })({
@@ -89,8 +89,10 @@ function onUpdate(value) {
89
89
  <template>
90
90
  <RadioGroupRoot
91
91
  :id="id"
92
- v-slot="{ modelValue }"
93
92
  v-bind="rootProps"
93
+ :model-value="modelValue"
94
+ :default-value="defaultValue"
95
+ :orientation="orientation"
94
96
  :name="name"
95
97
  :disabled="disabled"
96
98
  :class="ui.root({ class: [props.ui?.root, props.class] })"
@@ -105,14 +107,14 @@ function onUpdate(value) {
105
107
 
106
108
  <component :is="!variant || variant === 'list' ? 'div' : Label" v-for="item in normalizedItems" :key="item.value" :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class] })">
107
109
  <div :class="ui.container({ class: [props.ui?.container, item.ui?.container] })">
108
- <RadioGroupItem
110
+ <RRadioGroupItem
109
111
  :id="item.id"
110
112
  :value="item.value"
111
113
  :disabled="item.disabled"
112
114
  :class="ui.base({ class: [props.ui?.base, item.ui?.base], disabled: item.disabled })"
113
115
  >
114
116
  <RadioGroupIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator] })" />
115
- </RadioGroupItem>
117
+ </RRadioGroupItem>
116
118
  </div>
117
119
 
118
120
  <div v-if="item.label || !!slots.label || (item.description || !!slots.description)" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
@@ -1,11 +1,11 @@
1
1
  import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/ui/radio-group';
4
- import type { AcceptableValue } from '../types/utils';
4
+ import type { AcceptableValue, GetItemKeys, GetModelValue } from '../types/utils';
5
5
  import type { ComponentConfig } from '../types/tv';
6
6
  type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
7
7
  export type RadioGroupValue = AcceptableValue;
8
- export type RadioGroupItem = {
8
+ export type RadioGroupItem = RadioGroupValue | {
9
9
  label?: string;
10
10
  description?: string;
11
11
  disabled?: boolean;
@@ -13,8 +13,8 @@ export type RadioGroupItem = {
13
13
  class?: any;
14
14
  ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
15
15
  [key: string]: any;
16
- } | RadioGroupValue;
17
- export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> extends Pick<RadioGroupRootProps, 'defaultValue' | 'disabled' | 'loop' | 'modelValue' | 'name' | 'required'> {
16
+ };
17
+ export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
18
18
  /**
19
19
  * The element or component this component should render as.
20
20
  * @defaultValue 'div'
@@ -25,18 +25,22 @@ export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> exte
25
25
  * When `items` is an array of objects, select the field to use as the value.
26
26
  * @defaultValue 'value'
27
27
  */
28
- valueKey?: string;
28
+ valueKey?: VK;
29
29
  /**
30
30
  * When `items` is an array of objects, select the field to use as the label.
31
31
  * @defaultValue 'label'
32
32
  */
33
- labelKey?: string;
33
+ labelKey?: GetItemKeys<T>;
34
34
  /**
35
35
  * When `items` is an array of objects, select the field to use as the description.
36
36
  * @defaultValue 'description'
37
37
  */
38
- descriptionKey?: string;
39
- items?: T[];
38
+ descriptionKey?: GetItemKeys<T>;
39
+ items?: T;
40
+ /** The controlled value of the RadioGroup. Can be bind as `v-model`. */
41
+ modelValue?: GetModelValue<T, VK, false>;
42
+ /** The value of the RadioGroup when initially rendered. Use when you do not need to control the state of the RadioGroup. */
43
+ defaultValue?: GetModelValue<T, VK, false>;
40
44
  /**
41
45
  * @defaultValue 'md'
42
46
  */
@@ -72,16 +76,16 @@ type SlotProps<T extends RadioGroupItem> = (props: {
72
76
  item: NormalizeItem<T>;
73
77
  modelValue?: RadioGroupValue;
74
78
  }) => any;
75
- export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
79
+ export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]> {
76
80
  legend(props?: {}): any;
77
- label: SlotProps<T>;
78
- description: SlotProps<T>;
81
+ label: SlotProps<T[number]>;
82
+ description: SlotProps<T[number]>;
79
83
  }
80
- declare const _default: <T extends RadioGroupItem>(__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<{
84
+ declare const _default: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__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<{
81
85
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
82
86
  readonly onChange?: ((event: Event) => any) | undefined;
83
87
  readonly "onUpdate:modelValue"?: ((payload: string) => any) | undefined;
84
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onChange" | "onUpdate:modelValue"> & RadioGroupProps<T> & {}> & import("vue").PublicProps;
88
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onChange" | "onUpdate:modelValue"> & RadioGroupProps<T, VK> & {}> & import("vue").PublicProps;
85
89
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
86
90
  attrs: any;
87
91
  slots: RadioGroupSlots<T>;
@@ -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>;