@byyuurin/ui 0.4.0 → 0.5.1
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/README.md +3 -6
- package/dist/module.json +1 -1
- package/dist/module.mjs +3 -2
- package/dist/runtime/components/ContextMenu.vue +65 -0
- package/dist/runtime/components/ContextMenu.vue.d.ts +138 -0
- package/dist/runtime/components/ContextMenuContent.vue +215 -0
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +40 -0
- package/dist/runtime/components/DropdownMenu.vue.d.ts +2 -2
- package/dist/runtime/components/DropdownMenuContent.vue +3 -5
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +2 -7
- package/dist/runtime/components/NavigationMenu.vue +1 -1
- package/dist/runtime/components/NavigationMenu.vue.d.ts +4 -4
- package/dist/runtime/components/Stepper.vue +13 -11
- package/dist/runtime/components/Stepper.vue.d.ts +6 -1
- package/dist/runtime/components/Timeline.vue +17 -15
- package/dist/runtime/components/Timeline.vue.d.ts +5 -2
- package/dist/runtime/types/index.d.ts +1 -0
- package/dist/runtime/types/index.js +1 -0
- package/dist/runtime/utils/style.d.ts +10 -10
- package/dist/runtime/vue/overrides/none/Link.vue +119 -0
- package/dist/runtime/vue/overrides/none/Link.vue.d.ts +79 -0
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue +43 -43
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue.d.ts +9 -9
- package/dist/runtime/vue/{stubs.d.ts → stubs/base.d.ts} +1 -2
- package/dist/runtime/vue/{stubs.js → stubs/base.js} +1 -2
- package/dist/runtime/vue/stubs/none.d.ts +56 -0
- package/dist/runtime/vue/stubs/none.js +48 -0
- package/dist/runtime/vue/stubs/vue-router.d.ts +2 -0
- package/dist/runtime/vue/stubs/vue-router.js +2 -0
- package/dist/setup.d.mts +1 -1
- package/dist/shared/{ui.CGCKYv7g.d.mts → ui.Cec0yP1b.d.mts} +11 -2
- package/dist/shared/{ui.DcEKQd0n.mjs → ui.RIHx5Yhe.mjs} +145 -29
- package/dist/unplugin.d.mts +1 -1
- package/dist/unplugin.mjs +66 -23
- package/dist/vite.d.mts +1 -1
- package/dist/vite.mjs +3 -2
- package/package.json +19 -15
|
@@ -93,22 +93,24 @@ defineExpose({
|
|
|
93
93
|
</div>
|
|
94
94
|
|
|
95
95
|
<div :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })" data-part="wrapper">
|
|
96
|
-
<
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
<slot :name="item.slot ? `${item.slot}-wrapper` : 'wrapper'" :item="item">
|
|
97
|
+
<StepperTitle v-if="item.title || !!slots[item.slot ? `${item.slot}-title` : 'title']" as="div" :class="ui.title({ class: [props.ui?.title, item.ui?.title] })" data-part="title">
|
|
98
|
+
<slot :name="item.slot ? `${item.slot}-title` : 'title'" :item="item">
|
|
99
|
+
{{ item.title }}
|
|
100
|
+
</slot>
|
|
101
|
+
</StepperTitle>
|
|
101
102
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
<StepperDescription v-if="item.description || !!slots[item.slot ? `${item.slot}-description` : 'description']" as="div" :class="ui.description({ class: [props.ui?.description, item.ui?.description] })" data-part="description">
|
|
104
|
+
<slot :name="item.slot ? `${item.slot}-description` : 'description'" :item="item">
|
|
105
|
+
{{ item.description }}
|
|
106
|
+
</slot>
|
|
107
|
+
</StepperDescription>
|
|
108
|
+
</slot>
|
|
107
109
|
</div>
|
|
108
110
|
</StepperItem>
|
|
109
111
|
</div>
|
|
110
112
|
|
|
111
|
-
<div v-if="currentStep?.content || !!slots.content || currentStep?.slot" :class="ui.content({ class: props.ui?.content })" data-part="content">
|
|
113
|
+
<div v-if="currentStep?.content || !!slots.content || currentStep?.slot && !!slots[currentStep.slot]" :class="ui.content({ class: props.ui?.content })" data-part="content">
|
|
112
114
|
<slot :name="currentStep?.slot || 'content'" :item="currentStep">
|
|
113
115
|
{{ currentStep?.content }}
|
|
114
116
|
</slot>
|
|
@@ -42,6 +42,9 @@ export type StepperSlots<T extends StepperItem = StepperItem> = {
|
|
|
42
42
|
item: T;
|
|
43
43
|
ui: ComponentStyler<typeof theme>;
|
|
44
44
|
}>;
|
|
45
|
+
wrapper: StaticSlot<{
|
|
46
|
+
item: T;
|
|
47
|
+
}>;
|
|
45
48
|
title: StaticSlot<{
|
|
46
49
|
item: T;
|
|
47
50
|
}>;
|
|
@@ -51,7 +54,9 @@ export type StepperSlots<T extends StepperItem = StepperItem> = {
|
|
|
51
54
|
content: StaticSlot<{
|
|
52
55
|
item: T;
|
|
53
56
|
}>;
|
|
54
|
-
} & DynamicSlots<T
|
|
57
|
+
} & DynamicSlots<T, 'wrapper' | 'title' | 'description', {
|
|
58
|
+
item: T;
|
|
59
|
+
}>;
|
|
55
60
|
declare const _default: typeof __VLS_export;
|
|
56
61
|
export default _default;
|
|
57
62
|
declare const __VLS_export: <T extends StepperItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
@@ -82,21 +82,23 @@ const ui = computed(() => {
|
|
|
82
82
|
</div>
|
|
83
83
|
|
|
84
84
|
<div :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })" data-part="wrapper">
|
|
85
|
-
<
|
|
86
|
-
<
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
<
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
85
|
+
<slot :name="item.slot ? `${item.slot}-wrapper` : 'wrapper'" :item="item">
|
|
86
|
+
<div v-if="item.date || !!slots[item.slot ? `${item.slot}-date` : 'date']" :class="ui.date({ class: [props.ui?.date, item.ui?.date] })" data-part="date">
|
|
87
|
+
<slot :name="item.slot ? `${item.slot}-date` : 'date'" :item="item">
|
|
88
|
+
{{ item.date }}
|
|
89
|
+
</slot>
|
|
90
|
+
</div>
|
|
91
|
+
<div v-if="item.title || !!slots[item.slot ? `${item.slot}-title` : 'title']" :class="ui.title({ class: [props.ui?.title, item.ui?.title] })" data-part="title">
|
|
92
|
+
<slot :name="item.slot ? `${item.slot}-title` : 'title'" :item="item">
|
|
93
|
+
{{ item.title }}
|
|
94
|
+
</slot>
|
|
95
|
+
</div>
|
|
96
|
+
<div v-if="item.description || !!slots[item.slot ? `${item.slot}-description` : 'description']" :class="ui.description({ class: [props.ui?.description, item.ui?.description] })" data-part="description">
|
|
97
|
+
<slot :name="item.slot ? `${item.slot}-description` : 'description'" :item="item">
|
|
98
|
+
{{ item.description }}
|
|
99
|
+
</slot>
|
|
100
|
+
</div>
|
|
101
|
+
</slot>
|
|
100
102
|
</div>
|
|
101
103
|
</div>
|
|
102
104
|
</Primitive>
|
|
@@ -44,6 +44,9 @@ export type TimelineSlots<T extends TimelineItem = TimelineItem> = {
|
|
|
44
44
|
indicator: StaticSlot<{
|
|
45
45
|
item: T;
|
|
46
46
|
}>;
|
|
47
|
+
wrapper: StaticSlot<{
|
|
48
|
+
item: T;
|
|
49
|
+
}>;
|
|
47
50
|
date: StaticSlot<{
|
|
48
51
|
item: T;
|
|
49
52
|
}>;
|
|
@@ -53,9 +56,9 @@ export type TimelineSlots<T extends TimelineItem = TimelineItem> = {
|
|
|
53
56
|
description: StaticSlot<{
|
|
54
57
|
item: T;
|
|
55
58
|
}>;
|
|
56
|
-
} & DynamicSlots<T, 'indicator' | 'date' | 'title' | 'description', {
|
|
59
|
+
} & DynamicSlots<T, 'indicator' | 'wrapper' | 'date' | 'title' | 'description', {
|
|
57
60
|
item: T;
|
|
58
|
-
}
|
|
61
|
+
}>;
|
|
59
62
|
declare const _default: typeof __VLS_export;
|
|
60
63
|
export default _default;
|
|
61
64
|
declare const __VLS_export: <T extends TimelineItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
@@ -15,6 +15,7 @@ export * from '../components/Checkbox.vue';
|
|
|
15
15
|
export * from '../components/CheckboxGroup.vue';
|
|
16
16
|
export * from '../components/Chip.vue';
|
|
17
17
|
export * from '../components/Collapsible.vue';
|
|
18
|
+
export * from '../components/ContextMenu.vue';
|
|
18
19
|
export * from '../components/Drawer.vue';
|
|
19
20
|
export * from '../components/DropdownMenu.vue';
|
|
20
21
|
export * from '../components/FieldGroup.vue';
|
|
@@ -13,6 +13,7 @@ export * from "../components/Checkbox.vue";
|
|
|
13
13
|
export * from "../components/CheckboxGroup.vue";
|
|
14
14
|
export * from "../components/Chip.vue";
|
|
15
15
|
export * from "../components/Collapsible.vue";
|
|
16
|
+
export * from "../components/ContextMenu.vue";
|
|
16
17
|
export * from "../components/Drawer.vue";
|
|
17
18
|
export * from "../components/DropdownMenu.vue";
|
|
18
19
|
export * from "../components/FieldGroup.vue";
|
|
@@ -11,7 +11,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
11
11
|
[x: string]: any;
|
|
12
12
|
[x: number]: any;
|
|
13
13
|
[x: symbol]: any;
|
|
14
|
-
} ? T_2 extends infer T_7 ? T_7 extends T_2 ? T_7 extends T_4 ? T_7 : Omit<T_7, keyof T_7 & keyof T_4> & Omit<T_4, keyof T_7 & keyof T_4> & { -readonly [
|
|
14
|
+
} ? T_2 extends infer T_7 ? T_7 extends T_2 ? T_7 extends T_4 ? T_7 : Omit<T_7, keyof T_7 & keyof T_4> & Omit<T_4, keyof T_7 & keyof T_4> & { -readonly [Key_1 in keyof T_7 & keyof T_4]: T_7[Key_1] extends void | null | undefined ? T_4[Key_1] extends void | null | undefined ? void | null | undefined : T_4[Key_1] : T_4[Key_1] extends void | null | undefined ? T_7[Key_1] : T_7[Key_1] extends infer T_8 ? T_8 extends T_7[Key_1] ? T_8 extends void | null | undefined ? T_4[Key_1] extends infer T_9 ? T_9 extends T_4[Key_1] ? T_9 extends void | null | undefined ? void | null | undefined : T_9 : never : never : T_4[Key_1] extends infer T_10 ? T_10 extends T_4[Key_1] ? T_10 extends void | null | undefined ? T_8 : T_8 extends any[] ? T_10 extends any[] ? T_8 extends infer T_11 ? T_11 extends T_8 ? T_11 extends (infer DestinationType)[] ? T_10 extends infer T_12 ? T_12 extends T_10 ? T_12 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_12 : never : never : T_10 | T_11 : never : never : T_10 | T_8 : T_8 extends Function ? T_10 | T_8 : T_8 extends RegExp ? T_10 | T_8 : T_8 extends Promise<any> ? T_10 | T_8 : T_10 extends Function ? T_8 | T_10 : T_10 extends RegExp ? T_8 | T_10 : T_10 extends Promise<any> ? T_8 | T_10 : T_8 extends {
|
|
15
15
|
[x: string]: any;
|
|
16
16
|
[x: number]: any;
|
|
17
17
|
[x: symbol]: any;
|
|
@@ -19,7 +19,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
19
19
|
[x: string]: any;
|
|
20
20
|
[x: number]: any;
|
|
21
21
|
[x: symbol]: any;
|
|
22
|
-
} ? T_8 extends infer T_13 ? T_13 extends T_8 ? T_13 extends T_10 ? T_13 : Omit<T_13, keyof T_13 & keyof T_10> & Omit<T_10, keyof T_13 & keyof T_10> & { -readonly [
|
|
22
|
+
} ? T_8 extends infer T_13 ? T_13 extends T_8 ? T_13 extends T_10 ? T_13 : Omit<T_13, keyof T_13 & keyof T_10> & Omit<T_10, keyof T_13 & keyof T_10> & { -readonly [Key_2 in keyof T_13 & keyof T_10]: T_13[Key_2] extends void | null | undefined ? T_10[Key_2] extends void | null | undefined ? void | null | undefined : T_10[Key_2] : T_10[Key_2] extends void | null | undefined ? T_13[Key_2] : T_13[Key_2] extends infer T_14 ? T_14 extends T_13[Key_2] ? T_14 extends void | null | undefined ? T_10[Key_2] extends infer T_15 ? T_15 extends T_10[Key_2] ? T_15 extends void | null | undefined ? void | null | undefined : T_15 : never : never : T_10[Key_2] extends infer T_16 ? T_16 extends T_10[Key_2] ? T_16 extends void | null | undefined ? T_14 : T_14 extends any[] ? T_16 extends any[] ? T_14 extends infer T_17 ? T_17 extends T_14 ? T_17 extends (infer DestinationType)[] ? T_16 extends infer T_18 ? T_18 extends T_16 ? T_18 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_18 : never : never : T_16 | T_17 : never : never : T_16 | T_14 : T_14 extends Function ? T_16 | T_14 : T_14 extends RegExp ? T_16 | T_14 : T_14 extends Promise<any> ? T_16 | T_14 : T_16 extends Function ? T_14 | T_16 : T_16 extends RegExp ? T_14 | T_16 : T_16 extends Promise<any> ? T_14 | T_16 : T_14 extends {
|
|
23
23
|
[x: string]: any;
|
|
24
24
|
[x: number]: any;
|
|
25
25
|
[x: symbol]: any;
|
|
@@ -27,7 +27,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
27
27
|
[x: string]: any;
|
|
28
28
|
[x: number]: any;
|
|
29
29
|
[x: symbol]: any;
|
|
30
|
-
} ? T_14 extends infer T_19 ? T_19 extends T_14 ? T_19 extends T_16 ? T_19 : Omit<T_19, keyof T_19 & keyof T_16> & Omit<T_16, keyof T_19 & keyof T_16> & { -readonly [
|
|
30
|
+
} ? T_14 extends infer T_19 ? T_19 extends T_14 ? T_19 extends T_16 ? T_19 : Omit<T_19, keyof T_19 & keyof T_16> & Omit<T_16, keyof T_19 & keyof T_16> & { -readonly [Key_3 in keyof T_19 & keyof T_16]: T_19[Key_3] extends void | null | undefined ? T_16[Key_3] extends void | null | undefined ? void | null | undefined : T_16[Key_3] : T_16[Key_3] extends void | null | undefined ? T_19[Key_3] : T_19[Key_3] extends infer T_20 ? T_20 extends T_19[Key_3] ? T_20 extends void | null | undefined ? T_16[Key_3] extends infer T_21 ? T_21 extends T_16[Key_3] ? T_21 extends void | null | undefined ? void | null | undefined : T_21 : never : never : T_16[Key_3] extends infer T_22 ? T_22 extends T_16[Key_3] ? T_22 extends void | null | undefined ? T_20 : T_20 extends any[] ? T_22 extends any[] ? T_20 extends infer T_23 ? T_23 extends T_20 ? T_23 extends (infer DestinationType)[] ? T_22 extends infer T_24 ? T_24 extends T_22 ? T_24 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_24 : never : never : T_22 | T_23 : never : never : T_22 | T_20 : T_20 extends Function ? T_22 | T_20 : T_20 extends RegExp ? T_22 | T_20 : T_20 extends Promise<any> ? T_22 | T_20 : T_22 extends Function ? T_20 | T_22 : T_22 extends RegExp ? T_20 | T_22 : T_22 extends Promise<any> ? T_20 | T_22 : T_20 extends {
|
|
31
31
|
[x: string]: any;
|
|
32
32
|
[x: number]: any;
|
|
33
33
|
[x: symbol]: any;
|
|
@@ -35,7 +35,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
35
35
|
[x: string]: any;
|
|
36
36
|
[x: number]: any;
|
|
37
37
|
[x: symbol]: any;
|
|
38
|
-
} ? T_20 extends infer T_25 ? T_25 extends T_20 ? T_25 extends T_22 ? T_25 : Omit<T_25, keyof T_25 & keyof T_22> & Omit<T_22, keyof T_25 & keyof T_22> & { -readonly [
|
|
38
|
+
} ? T_20 extends infer T_25 ? T_25 extends T_20 ? T_25 extends T_22 ? T_25 : Omit<T_25, keyof T_25 & keyof T_22> & Omit<T_22, keyof T_25 & keyof T_22> & { -readonly [Key_4 in keyof T_25 & keyof T_22]: T_25[Key_4] extends void | null | undefined ? T_22[Key_4] extends void | null | undefined ? void | null | undefined : T_22[Key_4] : T_22[Key_4] extends void | null | undefined ? T_25[Key_4] : T_25[Key_4] extends infer T_26 ? T_26 extends T_25[Key_4] ? T_26 extends void | null | undefined ? T_22[Key_4] extends infer T_27 ? T_27 extends T_22[Key_4] ? T_27 extends void | null | undefined ? void | null | undefined : T_27 : never : never : T_22[Key_4] extends infer T_28 ? T_28 extends T_22[Key_4] ? T_28 extends void | null | undefined ? T_26 : T_26 extends any[] ? T_28 extends any[] ? T_26 extends infer T_29 ? T_29 extends T_26 ? T_29 extends (infer DestinationType)[] ? T_28 extends infer T_30 ? T_30 extends T_28 ? T_30 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_30 : never : never : T_28 | T_29 : never : never : T_28 | T_26 : T_26 extends Function ? T_28 | T_26 : T_26 extends RegExp ? T_28 | T_26 : T_26 extends Promise<any> ? T_28 | T_26 : T_28 extends Function ? T_26 | T_28 : T_28 extends RegExp ? T_26 | T_28 : T_28 extends Promise<any> ? T_26 | T_28 : T_26 extends {
|
|
39
39
|
[x: string]: any;
|
|
40
40
|
[x: number]: any;
|
|
41
41
|
[x: symbol]: any;
|
|
@@ -43,7 +43,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
43
43
|
[x: string]: any;
|
|
44
44
|
[x: number]: any;
|
|
45
45
|
[x: symbol]: any;
|
|
46
|
-
} ? T_26 extends infer T_31 ? T_31 extends T_26 ? T_31 extends T_28 ? T_31 : Omit<T_31, keyof T_31 & keyof T_28> & Omit<T_28, keyof T_31 & keyof T_28> & { -readonly [
|
|
46
|
+
} ? T_26 extends infer T_31 ? T_31 extends T_26 ? T_31 extends T_28 ? T_31 : Omit<T_31, keyof T_31 & keyof T_28> & Omit<T_28, keyof T_31 & keyof T_28> & { -readonly [Key_5 in keyof T_31 & keyof T_28]: T_31[Key_5] extends void | null | undefined ? T_28[Key_5] extends void | null | undefined ? void | null | undefined : T_28[Key_5] : T_28[Key_5] extends void | null | undefined ? T_31[Key_5] : T_31[Key_5] extends infer T_32 ? T_32 extends T_31[Key_5] ? T_32 extends void | null | undefined ? T_28[Key_5] extends infer T_33 ? T_33 extends T_28[Key_5] ? T_33 extends void | null | undefined ? void | null | undefined : T_33 : never : never : T_28[Key_5] extends infer T_34 ? T_34 extends T_28[Key_5] ? T_34 extends void | null | undefined ? T_32 : T_32 extends any[] ? T_34 extends any[] ? T_32 extends infer T_35 ? T_35 extends T_32 ? T_35 extends (infer DestinationType)[] ? T_34 extends infer T_36 ? T_36 extends T_34 ? T_36 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_36 : never : never : T_34 | T_35 : never : never : T_34 | T_32 : T_32 extends Function ? T_34 | T_32 : T_32 extends RegExp ? T_34 | T_32 : T_32 extends Promise<any> ? T_34 | T_32 : T_34 extends Function ? T_32 | T_34 : T_34 extends RegExp ? T_32 | T_34 : T_34 extends Promise<any> ? T_32 | T_34 : T_32 extends {
|
|
47
47
|
[x: string]: any;
|
|
48
48
|
[x: number]: any;
|
|
49
49
|
[x: symbol]: any;
|
|
@@ -51,7 +51,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
51
51
|
[x: string]: any;
|
|
52
52
|
[x: number]: any;
|
|
53
53
|
[x: symbol]: any;
|
|
54
|
-
} ? T_32 extends infer T_37 ? T_37 extends T_32 ? T_37 extends T_34 ? T_37 : Omit<T_37, keyof T_37 & keyof T_34> & Omit<T_34, keyof T_37 & keyof T_34> & { -readonly [
|
|
54
|
+
} ? T_32 extends infer T_37 ? T_37 extends T_32 ? T_37 extends T_34 ? T_37 : Omit<T_37, keyof T_37 & keyof T_34> & Omit<T_34, keyof T_37 & keyof T_34> & { -readonly [Key_6 in keyof T_37 & keyof T_34]: T_37[Key_6] extends void | null | undefined ? T_34[Key_6] extends void | null | undefined ? void | null | undefined : T_34[Key_6] : T_34[Key_6] extends void | null | undefined ? T_37[Key_6] : T_37[Key_6] extends infer T_38 ? T_38 extends T_37[Key_6] ? T_38 extends void | null | undefined ? T_34[Key_6] extends infer T_39 ? T_39 extends T_34[Key_6] ? T_39 extends void | null | undefined ? void | null | undefined : T_39 : never : never : T_34[Key_6] extends infer T_40 ? T_40 extends T_34[Key_6] ? T_40 extends void | null | undefined ? T_38 : T_38 extends any[] ? T_40 extends any[] ? T_38 extends infer T_41 ? T_41 extends T_38 ? T_41 extends (infer DestinationType)[] ? T_40 extends infer T_42 ? T_42 extends T_40 ? T_42 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_42 : never : never : T_40 | T_41 : never : never : T_40 | T_38 : T_38 extends Function ? T_40 | T_38 : T_38 extends RegExp ? T_40 | T_38 : T_38 extends Promise<any> ? T_40 | T_38 : T_40 extends Function ? T_38 | T_40 : T_40 extends RegExp ? T_38 | T_40 : T_40 extends Promise<any> ? T_38 | T_40 : T_38 extends {
|
|
55
55
|
[x: string]: any;
|
|
56
56
|
[x: number]: any;
|
|
57
57
|
[x: symbol]: any;
|
|
@@ -59,7 +59,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
59
59
|
[x: string]: any;
|
|
60
60
|
[x: number]: any;
|
|
61
61
|
[x: symbol]: any;
|
|
62
|
-
} ? T_38 extends infer T_43 ? T_43 extends T_38 ? T_43 extends T_40 ? T_43 : Omit<T_43, keyof T_43 & keyof T_40> & Omit<T_40, keyof T_43 & keyof T_40> & { -readonly [
|
|
62
|
+
} ? T_38 extends infer T_43 ? T_43 extends T_38 ? T_43 extends T_40 ? T_43 : Omit<T_43, keyof T_43 & keyof T_40> & Omit<T_40, keyof T_43 & keyof T_40> & { -readonly [Key_7 in keyof T_43 & keyof T_40]: T_43[Key_7] extends void | null | undefined ? T_40[Key_7] extends void | null | undefined ? void | null | undefined : T_40[Key_7] : T_40[Key_7] extends void | null | undefined ? T_43[Key_7] : T_43[Key_7] extends infer T_44 ? T_44 extends T_43[Key_7] ? T_44 extends void | null | undefined ? T_40[Key_7] extends infer T_45 ? T_45 extends T_40[Key_7] ? T_45 extends void | null | undefined ? void | null | undefined : T_45 : never : never : T_40[Key_7] extends infer T_46 ? T_46 extends T_40[Key_7] ? T_46 extends void | null | undefined ? T_44 : T_44 extends any[] ? T_46 extends any[] ? T_44 extends infer T_47 ? T_47 extends T_44 ? T_47 extends (infer DestinationType)[] ? T_46 extends infer T_48 ? T_48 extends T_46 ? T_48 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_48 : never : never : T_46 | T_47 : never : never : T_46 | T_44 : T_44 extends Function ? T_46 | T_44 : T_44 extends RegExp ? T_46 | T_44 : T_44 extends Promise<any> ? T_46 | T_44 : T_46 extends Function ? T_44 | T_46 : T_46 extends RegExp ? T_44 | T_46 : T_46 extends Promise<any> ? T_44 | T_46 : T_44 extends {
|
|
63
63
|
[x: string]: any;
|
|
64
64
|
[x: number]: any;
|
|
65
65
|
[x: symbol]: any;
|
|
@@ -67,7 +67,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
67
67
|
[x: string]: any;
|
|
68
68
|
[x: number]: any;
|
|
69
69
|
[x: symbol]: any;
|
|
70
|
-
} ? T_44 extends infer T_49 ? T_49 extends T_44 ? T_49 extends T_46 ? T_49 : Omit<T_49, keyof T_49 & keyof T_46> & Omit<T_46, keyof T_49 & keyof T_46> & { -readonly [
|
|
70
|
+
} ? T_44 extends infer T_49 ? T_49 extends T_44 ? T_49 extends T_46 ? T_49 : Omit<T_49, keyof T_49 & keyof T_46> & Omit<T_46, keyof T_49 & keyof T_46> & { -readonly [Key_8 in keyof T_49 & keyof T_46]: T_49[Key_8] extends void | null | undefined ? T_46[Key_8] extends void | null | undefined ? void | null | undefined : T_46[Key_8] : T_46[Key_8] extends void | null | undefined ? T_49[Key_8] : T_49[Key_8] extends infer T_50 ? T_50 extends T_49[Key_8] ? T_50 extends void | null | undefined ? T_46[Key_8] extends infer T_51 ? T_51 extends T_46[Key_8] ? T_51 extends void | null | undefined ? void | null | undefined : T_51 : never : never : T_46[Key_8] extends infer T_52 ? T_52 extends T_46[Key_8] ? T_52 extends void | null | undefined ? T_50 : T_50 extends any[] ? T_52 extends any[] ? T_50 extends infer T_53 ? T_53 extends T_50 ? T_53 extends (infer DestinationType)[] ? T_52 extends infer T_54 ? T_54 extends T_52 ? T_54 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_54 : never : never : T_52 | T_53 : never : never : T_52 | T_50 : T_50 extends Function ? T_52 | T_50 : T_50 extends RegExp ? T_52 | T_50 : T_50 extends Promise<any> ? T_52 | T_50 : T_52 extends Function ? T_50 | T_52 : T_52 extends RegExp ? T_50 | T_52 : T_52 extends Promise<any> ? T_50 | T_52 : T_50 extends {
|
|
71
71
|
[x: string]: any;
|
|
72
72
|
[x: number]: any;
|
|
73
73
|
[x: symbol]: any;
|
|
@@ -75,7 +75,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
75
75
|
[x: string]: any;
|
|
76
76
|
[x: number]: any;
|
|
77
77
|
[x: symbol]: any;
|
|
78
|
-
} ? T_50 extends infer T_55 ? T_55 extends T_50 ? T_55 extends T_52 ? T_55 : Omit<T_55, keyof T_55 & keyof T_52> & Omit<T_52, keyof T_55 & keyof T_52> & { -readonly [
|
|
78
|
+
} ? T_50 extends infer T_55 ? T_55 extends T_50 ? T_55 extends T_52 ? T_55 : Omit<T_55, keyof T_55 & keyof T_52> & Omit<T_52, keyof T_55 & keyof T_52> & { -readonly [Key_9 in keyof T_55 & keyof T_52]: T_55[Key_9] extends void | null | undefined ? T_52[Key_9] extends void | null | undefined ? void | null | undefined : T_52[Key_9] : T_52[Key_9] extends void | null | undefined ? T_55[Key_9] : T_55[Key_9] extends infer T_56 ? T_56 extends T_55[Key_9] ? T_56 extends void | null | undefined ? T_52[Key_9] extends infer T_57 ? T_57 extends T_52[Key_9] ? T_57 extends void | null | undefined ? void | null | undefined : T_57 : never : never : T_52[Key_9] extends infer T_58 ? T_58 extends T_52[Key_9] ? T_58 extends void | null | undefined ? T_56 : T_56 extends any[] ? T_58 extends any[] ? T_56 extends infer T_59 ? T_59 extends T_56 ? T_59 extends (infer DestinationType)[] ? T_58 extends infer T_60 ? T_60 extends T_58 ? T_60 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_60 : never : never : T_58 | T_59 : never : never : T_58 | T_56 : T_56 extends Function ? T_58 | T_56 : T_56 extends RegExp ? T_58 | T_56 : T_56 extends Promise<any> ? T_58 | T_56 : T_58 extends Function ? T_56 | T_58 : T_58 extends RegExp ? T_56 | T_58 : T_58 extends Promise<any> ? T_56 | T_58 : T_56 extends {
|
|
79
79
|
[x: string]: any;
|
|
80
80
|
[x: number]: any;
|
|
81
81
|
[x: symbol]: any;
|
|
@@ -83,7 +83,7 @@ export declare function merge<T extends object, V extends object | undefined = u
|
|
|
83
83
|
[x: string]: any;
|
|
84
84
|
[x: number]: any;
|
|
85
85
|
[x: symbol]: any;
|
|
86
|
-
} ? T_56 extends infer T_61 ? T_61 extends T_56 ? T_61 extends T_58 ? T_61 : Omit<T_61, keyof T_61 & keyof T_58> & Omit<T_58, keyof T_61 & keyof T_58> & { -readonly [
|
|
86
|
+
} ? T_56 extends infer T_61 ? T_61 extends T_56 ? T_61 extends T_58 ? T_61 : Omit<T_61, keyof T_61 & keyof T_58> & Omit<T_58, keyof T_61 & keyof T_58> & { -readonly [Key_10 in keyof T_61 & keyof T_58]: T_61[Key_10] extends void | null | undefined ? T_58[Key_10] extends void | null | undefined ? void | null | undefined : T_58[Key_10] : T_58[Key_10] extends void | null | undefined ? T_61[Key_10] : T_61[Key_10] extends infer T_62 ? T_62 extends T_61[Key_10] ? T_62 extends void | null | undefined ? T_58[Key_10] extends infer T_63 ? T_63 extends T_58[Key_10] ? T_63 extends void | null | undefined ? void | null | undefined : T_63 : never : never : T_58[Key_10] extends infer T_64 ? T_64 extends T_58[Key_10] ? T_64 extends void | null | undefined ? T_62 : T_62 extends any[] ? T_64 extends any[] ? T_62 extends infer T_65 ? T_65 extends T_62 ? T_65 extends (infer DestinationType)[] ? T_64 extends infer T_66 ? T_66 extends T_64 ? T_66 extends (infer SourceType)[] ? (DestinationType | SourceType)[] : DestinationType[] | T_66 : never : never : T_64 | T_65 : never : never : T_64 | T_62 : T_62 extends Function ? T_64 | T_62 : T_62 extends RegExp ? T_64 | T_62 : T_62 extends Promise<any> ? T_64 | T_62 : T_64 extends Function ? T_62 | T_64 : T_64 extends RegExp ? T_62 | T_64 : T_64 extends Promise<any> ? T_62 | T_64 : T_62 extends {
|
|
87
87
|
[x: string]: any;
|
|
88
88
|
[x: number]: any;
|
|
89
89
|
[x: symbol]: any;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { reactivePick } from "@vueuse/core";
|
|
7
|
+
import { useForwardProps } from "reka-ui";
|
|
8
|
+
import { hasProtocol } from "ufo";
|
|
9
|
+
import { computed } from "vue";
|
|
10
|
+
import theme from "#build/ui/link";
|
|
11
|
+
import { useAppConfig } from "#imports";
|
|
12
|
+
import LinkBase from "../../../components/LinkBase.vue";
|
|
13
|
+
import { cv, merge } from "../../../utils/style";
|
|
14
|
+
defineOptions({ inheritAttrs: false });
|
|
15
|
+
const props = defineProps({
|
|
16
|
+
as: { type: null, required: false, default: "button" },
|
|
17
|
+
type: { type: null, required: false, default: "button" },
|
|
18
|
+
label: { type: String, required: false },
|
|
19
|
+
disabled: { type: Boolean, required: false },
|
|
20
|
+
active: { type: Boolean, required: false, default: void 0 },
|
|
21
|
+
exact: { type: Boolean, required: false },
|
|
22
|
+
exactQuery: { type: [Boolean, String], required: false },
|
|
23
|
+
exactHash: { type: Boolean, required: false },
|
|
24
|
+
inactiveClass: { type: String, required: false },
|
|
25
|
+
activeClass: { type: String, required: false },
|
|
26
|
+
ariaCurrentValue: { type: String, required: false, default: "page" },
|
|
27
|
+
custom: { type: Boolean, required: false },
|
|
28
|
+
raw: { type: Boolean, required: false },
|
|
29
|
+
class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
|
|
30
|
+
to: { type: String, required: false },
|
|
31
|
+
href: { type: String, required: false },
|
|
32
|
+
external: { type: Boolean, required: false },
|
|
33
|
+
target: { type: [String, Object, null], required: false },
|
|
34
|
+
rel: { type: [String, Object, null], required: false },
|
|
35
|
+
noRel: { type: Boolean, required: false }
|
|
36
|
+
});
|
|
37
|
+
defineSlots();
|
|
38
|
+
const inheritProps = useForwardProps(reactivePick(props, "as", "type", "disabled"));
|
|
39
|
+
const to = computed(() => props.to ?? props.href);
|
|
40
|
+
const isExternal = computed(() => {
|
|
41
|
+
if (props.target === "_blank")
|
|
42
|
+
return true;
|
|
43
|
+
if (props.external)
|
|
44
|
+
return true;
|
|
45
|
+
if (!to.value)
|
|
46
|
+
return false;
|
|
47
|
+
return typeof to.value === "string" && hasProtocol(to.value, { acceptRelative: true });
|
|
48
|
+
});
|
|
49
|
+
const isLinkActive = computed(() => {
|
|
50
|
+
if (props.active !== void 0)
|
|
51
|
+
return props.active;
|
|
52
|
+
return false;
|
|
53
|
+
});
|
|
54
|
+
const appConfig = useAppConfig();
|
|
55
|
+
const ui = computed(() => {
|
|
56
|
+
const link = merge(theme, {
|
|
57
|
+
...appConfig.ui.link,
|
|
58
|
+
variants: {
|
|
59
|
+
...appConfig.ui.link?.variants,
|
|
60
|
+
active: {
|
|
61
|
+
true: [appConfig.ui.link?.variants?.active?.true, props.activeClass].filter(Boolean).join(" "),
|
|
62
|
+
false: [appConfig.ui.link?.variants?.active?.false, props.inactiveClass].filter(Boolean).join(" ")
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return cv(link)();
|
|
67
|
+
});
|
|
68
|
+
const linkClass = computed(() => {
|
|
69
|
+
const active = isLinkActive.value;
|
|
70
|
+
if (props.raw)
|
|
71
|
+
return [props.class, active ? props.activeClass : props.inactiveClass];
|
|
72
|
+
return ui.value.base({ ...props, active });
|
|
73
|
+
});
|
|
74
|
+
const linkRel = computed(() => {
|
|
75
|
+
if (props.noRel)
|
|
76
|
+
return null;
|
|
77
|
+
if (props.rel)
|
|
78
|
+
return props.rel;
|
|
79
|
+
if (isExternal.value)
|
|
80
|
+
return "noopener noreferrer";
|
|
81
|
+
return null;
|
|
82
|
+
});
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
<template>
|
|
86
|
+
<template v-if="props.custom">
|
|
87
|
+
<slot
|
|
88
|
+
v-bind="{
|
|
89
|
+
...$attrs,
|
|
90
|
+
...inheritProps,
|
|
91
|
+
href: to,
|
|
92
|
+
navigate: void 0,
|
|
93
|
+
rel: linkRel,
|
|
94
|
+
target: props.target || (isExternal ? '_blank' : void 0),
|
|
95
|
+
active: isLinkActive ?? false,
|
|
96
|
+
isExternal
|
|
97
|
+
}"
|
|
98
|
+
>
|
|
99
|
+
{{ props.label }}
|
|
100
|
+
</slot>
|
|
101
|
+
</template>
|
|
102
|
+
<LinkBase
|
|
103
|
+
v-else
|
|
104
|
+
v-bind="{
|
|
105
|
+
...$attrs,
|
|
106
|
+
...inheritProps,
|
|
107
|
+
href: to,
|
|
108
|
+
navigate: void 0,
|
|
109
|
+
rel: linkRel,
|
|
110
|
+
target: props.target || (isExternal ? '_blank' : void 0),
|
|
111
|
+
isExternal
|
|
112
|
+
}"
|
|
113
|
+
:class="linkClass"
|
|
114
|
+
>
|
|
115
|
+
<slot :active="isLinkActive">
|
|
116
|
+
{{ props.label }}
|
|
117
|
+
</slot>
|
|
118
|
+
</LinkBase>
|
|
119
|
+
</template>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { PrimitiveProps } from 'reka-ui';
|
|
2
|
+
import type { ComponentBaseProps } from '../../../types';
|
|
3
|
+
import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from '../../../types/html';
|
|
4
|
+
import type { StaticSlot } from '../../../types/utils';
|
|
5
|
+
interface BaseLinkProps {
|
|
6
|
+
/**
|
|
7
|
+
* Route Location the link should navigate to when clicked on.
|
|
8
|
+
*/
|
|
9
|
+
to?: string;
|
|
10
|
+
/**
|
|
11
|
+
* An alias for `to`. If used with `to`, `href` will be ignored
|
|
12
|
+
*/
|
|
13
|
+
href?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
|
|
16
|
+
*/
|
|
17
|
+
external?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Where to display the linked URL, as the name for a browsing context.
|
|
20
|
+
*/
|
|
21
|
+
target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
|
|
22
|
+
/**
|
|
23
|
+
* A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
|
|
24
|
+
*/
|
|
25
|
+
rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
|
|
26
|
+
/**
|
|
27
|
+
* If set to true, no rel attribute will be added to the link
|
|
28
|
+
*/
|
|
29
|
+
noRel?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface LinkProps extends ComponentBaseProps, BaseLinkProps, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled'>, /** @vue-ignore */ Omit<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'type'> {
|
|
32
|
+
/**
|
|
33
|
+
* The element or component this component should render as when not a link.
|
|
34
|
+
* @default "button"
|
|
35
|
+
*/
|
|
36
|
+
as?: PrimitiveProps['as'];
|
|
37
|
+
/**
|
|
38
|
+
* The type of the button when not a link.
|
|
39
|
+
* @default "button"
|
|
40
|
+
*/
|
|
41
|
+
type?: ButtonHTMLAttributes['type'];
|
|
42
|
+
label?: string;
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
/** Force the link to be active independent of the current route. */
|
|
45
|
+
active?: boolean;
|
|
46
|
+
/** Will only be active if the current route is an exact match. */
|
|
47
|
+
exact?: boolean;
|
|
48
|
+
/** Allows controlling how the current route query sets the link as active. */
|
|
49
|
+
exactQuery?: boolean | 'partial';
|
|
50
|
+
/** Will only be active if the current route hash is an exact match. */
|
|
51
|
+
exactHash?: boolean;
|
|
52
|
+
/** The class to apply when the link is inactive. */
|
|
53
|
+
inactiveClass?: string;
|
|
54
|
+
/** The class to apply when the link is active. */
|
|
55
|
+
activeClass?: string;
|
|
56
|
+
/** The value of the `aria-current` attribute when the link is active. */
|
|
57
|
+
ariaCurrentValue?: string;
|
|
58
|
+
custom?: boolean;
|
|
59
|
+
/** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
|
|
60
|
+
raw?: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface LinkSlots {
|
|
63
|
+
default: StaticSlot<{
|
|
64
|
+
active: boolean;
|
|
65
|
+
}>;
|
|
66
|
+
}
|
|
67
|
+
declare const _default: typeof __VLS_export;
|
|
68
|
+
export default _default;
|
|
69
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<LinkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkProps> & Readonly<{}>, {
|
|
70
|
+
active: boolean;
|
|
71
|
+
type: "reset" | "submit" | "button";
|
|
72
|
+
ariaCurrentValue: string;
|
|
73
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
74
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, LinkSlots>;
|
|
75
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
76
|
+
new (): {
|
|
77
|
+
$slots: S;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
@@ -10,9 +10,9 @@ import { hasProtocol } from "ufo";
|
|
|
10
10
|
import { computed } from "vue";
|
|
11
11
|
import theme from "#build/ui/link";
|
|
12
12
|
import { useAppConfig, useRoute } from "#imports";
|
|
13
|
-
import LinkBase from "
|
|
14
|
-
import { isPartiallyEqual } from "
|
|
15
|
-
import { cv, merge } from "
|
|
13
|
+
import LinkBase from "../../../components/LinkBase.vue";
|
|
14
|
+
import { isPartiallyEqual } from "../../../utils/link";
|
|
15
|
+
import { cv, merge } from "../../../utils/style";
|
|
16
16
|
defineOptions({ inheritAttrs: false });
|
|
17
17
|
const props = defineProps({
|
|
18
18
|
as: { type: null, required: false, default: "button" },
|
|
@@ -35,7 +35,7 @@ const props = defineProps({
|
|
|
35
35
|
exactActiveClass: { type: String, required: false },
|
|
36
36
|
ariaCurrentValue: { type: String, required: false, default: "page" },
|
|
37
37
|
viewTransition: { type: Boolean, required: false },
|
|
38
|
-
to: { type: null, required:
|
|
38
|
+
to: { type: null, required: false },
|
|
39
39
|
replace: { type: Boolean, required: false }
|
|
40
40
|
});
|
|
41
41
|
defineSlots();
|
|
@@ -90,10 +90,10 @@ function resolveLinkClass({ route: route2, isActive, isExactActive } = {}) {
|
|
|
90
90
|
</script>
|
|
91
91
|
|
|
92
92
|
<template>
|
|
93
|
-
<template v-if="!isExternal && !!to">
|
|
94
|
-
<RouterLink v-slot="{ href, navigate, route: linkRoute, isActive, isExactActive }" v-bind="routerLinkProps" :to="to" custom>
|
|
95
|
-
<template v-if="custom">
|
|
96
|
-
<slot
|
|
93
|
+
<template v-if="!isExternal && !!to">
|
|
94
|
+
<RouterLink v-slot="{ href, navigate, route: linkRoute, isActive, isExactActive }" v-bind="routerLinkProps" :to="to" custom>
|
|
95
|
+
<template v-if="props.custom">
|
|
96
|
+
<slot
|
|
97
97
|
v-bind="{
|
|
98
98
|
...$attrs,
|
|
99
99
|
...props.exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
|
|
@@ -101,32 +101,32 @@ function resolveLinkClass({ route: route2, isActive, isExactActive } = {}) {
|
|
|
101
101
|
href,
|
|
102
102
|
navigate,
|
|
103
103
|
active: isLinkActive({ route: linkRoute, isActive, isExactActive })
|
|
104
|
-
}"
|
|
105
|
-
>
|
|
106
|
-
{{ props.label }}
|
|
107
|
-
</slot>
|
|
108
|
-
</template>
|
|
109
|
-
<LinkBase
|
|
110
|
-
v-else
|
|
104
|
+
}"
|
|
105
|
+
>
|
|
106
|
+
{{ props.label }}
|
|
107
|
+
</slot>
|
|
108
|
+
</template>
|
|
109
|
+
<LinkBase
|
|
110
|
+
v-else
|
|
111
111
|
v-bind="{
|
|
112
112
|
...$attrs,
|
|
113
113
|
...props.exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
|
|
114
114
|
...inheritProps,
|
|
115
115
|
href,
|
|
116
116
|
navigate
|
|
117
|
-
}"
|
|
118
|
-
:class="resolveLinkClass({ route: linkRoute, isActive, isExactActive })"
|
|
119
|
-
>
|
|
120
|
-
<slot :active="isLinkActive({ route: linkRoute, isActive, isExactActive })">
|
|
121
|
-
{{ props.label }}
|
|
122
|
-
</slot>
|
|
123
|
-
</LinkBase>
|
|
124
|
-
</RouterLink>
|
|
125
|
-
</template>
|
|
126
|
-
|
|
127
|
-
<template v-else>
|
|
128
|
-
<template v-if="custom">
|
|
129
|
-
<slot
|
|
117
|
+
}"
|
|
118
|
+
:class="resolveLinkClass({ route: linkRoute, isActive, isExactActive })"
|
|
119
|
+
>
|
|
120
|
+
<slot :active="isLinkActive({ route: linkRoute, isActive, isExactActive })">
|
|
121
|
+
{{ props.label }}
|
|
122
|
+
</slot>
|
|
123
|
+
</LinkBase>
|
|
124
|
+
</RouterLink>
|
|
125
|
+
</template>
|
|
126
|
+
|
|
127
|
+
<template v-else>
|
|
128
|
+
<template v-if="props.custom">
|
|
129
|
+
<slot
|
|
130
130
|
v-bind="{
|
|
131
131
|
...$attrs,
|
|
132
132
|
...inheritProps,
|
|
@@ -134,25 +134,25 @@ function resolveLinkClass({ route: route2, isActive, isExactActive } = {}) {
|
|
|
134
134
|
target: isExternal ? '_blank' : void 0,
|
|
135
135
|
active: active ?? false,
|
|
136
136
|
isExternal
|
|
137
|
-
}"
|
|
138
|
-
>
|
|
139
|
-
{{ props.label }}
|
|
140
|
-
</slot>
|
|
141
|
-
</template>
|
|
142
|
-
<LinkBase
|
|
143
|
-
v-else
|
|
137
|
+
}"
|
|
138
|
+
>
|
|
139
|
+
{{ props.label }}
|
|
140
|
+
</slot>
|
|
141
|
+
</template>
|
|
142
|
+
<LinkBase
|
|
143
|
+
v-else
|
|
144
144
|
v-bind="{
|
|
145
145
|
...$attrs,
|
|
146
146
|
...inheritProps,
|
|
147
147
|
href: to,
|
|
148
148
|
target: isExternal ? '_blank' : void 0,
|
|
149
149
|
isExternal
|
|
150
|
-
}"
|
|
151
|
-
:class="resolveLinkClass()"
|
|
152
|
-
>
|
|
153
|
-
<slot :active="active ?? false">
|
|
154
|
-
{{ props.label }}
|
|
155
|
-
</slot>
|
|
156
|
-
</LinkBase>
|
|
157
|
-
</template>
|
|
150
|
+
}"
|
|
151
|
+
:class="resolveLinkClass()"
|
|
152
|
+
>
|
|
153
|
+
<slot :active="active ?? false">
|
|
154
|
+
{{ props.label }}
|
|
155
|
+
</slot>
|
|
156
|
+
</LinkBase>
|
|
157
|
+
</template>
|
|
158
158
|
</template>
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import type { PrimitiveProps } from 'reka-ui';
|
|
2
2
|
import type { RouterLinkProps } from 'vue-router';
|
|
3
|
-
import type { ComponentBaseProps } from '
|
|
4
|
-
import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from '
|
|
5
|
-
import type { StaticSlot } from '
|
|
6
|
-
export interface
|
|
7
|
-
default: StaticSlot<{
|
|
8
|
-
active: boolean;
|
|
9
|
-
}>;
|
|
10
|
-
}
|
|
11
|
-
export interface LinkProps extends ComponentBaseProps, Omit<RouterLinkProps, 'custom'>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled'>, /** @vue-ignore */ Omit<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'type'> {
|
|
3
|
+
import type { ComponentBaseProps } from '../../../types';
|
|
4
|
+
import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from '../../../types/html';
|
|
5
|
+
import type { StaticSlot } from '../../../types/utils';
|
|
6
|
+
export interface LinkProps extends ComponentBaseProps, Partial<Omit<RouterLinkProps, 'custom'>>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled'>, /** @vue-ignore */ Omit<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'type'> {
|
|
12
7
|
/**
|
|
13
8
|
* The element or component this component should render as when not a link.
|
|
14
9
|
* @default "button"
|
|
@@ -51,6 +46,11 @@ export interface LinkProps extends ComponentBaseProps, Omit<RouterLinkProps, 'cu
|
|
|
51
46
|
/** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
|
|
52
47
|
raw?: boolean;
|
|
53
48
|
}
|
|
49
|
+
export interface LinkSlots {
|
|
50
|
+
default: StaticSlot<{
|
|
51
|
+
active: boolean;
|
|
52
|
+
}>;
|
|
53
|
+
}
|
|
54
54
|
declare const _default: typeof __VLS_export;
|
|
55
55
|
export default _default;
|
|
56
56
|
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<LinkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkProps> & Readonly<{}>, {
|