@byyuurin/ui 0.0.11 → 0.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 (289) hide show
  1. package/README.md +170 -58
  2. package/dist/module.d.mts +4 -13
  3. package/dist/module.json +4 -4
  4. package/dist/module.mjs +54 -20
  5. package/dist/runtime/components/Accordion.vue +28 -23
  6. package/dist/runtime/components/Accordion.vue.d.ts +51 -29
  7. package/dist/runtime/components/Alert.vue +47 -27
  8. package/dist/runtime/components/Alert.vue.d.ts +37 -25
  9. package/dist/runtime/components/App.vue +9 -8
  10. package/dist/runtime/components/App.vue.d.ts +22 -20
  11. package/dist/runtime/components/Avatar.vue +65 -21
  12. package/dist/runtime/components/Avatar.vue.d.ts +27 -13
  13. package/dist/runtime/components/AvatarGroup.vue +14 -10
  14. package/dist/runtime/components/AvatarGroup.vue.d.ts +12 -9
  15. package/dist/runtime/components/Badge.vue +64 -32
  16. package/dist/runtime/components/Badge.vue.d.ts +30 -29
  17. package/dist/runtime/components/Breadcrumb.vue +40 -22
  18. package/dist/runtime/components/Breadcrumb.vue.d.ts +48 -21
  19. package/dist/runtime/components/Button.vue +113 -52
  20. package/dist/runtime/components/Button.vue.d.ts +36 -20
  21. package/dist/runtime/components/Calendar.vue +48 -39
  22. package/dist/runtime/components/Calendar.vue.d.ts +58 -31
  23. package/dist/runtime/components/Card.vue +18 -14
  24. package/dist/runtime/components/Card.vue.d.ts +18 -14
  25. package/dist/runtime/components/Carousel.vue +80 -46
  26. package/dist/runtime/components/Carousel.vue.d.ts +46 -25
  27. package/dist/runtime/components/Checkbox.vue +60 -35
  28. package/dist/runtime/components/Checkbox.vue.d.ts +35 -28
  29. package/dist/runtime/components/Chip.vue +35 -32
  30. package/dist/runtime/components/Chip.vue.d.ts +33 -15
  31. package/dist/runtime/components/Collapsible.vue +13 -9
  32. package/dist/runtime/components/Collapsible.vue.d.ts +16 -8
  33. package/dist/runtime/components/Drawer.vue +80 -70
  34. package/dist/runtime/components/Drawer.vue.d.ts +51 -28
  35. package/dist/runtime/components/DropdownMenu.vue +23 -16
  36. package/dist/runtime/components/DropdownMenu.vue.d.ts +77 -36
  37. package/dist/runtime/components/DropdownMenuContent.vue +133 -103
  38. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +38 -26
  39. package/dist/runtime/components/FieldGroup.vue +33 -0
  40. package/dist/runtime/components/FieldGroup.vue.d.ts +33 -0
  41. package/dist/runtime/components/Form.vue +172 -88
  42. package/dist/runtime/components/Form.vue.d.ts +69 -44
  43. package/dist/runtime/components/FormField.vue +108 -0
  44. package/dist/runtime/components/FormField.vue.d.ts +63 -0
  45. package/dist/runtime/components/Icon.vue +20 -0
  46. package/dist/runtime/components/Icon.vue.d.ts +9 -0
  47. package/dist/runtime/components/Input.vue +82 -77
  48. package/dist/runtime/components/Input.vue.d.ts +55 -43
  49. package/dist/runtime/components/InputNumber.vue +65 -49
  50. package/dist/runtime/components/InputNumber.vue.d.ts +51 -105
  51. package/dist/runtime/components/Kbd.vue +11 -5
  52. package/dist/runtime/components/Kbd.vue.d.ts +17 -11
  53. package/dist/runtime/components/Link.vue +54 -197
  54. package/dist/runtime/components/Link.vue.d.ts +17 -17
  55. package/dist/runtime/components/LinkBase.vue +11 -33
  56. package/dist/runtime/components/LinkBase.vue.d.ts +8 -3
  57. package/dist/runtime/components/Modal.vue +53 -39
  58. package/dist/runtime/components/Modal.vue.d.ts +64 -34
  59. package/dist/runtime/components/NavigationMenu.vue +336 -0
  60. package/dist/runtime/components/NavigationMenu.vue.d.ts +181 -0
  61. package/dist/runtime/components/OverlayProvider.vue +3 -3
  62. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -1
  63. package/dist/runtime/components/Pagination.vue +39 -47
  64. package/dist/runtime/components/Pagination.vue.d.ts +54 -31
  65. package/dist/runtime/components/PinInput.vue +46 -32
  66. package/dist/runtime/components/PinInput.vue.d.ts +40 -21
  67. package/dist/runtime/components/Popover.vue +33 -19
  68. package/dist/runtime/components/Popover.vue.d.ts +57 -32
  69. package/dist/runtime/components/Progress.vue +31 -26
  70. package/dist/runtime/components/Progress.vue.d.ts +32 -23
  71. package/dist/runtime/components/RadioGroup.vue +75 -48
  72. package/dist/runtime/components/RadioGroup.vue.d.ts +58 -36
  73. package/dist/runtime/components/ScrollArea.vue +33 -31
  74. package/dist/runtime/components/ScrollArea.vue.d.ts +9 -5
  75. package/dist/runtime/components/Select.vue +166 -76
  76. package/dist/runtime/components/Select.vue.d.ts +206 -65
  77. package/dist/runtime/components/Separator.vue +42 -16
  78. package/dist/runtime/components/Separator.vue.d.ts +35 -14
  79. package/dist/runtime/components/Skeleton.vue +18 -6
  80. package/dist/runtime/components/Skeleton.vue.d.ts +4 -4
  81. package/dist/runtime/components/Slider.vue +42 -24
  82. package/dist/runtime/components/Slider.vue.d.ts +43 -27
  83. package/dist/runtime/components/Switch.vue +40 -31
  84. package/dist/runtime/components/Switch.vue.d.ts +36 -27
  85. package/dist/runtime/components/Table.vue +279 -51
  86. package/dist/runtime/components/Table.vue.d.ts +151 -65
  87. package/dist/runtime/components/Tabs.vue +70 -23
  88. package/dist/runtime/components/Tabs.vue.d.ts +61 -29
  89. package/dist/runtime/components/Textarea.vue +102 -54
  90. package/dist/runtime/components/Textarea.vue.d.ts +57 -41
  91. package/dist/runtime/components/Toast.vue +84 -38
  92. package/dist/runtime/components/Toast.vue.d.ts +48 -27
  93. package/dist/runtime/components/ToastProvider.vue +31 -22
  94. package/dist/runtime/components/ToastProvider.vue.d.ts +30 -17
  95. package/dist/runtime/components/Tooltip.vue +33 -21
  96. package/dist/runtime/components/Tooltip.vue.d.ts +37 -15
  97. package/dist/runtime/composables/defineShortcuts.d.ts +16 -0
  98. package/dist/runtime/composables/defineShortcuts.js +129 -0
  99. package/dist/runtime/composables/useAvatarGroup.d.ts +8 -3
  100. package/dist/runtime/composables/useAvatarGroup.js +10 -3
  101. package/dist/runtime/composables/useComponentIcons.d.ts +9 -6
  102. package/dist/runtime/composables/useComponentIcons.js +4 -4
  103. package/dist/runtime/composables/useFieldGroup.d.ts +8 -0
  104. package/dist/runtime/composables/useFieldGroup.js +14 -0
  105. package/dist/runtime/composables/useFormField.d.ts +62 -0
  106. package/dist/runtime/composables/useFormField.js +99 -0
  107. package/dist/runtime/composables/useKbd.d.ts +3 -2
  108. package/dist/runtime/composables/useKbd.js +3 -2
  109. package/dist/runtime/composables/useLocale.d.ts +68 -5
  110. package/dist/runtime/composables/useLocale.js +11 -11
  111. package/dist/runtime/composables/useOverlay.d.ts +51 -15
  112. package/dist/runtime/composables/useOverlay.js +44 -30
  113. package/dist/runtime/composables/usePortal.d.ts +6 -0
  114. package/dist/runtime/composables/usePortal.js +17 -0
  115. package/dist/runtime/composables/useToast.d.ts +12 -5
  116. package/dist/runtime/composables/useToast.js +12 -7
  117. package/dist/runtime/locale/en.d.ts +30 -1
  118. package/dist/runtime/locale/en.js +2 -1
  119. package/dist/runtime/locale/index.d.ts +2 -2
  120. package/dist/runtime/locale/index.js +1 -1
  121. package/dist/runtime/locale/zh_tw.d.ts +31 -0
  122. package/dist/runtime/locale/{zh-tw.js → zh_tw.js} +2 -1
  123. package/dist/runtime/plugins/colors.d.ts +2 -0
  124. package/dist/runtime/plugins/colors.js +50 -0
  125. package/dist/runtime/types/app.config.d.ts +6 -0
  126. package/dist/runtime/types/form.d.ts +58 -17
  127. package/dist/runtime/types/form.js +11 -0
  128. package/dist/runtime/types/index.d.ts +51 -8
  129. package/dist/runtime/types/index.js +45 -2
  130. package/dist/runtime/types/input.d.ts +8 -0
  131. package/dist/runtime/types/locale.d.ts +5 -0
  132. package/dist/runtime/types/style.d.ts +33 -0
  133. package/dist/runtime/types/style.js +0 -0
  134. package/dist/runtime/types/unocss.d.ts +4 -0
  135. package/dist/runtime/types/utils.d.ts +38 -37
  136. package/dist/runtime/utils/form.d.ts +5 -1
  137. package/dist/runtime/utils/form.js +49 -0
  138. package/dist/runtime/utils/index.d.ts +10 -13
  139. package/dist/runtime/utils/index.js +41 -48
  140. package/dist/runtime/utils/link.d.ts +3 -2
  141. package/dist/runtime/utils/link.js +16 -2
  142. package/dist/runtime/utils/locale.d.ts +5 -0
  143. package/dist/runtime/utils/locale.js +10 -0
  144. package/dist/runtime/utils/style.d.ts +94 -0
  145. package/dist/runtime/utils/style.js +37 -0
  146. package/dist/runtime/vue/components/Icon.vue +15 -0
  147. package/dist/runtime/vue/components/Icon.vue.d.ts +7 -0
  148. package/dist/runtime/vue/components/Link.vue +163 -0
  149. package/dist/runtime/vue/components/Link.vue.d.ts +95 -0
  150. package/dist/runtime/vue/composables/useAppConfig.d.ts +1 -0
  151. package/dist/runtime/vue/composables/useAppConfig.js +4 -0
  152. package/dist/runtime/vue/plugins/color-mode.d.ts +4 -0
  153. package/dist/runtime/vue/plugins/color-mode.js +6 -0
  154. package/dist/runtime/vue/plugins/head.d.ts +4 -0
  155. package/dist/runtime/vue/plugins/head.js +9 -0
  156. package/dist/runtime/vue/stubs.d.ts +16 -1
  157. package/dist/runtime/vue/stubs.js +32 -1
  158. package/dist/setup.d.mts +13 -0
  159. package/dist/setup.mjs +12 -0
  160. package/dist/shared/ui.CzIlLITK.mjs +51 -0
  161. package/dist/shared/ui.DSyJHSTk.mjs +3787 -0
  162. package/dist/shared/ui.DpbffTXs.d.mts +84 -0
  163. package/dist/shared/ui.IulR-OYx.d.mts +64 -0
  164. package/dist/types.d.mts +3 -1
  165. package/dist/unocss.d.mts +12 -52
  166. package/dist/unocss.mjs +144 -254
  167. package/dist/unplugin.d.mts +13 -26
  168. package/dist/unplugin.mjs +193 -18
  169. package/dist/vite.d.mts +10 -1
  170. package/dist/vite.mjs +12 -3
  171. package/package.json +154 -87
  172. package/vue-plugin.d.ts +5 -0
  173. package/dist/module.d.ts +0 -13
  174. package/dist/module.mjs.map +0 -1
  175. package/dist/runtime/app/injections.d.ts +0 -9331
  176. package/dist/runtime/app/injections.js +0 -61
  177. package/dist/runtime/components/ButtonGroup.vue +0 -26
  178. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -26
  179. package/dist/runtime/components/FormItem.vue +0 -90
  180. package/dist/runtime/components/FormItem.vue.d.ts +0 -60
  181. package/dist/runtime/composables/useButtonGroup.d.ts +0 -5
  182. package/dist/runtime/composables/useButtonGroup.js +0 -9
  183. package/dist/runtime/composables/useFormItem.d.ts +0 -27
  184. package/dist/runtime/composables/useFormItem.js +0 -64
  185. package/dist/runtime/composables/useTheme.d.ts +0 -9
  186. package/dist/runtime/composables/useTheme.js +0 -23
  187. package/dist/runtime/index.d.ts +0 -44
  188. package/dist/runtime/index.js +0 -44
  189. package/dist/runtime/locale/zh-tw.d.ts +0 -2
  190. package/dist/runtime/theme/accordion.d.ts +0 -50
  191. package/dist/runtime/theme/accordion.js +0 -28
  192. package/dist/runtime/theme/alert.d.ts +0 -119
  193. package/dist/runtime/theme/alert.js +0 -47
  194. package/dist/runtime/theme/app.d.ts +0 -19
  195. package/dist/runtime/theme/app.js +0 -19
  196. package/dist/runtime/theme/avatar-group.d.ts +0 -46
  197. package/dist/runtime/theme/avatar-group.js +0 -32
  198. package/dist/runtime/theme/avatar.d.ts +0 -50
  199. package/dist/runtime/theme/avatar.js +0 -34
  200. package/dist/runtime/theme/badge.d.ts +0 -76
  201. package/dist/runtime/theme/badge.js +0 -92
  202. package/dist/runtime/theme/breadcrumb.d.ts +0 -61
  203. package/dist/runtime/theme/breadcrumb.js +0 -44
  204. package/dist/runtime/theme/button-group.d.ts +0 -60
  205. package/dist/runtime/theme/button-group.js +0 -42
  206. package/dist/runtime/theme/button.d.ts +0 -184
  207. package/dist/runtime/theme/button.js +0 -164
  208. package/dist/runtime/theme/calendar.d.ts +0 -58
  209. package/dist/runtime/theme/calendar.js +0 -86
  210. package/dist/runtime/theme/card.d.ts +0 -56
  211. package/dist/runtime/theme/card.js +0 -37
  212. package/dist/runtime/theme/carousel.d.ts +0 -107
  213. package/dist/runtime/theme/carousel.js +0 -43
  214. package/dist/runtime/theme/checkbox.d.ts +0 -82
  215. package/dist/runtime/theme/checkbox.js +0 -54
  216. package/dist/runtime/theme/chip.d.ts +0 -61
  217. package/dist/runtime/theme/chip.js +0 -66
  218. package/dist/runtime/theme/collapsible.d.ts +0 -32
  219. package/dist/runtime/theme/collapsible.js +0 -10
  220. package/dist/runtime/theme/drawer.d.ts +0 -142
  221. package/dist/runtime/theme/drawer.js +0 -113
  222. package/dist/runtime/theme/dropdown-menu.d.ts +0 -65
  223. package/dist/runtime/theme/dropdown-menu.js +0 -83
  224. package/dist/runtime/theme/form-item.d.ts +0 -70
  225. package/dist/runtime/theme/form-item.js +0 -34
  226. package/dist/runtime/theme/form.d.ts +0 -2
  227. package/dist/runtime/theme/form.js +0 -7
  228. package/dist/runtime/theme/index.d.ts +0 -41
  229. package/dist/runtime/theme/index.js +0 -41
  230. package/dist/runtime/theme/input-number.d.ts +0 -115
  231. package/dist/runtime/theme/input-number.js +0 -95
  232. package/dist/runtime/theme/input.d.ts +0 -172
  233. package/dist/runtime/theme/input.js +0 -151
  234. package/dist/runtime/theme/kbd.d.ts +0 -33
  235. package/dist/runtime/theme/kbd.js +0 -26
  236. package/dist/runtime/theme/link.d.ts +0 -38
  237. package/dist/runtime/theme/link.js +0 -26
  238. package/dist/runtime/theme/modal.d.ts +0 -42
  239. package/dist/runtime/theme/modal.js +0 -55
  240. package/dist/runtime/theme/pagination.d.ts +0 -74
  241. package/dist/runtime/theme/pagination.js +0 -17
  242. package/dist/runtime/theme/pinInput.d.ts +0 -94
  243. package/dist/runtime/theme/pinInput.js +0 -111
  244. package/dist/runtime/theme/popover.d.ts +0 -32
  245. package/dist/runtime/theme/popover.js +0 -13
  246. package/dist/runtime/theme/progress.d.ts +0 -180
  247. package/dist/runtime/theme/progress.js +0 -95
  248. package/dist/runtime/theme/radio-group.d.ts +0 -104
  249. package/dist/runtime/theme/radio-group.js +0 -61
  250. package/dist/runtime/theme/scroll-area.d.ts +0 -67
  251. package/dist/runtime/theme/scroll-area.js +0 -33
  252. package/dist/runtime/theme/select.d.ts +0 -186
  253. package/dist/runtime/theme/select.js +0 -173
  254. package/dist/runtime/theme/separator.d.ts +0 -74
  255. package/dist/runtime/theme/separator.js +0 -53
  256. package/dist/runtime/theme/skeleton.d.ts +0 -2
  257. package/dist/runtime/theme/skeleton.js +0 -7
  258. package/dist/runtime/theme/slider.d.ts +0 -70
  259. package/dist/runtime/theme/slider.js +0 -52
  260. package/dist/runtime/theme/switch.d.ts +0 -116
  261. package/dist/runtime/theme/switch.js +0 -78
  262. package/dist/runtime/theme/table.d.ts +0 -86
  263. package/dist/runtime/theme/table.js +0 -36
  264. package/dist/runtime/theme/tabs.d.ts +0 -129
  265. package/dist/runtime/theme/tabs.js +0 -146
  266. package/dist/runtime/theme/textarea.d.ts +0 -90
  267. package/dist/runtime/theme/textarea.js +0 -116
  268. package/dist/runtime/theme/toast-provider.d.ts +0 -116
  269. package/dist/runtime/theme/toast-provider.js +0 -97
  270. package/dist/runtime/theme/toast.d.ts +0 -83
  271. package/dist/runtime/theme/toast.js +0 -35
  272. package/dist/runtime/theme/tooltip.d.ts +0 -38
  273. package/dist/runtime/theme/tooltip.js +0 -11
  274. package/dist/runtime/types/components.d.ts +0 -42
  275. package/dist/runtime/utils/extend-theme.d.ts +0 -9
  276. package/dist/runtime/utils/extend-theme.js +0 -27
  277. package/dist/runtime/utils/styler.d.ts +0 -4
  278. package/dist/runtime/utils/styler.js +0 -10
  279. package/dist/runtime/utils/translator.d.ts +0 -18
  280. package/dist/runtime/utils/translator.js +0 -8
  281. package/dist/shared/ui.D1BTWZFB.mjs +0 -5
  282. package/dist/shared/ui.D1BTWZFB.mjs.map +0 -1
  283. package/dist/unocss.d.ts +0 -52
  284. package/dist/unocss.mjs.map +0 -1
  285. package/dist/unplugin.d.ts +0 -26
  286. package/dist/unplugin.mjs.map +0 -1
  287. package/dist/vite.d.ts +0 -9
  288. package/dist/vite.mjs.map +0 -1
  289. /package/dist/runtime/types/{components.js → input.js} +0 -0
@@ -1,45 +1,70 @@
1
- import type { HoverCardRootProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui';
2
- import type { popover } from '../theme/index.js';
3
- import type { ComponentAttrs, EmitsToProps } from '../types/index.js';
4
- export interface PopoverEmits extends PopoverRootEmits {
5
- }
6
- export interface PopoverSlots {
7
- default?: (props: {
8
- open: boolean;
9
- }) => any;
10
- content?: (props?: {}) => any;
11
- }
12
- export interface PopoverProps extends ComponentAttrs<typeof popover>, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
1
+ import type { HoverCardRootProps, HoverCardTriggerProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui';
2
+ import theme from '#build/ui/popover';
3
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
4
+ import type { EmitsToProps, StaticSlot } from '../types/utils';
5
+ type PopoverMode = 'click' | 'hover';
6
+ export interface PopoverProps<M extends PopoverMode = PopoverMode> extends ComponentBaseProps, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
13
7
  /**
14
8
  * The display mode of the popover.
15
9
  * @default "click"
16
10
  */
17
- mode?: 'click' | 'hover';
18
- /** @default { side: 'bottom', sideOffset: 8, collisionPadding: 8 } */
11
+ mode?: M;
12
+ /**
13
+ * The content of the popover.
14
+ * @default { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
15
+ */
19
16
  content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>;
17
+ /**
18
+ * Display an arrow alongside the popover.
19
+ * @default false
20
+ */
20
21
  arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>;
21
- /** @default true */
22
- portal?: boolean;
22
+ /**
23
+ * Render the popover in a portal.
24
+ * @default true
25
+ */
26
+ portal?: boolean | string | HTMLElement;
27
+ /**
28
+ * The reference (or anchor) element that is being referred to for positioning.
29
+ *
30
+ * If not provided will use the current component as anchor.
31
+ */
32
+ reference?: HoverCardTriggerProps['reference'];
23
33
  /**
24
34
  * When `false`, the popover will not close when clicking outside or pressing escape.
25
35
  * @default true
26
36
  */
27
37
  dismissible?: boolean;
38
+ ui?: ComponentUIProps<typeof theme>;
28
39
  }
29
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<PopoverProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
- "update:open": (value: boolean) => any;
31
- }, string, import("vue").PublicProps, Readonly<PopoverProps> & Readonly<{
32
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
33
- }>, {
34
- mode: "click" | "hover";
35
- portal: boolean;
36
- dismissible: boolean;
37
- openDelay: number;
38
- closeDelay: number;
39
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PopoverSlots>;
40
- export default _default;
41
- type __VLS_WithSlots<T, S> = T & {
42
- new (): {
43
- $slots: S;
44
- };
40
+ export interface PopoverEmits extends PopoverRootEmits {
41
+ 'close-prevent': [];
42
+ }
43
+ export interface PopoverSlots<M extends PopoverMode = PopoverMode> {
44
+ default: StaticSlot<{
45
+ open: boolean;
46
+ }>;
47
+ content: StaticSlot<[M] extends ['hover'] ? undefined : {
48
+ close: () => void;
49
+ }>;
50
+ anchor: StaticSlot<[M] extends ['hover'] ? undefined : {
51
+ close: () => void;
52
+ }>;
53
+ }
54
+ declare const __VLS_export: <M extends PopoverMode>(__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<{
55
+ props: __VLS_PrettifyLocal<PopoverProps<M> & {
56
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
57
+ "onClose-prevent"?: (() => any) | undefined;
58
+ }> & import("vue").PublicProps;
59
+ expose: (exposed: {}) => void;
60
+ attrs: any;
61
+ slots: PopoverSlots<M>;
62
+ emit: ((evt: "update:open", value: boolean) => void) & ((evt: "close-prevent") => void);
63
+ }>) => import("vue").VNode & {
64
+ __ctx?: Awaited<typeof __VLS_setup>;
45
65
  };
66
+ declare const _default: typeof __VLS_export;
67
+ export default _default;
68
+ type __VLS_PrettifyLocal<T> = {
69
+ [K in keyof T as K]: T[K];
70
+ } & {};
@@ -1,31 +1,35 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/progress";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
6
  import { reactivePick } from "@vueuse/core";
7
7
  import { Primitive, ProgressIndicator, ProgressRoot, useForwardPropsEmits } from "reka-ui";
8
8
  import { computed } from "vue";
9
+ import { useAppConfig } from "#imports";
9
10
  import { useLocale } from "../composables/useLocale";
10
- import { useTheme } from "../composables/useTheme";
11
+ import { cv, merge } from "../utils/style";
11
12
  const props = defineProps({
12
13
  as: { type: null, required: false },
13
- max: { type: [Number, Array], required: false },
14
14
  size: { type: null, required: false },
15
+ color: { type: null, required: false },
15
16
  orientation: { type: null, required: false, default: "horizontal" },
17
+ animation: { type: null, required: false },
18
+ max: { type: [Number, Array], required: false },
16
19
  status: { type: Boolean, required: false },
17
- inverted: { type: Boolean, required: false },
18
- class: { type: null, required: false },
20
+ inverted: { type: Boolean, required: false, default: false },
19
21
  ui: { type: null, required: false },
22
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
20
23
  getValueLabel: { type: Function, required: false },
24
+ getValueText: { type: Function, required: false },
21
25
  modelValue: { type: [Number, null], required: false, default: null }
22
26
  });
23
27
  const emit = defineEmits(["update:modelValue", "update:max"]);
24
28
  const slots = defineSlots();
25
- const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "modelValue"), emit);
26
- const isIndeterminate = computed(() => rootProps.value.modelValue === null || Number.isNaN(+rootProps.value.modelValue));
29
+ const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "getValueText", "modelValue"), emit);
30
+ const isIndeterminate = computed(() => rootProps.value.modelValue === null);
27
31
  const hasSteps = computed(() => Array.isArray(props.max));
28
- const max = computed(() => {
32
+ const realMax = computed(() => {
29
33
  if (isIndeterminate.value || !props.max)
30
34
  return;
31
35
  if (Array.isArray(props.max))
@@ -37,14 +41,12 @@ const percent = computed(() => {
37
41
  return;
38
42
  if (rootProps.value.modelValue < 0)
39
43
  return 0;
40
- const _max = max.value ?? 100;
41
- if (rootProps.value.modelValue > _max)
44
+ const max = realMax.value ?? 100;
45
+ if (rootProps.value.modelValue > max)
42
46
  return 100;
43
- return Math.round(rootProps.value.modelValue / _max * 100);
47
+ return Math.round(rootProps.value.modelValue / max * 100);
44
48
  });
45
49
  const { dir } = useLocale();
46
- const { generateStyle } = useTheme();
47
- const style = computed(() => generateStyle("progress", props));
48
50
  const indicatorStyle = computed(() => {
49
51
  if (percent.value === void 0)
50
52
  return;
@@ -55,9 +57,8 @@ const indicatorStyle = computed(() => {
55
57
  return { transform: `translateX(${props.inverted ? "" : "-"}${100 - percent.value}%)` };
56
58
  });
57
59
  const statusStyle = computed(() => {
58
- return {
59
- [props.orientation === "vertical" ? "height" : "width"]: percent.value ? `${percent.value}%` : "fit-content"
60
- };
60
+ const value = `${Math.max(percent.value ?? 0, 0)}%`;
61
+ return props.orientation === "vertical" ? { height: value } : { width: value };
61
62
  });
62
63
  function isActive(index) {
63
64
  return index === Number(props.modelValue);
@@ -66,7 +67,7 @@ function isFirst(index) {
66
67
  return index === 0;
67
68
  }
68
69
  function isLast(index) {
69
- return index === max.value;
70
+ return index === realMax.value;
70
71
  }
71
72
  function stepVariant(index) {
72
73
  index = Number(index);
@@ -78,11 +79,16 @@ function stepVariant(index) {
78
79
  return "last";
79
80
  return "other";
80
81
  }
82
+ const appConfig = useAppConfig();
83
+ const ui = computed(() => {
84
+ const styler = cv(merge(theme, appConfig.ui.progress));
85
+ return styler(props);
86
+ });
81
87
  </script>
82
88
 
83
89
  <template>
84
- <Primitive :as="props.as" :class="style.wrapper({ class: [props.class, props.ui?.wrapper] })" data-part="wrapper">
85
- <div v-if="!isIndeterminate && (props.status || slots.status)" :class="style.status({ class: props.ui?.status })" data-part="status" :style="statusStyle">
90
+ <Primitive :as="props.as" :class="ui.root({ class: [props.ui?.root, props.class] })" :data-orientation="orientation" data-part="root">
91
+ <div v-if="!isIndeterminate && (props.status || !!slots.status)" :class="ui.status({ class: props.ui?.status })" data-part="status" :style="statusStyle">
86
92
  <slot name="status" :percent="percent">
87
93
  {{ percent }}%
88
94
  </slot>
@@ -90,17 +96,16 @@ function stepVariant(index) {
90
96
 
91
97
  <ProgressRoot
92
98
  v-bind="rootProps"
93
- :model-value="Number.isNaN(rootProps.modelValue) ? null : rootProps.modelValue"
94
- :max="max"
95
- :class="style.root({ class: props.ui?.root })"
96
- data-part="root"
99
+ :max="realMax"
100
+ :class="ui.base({ class: props.ui?.base })"
101
+ data-part="base"
97
102
  style="transform: translateZ(0)"
98
103
  >
99
- <ProgressIndicator :class="style.indicator({ class: props.ui?.indicator })" data-part="indicator" :style="indicatorStyle" />
104
+ <ProgressIndicator :class="ui.indicator({ class: props.ui?.indicator })" data-part="indicator" :style="indicatorStyle" />
100
105
  </ProgressRoot>
101
106
 
102
- <div v-if="hasSteps" :class="style.steps({ class: props.ui?.steps })" data-part="steps">
103
- <div v-for="(step, index) in props.max" :key="index" :class="style.step({ class: props.ui?.step, step: stepVariant(index) })" data-part="step">
107
+ <div v-if="hasSteps" :class="ui.steps({ class: props.ui?.steps })" data-part="steps">
108
+ <div v-for="(step, index) in props.max" :key="index" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })" data-part="step">
104
109
  <slot :name="`step-${index}`" :step="step">
105
110
  {{ step }}
106
111
  </slot>
@@ -1,42 +1,49 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { PrimitiveProps, ProgressRootEmits, ProgressRootProps } from 'reka-ui';
3
- import type { progress } from '../theme/index.js';
4
- import type { ComponentAttrs } from '../types/index.js';
5
- export interface ProgressEmits extends ProgressRootEmits {
6
- }
7
- export type ProgressSlots = {
8
- status?: (props: {
9
- percent?: number;
10
- }) => any;
11
- } & {
12
- [key: `step-${number}`]: (props: {
13
- step: string | number;
14
- }) => any;
15
- };
16
- type ProgressVariants = VariantProps<typeof progress>;
17
- export interface ProgressProps extends ComponentAttrs<typeof progress>, Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
3
+ import theme from '#build/ui/progress';
4
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
5
+ import type { StaticSlot } from '../types/utils';
6
+ type ThemeVariants = VariantProps<typeof theme>;
7
+ export interface ProgressProps extends ComponentBaseProps, Pick<ProgressRootProps, 'getValueLabel' | 'getValueText' | 'modelValue'> {
18
8
  /**
19
9
  * The element or component this component should render as.
20
10
  * @default "div"
21
11
  */
22
12
  as?: PrimitiveProps['as'];
23
- /** The maximum progress value. */
24
- max?: number | string[];
25
- /**
26
- * @default "md"
27
- */
28
- size?: ProgressVariants['size'];
13
+ /** @default "md" */
14
+ size?: ThemeVariants['size'];
15
+ /** @default "primary" */
16
+ color?: ThemeVariants['color'];
29
17
  /**
30
18
  * The orientation of the progress bar.
31
19
  * @default "horizontal"
32
20
  */
33
- orientation?: ProgressVariants['orientation'];
21
+ orientation?: ThemeVariants['orientation'];
22
+ /**
23
+ * The animation of the progress bar.
24
+ * @default "carousel"
25
+ */
26
+ animation?: ThemeVariants['animation'];
27
+ /** The maximum progress value. */
28
+ max?: number | Array<any>;
34
29
  /** Display the current progress value. */
35
30
  status?: boolean;
36
31
  /** Whether the progress is visually inverted. */
37
32
  inverted?: boolean;
33
+ ui?: ComponentUIProps<typeof theme>;
34
+ }
35
+ export interface ProgressEmits extends ProgressRootEmits {
38
36
  }
39
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
+ export type ProgressSlots = {
38
+ status: StaticSlot<{
39
+ percent?: number;
40
+ }>;
41
+ } & {
42
+ [key: `step-${number}`]: StaticSlot<{
43
+ step: string | number;
44
+ }>;
45
+ };
46
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
40
47
  "update:modelValue": (value: string[] | undefined) => any;
41
48
  "update:max": (value: number) => any;
42
49
  }, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
@@ -44,8 +51,10 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ProgressPr
44
51
  "onUpdate:max"?: ((value: number) => any) | undefined;
45
52
  }>, {
46
53
  orientation: "horizontal" | "vertical";
54
+ inverted: boolean;
47
55
  modelValue: number | null;
48
56
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
57
+ declare const _default: typeof __VLS_export;
49
58
  export default _default;
50
59
  type __VLS_WithSlots<T, S> = T & {
51
60
  new (): {
@@ -1,75 +1,91 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/radio-group";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
6
  import { reactivePick } from "@vueuse/core";
7
- import { Label, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, useForwardPropsEmits } from "reka-ui";
7
+ import { Label, RadioGroupIndicator, RadioGroupItem as RekaRadioGroupItem, RadioGroupRoot, useForwardPropsEmits } from "reka-ui";
8
8
  import { computed, useId } from "vue";
9
- import { useFormItem } from "../composables/useFormItem";
10
- import { useTheme } from "../composables/useTheme";
9
+ import { useAppConfig } from "#imports";
10
+ import { useFormField } from "../composables/useFormField";
11
11
  import { get } from "../utils";
12
+ import { cv, merge } from "../utils/style";
12
13
  const props = defineProps({
13
14
  as: { type: null, required: false },
14
- legend: { type: String, required: false },
15
- valueKey: { type: String, required: false, default: "value" },
16
- labelKey: { type: String, required: false, default: "label" },
17
- descriptionKey: { type: String, required: false, default: "description" },
18
- options: { type: Array, required: false },
15
+ variant: { type: null, required: false },
19
16
  size: { type: null, required: false },
17
+ color: { type: null, required: false },
18
+ indicator: { type: null, required: false },
19
+ legend: { type: String, required: false },
20
+ valueKey: { type: null, required: false, default: "value" },
21
+ labelKey: { type: null, required: false, default: "label" },
22
+ descriptionKey: { type: null, required: false, default: "description" },
23
+ items: { type: null, required: false },
24
+ modelValue: { type: null, required: false },
25
+ defaultValue: { type: null, required: false },
20
26
  orientation: { type: null, required: false, default: "vertical" },
21
- class: { type: null, required: false },
22
27
  ui: { type: null, required: false },
23
- defaultValue: { type: null, required: false },
28
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
24
29
  disabled: { type: Boolean, required: false },
25
30
  loop: { type: Boolean, required: false },
26
- modelValue: { type: null, required: false },
27
31
  name: { type: String, required: false },
28
32
  required: { type: Boolean, required: false }
29
33
  });
30
- const emit = defineEmits(["update:modelValue", "change"]);
34
+ const emit = defineEmits(["change", "update:modelValue"]);
31
35
  const slots = defineSlots();
32
- const rootProps = useForwardPropsEmits(reactivePick(props, "as", "modelValue", "defaultValue", "orientation", "loop", "required"), emit);
33
- const { id: _id, name, size, disabled, ariaAttrs, emitFormChange, emitFormInput } = useFormItem(props);
36
+ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "loop", "required"), emit);
37
+ const { id: _id, name, color, size, disabled, ariaAttrs, emitFormChange, emitFormInput } = useFormField(props, { bind: false });
34
38
  const id = _id.value ?? useId();
35
- const { generateStyle } = useTheme();
36
- const style = computed(() => generateStyle("radioGroup", {
37
- ...props,
38
- size: size.value,
39
- disabled: disabled.value
40
- }));
39
+ const appConfig = useAppConfig();
40
+ const ui = computed(() => {
41
+ const styler = cv(merge(theme, appConfig.ui.radioGroup));
42
+ return styler({
43
+ ...props,
44
+ color: color.value,
45
+ size: size.value,
46
+ disabled: disabled.value
47
+ });
48
+ });
41
49
  function normalizeItem(item) {
42
- if (item === null) {
50
+ const itemBase = {
51
+ disabled: disabled.value,
52
+ label: void 0,
53
+ description: void 0,
54
+ value: void 0,
55
+ ui: void 0,
56
+ class: void 0
57
+ };
58
+ if (typeof item === "object" && item === null) {
43
59
  return {
60
+ ...itemBase,
44
61
  id: `${id}:null`,
45
- label: void 0,
46
- value: void 0
62
+ value: null
47
63
  };
48
64
  }
49
- if (typeof item === "string" || typeof item === "number") {
65
+ if (typeof item === "boolean" || typeof item === "string" || typeof item === "number" || typeof item === "bigint") {
50
66
  return {
67
+ ...itemBase,
51
68
  id: `${id}:${item}`,
52
69
  label: String(item),
53
- value: item,
54
- disabled: disabled.value
70
+ value: item
55
71
  };
56
72
  }
57
73
  const value = get(item, props.valueKey);
58
74
  const label = get(item, props.labelKey);
59
75
  const description = get(item, props.descriptionKey);
60
76
  return {
77
+ ...itemBase,
61
78
  ...item,
62
79
  id: `${id}:${value}`,
63
80
  label,
64
81
  value,
65
- description,
66
- disabled: disabled.value || item.disabled
82
+ description
67
83
  };
68
84
  }
69
85
  const normalizedItems = computed(() => {
70
- if (!props.options)
86
+ if (!props.items)
71
87
  return [];
72
- return props.options.map(normalizeItem);
88
+ return props.items.map(normalizeItem);
73
89
  });
74
90
  function onUpdate(value) {
75
91
  const event = new Event("change", { target: { value } });
@@ -81,42 +97,53 @@ function onUpdate(value) {
81
97
 
82
98
  <template>
83
99
  <RadioGroupRoot
84
- v-slot="{ modelValue }"
85
- v-bind="{ ...rootProps, id, name, disabled }"
86
- :class="style.root({ class: [props.class, props.ui?.root] })"
100
+ v-bind="{ id, ...rootProps, name, disabled }"
101
+ :model-value="props.modelValue"
102
+ :default-value="props.defaultValue"
103
+ :orientation="props.orientation"
104
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
87
105
  data-part="root"
88
106
  @update:model-value="onUpdate"
89
107
  >
90
- <fieldset v-bind="ariaAttrs" :class="style.fieldset({ class: props.ui?.fieldset })" data-part="fieldset">
91
- <legend v-if="props.legend || slots.legend" :class="style.legend({ class: props.ui?.legend })" data-part="legend">
108
+ <fieldset v-bind="ariaAttrs" :class="ui.fieldset({ class: props.ui?.fieldset })" data-part="fieldset">
109
+ <legend v-if="props.legend || !!slots.legend" :class="ui.legend({ class: props.ui?.legend })" data-part="legend">
92
110
  <slot name="legend">
93
111
  {{ props.legend }}
94
112
  </slot>
95
113
  </legend>
96
- <div v-for="item in normalizedItems" :key="item.value" :class="style.item({ class: props.ui?.item, disabled: item.disabled })" data-part="item">
97
- <div :class="style.container({ class: props.ui?.container })" data-part="container">
98
- <RadioGroupItem
114
+ <component
115
+ :is="!props.variant || props.variant === 'list' ? 'div' : Label"
116
+ v-for="item in normalizedItems"
117
+ :key="item.value"
118
+ :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class], disabled: item.disabled })"
119
+ data-part="item"
120
+ >
121
+ <div :class="ui.container({ class: [props.ui?.container, item.ui?.container], disabled: item.disabled })" data-part="container">
122
+ <RekaRadioGroupItem
99
123
  :id="item.id"
100
124
  :value="item.value"
101
125
  :disabled="item.disabled"
102
- :class="style.base({ class: props.ui?.base })"
126
+ :class="ui.base({ class: [props.ui?.base, item.ui?.base], disabled: item.disabled, indicator: props.indicator })"
103
127
  data-part="base"
128
+ :data-indicator="props.indicator"
104
129
  >
105
- <RadioGroupIndicator :class="style.indicator({ class: props.ui?.indicator })" data-part="indicator" force-mount />
106
- </RadioGroupItem>
130
+ <RadioGroupIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator], disabled: item.disabled })" data-part="indicator" force-mount />
131
+ </RekaRadioGroupItem>
107
132
  </div>
108
133
 
109
- <div :class="style.wrapper({ class: props.ui?.wrapper })" data-part="wrapper">
110
- <Label :for="item.id" :class="style.label({ class: props.ui?.label })" data-part="label">
111
- <slot name="label" :item="item" :model-value="modelValue">{{ item.label }}</slot>
112
- </Label>
113
- <p v-if="item.description || slots.description" :class="style.description({ class: props.ui?.description })" data-part="description">
134
+ <div v-if="item.label || !!slots.label || (item.description || !!slots.description)" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper], disabled: item.disabled })" data-part="wrapper">
135
+ <component :is="!props.variant || props.variant === 'list' ? Label : 'p'" :for="item.id" :class="ui.label({ class: [props.ui?.label, item.ui?.label], disabled: item.disabled })" data-part="label">
136
+ <slot name="label" :item="item" :model-value="modelValue">
137
+ {{ item.label }}
138
+ </slot>
139
+ </component>
140
+ <p v-if="item.description || !!slots.description" :class="ui.description({ class: [props.ui?.description, item.ui?.description], disabled: item.disabled })" data-part="description">
114
141
  <slot name="description" :item="item" :model-value="modelValue">
115
142
  {{ item.description }}
116
143
  </slot>
117
144
  </p>
118
145
  </div>
119
- </div>
146
+ </component>
120
147
  </fieldset>
121
148
  </RadioGroupRoot>
122
149
  </template>
@@ -1,74 +1,96 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
- import type { PrimitiveProps, RadioGroupRootProps } from 'reka-ui';
3
- import type { radioGroup } from '../theme/index.js';
4
- import type { AcceptableValue, ComponentAttrs } from '../types/index.js';
5
- export interface RadioGroupEmits {
6
- 'update:modelValue': [payload: string];
7
- 'change': [payload: Event];
8
- }
2
+ import type { RadioGroupRootEmits, RadioGroupRootProps } from 'reka-ui';
3
+ import theme from '#build/ui/radio-group';
4
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
5
+ import type { AcceptableValue, GetItemKeys, GetModelValue, GetModelValueEmits, MaybeNull, NestedItem, StaticSlot } from '../types/utils';
9
6
  export type RadioGroupValue = AcceptableValue;
10
- export type RadioGroupItem = {
7
+ interface RadioGroupItemBase {
11
8
  label?: string;
12
9
  description?: string;
13
10
  disabled?: boolean;
14
11
  value?: RadioGroupValue;
15
- [key: string]: any;
16
- } | RadioGroupValue;
17
- type SlotProps<T extends RadioGroupItem> = (props: {
18
- item: T & {
19
- id: string;
20
- };
21
- modelValue?: RadioGroupValue;
22
- }) => any;
23
- export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
24
- legend?: any;
25
- label?: SlotProps<T>;
26
- description?: SlotProps<T>;
12
+ class?: ComponentBaseProps['class'];
13
+ ui?: Pick<ComponentUIProps<typeof theme>, 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
27
14
  }
28
- type RadioGroupVariants = VariantProps<typeof radioGroup>;
29
- export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> extends ComponentAttrs<typeof radioGroup>, Pick<RadioGroupRootProps, 'defaultValue' | 'disabled' | 'loop' | 'modelValue' | 'name' | 'required'> {
15
+ export type RadioGroupItem = RadioGroupValue | (RadioGroupItemBase & {
16
+ [key: string]: any;
17
+ });
18
+ type NormalizeItem<T extends RadioGroupItem> = Exclude<T & {
19
+ id: string;
20
+ ui?: Pick<ComponentUIProps<typeof theme>, 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
21
+ }, RadioGroupValue>;
22
+ type ThemeVariants = VariantProps<typeof theme>;
23
+ export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends ComponentBaseProps, Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
30
24
  /**
31
25
  * The element or component this component should render as.
32
26
  * @default "div"
33
27
  */
34
- as?: PrimitiveProps['as'];
28
+ as?: RadioGroupRootProps['as'];
29
+ /** @default "list" */
30
+ variant?: ThemeVariants['variant'];
31
+ /** @default "md" */
32
+ size?: ThemeVariants['size'];
33
+ /** @default "primary" */
34
+ color?: ThemeVariants['color'];
35
+ /**
36
+ * Position of the indicator.
37
+ * @default "start"
38
+ */
39
+ indicator?: ThemeVariants['indicator'];
35
40
  legend?: string;
36
41
  /**
37
42
  * When `options` is an array of objects, select the field to use as the value.
38
43
  * @default "value"
39
44
  */
40
- valueKey?: string;
45
+ valueKey?: VK;
41
46
  /**
42
47
  * When `options` is an array of objects, select the field to use as the label.
43
48
  * @default "label"
44
49
  */
45
- labelKey?: string;
50
+ labelKey?: GetItemKeys<T>;
46
51
  /**
47
52
  * When `options` is an array of objects, select the field to use as the description.
48
53
  * @default "description"
49
54
  */
50
- descriptionKey?: string;
51
- options?: T[];
52
- size?: RadioGroupVariants['size'];
55
+ descriptionKey?: GetItemKeys<T>;
56
+ items?: T;
57
+ /** The controlled value of the RadioGroup. Can be bind as `v-model`. */
58
+ modelValue?: MaybeNull<GetModelValue<T, VK, false>>;
59
+ /** The value of the RadioGroup when initially rendered. Use when you do not need to control the state of the RadioGroup. */
60
+ defaultValue?: MaybeNull<GetModelValue<T, VK, false>>;
53
61
  /**
54
62
  * The orientation the radio buttons are laid out.
55
63
  * @default "vertical"
56
64
  */
57
65
  orientation?: RadioGroupRootProps['orientation'];
66
+ ui?: ComponentUIProps<typeof theme>;
67
+ }
68
+ export type RadioGroupEmits<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> = Omit<RadioGroupRootEmits, 'update:modelValue'> & {
69
+ change: [event: Event];
70
+ } & GetModelValueEmits<T, VK, false>;
71
+ type SlotProps<T extends RadioGroupItem[]> = StaticSlot<{
72
+ item: NormalizeItem<NestedItem<T>>;
73
+ modelValue?: RadioGroupValue;
74
+ }>;
75
+ export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]> {
76
+ legend: StaticSlot;
77
+ label: SlotProps<T>;
78
+ description: SlotProps<T>;
58
79
  }
59
- 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<{
60
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
61
- readonly onChange?: ((payload: Event) => any) | undefined;
62
- readonly "onUpdate:modelValue"?: ((payload: string) => any) | undefined;
63
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onChange" | "onUpdate:modelValue"> & RadioGroupProps<T> & Partial<{}>> & import("vue").PublicProps;
64
- expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
80
+ declare const __VLS_export: <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
+ props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
82
+ onChange?: ((event: Event) => any) | undefined;
83
+ "onUpdate:modelValue"?: ((value: import("../types/utils").GetItemValue<T, VK, NestedItem<T>>) => any) | undefined;
84
+ }> & import("vue").PublicProps;
85
+ expose: (exposed: {}) => void;
65
86
  attrs: any;
66
87
  slots: RadioGroupSlots<T>;
67
- emit: ((evt: "change", payload: Event) => void) & ((evt: "update:modelValue", payload: string) => void);
88
+ emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types/utils").GetItemValue<T, VK, NestedItem<T>>) => void);
68
89
  }>) => import("vue").VNode & {
69
90
  __ctx?: Awaited<typeof __VLS_setup>;
70
91
  };
92
+ declare const _default: typeof __VLS_export;
71
93
  export default _default;
72
94
  type __VLS_PrettifyLocal<T> = {
73
- [K in keyof T]: T[K];
95
+ [K in keyof T as K]: T[K];
74
96
  } & {};