@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,92 +1,55 @@
1
- <script lang="ts">
2
- import type { PopoverRootProps, HoverCardRootProps, PopoverRootEmits, PopoverContentProps, PopoverContentEmits, PopoverArrowProps } from 'reka-ui'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/ui/popover'
6
- import { tv } from '../utils/tv'
7
- import type { EmitsToProps } from '../types/utils'
8
-
9
- const appConfigPopover = _appConfig as AppConfig & { ui: { popover: Partial<typeof theme> } }
10
-
11
- const popover = tv({ extend: tv(theme), ...(appConfigPopover.ui?.popover || {}) })
12
-
13
- export interface PopoverProps extends PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
14
- /**
15
- * The display mode of the popover.
16
- * @defaultValue 'click'
17
- */
18
- mode?: 'click' | 'hover'
19
- /**
20
- * The content of the popover.
21
- * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
22
- */
23
- content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>
24
- /**
25
- * Display an arrow alongside the popover.
26
- * @defaultValue false
27
- */
28
- arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>
29
- /**
30
- * Render the popover in a portal.
31
- * @defaultValue true
32
- */
33
- portal?: boolean
34
- /**
35
- * When `false`, the popover will not close when clicking outside or pressing escape.
36
- * @defaultValue true
37
- */
38
- dismissible?: boolean
39
- class?: any
40
- ui?: Partial<typeof popover.slots>
41
- }
42
-
43
- export interface PopoverEmits extends PopoverRootEmits {}
44
-
45
- export interface PopoverSlots {
46
- default(props: { open: boolean }): any
47
- content(props?: {}): any
48
- }
1
+ <script>
2
+ import theme from "#build/ui/popover";
49
3
  </script>
50
4
 
51
- <script setup lang="ts">
52
- import { computed, toRef } from 'vue'
53
- import { defu } from 'defu'
54
- import { useForwardPropsEmits } from 'reka-ui'
55
- import { Popover, HoverCard } from 'reka-ui/namespaced'
56
- import { reactivePick } from '@vueuse/core'
57
-
58
- const props = withDefaults(defineProps<PopoverProps>(), {
59
- portal: true,
60
- mode: 'click',
61
- openDelay: 0,
62
- closeDelay: 0,
63
- dismissible: true
64
- })
65
- const emits = defineEmits<PopoverEmits>()
66
- const slots = defineSlots<PopoverSlots>()
67
-
68
- const pick = props.mode === 'hover' ? reactivePick(props, 'defaultOpen', 'open', 'openDelay', 'closeDelay') : reactivePick(props, 'defaultOpen', 'open', 'modal')
69
- const rootProps = useForwardPropsEmits(pick, emits)
70
- const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, collisionPadding: 8 }) as PopoverContentProps)
5
+ <script setup>
6
+ import { computed, toRef } from "vue";
7
+ import { defu } from "defu";
8
+ import { useForwardPropsEmits } from "reka-ui";
9
+ import { Popover, HoverCard } from "reka-ui/namespaced";
10
+ import { reactivePick } from "@vueuse/core";
11
+ import { useAppConfig } from "#imports";
12
+ import { usePortal } from "../composables/usePortal";
13
+ import { tv } from "../utils/tv";
14
+ const props = defineProps({
15
+ mode: { type: String, required: false, default: "click" },
16
+ content: { type: Object, required: false },
17
+ arrow: { type: [Boolean, Object], required: false },
18
+ portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
19
+ dismissible: { type: Boolean, required: false, default: true },
20
+ class: { type: null, required: false },
21
+ ui: { type: null, required: false },
22
+ defaultOpen: { type: Boolean, required: false },
23
+ open: { type: Boolean, required: false },
24
+ modal: { type: Boolean, required: false },
25
+ openDelay: { type: Number, required: false, default: 0 },
26
+ closeDelay: { type: Number, required: false, default: 0 }
27
+ });
28
+ const emits = defineEmits(["close:prevent", "update:open"]);
29
+ const slots = defineSlots();
30
+ const appConfig = useAppConfig();
31
+ const pick = props.mode === "hover" ? reactivePick(props, "defaultOpen", "open", "openDelay", "closeDelay") : reactivePick(props, "defaultOpen", "open", "modal");
32
+ const rootProps = useForwardPropsEmits(pick, emits);
33
+ const portalProps = usePortal(toRef(() => props.portal));
34
+ const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8 }));
71
35
  const contentEvents = computed(() => {
72
36
  if (!props.dismissible) {
73
- return {
74
- pointerDownOutside: (e: Event) => e.preventDefault(),
75
- interactOutside: (e: Event) => e.preventDefault(),
76
- escapeKeyDown: (e: Event) => e.preventDefault()
77
- }
37
+ const events = ["pointerDownOutside", "interactOutside", "escapeKeyDown"];
38
+ return events.reduce((acc, curr) => {
39
+ acc[curr] = (e) => {
40
+ e.preventDefault();
41
+ emits("close:prevent");
42
+ };
43
+ return acc;
44
+ }, {});
78
45
  }
79
-
80
- return {}
81
- })
82
- const arrowProps = toRef(() => props.arrow as PopoverArrowProps)
83
-
84
- // eslint-disable-next-line vue/no-dupe-keys
85
- const ui = computed(() => popover({
46
+ return {};
47
+ });
48
+ const arrowProps = toRef(() => props.arrow);
49
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.popover || {} })({
86
50
  side: contentProps.value.side
87
- }))
88
-
89
- const Component = computed(() => props.mode === 'hover' ? HoverCard : Popover)
51
+ }));
52
+ const Component = computed(() => props.mode === "hover" ? HoverCard : Popover);
90
53
  </script>
91
54
 
92
55
  <template>
@@ -95,7 +58,7 @@ const Component = computed(() => props.mode === 'hover' ? HoverCard : Popover)
95
58
  <slot :open="open" />
96
59
  </Component.Trigger>
97
60
 
98
- <Component.Portal :disabled="!portal">
61
+ <Component.Portal v-bind="portalProps">
99
62
  <Component.Content v-bind="contentProps" :class="ui.content({ class: [!slots.default && props.class, props.ui?.content] })" v-on="contentEvents">
100
63
  <slot name="content" />
101
64
 
@@ -0,0 +1,80 @@
1
+ import { Popover } from 'reka-ui/namespaced';
2
+ import type { PopoverRootProps, HoverCardRootProps, PopoverRootEmits, PopoverContentProps, PopoverContentEmits, PopoverArrowProps } from 'reka-ui';
3
+ import type { AppConfig } from '@nuxt/schema';
4
+ import theme from '#build/ui/popover';
5
+ import type { EmitsToProps, ComponentConfig } from '../types/utils';
6
+ type Popover = ComponentConfig<typeof theme, AppConfig, 'popover'>;
7
+ export interface PopoverProps extends PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
8
+ /**
9
+ * The display mode of the popover.
10
+ * @defaultValue 'click'
11
+ */
12
+ mode?: 'click' | 'hover';
13
+ /**
14
+ * The content of the popover.
15
+ * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
16
+ */
17
+ content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>;
18
+ /**
19
+ * Display an arrow alongside the popover.
20
+ * @defaultValue false
21
+ */
22
+ arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>;
23
+ /**
24
+ * Render the popover in a portal.
25
+ * @defaultValue true
26
+ */
27
+ portal?: boolean | string | HTMLElement;
28
+ /**
29
+ * When `false`, the popover will not close when clicking outside or pressing escape.
30
+ * @defaultValue true
31
+ */
32
+ dismissible?: boolean;
33
+ class?: any;
34
+ ui?: Popover['slots'];
35
+ }
36
+ export interface PopoverEmits extends PopoverRootEmits {
37
+ 'close:prevent': [];
38
+ }
39
+ export interface PopoverSlots {
40
+ default(props: {
41
+ open: boolean;
42
+ }): any;
43
+ content(props?: {}): any;
44
+ }
45
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<PopoverProps>, {
46
+ portal: boolean;
47
+ mode: string;
48
+ openDelay: number;
49
+ closeDelay: number;
50
+ dismissible: boolean;
51
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
52
+ mode: "click" | "hover";
53
+ portal: boolean | string | HTMLElement;
54
+ dismissible: boolean;
55
+ openDelay: number;
56
+ closeDelay: number;
57
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<PopoverSlots> & PopoverSlots>;
58
+ export default _default;
59
+ type __VLS_WithDefaults<P, D> = {
60
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
61
+ default: D[K];
62
+ }> : P[K];
63
+ };
64
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
65
+ type __VLS_TypePropsToOption<T> = {
66
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
67
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
68
+ } : {
69
+ type: import('vue').PropType<T[K]>;
70
+ required: true;
71
+ };
72
+ };
73
+ type __VLS_WithTemplateSlots<T, S> = T & {
74
+ new (): {
75
+ $slots: S;
76
+ };
77
+ };
78
+ type __VLS_PrettifyLocal<T> = {
79
+ [K in keyof T]: T[K];
80
+ } & {};
@@ -1,172 +1,111 @@
1
- <!-- eslint-disable vue/block-tag-newline -->
2
- <script lang="ts">
3
- import type { VariantProps } from 'tailwind-variants'
4
- import type { ProgressRootProps, ProgressRootEmits } from 'reka-ui'
5
- import type { AppConfig } from '@nuxt/schema'
6
- import _appConfig from '#build/app.config'
7
- import theme from '#build/ui/progress'
8
- import { tv } from '../utils/tv'
9
-
10
- const appConfigProgress = _appConfig as AppConfig & { ui: { progress: Partial<typeof theme> } }
11
-
12
- const progress = tv({ extend: tv(theme), ...(appConfigProgress.ui?.progress || {}) })
13
-
14
- type ProgressVariants = VariantProps<typeof progress>
15
-
16
- export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
17
- /**
18
- * The element or component this component should render as.
19
- * @defaultValue 'div'
20
- */
21
- as?: any
22
- /** The maximum progress value. */
23
- max?: number | Array<any>
24
- /** Display the current progress value. */
25
- status?: boolean
26
- /** Whether the progress is visually inverted. */
27
- inverted?: boolean
28
- /**
29
- * @defaultValue 'md'
30
- */
31
- size?: ProgressVariants['size']
32
- /**
33
- * @defaultValue 'primary'
34
- */
35
- color?: ProgressVariants['color']
36
- /**
37
- * The orientation of the progress bar.
38
- * @defaultValue 'horizontal'
39
- */
40
- orientation?: ProgressVariants['orientation']
41
- /**
42
- * The animation of the progress bar.
43
- * @defaultValue 'carousel'
44
- */
45
- animation?: ProgressVariants['animation']
46
- class?: any
47
- ui?: Partial<typeof progress.slots>
48
- }
49
-
50
- export interface ProgressEmits extends ProgressRootEmits {}
51
-
52
- export type ProgressSlots = {
53
- status(props: { percent?: number }): any
54
- } & {
55
- [key: string]: (props: { step: number }) => any
56
- }
57
-
1
+ <script>
2
+ import theme from "#build/ui/progress";
58
3
  </script>
59
4
 
60
- <script setup lang="ts">
61
- import { computed } from 'vue'
62
- import { Primitive, ProgressRoot, ProgressIndicator, useForwardPropsEmits } from 'reka-ui'
63
- import { reactivePick } from '@vueuse/core'
64
- import { useLocale } from '../composables/useLocale'
65
-
66
- const props = withDefaults(defineProps<ProgressProps>(), {
67
- inverted: false,
68
- modelValue: null,
69
- orientation: 'horizontal'
70
- })
71
- const emits = defineEmits<ProgressEmits>()
72
- const slots = defineSlots<ProgressSlots>()
73
-
74
- const { dir } = useLocale()
75
-
76
- const rootProps = useForwardPropsEmits(reactivePick(props, 'getValueLabel', 'modelValue'), emits)
77
-
78
- const isIndeterminate = computed(() => rootProps.value.modelValue === null)
79
- const hasSteps = computed(() => Array.isArray(props.max))
80
-
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { Primitive, ProgressRoot, ProgressIndicator, useForwardPropsEmits } from "reka-ui";
8
+ import { reactivePick } from "@vueuse/core";
9
+ import { useAppConfig } from "#imports";
10
+ import { useLocale } from "../composables/useLocale";
11
+ import { tv } from "../utils/tv";
12
+ const props = defineProps({
13
+ as: { type: null, required: false },
14
+ max: { type: [Number, Array], required: false },
15
+ status: { type: Boolean, required: false },
16
+ inverted: { type: Boolean, required: false, default: false },
17
+ size: { type: null, required: false },
18
+ color: { type: null, required: false },
19
+ orientation: { type: null, required: false, default: "horizontal" },
20
+ animation: { type: null, required: false },
21
+ class: { type: null, required: false },
22
+ ui: { type: null, required: false },
23
+ getValueLabel: { type: Function, required: false },
24
+ modelValue: { type: [Number, null], required: false, default: null }
25
+ });
26
+ const emits = defineEmits(["update:modelValue", "update:max"]);
27
+ const slots = defineSlots();
28
+ const { dir } = useLocale();
29
+ const appConfig = useAppConfig();
30
+ const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "modelValue"), emits);
31
+ const isIndeterminate = computed(() => rootProps.value.modelValue === null);
32
+ const hasSteps = computed(() => Array.isArray(props.max));
81
33
  const realMax = computed(() => {
82
34
  if (isIndeterminate.value || !props.max) {
83
- return undefined
35
+ return void 0;
84
36
  }
85
-
86
37
  if (Array.isArray(props.max)) {
87
- return props.max.length - 1
38
+ return props.max.length - 1;
88
39
  }
89
-
90
- return Number(props.max)
91
- })
92
-
40
+ return Number(props.max);
41
+ });
93
42
  const percent = computed(() => {
94
43
  if (isIndeterminate.value) {
95
- return undefined
44
+ return void 0;
96
45
  }
97
-
98
46
  switch (true) {
99
- case rootProps.value.modelValue! < 0: return 0
100
- case rootProps.value.modelValue! > (realMax.value ?? 100): return 100
101
- default: return Math.round((rootProps.value.modelValue! / (realMax.value ?? 100)) * 100)
47
+ case rootProps.value.modelValue < 0:
48
+ return 0;
49
+ case rootProps.value.modelValue > (realMax.value ?? 100):
50
+ return 100;
51
+ default:
52
+ return Math.round(rootProps.value.modelValue / (realMax.value ?? 100) * 100);
102
53
  }
103
- })
104
-
54
+ });
105
55
  const indicatorStyle = computed(() => {
106
- if (percent.value === undefined) {
107
- return
56
+ if (percent.value === void 0) {
57
+ return;
108
58
  }
109
-
110
- if (props.orientation === 'vertical') {
59
+ if (props.orientation === "vertical") {
111
60
  return {
112
- transform: `translateY(${props.inverted ? '' : '-'}${100 - percent.value}%)`
113
- }
61
+ transform: `translateY(${props.inverted ? "" : "-"}${100 - percent.value}%)`
62
+ };
114
63
  } else {
115
- if (dir.value === 'rtl') {
64
+ if (dir.value === "rtl") {
116
65
  return {
117
- transform: `translateX(${props.inverted ? '-' : ''}${100 - percent.value}%)`
118
- }
66
+ transform: `translateX(${props.inverted ? "-" : ""}${100 - percent.value}%)`
67
+ };
119
68
  } else {
120
69
  return {
121
- transform: `translateX(${props.inverted ? '' : '-'}${100 - percent.value}%)`
122
- }
70
+ transform: `translateX(${props.inverted ? "" : "-"}${100 - percent.value}%)`
71
+ };
123
72
  }
124
73
  }
125
- })
126
-
74
+ });
127
75
  const statusStyle = computed(() => {
128
76
  return {
129
- [props.orientation === 'vertical' ? 'height' : 'width']: percent.value ? `${percent.value}%` : 'fit-content'
130
- }
131
- })
132
-
133
- function isActive(index: number) {
134
- return index === Number(props.modelValue)
77
+ [props.orientation === "vertical" ? "height" : "width"]: percent.value ? `${percent.value}%` : "fit-content"
78
+ };
79
+ });
80
+ function isActive(index) {
81
+ return index === Number(props.modelValue);
135
82
  }
136
-
137
- function isFirst(index: number) {
138
- return index === 0
83
+ function isFirst(index) {
84
+ return index === 0;
139
85
  }
140
-
141
- function isLast(index: number) {
142
- return index === realMax.value
86
+ function isLast(index) {
87
+ return index === realMax.value;
143
88
  }
144
-
145
- function stepVariant(index: number | string) {
146
- index = Number(index)
147
-
89
+ function stepVariant(index) {
90
+ index = Number(index);
148
91
  if (isActive(index) && !isFirst(index)) {
149
- return 'active'
92
+ return "active";
150
93
  }
151
-
152
94
  if (isFirst(index) && isActive(index)) {
153
- return 'first'
95
+ return "first";
154
96
  }
155
-
156
97
  if (isLast(index) && isActive(index)) {
157
- return 'last'
98
+ return "last";
158
99
  }
159
-
160
- return 'other'
100
+ return "other";
161
101
  }
162
-
163
- const ui = computed(() => progress({
102
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.progress || {} })({
164
103
  animation: props.animation,
165
104
  size: props.size,
166
105
  color: props.color,
167
106
  orientation: props.orientation,
168
107
  inverted: props.inverted
169
- }))
108
+ }));
170
109
  </script>
171
110
 
172
111
  <template>
@@ -0,0 +1,97 @@
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/utils';
5
+ type Progress = ComponentConfig<typeof theme, AppConfig, 'progress'>;
6
+ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | '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_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ProgressProps>, {
51
+ inverted: boolean;
52
+ modelValue: null;
53
+ orientation: string;
54
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
55
+ orientation: Progress["variants"]["orientation"];
56
+ inverted: boolean;
57
+ modelValue: number | null;
58
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<{
59
+ status(props: {
60
+ percent?: number;
61
+ }): any;
62
+ } & {
63
+ [key: string]: (props: {
64
+ step: number;
65
+ }) => any;
66
+ }> & {
67
+ status(props: {
68
+ percent?: number;
69
+ }): any;
70
+ } & {
71
+ [key: string]: (props: {
72
+ step: number;
73
+ }) => any;
74
+ }>;
75
+ export default _default;
76
+ type __VLS_WithDefaults<P, D> = {
77
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
78
+ default: D[K];
79
+ }> : P[K];
80
+ };
81
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
82
+ type __VLS_TypePropsToOption<T> = {
83
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
84
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
85
+ } : {
86
+ type: import('vue').PropType<T[K]>;
87
+ required: true;
88
+ };
89
+ };
90
+ type __VLS_WithTemplateSlots<T, S> = T & {
91
+ new (): {
92
+ $slots: S;
93
+ };
94
+ };
95
+ type __VLS_PrettifyLocal<T> = {
96
+ [K in keyof T]: T[K];
97
+ } & {};