@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,110 +1,47 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/ui/alert'
6
- import { tv } from '../utils/tv'
7
- import type { AvatarProps, ButtonProps } from '../types'
8
-
9
- const appConfigAlert = _appConfig as AppConfig & { ui: { alert: Partial<typeof theme> } }
10
-
11
- const alert = tv({ extend: tv(theme), ...(appConfigAlert.ui?.alert || {}) })
12
-
13
- type AlertVariants = VariantProps<typeof alert>
14
-
15
- export interface AlertProps {
16
- /**
17
- * The element or component this component should render as.
18
- * @defaultValue 'div'
19
- */
20
- as?: any
21
- title?: string
22
- description?: string
23
- /**
24
- * @IconifyIcon
25
- */
26
- icon?: string
27
- avatar?: AvatarProps
28
- /**
29
- * @defaultValue 'primary'
30
- */
31
- color?: AlertVariants['color']
32
- /**
33
- * @defaultValue 'solid'
34
- */
35
- variant?: AlertVariants['variant']
36
- /**
37
- * The orientation between the content and the actions.
38
- * @defaultValue 'vertical'
39
- */
40
- orientation?: AlertVariants['orientation']
41
- /**
42
- * Display a list of actions:
43
- * - under the title and description when orientation is `vertical`
44
- * - next to the close button when orientation is `horizontal`
45
- * `{ size: 'xs' }`{lang="ts-type"}
46
- */
47
- actions?: ButtonProps[]
48
- /**
49
- * Display a close button to dismiss the alert.
50
- * `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts-type"}
51
- * @emits 'update:open'
52
- * @defaultValue false
53
- */
54
- close?: boolean | Partial<ButtonProps>
55
- /**
56
- * The icon displayed in the close button.
57
- * @defaultValue appConfig.ui.icons.close
58
- * @IconifyIcon
59
- */
60
- closeIcon?: string
61
- class?: any
62
- ui?: Partial<typeof alert.slots>
63
- }
64
-
65
- export interface AlertEmits {
66
- (e: 'update:open', value: boolean): void
67
- }
68
-
69
- export interface AlertSlots {
70
- leading(props?: {}): any
71
- title(props?: {}): any
72
- description(props?: {}): any
73
- actions(props?: {}): any
74
- close(props: { ui: any }): any
75
- }
1
+ <script>
2
+ import theme from "#build/ui/alert";
76
3
  </script>
77
4
 
78
- <script setup lang="ts">
79
- import { computed } from 'vue'
80
- import { Primitive } from 'reka-ui'
81
- import { useAppConfig } from '#imports'
82
- import { useLocale } from '../composables/useLocale'
83
- import UIcon from './Icon.vue'
84
- import UAvatar from './Avatar.vue'
85
- import UButton from './Button.vue'
86
-
87
- const props = withDefaults(defineProps<AlertProps>(), {
88
- orientation: 'vertical'
89
- })
90
- const emits = defineEmits<AlertEmits>()
91
- const slots = defineSlots<AlertSlots>()
92
-
93
- const { t } = useLocale()
94
- const appConfig = useAppConfig()
95
-
96
- const ui = computed(() => alert({
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { Primitive } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { useLocale } from "../composables/useLocale";
10
+ import { tv } from "../utils/tv";
11
+ import UIcon from "./Icon.vue";
12
+ import UAvatar from "./Avatar.vue";
13
+ import UButton from "./Button.vue";
14
+ const props = defineProps({
15
+ as: { type: null, required: false },
16
+ title: { type: String, required: false },
17
+ description: { type: String, required: false },
18
+ icon: { type: String, required: false },
19
+ avatar: { type: Object, required: false },
20
+ color: { type: null, required: false },
21
+ variant: { type: null, required: false },
22
+ orientation: { type: null, required: false, default: "vertical" },
23
+ actions: { type: Array, required: false },
24
+ close: { type: [Boolean, Object], required: false },
25
+ closeIcon: { type: String, required: false },
26
+ class: { type: null, required: false },
27
+ ui: { type: null, required: false }
28
+ });
29
+ const emits = defineEmits(["update:open"]);
30
+ const slots = defineSlots();
31
+ const { t } = useLocale();
32
+ const appConfig = useAppConfig();
33
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.alert || {} })({
97
34
  color: props.color,
98
35
  variant: props.variant,
99
36
  orientation: props.orientation,
100
37
  title: !!props.title || !!slots.title
101
- }))
38
+ }));
102
39
  </script>
103
40
 
104
41
  <template>
105
42
  <Primitive :as="as" :data-orientation="orientation" :class="ui.root({ class: [props.class, props.ui?.root] })">
106
43
  <slot name="leading">
107
- <UAvatar v-if="avatar" :size="((props.ui?.avatarSize || ui.avatarSize()) as AvatarProps['size'])" v-bind="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
44
+ <UAvatar v-if="avatar" :size="props.ui?.avatarSize || ui.avatarSize()" v-bind="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
108
45
  <UIcon v-else-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
109
46
  </slot>
110
47
 
@@ -120,15 +57,15 @@ const ui = computed(() => alert({
120
57
  </slot>
121
58
  </div>
122
59
 
123
- <div v-if="orientation === 'vertical' && actions?.length" :class="ui.actions({ class: props.ui?.actions })">
60
+ <div v-if="orientation === 'vertical' && (actions?.length || !!slots.actions)" :class="ui.actions({ class: props.ui?.actions })">
124
61
  <slot name="actions">
125
62
  <UButton v-for="(action, index) in actions" :key="index" size="xs" v-bind="action" />
126
63
  </slot>
127
64
  </div>
128
65
  </div>
129
66
 
130
- <div v-if="(orientation === 'horizontal' && actions?.length) || close" :class="ui.actions({ class: props.ui?.actions, orientation: 'horizontal' })">
131
- <template v-if="orientation === 'horizontal' && actions?.length">
67
+ <div v-if="orientation === 'horizontal' && (actions?.length || !!slots.actions) || close" :class="ui.actions({ class: props.ui?.actions, orientation: 'horizontal' })">
68
+ <template v-if="orientation === 'horizontal' && (actions?.length || !!slots.actions)">
132
69
  <slot name="actions">
133
70
  <UButton v-for="(action, index) in actions" :key="index" size="xs" v-bind="action" />
134
71
  </slot>
@@ -142,7 +79,7 @@ const ui = computed(() => alert({
142
79
  color="neutral"
143
80
  variant="link"
144
81
  :aria-label="t('alert.close')"
145
- v-bind="(typeof close === 'object' ? close as Partial<ButtonProps> : {})"
82
+ v-bind="typeof close === 'object' ? close : {}"
146
83
  :class="ui.close({ class: props.ui?.close })"
147
84
  @click="emits('update:open', false)"
148
85
  />
@@ -0,0 +1,96 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/alert';
3
+ import type { AvatarProps, ButtonProps } from '../types';
4
+ import type { ComponentConfig } from '../types/utils';
5
+ type Alert = ComponentConfig<typeof theme, AppConfig, 'alert'>;
6
+ export interface AlertProps {
7
+ /**
8
+ * The element or component this component should render as.
9
+ * @defaultValue 'div'
10
+ */
11
+ as?: any;
12
+ title?: string;
13
+ description?: string;
14
+ /**
15
+ * @IconifyIcon
16
+ */
17
+ icon?: string;
18
+ avatar?: AvatarProps;
19
+ /**
20
+ * @defaultValue 'primary'
21
+ */
22
+ color?: Alert['variants']['color'];
23
+ /**
24
+ * @defaultValue 'solid'
25
+ */
26
+ variant?: Alert['variants']['variant'];
27
+ /**
28
+ * The orientation between the content and the actions.
29
+ * @defaultValue 'vertical'
30
+ */
31
+ orientation?: Alert['variants']['orientation'];
32
+ /**
33
+ * Display a list of actions:
34
+ * - under the title and description when orientation is `vertical`
35
+ * - next to the close button when orientation is `horizontal`
36
+ * `{ size: 'xs' }`{lang="ts-type"}
37
+ */
38
+ actions?: ButtonProps[];
39
+ /**
40
+ * Display a close button to dismiss the alert.
41
+ * `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts-type"}
42
+ * @emits 'update:open'
43
+ * @defaultValue false
44
+ */
45
+ close?: boolean | Partial<ButtonProps>;
46
+ /**
47
+ * The icon displayed in the close button.
48
+ * @defaultValue appConfig.ui.icons.close
49
+ * @IconifyIcon
50
+ */
51
+ closeIcon?: string;
52
+ class?: any;
53
+ ui?: Alert['slots'];
54
+ }
55
+ export interface AlertEmits {
56
+ (e: 'update:open', value: boolean): void;
57
+ }
58
+ export interface AlertSlots {
59
+ leading(props?: {}): any;
60
+ title(props?: {}): any;
61
+ description(props?: {}): any;
62
+ actions(props?: {}): any;
63
+ close(props: {
64
+ ui: {
65
+ [K in keyof Required<Alert['slots']>]: (props?: Record<string, any>) => string;
66
+ };
67
+ }): any;
68
+ }
69
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<AlertProps>, {
70
+ orientation: string;
71
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
72
+ orientation: Alert["variants"]["orientation"];
73
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<AlertSlots> & AlertSlots>;
74
+ export default _default;
75
+ type __VLS_WithDefaults<P, D> = {
76
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
77
+ default: D[K];
78
+ }> : P[K];
79
+ };
80
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
81
+ type __VLS_TypePropsToOption<T> = {
82
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
83
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
84
+ } : {
85
+ type: import('vue').PropType<T[K]>;
86
+ required: true;
87
+ };
88
+ };
89
+ type __VLS_WithTemplateSlots<T, S> = T & {
90
+ new (): {
91
+ $slots: S;
92
+ };
93
+ };
94
+ type __VLS_PrettifyLocal<T> = {
95
+ [K in keyof T]: T[K];
96
+ } & {};
@@ -1,43 +1,37 @@
1
- <script lang="ts">
2
- import type { ConfigProviderProps, TooltipProviderProps } from 'reka-ui'
3
- import type { ToasterProps, Locale, Messages } from '../types'
4
-
5
- export interface AppProps<T extends Messages = Messages> extends Omit<ConfigProviderProps, 'useId' | 'dir' | 'locale'> {
6
- tooltip?: TooltipProviderProps
7
- toaster?: ToasterProps | null
8
- locale?: Locale<T>
9
- }
10
-
11
- export interface AppSlots {
12
- default(props?: {}): any
13
- }
14
-
1
+ <script>
15
2
  export default {
16
- name: 'App'
17
- }
3
+ name: "App"
4
+ };
18
5
  </script>
19
6
 
20
- <script setup lang="ts" generic="T extends Messages = Messages">
21
- import { toRef, useId, provide } from 'vue'
22
- import { ConfigProvider, TooltipProvider, useForwardProps } from 'reka-ui'
23
- import { reactivePick } from '@vueuse/core'
24
- import { localeContextInjectionKey } from '../composables/useLocale'
25
- import UToaster from './Toaster.vue'
26
- import UOverlayProvider from './OverlayProvider.vue'
27
-
28
- const props = defineProps<AppProps<T>>()
29
- defineSlots<AppSlots>()
30
-
31
- const configProviderProps = useForwardProps(reactivePick(props, 'scrollBody'))
32
- const tooltipProps = toRef(() => props.tooltip)
33
- const toasterProps = toRef(() => props.toaster)
34
-
35
- const locale = toRef(() => props.locale)
36
- provide(localeContextInjectionKey, locale)
7
+ <script setup>
8
+ import { toRef, useId, provide } from "vue";
9
+ import { ConfigProvider, TooltipProvider, useForwardProps } from "reka-ui";
10
+ import { reactivePick } from "@vueuse/core";
11
+ import { localeContextInjectionKey } from "../composables/useLocale";
12
+ import { portalTargetInjectionKey } from "../composables/usePortal";
13
+ import UToaster from "./Toaster.vue";
14
+ import UOverlayProvider from "./OverlayProvider.vue";
15
+ const props = defineProps({
16
+ tooltip: { type: Object, required: false },
17
+ toaster: { type: [Object, null], required: false },
18
+ locale: { type: null, required: false },
19
+ portal: { type: null, required: false, default: "body" },
20
+ scrollBody: { type: [Boolean, Object], required: false },
21
+ nonce: { type: String, required: false }
22
+ });
23
+ defineSlots();
24
+ const configProviderProps = useForwardProps(reactivePick(props, "scrollBody"));
25
+ const tooltipProps = toRef(() => props.tooltip);
26
+ const toasterProps = toRef(() => props.toaster);
27
+ const locale = toRef(() => props.locale);
28
+ provide(localeContextInjectionKey, locale);
29
+ const portal = toRef(() => props.portal);
30
+ provide(portalTargetInjectionKey, portal);
37
31
  </script>
38
32
 
39
33
  <template>
40
- <ConfigProvider :use-id="() => (useId() as string)" :dir="locale?.dir" :locale="locale?.code" v-bind="configProviderProps">
34
+ <ConfigProvider :use-id="() => useId()" :dir="locale?.dir" :locale="locale?.code" v-bind="configProviderProps">
41
35
  <TooltipProvider v-bind="tooltipProps">
42
36
  <UToaster v-if="toaster !== null" v-bind="toasterProps">
43
37
  <slot />
@@ -0,0 +1,24 @@
1
+ import type { ConfigProviderProps, TooltipProviderProps } from 'reka-ui';
2
+ import type { ToasterProps, Locale, Messages } from '../types';
3
+ export interface AppProps<T extends Messages = Messages> extends Omit<ConfigProviderProps, 'useId' | 'dir' | 'locale'> {
4
+ tooltip?: TooltipProviderProps;
5
+ toaster?: ToasterProps | null;
6
+ locale?: Locale<T>;
7
+ portal?: string | HTMLElement;
8
+ }
9
+ export interface AppSlots {
10
+ default(props?: {}): any;
11
+ }
12
+ declare const _default: <T extends Messages>(__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<{
13
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, never> & AppProps<T> & Partial<{}>> & (import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps);
14
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
15
+ attrs: any;
16
+ slots: Readonly<AppSlots> & AppSlots;
17
+ emit: {};
18
+ }>) => import("vue").VNode & {
19
+ __ctx?: Awaited<typeof __VLS_setup>;
20
+ };
21
+ export default _default;
22
+ type __VLS_PrettifyLocal<T> = {
23
+ [K in keyof T]: T[K];
24
+ } & {};
@@ -1,85 +1,52 @@
1
- <script lang="ts">
2
- import type { VariantProps } from 'tailwind-variants'
3
- import type { AppConfig } from '@nuxt/schema'
4
- import _appConfig from '#build/app.config'
5
- import theme from '#build/ui/avatar'
6
- import { tv } from '../utils/tv'
7
-
8
- const appConfigAvatar = _appConfig as AppConfig & { ui: { avatar: Partial<typeof theme> } }
9
-
10
- const avatar = tv({ extend: tv(theme), ...(appConfigAvatar.ui?.avatar || {}) })
11
-
12
- type AvatarVariants = VariantProps<typeof avatar>
13
-
14
- export interface AvatarProps {
15
- /**
16
- * The element or component this component should render as.
17
- * @defaultValue 'span'
18
- */
19
- as?: any
20
- src?: string
21
- alt?: string
22
- /**
23
- * @IconifyIcon
24
- */
25
- icon?: string
26
- text?: string
27
- /**
28
- * @defaultValue 'md'
29
- */
30
- size?: AvatarVariants['size']
31
- class?: any
32
- style?: any
33
- ui?: Partial<typeof avatar.slots>
34
- }
35
-
36
- export interface AvatarSlots {
37
- default(props?: {}): any
38
- }
1
+ <script>
2
+ import theme from "#build/ui/avatar";
39
3
  </script>
40
4
 
41
- <script setup lang="ts">
42
- import { ref, computed, watch } from 'vue'
43
- import { Primitive } from 'reka-ui'
44
- import ImageComponent from '#build/ui-image-component'
45
- import { useAvatarGroup } from '../composables/useAvatarGroup'
46
- import UIcon from './Icon.vue'
47
-
48
- defineOptions({ inheritAttrs: false })
49
-
50
- const props = withDefaults(defineProps<AvatarProps>(), { as: 'span' })
51
-
52
- const fallback = computed(() => props.text || (props.alt || '').split(' ').map(word => word.charAt(0)).join('').substring(0, 2))
53
-
54
- const { size } = useAvatarGroup(props)
55
-
56
- // eslint-disable-next-line vue/no-dupe-keys
57
- const ui = computed(() => avatar({
5
+ <script setup>
6
+ import { ref, computed, watch } from "vue";
7
+ import { Primitive, Slot } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import ImageComponent from "#build/ui-image-component";
10
+ import { useAvatarGroup } from "../composables/useAvatarGroup";
11
+ import { tv } from "../utils/tv";
12
+ import UIcon from "./Icon.vue";
13
+ defineOptions({ inheritAttrs: false });
14
+ const props = defineProps({
15
+ as: { type: null, required: false, default: "span" },
16
+ src: { type: String, required: false },
17
+ alt: { type: String, required: false },
18
+ icon: { type: String, required: false },
19
+ text: { type: String, required: false },
20
+ size: { type: null, required: false },
21
+ class: { type: null, required: false },
22
+ style: { type: null, required: false },
23
+ ui: { type: null, required: false }
24
+ });
25
+ const fallback = computed(() => props.text || (props.alt || "").split(" ").map((word) => word.charAt(0)).join("").substring(0, 2));
26
+ const appConfig = useAppConfig();
27
+ const { size } = useAvatarGroup(props);
28
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.avatar || {} })({
58
29
  size: size.value
59
- }))
60
-
30
+ }));
61
31
  const sizePx = computed(() => ({
62
- '3xs': 16,
63
- '2xs': 20,
64
- 'xs': 24,
65
- 'sm': 28,
66
- 'md': 32,
67
- 'lg': 36,
68
- 'xl': 40,
69
- '2xl': 44,
70
- '3xl': 48
71
- })[props.size || 'md'])
72
-
73
- const error = ref(false)
74
-
32
+ "3xs": 16,
33
+ "2xs": 20,
34
+ "xs": 24,
35
+ "sm": 28,
36
+ "md": 32,
37
+ "lg": 36,
38
+ "xl": 40,
39
+ "2xl": 44,
40
+ "3xl": 48
41
+ })[props.size || "md"]);
42
+ const error = ref(false);
75
43
  watch(() => props.src, () => {
76
44
  if (error.value) {
77
- error.value = false
45
+ error.value = false;
78
46
  }
79
- })
80
-
47
+ });
81
48
  function onError() {
82
- error.value = true
49
+ error.value = true;
83
50
  }
84
51
  </script>
85
52
 
@@ -98,9 +65,11 @@ function onError() {
98
65
  @error="onError"
99
66
  />
100
67
 
101
- <slot v-else>
102
- <UIcon v-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
103
- <span v-else :class="ui.fallback({ class: props.ui?.fallback })">{{ fallback || '&nbsp;' }}</span>
104
- </slot>
68
+ <Slot v-else v-bind="$attrs">
69
+ <slot>
70
+ <UIcon v-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
71
+ <span v-else :class="ui.fallback({ class: props.ui?.fallback })">{{ fallback || '\xA0' }}</span>
72
+ </slot>
73
+ </Slot>
105
74
  </Primitive>
106
75
  </template>
@@ -0,0 +1,60 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/avatar';
3
+ import type { ComponentConfig } from '../types/utils';
4
+ type Avatar = ComponentConfig<typeof theme, AppConfig, 'avatar'>;
5
+ export interface AvatarProps {
6
+ /**
7
+ * The element or component this component should render as.
8
+ * @defaultValue 'span'
9
+ */
10
+ as?: any;
11
+ src?: string;
12
+ alt?: string;
13
+ /**
14
+ * @IconifyIcon
15
+ */
16
+ icon?: string;
17
+ text?: string;
18
+ /**
19
+ * @defaultValue 'md'
20
+ */
21
+ size?: Avatar['variants']['size'];
22
+ class?: any;
23
+ style?: any;
24
+ ui?: Avatar['slots'];
25
+ }
26
+ export interface AvatarSlots {
27
+ default(props?: {}): any;
28
+ }
29
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<AvatarProps>, {
30
+ as: string;
31
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<AvatarProps>, {
32
+ as: string;
33
+ }>>> & Readonly<{}>, {
34
+ as: any;
35
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
36
+ default?(_: {}): any;
37
+ }>;
38
+ export default _default;
39
+ type __VLS_WithDefaults<P, D> = {
40
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
41
+ default: D[K];
42
+ }> : P[K];
43
+ };
44
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
45
+ type __VLS_TypePropsToOption<T> = {
46
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
47
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
48
+ } : {
49
+ type: import('vue').PropType<T[K]>;
50
+ required: true;
51
+ };
52
+ };
53
+ type __VLS_WithTemplateSlots<T, S> = T & {
54
+ new (): {
55
+ $slots: S;
56
+ };
57
+ };
58
+ type __VLS_PrettifyLocal<T> = {
59
+ [K in keyof T]: T[K];
60
+ } & {};