@nuxt/ui 3.0.0-alpha.6 → 3.0.0-alpha.7
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.
- package/dist/module.d.mts +6 -6
- package/dist/module.d.ts +6 -6
- package/dist/module.json +1 -1
- package/dist/module.mjs +391 -257
- package/dist/runtime/components/Accordion.vue +13 -5
- package/dist/runtime/components/Breadcrumb.vue +14 -6
- package/dist/runtime/components/Button.vue +4 -2
- package/dist/runtime/components/Carousel.vue +6 -6
- package/dist/runtime/components/Checkbox.vue +3 -6
- package/dist/runtime/components/CommandPalette.vue +25 -16
- package/dist/runtime/components/ContextMenu.vue +31 -7
- package/dist/runtime/components/ContextMenuContent.vue +36 -8
- package/dist/runtime/components/DropdownMenu.vue +31 -7
- package/dist/runtime/components/DropdownMenuContent.vue +38 -8
- package/dist/runtime/components/Form.vue +3 -1
- package/dist/runtime/components/Input.vue +6 -4
- package/dist/runtime/components/InputMenu.vue +40 -24
- package/dist/runtime/components/LinkBase.vue +4 -2
- package/dist/runtime/components/NavigationMenu.vue +78 -41
- package/dist/runtime/components/RadioGroup.vue +22 -3
- package/dist/runtime/components/Select.vue +22 -10
- package/dist/runtime/components/SelectMenu.vue +43 -31
- package/dist/runtime/components/Table.vue +232 -0
- package/dist/runtime/components/Tabs.vue +15 -7
- package/dist/runtime/components/Toaster.vue +1 -1
- package/dist/runtime/composables/defineShortcuts.js +1 -1
- package/dist/runtime/composables/useComponentIcons.d.ts +3 -0
- package/dist/runtime/composables/useModal.d.ts +1 -1
- package/dist/runtime/composables/useSlideover.d.ts +1 -1
- package/dist/runtime/index.css +1 -1
- package/dist/runtime/keyframes.css +1 -0
- package/dist/runtime/types/form.d.ts +2 -1
- package/dist/runtime/types/index.d.ts +1 -0
- package/dist/runtime/types/index.js +1 -0
- package/dist/runtime/utils/form.d.ts +3 -0
- package/dist/runtime/utils/form.js +14 -0
- package/dist/runtime/utils/index.d.ts +1 -0
- package/dist/runtime/utils/index.js +3 -0
- package/package.json +15 -12
- package/dist/runtime/types/component.d.ts +0 -17
- package/dist/runtime/types/component.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- eslint-disable vue/block-tag-newline -->
|
|
2
2
|
<script lang="ts">
|
|
3
3
|
import { tv, type VariantProps } from 'tailwind-variants'
|
|
4
|
-
import type { TabsRootProps, TabsRootEmits, TabsContentProps
|
|
4
|
+
import type { TabsRootProps, TabsRootEmits, TabsContentProps } from 'radix-vue'
|
|
5
5
|
import type { AppConfig } from '@nuxt/schema'
|
|
6
6
|
import _appConfig from '#build/app.config'
|
|
7
7
|
import theme from '#build/ui/tabs'
|
|
@@ -12,7 +12,7 @@ const appConfig = _appConfig as AppConfig & { ui: { tabs: Partial<typeof theme>
|
|
|
12
12
|
|
|
13
13
|
const tabs = tv({ extend: tv(theme), ...(appConfig.ui?.tabs || {}) })
|
|
14
14
|
|
|
15
|
-
export interface TabsItem
|
|
15
|
+
export interface TabsItem {
|
|
16
16
|
label?: string
|
|
17
17
|
icon?: string
|
|
18
18
|
avatar?: AvatarProps
|
|
@@ -20,6 +20,7 @@ export interface TabsItem extends Pick<TabsTriggerProps, 'disabled'> {
|
|
|
20
20
|
content?: string
|
|
21
21
|
/** A unique value for the tab item. Defaults to the index. */
|
|
22
22
|
value?: string | number
|
|
23
|
+
disabled?: boolean
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
type TabsVariants = VariantProps<typeof tabs>
|
|
@@ -44,6 +45,11 @@ export interface TabsProps<T> extends Pick<TabsRootProps<string | number>, 'defa
|
|
|
44
45
|
* @defaultValue true
|
|
45
46
|
*/
|
|
46
47
|
content?: boolean | Omit<TabsContentProps, 'as' | 'asChild' | 'value'>
|
|
48
|
+
/**
|
|
49
|
+
* The key used to get the label from the item.
|
|
50
|
+
* @defaultValue 'label'
|
|
51
|
+
*/
|
|
52
|
+
labelKey?: string
|
|
47
53
|
class?: any
|
|
48
54
|
ui?: PartialString<typeof tabs.slots>
|
|
49
55
|
}
|
|
@@ -66,11 +72,13 @@ import { computed, toRef } from 'vue'
|
|
|
66
72
|
import { defu } from 'defu'
|
|
67
73
|
import { TabsRoot, TabsList, TabsIndicator, TabsTrigger, TabsContent, useForwardPropsEmits } from 'radix-vue'
|
|
68
74
|
import { reactivePick } from '@vueuse/core'
|
|
75
|
+
import { get } from '../utils'
|
|
69
76
|
|
|
70
77
|
const props = withDefaults(defineProps<TabsProps<T>>(), {
|
|
71
78
|
content: true,
|
|
72
79
|
defaultValue: '0',
|
|
73
|
-
orientation: 'horizontal'
|
|
80
|
+
orientation: 'horizontal',
|
|
81
|
+
labelKey: 'label'
|
|
74
82
|
})
|
|
75
83
|
const emits = defineEmits<TabsEmits>()
|
|
76
84
|
const slots = defineSlots<TabsSlots<T>>()
|
|
@@ -93,12 +101,12 @@ const ui = computed(() => tabs({
|
|
|
93
101
|
|
|
94
102
|
<TabsTrigger v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :disabled="item.disabled" :class="ui.trigger({ class: props.ui?.trigger })">
|
|
95
103
|
<slot name="leading" :item="item" :index="index">
|
|
96
|
-
<
|
|
97
|
-
<
|
|
104
|
+
<UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
|
|
105
|
+
<UAvatar v-else-if="item.avatar" :size="((props.ui?.leadingAvatarSize || ui.leadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
|
|
98
106
|
</slot>
|
|
99
107
|
|
|
100
|
-
<span v-if="item.
|
|
101
|
-
<slot :item="item" :index="index">{{ item.
|
|
108
|
+
<span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
|
|
109
|
+
<slot :item="item" :index="index">{{ get(item, props.labelKey as string) }}</slot>
|
|
102
110
|
</span>
|
|
103
111
|
|
|
104
112
|
<slot name="trailing" :item="item" :index="index" />
|
|
@@ -32,8 +32,8 @@ import { ref, computed } from 'vue'
|
|
|
32
32
|
import { ToastProvider, ToastViewport, useForwardProps } from 'radix-vue'
|
|
33
33
|
import { reactivePick } from '@vueuse/core'
|
|
34
34
|
import { useToast } from '../composables/useToast'
|
|
35
|
-
import UToast from './Toast.vue'
|
|
36
35
|
import { omit } from '../utils'
|
|
36
|
+
import UToast from './Toast.vue'
|
|
37
37
|
|
|
38
38
|
const props = withDefaults(defineProps<ToasterProps>(), {
|
|
39
39
|
expand: true,
|
|
@@ -9,7 +9,7 @@ export function extractShortcuts(items) {
|
|
|
9
9
|
items2.forEach((item) => {
|
|
10
10
|
if (item.kbds?.length && (item.select || item.click)) {
|
|
11
11
|
const shortcutKey = item.kbds.join("_");
|
|
12
|
-
shortcuts[shortcutKey] = item.
|
|
12
|
+
shortcuts[shortcutKey] = item.onSelect || item.onClick;
|
|
13
13
|
}
|
|
14
14
|
if (item.children) {
|
|
15
15
|
traverse(item.children.flat());
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { type MaybeRefOrGetter } from 'vue';
|
|
2
|
+
import type { AvatarProps } from '../types';
|
|
2
3
|
export interface UseComponentIconsProps {
|
|
3
4
|
/** Display an icon based on the `leading` and `trailing` props. */
|
|
4
5
|
icon?: string;
|
|
6
|
+
/** Display an avatar on the left side. */
|
|
7
|
+
avatar?: AvatarProps;
|
|
5
8
|
/** When `true`, the icon will be displayed on the left side. */
|
|
6
9
|
leading?: boolean;
|
|
7
10
|
/** Display an icon on the left side. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ShallowRef, Component, InjectionKey } from 'vue';
|
|
2
|
+
import type { ComponentProps } from 'vue-component-type-helpers';
|
|
2
3
|
import type { ModalProps } from '../types';
|
|
3
|
-
import type { ComponentProps } from '../types/component';
|
|
4
4
|
export interface ModalState {
|
|
5
5
|
component: Component | string;
|
|
6
6
|
props: ModalProps;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ShallowRef, Component, InjectionKey } from 'vue';
|
|
2
|
+
import type { ComponentProps } from 'vue-component-type-helpers';
|
|
2
3
|
import type { SlideoverProps } from '../types';
|
|
3
|
-
import type { ComponentProps } from '../types/component';
|
|
4
4
|
export interface SlideoverState {
|
|
5
5
|
component: Component | string;
|
|
6
6
|
props: SlideoverProps;
|
package/dist/runtime/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@theme{--spacing-4_5:1.125rem}@variant dark (&:where(.dark, .dark *));@layer base{body{@apply antialiased
|
|
1
|
+
@import "./keyframes.css";@theme default{--spacing-4_5:1.125rem}@variant dark (&:where(.dark, .dark *));@layer base{body{@apply antialiased text-[var(--ui-text)] bg-[var(--ui-bg)]}:root{color-scheme:light;--ui-text-dimmed:var(--ui-color-neutral-400);--ui-text-muted:var(--ui-color-neutral-500);--ui-text-toned:var(--ui-color-neutral-600);--ui-text:var(--ui-color-neutral-700);--ui-text-highlighted:var(--ui-color-neutral-900);--ui-bg:var(--color-white);--ui-bg-elevated:var(--ui-color-neutral-100);--ui-bg-accented:var(--ui-color-neutral-200);--ui-bg-inverted:var(--ui-color-neutral-900);--ui-border:var(--ui-color-neutral-200);--ui-border-accented:var(--ui-color-neutral-300);--ui-border-inverted:var(--ui-color-neutral-900);--ui-radius:var(--radius)}.dark{color-scheme:dark;--ui-text-dimmed:var(--ui-color-neutral-500);--ui-text-muted:var(--ui-color-neutral-400);--ui-text-toned:var(--ui-color-neutral-300);--ui-text:var(--ui-color-neutral-200);--ui-text-highlighted:var(--color-white);--ui-bg:var(--ui-color-neutral-900);--ui-bg-elevated:var(--ui-color-neutral-800);--ui-bg-accented:var(--ui-color-neutral-700);--ui-bg-inverted:var(--color-white);--ui-border:var(--ui-color-neutral-800);--ui-border-accented:var(--ui-color-neutral-700);--ui-border-inverted:var(--color-white)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes collapsible-up{0%{height:var(--radix-collapsible-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--radix-collapsible-content-height)}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translateX(4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translateX(200px)}to{opacity:1;transform:translateX(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translateX(-200px)}to{opacity:1;transform:translateX(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-200px)}}@keyframes carousel{0%,to{width:50%}0%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes carousel-vertical{0%,to{height:50%}0%{transform:translateY(-100%)}to{transform:translateY(200%)}}@keyframes carousel-inverse{0%,to{width:50%}0%{transform:translateX(200%)}to{transform:translateX(-100%)}}@keyframes carousel-inverse-vertical{0%,to{height:50%}0%{transform:translateY(200%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:50%}0%,to{transform:translateX(-25%)}50%{transform:translateX(125%)}}@keyframes swing-vertical{0%,to{height:50%}0%,to{transform:translateY(-25%)}50%{transform:translateY(125%)}}@keyframes elastic{0%,to{margin-left:25%;width:50%}50%{margin-left:5%;width:90%}}@keyframes elastic-vertical{0%,to{height:50%;margin-top:25%}50%{height:90%;margin-top:5%}}
|
|
@@ -5,6 +5,7 @@ import type { Schema as JoiSchema } from 'joi';
|
|
|
5
5
|
import type { ObjectSchema as YupObjectSchema } from 'yup';
|
|
6
6
|
import type { GenericSchema as ValibotSchema, GenericSchemaAsync as ValibotSchemaAsync, SafeParser as ValibotSafeParser, SafeParserAsync as ValibotSafeParserAsync } from 'valibot';
|
|
7
7
|
import type { GetObjectField } from './utils';
|
|
8
|
+
import type { Struct as SuperstructSchema } from 'superstruct';
|
|
8
9
|
export interface Form<T> {
|
|
9
10
|
validate(opts?: {
|
|
10
11
|
name: string | string[];
|
|
@@ -18,7 +19,7 @@ export interface Form<T> {
|
|
|
18
19
|
submit(): Promise<void>;
|
|
19
20
|
disabled: ComputedRef<boolean>;
|
|
20
21
|
}
|
|
21
|
-
export type FormSchema<T extends Record<string, any>> = ZodSchema | YupObjectSchema<T> | ValibotSchema | ValibotSchemaAsync | ValibotSafeParser<any, any> | ValibotSafeParserAsync<any, any> | JoiSchema<T> | StandardSchema;
|
|
22
|
+
export type FormSchema<T extends Record<string, any>> = ZodSchema | YupObjectSchema<T> | ValibotSchema | ValibotSchemaAsync | ValibotSafeParser<any, any> | ValibotSafeParserAsync<any, any> | JoiSchema<T> | SuperstructSchema<any, any> | StandardSchema;
|
|
22
23
|
export type FormInputEvents = 'input' | 'blur' | 'change';
|
|
23
24
|
export interface FormError<P extends string = string> {
|
|
24
25
|
name: P;
|
|
@@ -35,6 +35,7 @@ export * from '../components/Skeleton.vue';
|
|
|
35
35
|
export * from '../components/Slideover.vue';
|
|
36
36
|
export * from '../components/Slider.vue';
|
|
37
37
|
export * from '../components/Switch.vue';
|
|
38
|
+
export * from '../components/Table.vue';
|
|
38
39
|
export * from '../components/Tabs.vue';
|
|
39
40
|
export * from '../components/Textarea.vue';
|
|
40
41
|
export * from '../components/Toast.vue';
|
|
@@ -35,6 +35,7 @@ export * from "../components/Skeleton.vue";
|
|
|
35
35
|
export * from "../components/Slideover.vue";
|
|
36
36
|
export * from "../components/Slider.vue";
|
|
37
37
|
export * from "../components/Switch.vue";
|
|
38
|
+
export * from "../components/Table.vue";
|
|
38
39
|
export * from "../components/Tabs.vue";
|
|
39
40
|
export * from "../components/Textarea.vue";
|
|
40
41
|
export * from "../components/Toast.vue";
|
|
@@ -3,10 +3,12 @@ import type { ZodSchema } from 'zod';
|
|
|
3
3
|
import type { ValidationError as JoiError, Schema as JoiSchema } from 'joi';
|
|
4
4
|
import type { ObjectSchema as YupObjectSchema, ValidationError as YupError } from 'yup';
|
|
5
5
|
import type { GenericSchema as ValibotSchema, GenericSchemaAsync as ValibotSchemaAsync, SafeParser as ValibotSafeParser, SafeParserAsync as ValibotSafeParserAsync } from 'valibot';
|
|
6
|
+
import type { Struct } from 'superstruct';
|
|
6
7
|
import type { FormError } from '../types/form';
|
|
7
8
|
export declare function isYupSchema(schema: any): schema is YupObjectSchema<any>;
|
|
8
9
|
export declare function isYupError(error: any): error is YupError;
|
|
9
10
|
export declare function getYupErrors(state: any, schema: YupObjectSchema<any>): Promise<FormError[]>;
|
|
11
|
+
export declare function isSuperStructSchema(schema: any): schema is Struct<any, any>;
|
|
10
12
|
export declare function isZodSchema(schema: any): schema is ZodSchema;
|
|
11
13
|
export declare function getZodErrors(state: any, schema: ZodSchema): Promise<FormError[]>;
|
|
12
14
|
export declare function isJoiSchema(schema: any): schema is JoiSchema;
|
|
@@ -16,3 +18,4 @@ export declare function isValibotSchema(schema: any): schema is ValibotSchema |
|
|
|
16
18
|
export declare function getValibotErrors(state: any, schema: ValibotSchema | ValibotSchemaAsync | ValibotSafeParser<any, any> | ValibotSafeParserAsync<any, any>): Promise<FormError[]>;
|
|
17
19
|
export declare function isStandardSchema(schema: any): schema is StandardSchema;
|
|
18
20
|
export declare function getStandardErrors(state: any, schema: StandardSchema): Promise<FormError[]>;
|
|
21
|
+
export declare function getSuperStructErrors(state: any, schema: Struct<any, any>): Promise<FormError[]>;
|
|
@@ -19,6 +19,9 @@ export async function getYupErrors(state, schema) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
+
export function isSuperStructSchema(schema) {
|
|
23
|
+
return "schema" in schema && typeof schema.coercer === "function" && typeof schema.validator === "function" && typeof schema.refiner === "function";
|
|
24
|
+
}
|
|
22
25
|
export function isZodSchema(schema) {
|
|
23
26
|
return schema.parse !== void 0;
|
|
24
27
|
}
|
|
@@ -74,3 +77,14 @@ export async function getStandardErrors(state, schema) {
|
|
|
74
77
|
message: issue.message
|
|
75
78
|
})) || [];
|
|
76
79
|
}
|
|
80
|
+
export async function getSuperStructErrors(state, schema) {
|
|
81
|
+
const [err] = schema.validate(state);
|
|
82
|
+
if (err) {
|
|
83
|
+
const errors = err.failures();
|
|
84
|
+
return errors.map((error) => ({
|
|
85
|
+
message: error.message,
|
|
86
|
+
name: error.path.join(".")
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
@@ -3,3 +3,4 @@ export declare function omit<Data extends object, Keys extends keyof Data>(data:
|
|
|
3
3
|
export declare function get(object: Record<string, any> | undefined, path: (string | number)[] | string, defaultValue?: any): any;
|
|
4
4
|
export declare function set(object: Record<string, any>, path: (string | number)[] | string, value: any): void;
|
|
5
5
|
export declare function looseToNumber(val: any): any;
|
|
6
|
+
export declare function escapeRegExp(string: string): string;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuxt/ui",
|
|
3
3
|
"description": "A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.",
|
|
4
|
-
"version": "3.0.0-alpha.
|
|
5
|
-
"packageManager": "pnpm@9.12.
|
|
4
|
+
"version": "3.0.0-alpha.7",
|
|
5
|
+
"packageManager": "pnpm@9.12.2",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/nuxt/ui.git"
|
|
@@ -38,20 +38,22 @@
|
|
|
38
38
|
"docs": "DEV=true nuxi dev docs",
|
|
39
39
|
"docs:build": "nuxi build docs",
|
|
40
40
|
"docs:prepare": "nuxt-component-meta docs",
|
|
41
|
+
"docs:typecheck": "nuxi typecheck docs",
|
|
41
42
|
"lint": "eslint .",
|
|
42
43
|
"lint:fix": "eslint . --fix",
|
|
43
|
-
"typecheck": "vue-tsc --noEmit && nuxi typecheck playground
|
|
44
|
+
"typecheck": "vue-tsc --noEmit && nuxi typecheck playground",
|
|
44
45
|
"test": "vitest",
|
|
45
46
|
"release": "release-it --preRelease=alpha --npm.tag=next"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"@nuxt/fonts": "^0.10.
|
|
49
|
-
"@nuxt/icon": "^1.5.
|
|
49
|
+
"@nuxt/fonts": "^0.10.2",
|
|
50
|
+
"@nuxt/icon": "^1.5.6",
|
|
50
51
|
"@nuxt/kit": "^3.13.2",
|
|
51
52
|
"@nuxt/schema": "^3.13.2",
|
|
52
53
|
"@nuxtjs/color-mode": "^3.5.1",
|
|
53
|
-
"@tailwindcss/postcss": "4.0.0-alpha.
|
|
54
|
-
"@tailwindcss/vite": "4.0.0-alpha.
|
|
54
|
+
"@tailwindcss/postcss": "4.0.0-alpha.29",
|
|
55
|
+
"@tailwindcss/vite": "4.0.0-alpha.29",
|
|
56
|
+
"@tanstack/vue-table": "^8.20.5",
|
|
55
57
|
"@vueuse/core": "^11.1.0",
|
|
56
58
|
"@vueuse/integrations": "^11.1.0",
|
|
57
59
|
"defu": "^6.1.4",
|
|
@@ -67,14 +69,14 @@
|
|
|
67
69
|
"radix-vue": "^1.9.7",
|
|
68
70
|
"scule": "^1.3.0",
|
|
69
71
|
"tailwind-variants": "^0.2.1",
|
|
70
|
-
"tailwindcss": "4.0.0-alpha.
|
|
72
|
+
"tailwindcss": "4.0.0-alpha.29",
|
|
71
73
|
"vaul-vue": "^0.2.0"
|
|
72
74
|
},
|
|
73
75
|
"devDependencies": {
|
|
74
76
|
"@nuxt/eslint-config": "^0.5.7",
|
|
75
77
|
"@nuxt/module-builder": "^0.8.4",
|
|
76
|
-
"@nuxt/test-utils": "^3.14.
|
|
77
|
-
"@release-it/conventional-changelog": "^
|
|
78
|
+
"@nuxt/test-utils": "^3.14.4",
|
|
79
|
+
"@release-it/conventional-changelog": "^9.0.1",
|
|
78
80
|
"@standard-schema/spec": "1.0.0-beta.1",
|
|
79
81
|
"@vue/test-utils": "^2.4.6",
|
|
80
82
|
"embla-carousel": "^8.3.0",
|
|
@@ -82,9 +84,10 @@
|
|
|
82
84
|
"happy-dom": "^15.7.4",
|
|
83
85
|
"joi": "^17.13.3",
|
|
84
86
|
"nuxt": "^3.13.2",
|
|
85
|
-
"release-it": "^17.
|
|
87
|
+
"release-it": "^17.10.0",
|
|
88
|
+
"superstruct": "^2.0.2",
|
|
86
89
|
"valibot": "^0.42.1",
|
|
87
|
-
"vitest": "^2.1.
|
|
90
|
+
"vitest": "^2.1.3",
|
|
88
91
|
"vitest-environment-nuxt": "^1.0.1",
|
|
89
92
|
"vue-tsc": "^2.1.6",
|
|
90
93
|
"yup": "^1.4.0",
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export type ComponentProps<T> = T extends new () => {
|
|
2
|
-
$props: infer P;
|
|
3
|
-
} ? NonNullable<P> : T extends (props: infer P, ...args: any) => any ? P : Record<string, never>;
|
|
4
|
-
export type ComponentSlots<T> = T extends new () => {
|
|
5
|
-
$slots: infer S;
|
|
6
|
-
} ? NonNullable<S> : T extends (props: any, ctx: {
|
|
7
|
-
slots: infer S;
|
|
8
|
-
attrs: any;
|
|
9
|
-
emit: any;
|
|
10
|
-
}, ...args: any) => any ? NonNullable<S> : Record<string, never>;
|
|
11
|
-
export type ComponentEmit<T> = T extends new () => {
|
|
12
|
-
$emit: infer E;
|
|
13
|
-
} ? NonNullable<E> : T extends (props: any, ctx: {
|
|
14
|
-
slots: any;
|
|
15
|
-
attrs: any;
|
|
16
|
-
emit: infer E;
|
|
17
|
-
}, ...args: any) => any ? NonNullable<E> : Record<string, never>;
|
|
File without changes
|