@nuxt/ui 3.0.1 → 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 (228) 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 +24 -3
  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 +103 -84
  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 +44 -23
  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.d.mts +2 -1
  56. package/dist/module.json +5 -5
  57. package/dist/module.mjs +11 -7
  58. package/dist/runtime/components/Accordion.vue +36 -92
  59. package/dist/runtime/components/Accordion.vue.d.ts +91 -0
  60. package/dist/runtime/components/Alert.vue +37 -100
  61. package/dist/runtime/components/Alert.vue.d.ts +96 -0
  62. package/dist/runtime/components/App.vue +28 -34
  63. package/dist/runtime/components/App.vue.d.ts +24 -0
  64. package/dist/runtime/components/Avatar.vue +47 -78
  65. package/dist/runtime/components/Avatar.vue.d.ts +60 -0
  66. package/dist/runtime/components/AvatarGroup.vue +40 -77
  67. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  68. package/dist/runtime/components/Badge.vue +33 -62
  69. package/dist/runtime/components/Badge.vue.d.ts +62 -0
  70. package/dist/runtime/components/Breadcrumb.vue +36 -88
  71. package/dist/runtime/components/Breadcrumb.vue.d.ts +82 -0
  72. package/dist/runtime/components/Button.vue +96 -105
  73. package/dist/runtime/components/Button.vue.d.ts +73 -0
  74. package/dist/runtime/components/ButtonGroup.vue +20 -46
  75. package/dist/runtime/components/ButtonGroup.vue.d.ts +55 -0
  76. package/dist/runtime/components/Calendar.vue +73 -127
  77. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  78. package/dist/runtime/components/Card.vue +18 -40
  79. package/dist/runtime/components/Card.vue.d.ts +38 -0
  80. package/dist/runtime/components/Carousel.vue +112 -230
  81. package/dist/runtime/components/Carousel.vue.d.ts +120 -0
  82. package/dist/runtime/components/Checkbox.vue +52 -93
  83. package/dist/runtime/components/Checkbox.vue.d.ts +76 -0
  84. package/dist/runtime/components/CheckboxGroup.vue +121 -0
  85. package/dist/runtime/components/CheckboxGroup.vue.d.ts +75 -0
  86. package/dist/runtime/components/Chip.vue +26 -69
  87. package/dist/runtime/components/Chip.vue.d.ts +71 -0
  88. package/dist/runtime/components/Collapsible.vue +22 -41
  89. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  90. package/dist/runtime/components/ColorPicker.vue +111 -197
  91. package/dist/runtime/components/ColorPicker.vue.d.ts +63 -0
  92. package/dist/runtime/components/CommandPalette.vue +94 -234
  93. package/dist/runtime/components/CommandPalette.vue.d.ts +173 -0
  94. package/dist/runtime/components/Container.vue +15 -28
  95. package/dist/runtime/components/Container.vue.d.ts +27 -0
  96. package/dist/runtime/components/ContextMenu.vue +32 -119
  97. package/dist/runtime/components/ContextMenu.vue.d.ts +127 -0
  98. package/dist/runtime/components/ContextMenuContent.vue +71 -72
  99. package/dist/runtime/components/ContextMenuContent.vue.d.ts +105 -0
  100. package/dist/runtime/components/Drawer.vue +49 -87
  101. package/dist/runtime/components/Drawer.vue.d.ts +88 -0
  102. package/dist/runtime/components/DropdownMenu.vue +37 -129
  103. package/dist/runtime/components/DropdownMenu.vue.d.ts +141 -0
  104. package/dist/runtime/components/DropdownMenuContent.vue +76 -79
  105. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +55 -0
  106. package/dist/runtime/components/Form.vue +135 -219
  107. package/dist/runtime/components/Form.vue.d.ts +66 -0
  108. package/dist/runtime/components/FormField.vue +36 -77
  109. package/dist/runtime/components/FormField.vue.d.ts +70 -0
  110. package/dist/runtime/components/Icon.vue +12 -19
  111. package/dist/runtime/components/Icon.vue.d.ts +17 -0
  112. package/dist/runtime/components/Input.vue +82 -140
  113. package/dist/runtime/components/Input.vue.d.ts +91 -0
  114. package/dist/runtime/components/InputMenu.vue +193 -302
  115. package/dist/runtime/components/InputMenu.vue.d.ts +312 -0
  116. package/dist/runtime/components/InputNumber.vue +71 -133
  117. package/dist/runtime/components/InputNumber.vue.d.ts +193 -0
  118. package/dist/runtime/components/Kbd.vue +20 -46
  119. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  120. package/dist/runtime/components/Link.vue +98 -173
  121. package/dist/runtime/components/Link.vue.d.ts +124 -0
  122. package/dist/runtime/components/LinkBase.vue +33 -41
  123. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  124. package/dist/runtime/components/Modal.vue +53 -116
  125. package/dist/runtime/components/Modal.vue.d.ts +109 -0
  126. package/dist/runtime/components/NavigationMenu.vue +78 -186
  127. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  128. package/dist/runtime/components/OverlayProvider.vue +14 -18
  129. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  130. package/dist/runtime/components/Pagination.vue +46 -140
  131. package/dist/runtime/components/Pagination.vue.d.ts +143 -0
  132. package/dist/runtime/components/PinInput.vue +61 -78
  133. package/dist/runtime/components/PinInput.vue.d.ts +68 -0
  134. package/dist/runtime/components/Popover.vue +47 -84
  135. package/dist/runtime/components/Popover.vue.d.ts +80 -0
  136. package/dist/runtime/components/Progress.vue +70 -131
  137. package/dist/runtime/components/Progress.vue.d.ts +97 -0
  138. package/dist/runtime/components/RadioGroup.vue +75 -126
  139. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  140. package/dist/runtime/components/Select.vue +115 -202
  141. package/dist/runtime/components/Select.vue.d.ts +139 -0
  142. package/dist/runtime/components/SelectMenu.vue +167 -281
  143. package/dist/runtime/components/SelectMenu.vue.d.ts +184 -0
  144. package/dist/runtime/components/Separator.vue +29 -71
  145. package/dist/runtime/components/Separator.vue.d.ts +75 -0
  146. package/dist/runtime/components/Skeleton.vue +21 -23
  147. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  148. package/dist/runtime/components/Slideover.vue +53 -120
  149. package/dist/runtime/components/Slideover.vue.d.ts +111 -0
  150. package/dist/runtime/components/Slider.vue +46 -84
  151. package/dist/runtime/components/Slider.vue.d.ts +71 -0
  152. package/dist/runtime/components/Stepper.vue +44 -113
  153. package/dist/runtime/components/Stepper.vue.d.ts +89 -0
  154. package/dist/runtime/components/Switch.vue +45 -93
  155. package/dist/runtime/components/Switch.vue.d.ts +73 -0
  156. package/dist/runtime/components/Table.vue +165 -264
  157. package/dist/runtime/components/Table.vue.d.ts +183 -0
  158. package/dist/runtime/components/Tabs.vue +40 -105
  159. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  160. package/dist/runtime/components/Textarea.vue +113 -158
  161. package/dist/runtime/components/Textarea.vue.d.ts +95 -0
  162. package/dist/runtime/components/Toast.vue +49 -110
  163. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  164. package/dist/runtime/components/Toaster.vue +70 -107
  165. package/dist/runtime/components/Toaster.vue.d.ts +63 -0
  166. package/dist/runtime/components/Tooltip.vue +38 -65
  167. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  168. package/dist/runtime/components/Tree.vue +57 -150
  169. package/dist/runtime/components/Tree.vue.d.ts +128 -0
  170. package/dist/runtime/composables/defineShortcuts.d.ts +1 -1
  171. package/dist/runtime/composables/defineShortcuts.js +0 -1
  172. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  173. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  174. package/dist/runtime/composables/useFormField.d.ts +2 -2
  175. package/dist/runtime/composables/useFormField.js +1 -1
  176. package/dist/runtime/composables/useOverlay.d.ts +16 -8
  177. package/dist/runtime/composables/useOverlay.js +14 -6
  178. package/dist/runtime/composables/usePortal.d.ts +6 -0
  179. package/dist/runtime/composables/usePortal.js +17 -0
  180. package/dist/runtime/index.css +1 -1
  181. package/dist/runtime/inertia/components/Link.vue +146 -0
  182. package/dist/runtime/inertia/components/Link.vue.d.ts +92 -0
  183. package/dist/runtime/inertia/stubs.d.ts +43 -0
  184. package/dist/runtime/inertia/stubs.js +82 -0
  185. package/dist/runtime/locale/bg.d.ts +3 -0
  186. package/dist/runtime/locale/bg.js +54 -0
  187. package/dist/runtime/locale/hy.d.ts +3 -0
  188. package/dist/runtime/locale/hy.js +54 -0
  189. package/dist/runtime/locale/index.d.ts +6 -1
  190. package/dist/runtime/locale/index.js +6 -1
  191. package/dist/runtime/locale/kk.d.ts +3 -0
  192. package/dist/runtime/locale/kk.js +54 -0
  193. package/dist/runtime/locale/tj.d.ts +3 -0
  194. package/dist/runtime/locale/tj.js +54 -0
  195. package/dist/runtime/locale/ug_cn.d.ts +3 -0
  196. package/dist/runtime/locale/ug_cn.js +55 -0
  197. package/dist/runtime/types/form.d.ts +5 -1
  198. package/dist/runtime/types/index.d.ts +2 -0
  199. package/dist/runtime/types/index.js +2 -0
  200. package/dist/runtime/types/utils.d.ts +70 -10
  201. package/dist/runtime/utils/index.d.ts +1 -0
  202. package/dist/runtime/utils/index.js +3 -0
  203. package/dist/runtime/utils/link.d.ts +4 -27
  204. package/dist/runtime/utils/link.js +32 -1
  205. package/dist/runtime/utils/tv.js +2 -2
  206. package/dist/runtime/vue/components/Icon.vue +7 -8
  207. package/dist/runtime/vue/components/Icon.vue.d.ts +14 -0
  208. package/dist/runtime/vue/components/Link.vue +118 -199
  209. package/dist/runtime/vue/components/Link.vue.d.ts +124 -0
  210. package/dist/runtime/vue/stubs.d.ts +5 -0
  211. package/dist/runtime/vue/stubs.js +11 -2
  212. package/dist/shared/{ui.BCaWD5Ek.mjs → ui.D7lOOabO.mjs} +623 -364
  213. package/dist/types.d.mts +5 -1
  214. package/dist/unplugin.d.mts +6 -1
  215. package/dist/unplugin.mjs +25 -4
  216. package/dist/vite.mjs +1 -1
  217. package/package.json +122 -64
  218. package/dist/module.cjs +0 -62
  219. package/dist/module.d.cts +0 -44
  220. package/dist/module.d.ts +0 -44
  221. package/dist/shared/ui.C6uTSFTI.cjs +0 -3555
  222. package/dist/types.d.ts +0 -1
  223. package/dist/unplugin.cjs +0 -232
  224. package/dist/unplugin.d.cts +0 -61
  225. package/dist/unplugin.d.ts +0 -61
  226. package/dist/vite.cjs +0 -23
  227. package/dist/vite.d.cts +0 -15
  228. 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
+ } & {};