@nuxt/ui 3.0.2 → 3.1.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 (220) hide show
  1. package/.nuxt/ui/accordion.ts +25 -4
  2. package/.nuxt/ui/alert.ts +52 -31
  3. package/.nuxt/ui/avatar-group.ts +24 -3
  4. package/.nuxt/ui/avatar.ts +26 -5
  5. package/.nuxt/ui/badge.ts +56 -35
  6. package/.nuxt/ui/breadcrumb.ts +28 -7
  7. package/.nuxt/ui/button-group.ts +23 -2
  8. package/.nuxt/ui/button.ts +66 -45
  9. package/.nuxt/ui/calendar.ts +39 -18
  10. package/.nuxt/ui/card.ts +28 -7
  11. package/.nuxt/ui/carousel.ts +29 -8
  12. package/.nuxt/ui/checkbox-group.ts +82 -0
  13. package/.nuxt/ui/checkbox.ts +163 -29
  14. package/.nuxt/ui/chip.ts +31 -10
  15. package/.nuxt/ui/collapsible.ts +23 -2
  16. package/.nuxt/ui/color-picker.ts +26 -5
  17. package/.nuxt/ui/command-palette.ts +37 -16
  18. package/.nuxt/ui/container.ts +23 -2
  19. package/.nuxt/ui/context-menu.ts +56 -35
  20. package/.nuxt/ui/drawer.ts +33 -12
  21. package/.nuxt/ui/dropdown-menu.ts +57 -36
  22. package/.nuxt/ui/form-field.ts +29 -8
  23. package/.nuxt/ui/form.ts +23 -2
  24. package/.nuxt/ui/index.ts +1 -0
  25. package/.nuxt/ui/input-menu.ts +65 -44
  26. package/.nuxt/ui/input-number.ts +43 -22
  27. package/.nuxt/ui/input.ts +46 -25
  28. package/.nuxt/ui/kbd.ts +27 -6
  29. package/.nuxt/ui/link.ts +26 -5
  30. package/.nuxt/ui/modal.ts +28 -7
  31. package/.nuxt/ui/navigation-menu.ts +102 -83
  32. package/.nuxt/ui/pagination.ts +23 -2
  33. package/.nuxt/ui/pin-input.ts +43 -22
  34. package/.nuxt/ui/popover.ts +25 -4
  35. package/.nuxt/ui/progress.ts +40 -19
  36. package/.nuxt/ui/radio-group.ts +273 -37
  37. package/.nuxt/ui/select-menu.ts +59 -35
  38. package/.nuxt/ui/select.ts +55 -34
  39. package/.nuxt/ui/separator.ts +31 -10
  40. package/.nuxt/ui/skeleton.ts +24 -3
  41. package/.nuxt/ui/slideover.ts +27 -6
  42. package/.nuxt/ui/slider.ts +39 -18
  43. package/.nuxt/ui/stepper.ts +41 -20
  44. package/.nuxt/ui/switch.ts +43 -22
  45. package/.nuxt/ui/table.ts +38 -17
  46. package/.nuxt/ui/tabs.ts +55 -34
  47. package/.nuxt/ui/textarea.ts +63 -37
  48. package/.nuxt/ui/toast.ts +47 -26
  49. package/.nuxt/ui/toaster.ts +23 -2
  50. package/.nuxt/ui/tooltip.ts +25 -4
  51. package/.nuxt/ui/tree.ts +41 -20
  52. package/.nuxt/ui.css +56 -12
  53. package/README.md +11 -0
  54. package/cli/templates.mjs +18 -17
  55. package/dist/module.json +5 -5
  56. package/dist/module.mjs +11 -7
  57. package/dist/runtime/components/Accordion.vue +36 -93
  58. package/dist/runtime/components/Accordion.vue.d.ts +91 -0
  59. package/dist/runtime/components/Alert.vue +37 -100
  60. package/dist/runtime/components/Alert.vue.d.ts +96 -0
  61. package/dist/runtime/components/App.vue +28 -34
  62. package/dist/runtime/components/App.vue.d.ts +24 -0
  63. package/dist/runtime/components/Avatar.vue +42 -75
  64. package/dist/runtime/components/Avatar.vue.d.ts +60 -0
  65. package/dist/runtime/components/AvatarGroup.vue +40 -77
  66. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  67. package/dist/runtime/components/Badge.vue +33 -62
  68. package/dist/runtime/components/Badge.vue.d.ts +62 -0
  69. package/dist/runtime/components/Breadcrumb.vue +37 -90
  70. package/dist/runtime/components/Breadcrumb.vue.d.ts +82 -0
  71. package/dist/runtime/components/Button.vue +95 -104
  72. package/dist/runtime/components/Button.vue.d.ts +73 -0
  73. package/dist/runtime/components/ButtonGroup.vue +20 -46
  74. package/dist/runtime/components/ButtonGroup.vue.d.ts +55 -0
  75. package/dist/runtime/components/Calendar.vue +67 -150
  76. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  77. package/dist/runtime/components/Card.vue +18 -40
  78. package/dist/runtime/components/Card.vue.d.ts +38 -0
  79. package/dist/runtime/components/Carousel.vue +112 -234
  80. package/dist/runtime/components/Carousel.vue.d.ts +120 -0
  81. package/dist/runtime/components/Checkbox.vue +52 -93
  82. package/dist/runtime/components/Checkbox.vue.d.ts +76 -0
  83. package/dist/runtime/components/CheckboxGroup.vue +121 -0
  84. package/dist/runtime/components/CheckboxGroup.vue.d.ts +75 -0
  85. package/dist/runtime/components/Chip.vue +26 -69
  86. package/dist/runtime/components/Chip.vue.d.ts +71 -0
  87. package/dist/runtime/components/Collapsible.vue +22 -41
  88. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  89. package/dist/runtime/components/ColorPicker.vue +111 -197
  90. package/dist/runtime/components/ColorPicker.vue.d.ts +63 -0
  91. package/dist/runtime/components/CommandPalette.vue +96 -237
  92. package/dist/runtime/components/CommandPalette.vue.d.ts +173 -0
  93. package/dist/runtime/components/Container.vue +15 -28
  94. package/dist/runtime/components/Container.vue.d.ts +27 -0
  95. package/dist/runtime/components/ContextMenu.vue +34 -133
  96. package/dist/runtime/components/ContextMenu.vue.d.ts +127 -0
  97. package/dist/runtime/components/ContextMenuContent.vue +73 -81
  98. package/dist/runtime/components/ContextMenuContent.vue.d.ts +105 -0
  99. package/dist/runtime/components/Drawer.vue +49 -83
  100. package/dist/runtime/components/Drawer.vue.d.ts +88 -0
  101. package/dist/runtime/components/DropdownMenu.vue +39 -142
  102. package/dist/runtime/components/DropdownMenu.vue.d.ts +141 -0
  103. package/dist/runtime/components/DropdownMenuContent.vue +78 -88
  104. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +55 -0
  105. package/dist/runtime/components/Form.vue +135 -220
  106. package/dist/runtime/components/Form.vue.d.ts +66 -0
  107. package/dist/runtime/components/FormField.vue +35 -77
  108. package/dist/runtime/components/FormField.vue.d.ts +70 -0
  109. package/dist/runtime/components/Icon.vue +12 -19
  110. package/dist/runtime/components/Icon.vue.d.ts +17 -0
  111. package/dist/runtime/components/Input.vue +82 -140
  112. package/dist/runtime/components/Input.vue.d.ts +91 -0
  113. package/dist/runtime/components/InputMenu.vue +185 -332
  114. package/dist/runtime/components/InputMenu.vue.d.ts +312 -0
  115. package/dist/runtime/components/InputNumber.vue +71 -133
  116. package/dist/runtime/components/InputNumber.vue.d.ts +193 -0
  117. package/dist/runtime/components/Kbd.vue +20 -46
  118. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  119. package/dist/runtime/components/Link.vue +98 -176
  120. package/dist/runtime/components/Link.vue.d.ts +124 -0
  121. package/dist/runtime/components/LinkBase.vue +33 -42
  122. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  123. package/dist/runtime/components/Modal.vue +53 -116
  124. package/dist/runtime/components/Modal.vue.d.ts +109 -0
  125. package/dist/runtime/components/NavigationMenu.vue +77 -209
  126. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  127. package/dist/runtime/components/OverlayProvider.vue +14 -18
  128. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  129. package/dist/runtime/components/Pagination.vue +46 -140
  130. package/dist/runtime/components/Pagination.vue.d.ts +143 -0
  131. package/dist/runtime/components/PinInput.vue +61 -78
  132. package/dist/runtime/components/PinInput.vue.d.ts +68 -0
  133. package/dist/runtime/components/Popover.vue +47 -84
  134. package/dist/runtime/components/Popover.vue.d.ts +80 -0
  135. package/dist/runtime/components/Progress.vue +70 -131
  136. package/dist/runtime/components/Progress.vue.d.ts +97 -0
  137. package/dist/runtime/components/RadioGroup.vue +70 -132
  138. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  139. package/dist/runtime/components/Select.vue +110 -224
  140. package/dist/runtime/components/Select.vue.d.ts +139 -0
  141. package/dist/runtime/components/SelectMenu.vue +161 -310
  142. package/dist/runtime/components/SelectMenu.vue.d.ts +184 -0
  143. package/dist/runtime/components/Separator.vue +29 -71
  144. package/dist/runtime/components/Separator.vue.d.ts +75 -0
  145. package/dist/runtime/components/Skeleton.vue +21 -23
  146. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  147. package/dist/runtime/components/Slideover.vue +53 -120
  148. package/dist/runtime/components/Slideover.vue.d.ts +111 -0
  149. package/dist/runtime/components/Slider.vue +46 -84
  150. package/dist/runtime/components/Slider.vue.d.ts +71 -0
  151. package/dist/runtime/components/Stepper.vue +45 -115
  152. package/dist/runtime/components/Stepper.vue.d.ts +89 -0
  153. package/dist/runtime/components/Switch.vue +45 -93
  154. package/dist/runtime/components/Switch.vue.d.ts +73 -0
  155. package/dist/runtime/components/Table.vue +163 -267
  156. package/dist/runtime/components/Table.vue.d.ts +183 -0
  157. package/dist/runtime/components/Tabs.vue +41 -107
  158. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  159. package/dist/runtime/components/Textarea.vue +113 -158
  160. package/dist/runtime/components/Textarea.vue.d.ts +95 -0
  161. package/dist/runtime/components/Toast.vue +49 -110
  162. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  163. package/dist/runtime/components/Toaster.vue +70 -107
  164. package/dist/runtime/components/Toaster.vue.d.ts +63 -0
  165. package/dist/runtime/components/Tooltip.vue +38 -65
  166. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  167. package/dist/runtime/components/Tree.vue +59 -166
  168. package/dist/runtime/components/Tree.vue.d.ts +128 -0
  169. package/dist/runtime/composables/defineShortcuts.d.ts +1 -1
  170. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  171. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  172. package/dist/runtime/composables/useFormField.d.ts +2 -2
  173. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  174. package/dist/runtime/composables/useOverlay.js +14 -6
  175. package/dist/runtime/composables/usePortal.d.ts +6 -0
  176. package/dist/runtime/composables/usePortal.js +17 -0
  177. package/dist/runtime/index.css +1 -1
  178. package/dist/runtime/inertia/components/Link.vue +146 -0
  179. package/dist/runtime/inertia/components/Link.vue.d.ts +92 -0
  180. package/dist/runtime/inertia/stubs.d.ts +43 -0
  181. package/dist/runtime/inertia/stubs.js +82 -0
  182. package/dist/runtime/locale/bg.d.ts +3 -0
  183. package/dist/runtime/locale/bg.js +54 -0
  184. package/dist/runtime/locale/index.d.ts +5 -1
  185. package/dist/runtime/locale/index.js +5 -1
  186. package/dist/runtime/locale/kk.d.ts +3 -0
  187. package/dist/runtime/locale/kk.js +54 -0
  188. package/dist/runtime/locale/tj.d.ts +3 -0
  189. package/dist/runtime/locale/tj.js +54 -0
  190. package/dist/runtime/locale/ug_cn.d.ts +3 -0
  191. package/dist/runtime/locale/ug_cn.js +55 -0
  192. package/dist/runtime/types/form.d.ts +4 -1
  193. package/dist/runtime/types/index.d.ts +1 -0
  194. package/dist/runtime/types/index.js +1 -0
  195. package/dist/runtime/types/utils.d.ts +47 -7
  196. package/dist/runtime/utils/link.d.ts +3 -3
  197. package/dist/runtime/utils/link.js +1 -0
  198. package/dist/runtime/utils/tv.js +2 -2
  199. package/dist/runtime/vue/components/Icon.vue +7 -8
  200. package/dist/runtime/vue/components/Icon.vue.d.ts +14 -0
  201. package/dist/runtime/vue/components/Link.vue +118 -202
  202. package/dist/runtime/vue/components/Link.vue.d.ts +124 -0
  203. package/dist/runtime/vue/stubs.d.ts +2 -2
  204. package/dist/shared/{ui.BkNUP964.mjs → ui.D7lOOabO.mjs} +621 -362
  205. package/dist/types.d.mts +3 -5
  206. package/dist/unplugin.d.mts +4 -0
  207. package/dist/unplugin.mjs +25 -4
  208. package/dist/vite.mjs +1 -1
  209. package/package.json +94 -53
  210. package/dist/module.cjs +0 -62
  211. package/dist/module.d.cts +0 -45
  212. package/dist/module.d.ts +0 -45
  213. package/dist/shared/ui.BL-XB3u1.cjs +0 -3555
  214. package/dist/types.d.ts +0 -7
  215. package/dist/unplugin.cjs +0 -232
  216. package/dist/unplugin.d.cts +0 -62
  217. package/dist/unplugin.d.ts +0 -62
  218. package/dist/vite.cjs +0 -23
  219. package/dist/vite.d.cts +0 -15
  220. package/dist/vite.d.ts +0 -15
@@ -1,153 +1,88 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import theme from '#build/ui/radio-group'
7
- import { tv } from '../utils/tv'
8
- import type { AcceptableValue } from '../types/utils'
9
-
10
- const appConfigRadioGroup = _appConfig as AppConfig & { ui: { radioGroup: Partial<typeof theme> } }
11
-
12
- const radioGroup = tv({ extend: tv(theme), ...(appConfigRadioGroup.ui?.radioGroup || {}) })
13
-
14
- type RadioGroupVariants = VariantProps<typeof radioGroup>
15
-
16
- export type RadioGroupValue = AcceptableValue
17
- export type RadioGroupItem = {
18
- label?: string
19
- description?: string
20
- disabled?: boolean
21
- value?: string
22
- [key: string]: any
23
- } | RadioGroupValue
24
-
25
- export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> extends Pick<RadioGroupRootProps, 'defaultValue' | 'disabled' | 'loop' | 'modelValue' | 'name' | 'required'> {
26
- /**
27
- * The element or component this component should render as.
28
- * @defaultValue 'div'
29
- */
30
- as?: any
31
- legend?: string
32
- /**
33
- * When `items` is an array of objects, select the field to use as the value.
34
- * @defaultValue 'value'
35
- */
36
- valueKey?: string
37
- /**
38
- * When `items` is an array of objects, select the field to use as the label.
39
- * @defaultValue 'label'
40
- */
41
- labelKey?: string
42
- /**
43
- * When `items` is an array of objects, select the field to use as the description.
44
- * @defaultValue 'description'
45
- */
46
- descriptionKey?: string
47
- items?: T[]
48
- /**
49
- * @defaultValue 'md'
50
- */
51
- size?: RadioGroupVariants['size']
52
- /**
53
- * @defaultValue 'primary'
54
- */
55
- color?: RadioGroupVariants['color']
56
- /**
57
- * The orientation the radio buttons are laid out.
58
- * @defaultValue 'vertical'
59
- */
60
- orientation?: RadioGroupRootProps['orientation']
61
- class?: any
62
- ui?: Partial<typeof radioGroup.slots>
63
- }
64
-
65
- export type RadioGroupEmits = RadioGroupRootEmits & {
66
- change: [payload: Event]
67
- }
68
-
69
- type SlotProps<T extends RadioGroupItem> = (props: { item: T & { id: string }, modelValue?: RadioGroupValue }) => any
70
-
71
- export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
72
- legend(props?: {}): any
73
- label: SlotProps<T>
74
- description: SlotProps<T>
75
- }
1
+ <script>
2
+ import theme from "#build/ui/radio-group";
76
3
  </script>
77
4
 
78
- <script setup lang="ts" generic="T extends RadioGroupItem">
79
- import { computed, useId } from 'vue'
80
- import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from 'reka-ui'
81
- import { reactivePick } from '@vueuse/core'
82
- import { useFormField } from '../composables/useFormField'
83
- import { get } from '../utils'
84
-
85
- const props = withDefaults(defineProps<RadioGroupProps<T>>(), {
86
- valueKey: 'value',
87
- labelKey: 'label',
88
- descriptionKey: 'description',
89
- orientation: 'vertical'
90
- })
91
- const emits = defineEmits<RadioGroupEmits>()
92
- const slots = defineSlots<RadioGroupSlots<T>>()
93
-
94
- const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'orientation', 'loop', 'required'), emits)
95
-
96
- const { emitFormChange, emitFormInput, color, name, size, id: _id, disabled, ariaAttrs } = useFormField<RadioGroupProps<T>>(props, { bind: false })
97
- const id = _id.value ?? useId()
98
-
99
- const ui = computed(() => radioGroup({
5
+ <script setup>
6
+ import { computed, useId } from "vue";
7
+ import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from "reka-ui";
8
+ import { reactivePick } from "@vueuse/core";
9
+ import { useAppConfig } from "#imports";
10
+ import { useFormField } from "../composables/useFormField";
11
+ import { get } from "../utils";
12
+ import { tv } from "../utils/tv";
13
+ const props = defineProps({
14
+ as: { type: null, required: false },
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 },
20
+ size: { type: null, required: false },
21
+ variant: { type: null, required: false },
22
+ color: { type: null, required: false },
23
+ orientation: { type: null, required: false, default: "vertical" },
24
+ indicator: { type: null, required: false },
25
+ class: { type: null, required: false },
26
+ ui: { type: null, required: false },
27
+ defaultValue: { type: [String, Number, Object, null], required: false },
28
+ disabled: { type: Boolean, required: false },
29
+ loop: { type: Boolean, required: false },
30
+ modelValue: { type: [String, Number, Object, null], required: false },
31
+ name: { type: String, required: false },
32
+ required: { type: Boolean, required: false }
33
+ });
34
+ const emits = defineEmits(["update:modelValue", "change"]);
35
+ const slots = defineSlots();
36
+ const appConfig = useAppConfig();
37
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "modelValue", "defaultValue", "orientation", "loop", "required"), emits);
38
+ const { emitFormChange, emitFormInput, color, name, size, id: _id, disabled, ariaAttrs } = useFormField(props, { bind: false });
39
+ const id = _id.value ?? useId();
40
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.radioGroup || {} })({
100
41
  size: size.value,
101
42
  color: color.value,
102
43
  disabled: disabled.value,
103
44
  required: props.required,
104
- orientation: props.orientation
105
- }))
106
-
107
- function normalizeItem(item: any) {
45
+ orientation: props.orientation,
46
+ variant: props.variant,
47
+ indicator: props.indicator
48
+ }));
49
+ function normalizeItem(item) {
108
50
  if (item === null) {
109
51
  return {
110
52
  id: `${id}:null`,
111
- value: undefined,
112
- label: undefined
113
- }
53
+ value: void 0,
54
+ label: void 0
55
+ };
114
56
  }
115
-
116
- if (typeof item === 'string' || typeof item === 'number') {
57
+ if (typeof item === "string" || typeof item === "number") {
117
58
  return {
118
59
  id: `${id}:${item}`,
119
60
  value: String(item),
120
61
  label: String(item)
121
- }
62
+ };
122
63
  }
123
-
124
- const value = get(item, props.valueKey as string)
125
- const label = get(item, props.labelKey as string)
126
- const description = get(item, props.descriptionKey as string)
127
-
64
+ const value = get(item, props.valueKey);
65
+ const label = get(item, props.labelKey);
66
+ const description = get(item, props.descriptionKey);
128
67
  return {
129
68
  ...item,
130
69
  value,
131
70
  label,
132
71
  description,
133
72
  id: `${id}:${value}`
134
- }
73
+ };
135
74
  }
136
-
137
75
  const normalizedItems = computed(() => {
138
76
  if (!props.items) {
139
- return []
77
+ return [];
140
78
  }
141
-
142
- return props.items.map(normalizeItem)
143
- })
144
-
145
- function onUpdate(value: any) {
146
- // @ts-expect-error - 'target' does not exist in type 'EventInit'
147
- const event = new Event('change', { target: { value } })
148
- emits('change', event)
149
- emitFormChange()
150
- emitFormInput()
79
+ return props.items.map(normalizeItem);
80
+ });
81
+ function onUpdate(value) {
82
+ const event = new Event("change", { target: { value } });
83
+ emits("change", event);
84
+ emitFormChange();
85
+ emitFormInput();
151
86
  }
152
87
  </script>
153
88
 
@@ -167,7 +102,8 @@ function onUpdate(value: any) {
167
102
  {{ legend }}
168
103
  </slot>
169
104
  </legend>
170
- <div v-for="item in normalizedItems" :key="item.value" :class="ui.item({ class: props.ui?.item })">
105
+
106
+ <component :is="variant === 'list' ? 'div' : Label" v-for="item in normalizedItems" :key="item.value" :class="ui.item({ class: props.ui?.item })">
171
107
  <div :class="ui.container({ class: props.ui?.container })">
172
108
  <RadioGroupItem
173
109
  :id="item.id"
@@ -179,17 +115,19 @@ function onUpdate(value: any) {
179
115
  </RadioGroupItem>
180
116
  </div>
181
117
 
182
- <div :class="ui.wrapper({ class: props.ui?.wrapper })">
183
- <Label :class="ui.label({ class: props.ui?.label })" :for="item.id">
184
- <slot name="label" :item="item" :model-value="(modelValue as RadioGroupValue)">{{ item.label }}</slot>
185
- </Label>
118
+ <div v-if="item.label || !!slots.label || (item.description || !!slots.description)" :class="ui.wrapper({ class: props.ui?.wrapper })">
119
+ <component :is="variant === 'list' ? Label : 'p'" v-if="item.label || !!slots.label" :for="item.id" :class="ui.label({ class: props.ui?.label })">
120
+ <slot name="label" :item="item" :model-value="modelValue">
121
+ {{ item.label }}
122
+ </slot>
123
+ </component>
186
124
  <p v-if="item.description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
187
- <slot name="description" :item="item" :model-value="(modelValue as RadioGroupValue)">
125
+ <slot name="description" :item="item" :model-value="modelValue">
188
126
  {{ item.description }}
189
127
  </slot>
190
128
  </p>
191
129
  </div>
192
- </div>
130
+ </component>
193
131
  </fieldset>
194
132
  </RadioGroupRoot>
195
133
  </template>
@@ -0,0 +1,88 @@
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, ComponentConfig } from '../types/utils';
5
+ type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
6
+ export type RadioGroupValue = AcceptableValue;
7
+ export type RadioGroupItem = {
8
+ label?: string;
9
+ description?: string;
10
+ disabled?: boolean;
11
+ value?: string;
12
+ [key: string]: any;
13
+ } | RadioGroupValue;
14
+ export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> extends Pick<RadioGroupRootProps, 'defaultValue' | 'disabled' | 'loop' | 'modelValue' | 'name' | 'required'> {
15
+ /**
16
+ * The element or component this component should render as.
17
+ * @defaultValue 'div'
18
+ */
19
+ as?: any;
20
+ legend?: string;
21
+ /**
22
+ * When `items` is an array of objects, select the field to use as the value.
23
+ * @defaultValue 'value'
24
+ */
25
+ valueKey?: string;
26
+ /**
27
+ * When `items` is an array of objects, select the field to use as the label.
28
+ * @defaultValue 'label'
29
+ */
30
+ labelKey?: string;
31
+ /**
32
+ * When `items` is an array of objects, select the field to use as the description.
33
+ * @defaultValue 'description'
34
+ */
35
+ descriptionKey?: string;
36
+ items?: T[];
37
+ /**
38
+ * @defaultValue 'md'
39
+ */
40
+ size?: RadioGroup['variants']['size'];
41
+ /**
42
+ * @defaultValue 'list'
43
+ */
44
+ variant?: RadioGroup['variants']['variant'];
45
+ /**
46
+ * @defaultValue 'primary'
47
+ */
48
+ color?: RadioGroup['variants']['color'];
49
+ /**
50
+ * The orientation the radio buttons are laid out.
51
+ * @defaultValue 'vertical'
52
+ */
53
+ orientation?: RadioGroupRootProps['orientation'];
54
+ /**
55
+ * Position of the indicator.
56
+ * @defaultValue 'start'
57
+ */
58
+ indicator?: RadioGroup['variants']['indicator'];
59
+ class?: any;
60
+ ui?: RadioGroup['slots'];
61
+ }
62
+ export type RadioGroupEmits = RadioGroupRootEmits & {
63
+ change: [payload: Event];
64
+ };
65
+ type SlotProps<T extends RadioGroupItem> = (props: {
66
+ item: T & {
67
+ id: string;
68
+ };
69
+ modelValue?: RadioGroupValue;
70
+ }) => any;
71
+ export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
72
+ legend(props?: {}): any;
73
+ label: SlotProps<T>;
74
+ description: SlotProps<T>;
75
+ }
76
+ 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<{
77
+ props: __VLS_PrettifyLocal<any & RadioGroupProps<T> & Partial<{}>> & (import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps);
78
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
79
+ attrs: any;
80
+ slots: Readonly<RadioGroupSlots<T>> & RadioGroupSlots<T>;
81
+ emit: ((evt: "change", payload: Event) => void) & ((evt: "update:modelValue", payload: string) => void);
82
+ }>) => import("vue").VNode & {
83
+ __ctx?: Awaited<typeof __VLS_setup>;
84
+ };
85
+ export default _default;
86
+ type __VLS_PrettifyLocal<T> = {
87
+ [K in keyof T]: T[K];
88
+ } & {};