@vuecs/navigation 4.0.3 → 4.0.4

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.
@@ -10,11 +10,11 @@ declare const navItemProps: {
10
10
  };
11
11
  variant: {
12
12
  type: StringConstructor;
13
- default: any;
13
+ default: undefined;
14
14
  };
15
15
  orientation: {
16
16
  type: PropType<NavigationOrientation>;
17
- default: any;
17
+ default: undefined;
18
18
  };
19
19
  /**
20
20
  * Resolved submenu presentation handed down by the parent
@@ -46,11 +46,11 @@ declare const navItemProps: {
46
46
  };
47
47
  themeClass: {
48
48
  type: PropType<ThemeClassesOverride<NavigationThemeClasses>>;
49
- default: any;
49
+ default: undefined;
50
50
  };
51
51
  themeVariant: {
52
52
  type: PropType<VariantValues>;
53
- default: any;
53
+ default: undefined;
54
54
  };
55
55
  };
56
56
  export type NavItemProps = ExtractPublicPropTypes<typeof navItemProps>;
@@ -61,11 +61,11 @@ export declare const VCNavItem: import("vue").DefineComponent<import("vue").Extr
61
61
  };
62
62
  variant: {
63
63
  type: StringConstructor;
64
- default: any;
64
+ default: undefined;
65
65
  };
66
66
  orientation: {
67
67
  type: PropType<NavigationOrientation>;
68
- default: any;
68
+ default: undefined;
69
69
  };
70
70
  /**
71
71
  * Resolved submenu presentation handed down by the parent
@@ -97,11 +97,11 @@ export declare const VCNavItem: import("vue").DefineComponent<import("vue").Extr
97
97
  };
98
98
  themeClass: {
99
99
  type: PropType<ThemeClassesOverride<NavigationThemeClasses>>;
100
- default: any;
100
+ default: undefined;
101
101
  };
102
102
  themeVariant: {
103
103
  type: PropType<VariantValues>;
104
- default: any;
104
+ default: undefined;
105
105
  };
106
106
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
107
107
  [key: string]: any;
@@ -112,11 +112,11 @@ export declare const VCNavItem: import("vue").DefineComponent<import("vue").Extr
112
112
  };
113
113
  variant: {
114
114
  type: StringConstructor;
115
- default: any;
115
+ default: undefined;
116
116
  };
117
117
  orientation: {
118
118
  type: PropType<NavigationOrientation>;
119
- default: any;
119
+ default: undefined;
120
120
  };
121
121
  /**
122
122
  * Resolved submenu presentation handed down by the parent
@@ -148,18 +148,18 @@ export declare const VCNavItem: import("vue").DefineComponent<import("vue").Extr
148
148
  };
149
149
  themeClass: {
150
150
  type: PropType<ThemeClassesOverride<NavigationThemeClasses>>;
151
- default: any;
151
+ default: undefined;
152
152
  };
153
153
  themeVariant: {
154
154
  type: PropType<VariantValues>;
155
- default: any;
155
+ default: undefined;
156
156
  };
157
157
  }>> & Readonly<{}>, {
158
158
  variant: string;
159
159
  orientation: NavigationOrientation;
160
160
  submenu: NavigationSubmenuMode;
161
- as: string;
162
- itemsAs: string;
161
+ as: string | Component;
162
+ itemsAs: string | Component;
163
163
  themeClass: ThemeClassesOverride<NavigationThemeClasses>;
164
164
  themeVariant: VariantValues;
165
165
  }, SlotsType<{
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/components/item/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAA0B,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/F,OAAO,KAAK,EACR,SAAS,EACT,sBAAsB,EACtB,QAAQ,EACR,SAAS,EAEZ,MAAM,KAAK,CAAC;AAqBb,OAAO,KAAK,EACR,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EACR,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAIjB,QAAA,MAAM,YAAY;;cAEM,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;cAQlC,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;;OAKG;;cAEiB,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;IAGpE;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;;cAIhD,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;;;;cAItD,QAAQ,CAAC,aAAa,CAAC;;;CAG9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvE,eAAO,MAAM,SAAS;;cAnDE,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;cAQlC,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;;OAKG;;cAEiB,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;IAGpE;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;;cAIhD,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;;;;cAItD,QAAQ,CAAC,aAAa,CAAC;;;;;;;cA5CvB,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;cAQlC,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;;OAKG;;cAEiB,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;IAGpE;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;;cAIhD,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;;;;cAItD,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;;eAW5B,yBAAyB;UAC9B,oBAAoB;SACrB,mBAAmB;iBACX,wBAAwB;iBACxB,wBAAwB;yEAmQ3C,CAAC"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/components/item/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAA0B,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/F,OAAO,KAAK,EACR,SAAS,EACT,sBAAsB,EACtB,QAAQ,EACR,SAAS,EAEZ,MAAM,KAAK,CAAC;AAoBb,OAAO,KAAK,EACR,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EACR,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAIjB,QAAA,MAAM,YAAY;;cAEM,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;cAQlC,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;;OAKG;;cAEiB,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;IAGpE;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;;cAIhD,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;;;;cAItD,QAAQ,CAAC,aAAa,CAAC;;;CAG9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvE,eAAO,MAAM,SAAS;;cAnDE,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;cAQlC,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;;OAKG;;cAEiB,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;IAGpE;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;;cAIhD,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;;;;cAItD,QAAQ,CAAC,aAAa,CAAC;;;;;;;cA5CvB,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;cAQlC,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;;OAKG;;cAEiB,QAAQ,CAAC,qBAAqB,CAAC;;;IAGnD;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;IAGpE;;;;OAIG;;cAEqC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;;;;cAIhD,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;;;;cAItD,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;;eAW5B,yBAAyB;UAC9B,oBAAoB;SACrB,mBAAmB;iBACX,wBAAwB;iBACxB,wBAAwB;yEAyQ3C,CAAC"}
@@ -16,7 +16,7 @@ declare const navItemsProps: {
16
16
  */
17
17
  data: {
18
18
  type: PropType<NavigationItem[] | NavigationResolver>;
19
- default: any;
19
+ default: undefined;
20
20
  };
21
21
  /** Opt in to publishing this nav's resolved output into the registry. */
22
22
  registry: {
@@ -26,7 +26,7 @@ declare const navItemsProps: {
26
26
  /** The key under which to publish. Required when `registry` is true. */
27
27
  registryId: {
28
28
  type: StringConstructor;
29
- default: any;
29
+ default: undefined;
30
30
  };
31
31
  /**
32
32
  * Current path for active-state matching. When omitted, the nav softly
@@ -35,7 +35,7 @@ declare const navItemsProps: {
35
35
  */
36
36
  path: {
37
37
  type: StringConstructor;
38
- default: any;
38
+ default: undefined;
39
39
  };
40
40
  /**
41
41
  * Extra reactive deps that should retrigger the resolver — for state
@@ -44,15 +44,15 @@ declare const navItemsProps: {
44
44
  */
45
45
  watch: {
46
46
  type: PropType<WatchSource[]>;
47
- default: any;
47
+ default: undefined;
48
48
  };
49
49
  variant: {
50
50
  type: StringConstructor;
51
- default: any;
51
+ default: undefined;
52
52
  };
53
53
  orientation: {
54
54
  type: PropType<NavigationOrientation>;
55
- default: any;
55
+ default: undefined;
56
56
  };
57
57
  /**
58
58
  * How items with children render their submenu. `auto` derives from
@@ -83,11 +83,11 @@ declare const navItemsProps: {
83
83
  };
84
84
  themeClass: {
85
85
  type: PropType<ThemeClassesOverride<NavigationThemeClasses>>;
86
- default: any;
86
+ default: undefined;
87
87
  };
88
88
  themeVariant: {
89
89
  type: PropType<VariantValues>;
90
- default: any;
90
+ default: undefined;
91
91
  };
92
92
  };
93
93
  export type NavItemsProps = ExtractPublicPropTypes<typeof navItemsProps>;
@@ -104,7 +104,7 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
104
104
  */
105
105
  data: {
106
106
  type: PropType<NavigationItem[] | NavigationResolver>;
107
- default: any;
107
+ default: undefined;
108
108
  };
109
109
  /** Opt in to publishing this nav's resolved output into the registry. */
110
110
  registry: {
@@ -114,7 +114,7 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
114
114
  /** The key under which to publish. Required when `registry` is true. */
115
115
  registryId: {
116
116
  type: StringConstructor;
117
- default: any;
117
+ default: undefined;
118
118
  };
119
119
  /**
120
120
  * Current path for active-state matching. When omitted, the nav softly
@@ -123,7 +123,7 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
123
123
  */
124
124
  path: {
125
125
  type: StringConstructor;
126
- default: any;
126
+ default: undefined;
127
127
  };
128
128
  /**
129
129
  * Extra reactive deps that should retrigger the resolver — for state
@@ -132,15 +132,15 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
132
132
  */
133
133
  watch: {
134
134
  type: PropType<WatchSource[]>;
135
- default: any;
135
+ default: undefined;
136
136
  };
137
137
  variant: {
138
138
  type: StringConstructor;
139
- default: any;
139
+ default: undefined;
140
140
  };
141
141
  orientation: {
142
142
  type: PropType<NavigationOrientation>;
143
- default: any;
143
+ default: undefined;
144
144
  };
145
145
  /**
146
146
  * How items with children render their submenu. `auto` derives from
@@ -171,11 +171,11 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
171
171
  };
172
172
  themeClass: {
173
173
  type: PropType<ThemeClassesOverride<NavigationThemeClasses>>;
174
- default: any;
174
+ default: undefined;
175
175
  };
176
176
  themeVariant: {
177
177
  type: PropType<VariantValues>;
178
- default: any;
178
+ default: undefined;
179
179
  };
180
180
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
181
181
  [key: string]: any;
@@ -192,7 +192,7 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
192
192
  */
193
193
  data: {
194
194
  type: PropType<NavigationItem[] | NavigationResolver>;
195
- default: any;
195
+ default: undefined;
196
196
  };
197
197
  /** Opt in to publishing this nav's resolved output into the registry. */
198
198
  registry: {
@@ -202,7 +202,7 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
202
202
  /** The key under which to publish. Required when `registry` is true. */
203
203
  registryId: {
204
204
  type: StringConstructor;
205
- default: any;
205
+ default: undefined;
206
206
  };
207
207
  /**
208
208
  * Current path for active-state matching. When omitted, the nav softly
@@ -211,7 +211,7 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
211
211
  */
212
212
  path: {
213
213
  type: StringConstructor;
214
- default: any;
214
+ default: undefined;
215
215
  };
216
216
  /**
217
217
  * Extra reactive deps that should retrigger the resolver — for state
@@ -220,15 +220,15 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
220
220
  */
221
221
  watch: {
222
222
  type: PropType<WatchSource[]>;
223
- default: any;
223
+ default: undefined;
224
224
  };
225
225
  variant: {
226
226
  type: StringConstructor;
227
- default: any;
227
+ default: undefined;
228
228
  };
229
229
  orientation: {
230
230
  type: PropType<NavigationOrientation>;
231
- default: any;
231
+ default: undefined;
232
232
  };
233
233
  /**
234
234
  * How items with children render their submenu. `auto` derives from
@@ -259,22 +259,22 @@ export declare const VCNavItems: import("vue").DefineComponent<import("vue").Ext
259
259
  };
260
260
  themeClass: {
261
261
  type: PropType<ThemeClassesOverride<NavigationThemeClasses>>;
262
- default: any;
262
+ default: undefined;
263
263
  };
264
264
  themeVariant: {
265
265
  type: PropType<VariantValues>;
266
- default: any;
266
+ default: undefined;
267
267
  };
268
268
  }>> & Readonly<{}>, {
269
269
  variant: string;
270
270
  orientation: NavigationOrientation;
271
271
  data: NavigationItem[] | NavigationResolver;
272
272
  submenu: NavigationSubmenu;
273
- as: string;
273
+ as: string | Component;
274
274
  themeClass: ThemeClassesOverride<NavigationThemeClasses>;
275
275
  themeVariant: VariantValues;
276
276
  watch: WatchSource[];
277
- itemAs: string;
277
+ itemAs: string | Component;
278
278
  registry: boolean;
279
279
  registryId: string;
280
280
  path: string;
@@ -5,7 +5,7 @@ declare const stepperProps: {
5
5
  /** Active step (1-based). v-modeled. */
6
6
  modelValue: {
7
7
  type: NumberConstructor;
8
- default: any;
8
+ default: undefined;
9
9
  };
10
10
  /** Initial active step for uncontrolled usage. */
11
11
  defaultValue: {
@@ -20,7 +20,7 @@ declare const stepperProps: {
20
20
  /** Reading direction. Falls back to the ConfigManager's `dir` value when omitted. */
21
21
  dir: {
22
22
  type: PropType<"ltr" | "rtl">;
23
- default: any;
23
+ default: undefined;
24
24
  };
25
25
  /** When `true`, steps must be completed in order — Reka blocks navigation past the next incomplete step. */
26
26
  linear: {
@@ -30,12 +30,12 @@ declare const stepperProps: {
30
30
  /** Theme-class overrides for this component instance. */
31
31
  themeClass: {
32
32
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
33
- default: any;
33
+ default: undefined;
34
34
  };
35
35
  /** Theme-variant values for this component instance. */
36
36
  themeVariant: {
37
37
  type: PropType<VariantValues>;
38
- default: any;
38
+ default: undefined;
39
39
  };
40
40
  };
41
41
  export type StepperProps = ExtractPublicPropTypes<typeof stepperProps>;
@@ -45,7 +45,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
45
45
  /** Active step (1-based). v-modeled. */
46
46
  modelValue: {
47
47
  type: NumberConstructor;
48
- default: any;
48
+ default: undefined;
49
49
  };
50
50
  /** Initial active step for uncontrolled usage. */
51
51
  defaultValue: {
@@ -60,7 +60,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
60
60
  /** Reading direction. Falls back to the ConfigManager's `dir` value when omitted. */
61
61
  dir: {
62
62
  type: PropType<"ltr" | "rtl">;
63
- default: any;
63
+ default: undefined;
64
64
  };
65
65
  /** When `true`, steps must be completed in order — Reka blocks navigation past the next incomplete step. */
66
66
  linear: {
@@ -70,12 +70,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
70
70
  /** Theme-class overrides for this component instance. */
71
71
  themeClass: {
72
72
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
73
- default: any;
73
+ default: undefined;
74
74
  };
75
75
  /** Theme-variant values for this component instance. */
76
76
  themeVariant: {
77
77
  type: PropType<VariantValues>;
78
- default: any;
78
+ default: undefined;
79
79
  };
80
80
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
81
81
  [key: string]: any;
@@ -83,7 +83,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
83
83
  /** Active step (1-based). v-modeled. */
84
84
  modelValue: {
85
85
  type: NumberConstructor;
86
- default: any;
86
+ default: undefined;
87
87
  };
88
88
  /** Initial active step for uncontrolled usage. */
89
89
  defaultValue: {
@@ -98,7 +98,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
98
98
  /** Reading direction. Falls back to the ConfigManager's `dir` value when omitted. */
99
99
  dir: {
100
100
  type: PropType<"ltr" | "rtl">;
101
- default: any;
101
+ default: undefined;
102
102
  };
103
103
  /** When `true`, steps must be completed in order — Reka blocks navigation past the next incomplete step. */
104
104
  linear: {
@@ -108,15 +108,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
108
108
  /** Theme-class overrides for this component instance. */
109
109
  themeClass: {
110
110
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
111
- default: any;
111
+ default: undefined;
112
112
  };
113
113
  /** Theme-variant values for this component instance. */
114
114
  themeVariant: {
115
115
  type: PropType<VariantValues>;
116
- default: any;
116
+ default: undefined;
117
117
  };
118
118
  }>> & Readonly<{
119
- "onUpdate:modelValue"?: (...args: any[]) => any;
119
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
120
120
  }>, {
121
121
  orientation: "horizontal" | "vertical";
122
122
  themeClass: ThemeClassesOverride<StepperThemeClasses>;
@@ -15,12 +15,12 @@ declare const stepperDescriptionProps: {
15
15
  /** Theme-class overrides for this component instance. */
16
16
  themeClass: {
17
17
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
18
- default: any;
18
+ default: undefined;
19
19
  };
20
20
  /** Theme-variant values for this component instance. */
21
21
  themeVariant: {
22
22
  type: PropType<VariantValues>;
23
- default: any;
23
+ default: undefined;
24
24
  };
25
25
  };
26
26
  export type StepperDescriptionProps = ExtractPublicPropTypes<typeof stepperDescriptionProps>;
@@ -40,12 +40,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
40
40
  /** Theme-class overrides for this component instance. */
41
41
  themeClass: {
42
42
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
43
- default: any;
43
+ default: undefined;
44
44
  };
45
45
  /** Theme-variant values for this component instance. */
46
46
  themeVariant: {
47
47
  type: PropType<VariantValues>;
48
- default: any;
48
+ default: undefined;
49
49
  };
50
50
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
51
51
  [key: string]: any;
@@ -63,15 +63,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
63
63
  /** Theme-class overrides for this component instance. */
64
64
  themeClass: {
65
65
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
66
- default: any;
66
+ default: undefined;
67
67
  };
68
68
  /** Theme-variant values for this component instance. */
69
69
  themeVariant: {
70
70
  type: PropType<VariantValues>;
71
- default: any;
71
+ default: undefined;
72
72
  };
73
73
  }>> & Readonly<{}>, {
74
- as: string;
74
+ as: string | Component;
75
75
  themeClass: ThemeClassesOverride<StepperThemeClasses>;
76
76
  themeVariant: VariantValues;
77
77
  asChild: boolean;
@@ -15,12 +15,12 @@ declare const stepperIndicatorProps: {
15
15
  /** Theme-class overrides for this component instance. */
16
16
  themeClass: {
17
17
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
18
- default: any;
18
+ default: undefined;
19
19
  };
20
20
  /** Theme-variant values for this component instance. */
21
21
  themeVariant: {
22
22
  type: PropType<VariantValues>;
23
- default: any;
23
+ default: undefined;
24
24
  };
25
25
  };
26
26
  export type StepperIndicatorProps = ExtractPublicPropTypes<typeof stepperIndicatorProps>;
@@ -40,12 +40,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
40
40
  /** Theme-class overrides for this component instance. */
41
41
  themeClass: {
42
42
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
43
- default: any;
43
+ default: undefined;
44
44
  };
45
45
  /** Theme-variant values for this component instance. */
46
46
  themeVariant: {
47
47
  type: PropType<VariantValues>;
48
- default: any;
48
+ default: undefined;
49
49
  };
50
50
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
51
51
  [key: string]: any;
@@ -63,15 +63,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
63
63
  /** Theme-class overrides for this component instance. */
64
64
  themeClass: {
65
65
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
66
- default: any;
66
+ default: undefined;
67
67
  };
68
68
  /** Theme-variant values for this component instance. */
69
69
  themeVariant: {
70
70
  type: PropType<VariantValues>;
71
- default: any;
71
+ default: undefined;
72
72
  };
73
73
  }>> & Readonly<{}>, {
74
- as: string;
74
+ as: string | Component;
75
75
  themeClass: ThemeClassesOverride<StepperThemeClasses>;
76
76
  themeVariant: VariantValues;
77
77
  asChild: boolean;
@@ -23,12 +23,12 @@ declare const stepperItemProps: {
23
23
  /** Theme-class overrides for this component instance. */
24
24
  themeClass: {
25
25
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
26
- default: any;
26
+ default: undefined;
27
27
  };
28
28
  /** Theme-variant values for this component instance. */
29
29
  themeVariant: {
30
30
  type: PropType<VariantValues>;
31
- default: any;
31
+ default: undefined;
32
32
  };
33
33
  };
34
34
  export type StepperItemProps = ExtractPublicPropTypes<typeof stepperItemProps>;
@@ -53,12 +53,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
53
53
  /** Theme-class overrides for this component instance. */
54
54
  themeClass: {
55
55
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
56
- default: any;
56
+ default: undefined;
57
57
  };
58
58
  /** Theme-variant values for this component instance. */
59
59
  themeVariant: {
60
60
  type: PropType<VariantValues>;
61
- default: any;
61
+ default: undefined;
62
62
  };
63
63
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
64
64
  [key: string]: any;
@@ -81,12 +81,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
81
81
  /** Theme-class overrides for this component instance. */
82
82
  themeClass: {
83
83
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
84
- default: any;
84
+ default: undefined;
85
85
  };
86
86
  /** Theme-variant values for this component instance. */
87
87
  themeVariant: {
88
88
  type: PropType<VariantValues>;
89
- default: any;
89
+ default: undefined;
90
90
  };
91
91
  }>> & Readonly<{}>, {
92
92
  themeClass: ThemeClassesOverride<StepperThemeClasses>;
@@ -1 +1 @@
1
- {"version":3,"file":"StepperItem.vue.d.ts","sourceRoot":"","sources":["../../../src/components/stepper/StepperItem.vue"],"names":[],"mappings":"AAsEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAGvE,OAAO,KAAK,EAAE,oBAAoB,EAA0B,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;CAC9C,CAAC;AAEF,QAAA,MAAM,gBAAgB;IAClB,0FAA0F;;;;;IAE1F,wCAAwC;;;;;IAExC,4EAA4E;;;;;IAE5E,yDAAyD;;cAC3B,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;;;IACjF,wDAAwD;;cACxB,QAAQ,CAAC,aAAa,CAAC;;;CAC1D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,gBAAgB,CAAC,CAAC;wBAE1D,OAAO,YAAY;AAAxC,wBAAyC;AAQzC,QAAA,MAAM,YAAY;IAtBd,0FAA0F;;;;;IAE1F,wCAAwC;;;;;IAExC,4EAA4E;;;;;IAE5E,yDAAyD;;cAC3B,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;;;IACjF,wDAAwD;;cACxB,QAAQ,CAAC,aAAa,CAAC;;;;;;IATvD,0FAA0F;;;;;IAE1F,wCAAwC;;;;;IAExC,4EAA4E;;;;;IAE5E,yDAAyD;;cAC3B,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;;;IACjF,wDAAwD;;cACxB,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;aAkB1C,oBAAoB;yEA8BnC,CAAC"}
1
+ {"version":3,"file":"StepperItem.vue.d.ts","sourceRoot":"","sources":["../../../src/components/stepper/StepperItem.vue"],"names":[],"mappings":"AAwEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAGvE,OAAO,KAAK,EAAE,oBAAoB,EAA0B,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;CAC9C,CAAC;AAEF,QAAA,MAAM,gBAAgB;IAClB,0FAA0F;;;;;IAE1F,wCAAwC;;;;;IAExC,4EAA4E;;;;;IAE5E,yDAAyD;;cAC3B,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;;;IACjF,wDAAwD;;cACxB,QAAQ,CAAC,aAAa,CAAC;;;CAC1D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,gBAAgB,CAAC,CAAC;wBAE1D,OAAO,YAAY;AAAxC,wBAAyC;AAQzC,QAAA,MAAM,YAAY;IAtBd,0FAA0F;;;;;IAE1F,wCAAwC;;;;;IAExC,4EAA4E;;;;;IAE5E,yDAAyD;;cAC3B,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;;;IACjF,wDAAwD;;cACxB,QAAQ,CAAC,aAAa,CAAC;;;;;;IATvD,0FAA0F;;;;;IAE1F,wCAAwC;;;;;IAExC,4EAA4E;;;;;IAE5E,yDAAyD;;cAC3B,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;;;IACjF,wDAAwD;;cACxB,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;aAkB1C,oBAAoB;yEAgCnC,CAAC"}
@@ -15,12 +15,12 @@ declare const stepperSeparatorProps: {
15
15
  /** Theme-class overrides for this component instance. */
16
16
  themeClass: {
17
17
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
18
- default: any;
18
+ default: undefined;
19
19
  };
20
20
  /** Theme-variant values for this component instance. */
21
21
  themeVariant: {
22
22
  type: PropType<VariantValues>;
23
- default: any;
23
+ default: undefined;
24
24
  };
25
25
  };
26
26
  export type StepperSeparatorProps = ExtractPublicPropTypes<typeof stepperSeparatorProps>;
@@ -40,12 +40,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
40
40
  /** Theme-class overrides for this component instance. */
41
41
  themeClass: {
42
42
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
43
- default: any;
43
+ default: undefined;
44
44
  };
45
45
  /** Theme-variant values for this component instance. */
46
46
  themeVariant: {
47
47
  type: PropType<VariantValues>;
48
- default: any;
48
+ default: undefined;
49
49
  };
50
50
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
51
51
  [key: string]: any;
@@ -63,15 +63,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
63
63
  /** Theme-class overrides for this component instance. */
64
64
  themeClass: {
65
65
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
66
- default: any;
66
+ default: undefined;
67
67
  };
68
68
  /** Theme-variant values for this component instance. */
69
69
  themeVariant: {
70
70
  type: PropType<VariantValues>;
71
- default: any;
71
+ default: undefined;
72
72
  };
73
73
  }>> & Readonly<{}>, {
74
- as: string;
74
+ as: string | Component;
75
75
  themeClass: ThemeClassesOverride<StepperThemeClasses>;
76
76
  themeVariant: VariantValues;
77
77
  asChild: boolean;
@@ -15,12 +15,12 @@ declare const stepperTitleProps: {
15
15
  /** Theme-class overrides for this component instance. */
16
16
  themeClass: {
17
17
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
18
- default: any;
18
+ default: undefined;
19
19
  };
20
20
  /** Theme-variant values for this component instance. */
21
21
  themeVariant: {
22
22
  type: PropType<VariantValues>;
23
- default: any;
23
+ default: undefined;
24
24
  };
25
25
  };
26
26
  export type StepperTitleProps = ExtractPublicPropTypes<typeof stepperTitleProps>;
@@ -40,12 +40,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
40
40
  /** Theme-class overrides for this component instance. */
41
41
  themeClass: {
42
42
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
43
- default: any;
43
+ default: undefined;
44
44
  };
45
45
  /** Theme-variant values for this component instance. */
46
46
  themeVariant: {
47
47
  type: PropType<VariantValues>;
48
- default: any;
48
+ default: undefined;
49
49
  };
50
50
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
51
51
  [key: string]: any;
@@ -63,15 +63,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
63
63
  /** Theme-class overrides for this component instance. */
64
64
  themeClass: {
65
65
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
66
- default: any;
66
+ default: undefined;
67
67
  };
68
68
  /** Theme-variant values for this component instance. */
69
69
  themeVariant: {
70
70
  type: PropType<VariantValues>;
71
- default: any;
71
+ default: undefined;
72
72
  };
73
73
  }>> & Readonly<{}>, {
74
- as: string;
74
+ as: string | Component;
75
75
  themeClass: ThemeClassesOverride<StepperThemeClasses>;
76
76
  themeVariant: VariantValues;
77
77
  asChild: boolean;
@@ -15,12 +15,12 @@ declare const stepperTriggerProps: {
15
15
  /** Theme-class overrides for this component instance. */
16
16
  themeClass: {
17
17
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
18
- default: any;
18
+ default: undefined;
19
19
  };
20
20
  /** Theme-variant values for this component instance. */
21
21
  themeVariant: {
22
22
  type: PropType<VariantValues>;
23
- default: any;
23
+ default: undefined;
24
24
  };
25
25
  };
26
26
  export type StepperTriggerProps = ExtractPublicPropTypes<typeof stepperTriggerProps>;
@@ -40,12 +40,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
40
40
  /** Theme-class overrides for this component instance. */
41
41
  themeClass: {
42
42
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
43
- default: any;
43
+ default: undefined;
44
44
  };
45
45
  /** Theme-variant values for this component instance. */
46
46
  themeVariant: {
47
47
  type: PropType<VariantValues>;
48
- default: any;
48
+ default: undefined;
49
49
  };
50
50
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
51
51
  [key: string]: any;
@@ -63,15 +63,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
63
63
  /** Theme-class overrides for this component instance. */
64
64
  themeClass: {
65
65
  type: PropType<ThemeClassesOverride<StepperThemeClasses>>;
66
- default: any;
66
+ default: undefined;
67
67
  };
68
68
  /** Theme-variant values for this component instance. */
69
69
  themeVariant: {
70
70
  type: PropType<VariantValues>;
71
- default: any;
71
+ default: undefined;
72
72
  };
73
73
  }>> & Readonly<{}>, {
74
- as: string;
74
+ as: string | Component;
75
75
  themeClass: ThemeClassesOverride<StepperThemeClasses>;
76
76
  themeVariant: VariantValues;
77
77
  asChild: boolean;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { hasNormalizedSlot, inject, installDefaultsManager, installThemeManager, isPromise, normalizeSlot, provide, useArrowNavigation, useComponentTheme } from "@vuecs/core";
2
- import { computed, defineComponent, getCurrentInstance, h, inject as inject$1, mergeProps, onMounted, onUnmounted, provide as provide$1, ref, resolveComponent, shallowReactive, toRef, watch, watchEffect } from "vue";
2
+ import { computed, defineComponent, getCurrentInstance, h, inject as inject$1, mergeProps, onMounted, onUnmounted, provide as provide$1, ref, resolveComponent, shallowReactive, watch, watchEffect } from "vue";
3
3
  import { VCLink } from "@vuecs/link";
4
4
  import { CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuRoot, NavigationMenuTrigger, StepperDescription, StepperIndicator, StepperItem, StepperRoot, StepperSeparator, StepperTitle, StepperTrigger } from "reka-ui";
5
5
  //#region src/registry/module.ts
@@ -347,7 +347,7 @@ const VCNavItem = defineComponent({
347
347
  };
348
348
  }
349
349
  }, navigationThemeDefaults);
350
- const data = toRef(props, "data");
350
+ const data = computed(() => props.data);
351
351
  const hasChildren = computed(() => data.value.children && data.value.children.length > 0);
352
352
  provide$1(NAVIGATION_NODES_KEY, computed(() => data.value.children));
353
353
  const open = ref(!!data.value.displayChildren);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["inject","inject","inject"],"sources":["../src/registry/module.ts","../src/registry/singleton.ts","../src/helpers/match.ts","../src/helpers/normalize.ts","../src/helpers/trace.ts","../src/helpers/reset.ts","../src/helpers/submenu.ts","../src/helpers/trail.ts","../src/helpers/url.ts","../src/components/items/theme.ts","../src/components/select-context.ts","../src/components/item/module.ts","../src/components/items/module.ts","../src/components/stepper/context.ts","../src/components/stepper/theme.ts","../src/components/stepper/Stepper.vue","../src/components/stepper/Stepper.vue","../src/components/stepper/StepperItem.vue","../src/components/stepper/StepperItem.vue","../src/components/stepper/StepperTrigger.vue","../src/components/stepper/StepperTrigger.vue","../src/components/stepper/StepperIndicator.vue","../src/components/stepper/StepperIndicator.vue","../src/components/stepper/StepperTitle.vue","../src/components/stepper/StepperTitle.vue","../src/components/stepper/StepperDescription.vue","../src/components/stepper/StepperDescription.vue","../src/components/stepper/StepperSeparator.vue","../src/components/stepper/StepperSeparator.vue","../src/index.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { computed, ref, shallowReactive } from 'vue';\nimport type { NavigationItemNormalized } from '../types';\nimport type { NavigationRegistryEntry } from './types';\n\ntype Occupant = {\n token: symbol;\n entry: NavigationRegistryEntry;\n};\n\nfunction createEmptyEntry(): NavigationRegistryEntry {\n const items = ref<NavigationItemNormalized[]>([]);\n return {\n items,\n active: computed(() => []),\n activeTrail: computed(() => []),\n };\n}\n\ntype NavigationRegistryUnregisterFn = () => void;\n\n/**\n * Reactive, app-wide navigation registry. `<VCNavItems registry>`\n * publishes its resolved output here under a `registry-id`; other navs\n * read it reactively + empty-safe via the resolver context's\n * `registry(id)`.\n *\n * The backing map is `shallowReactive`, so membership changes\n * (register + the returned unregister closure) are tracked dependencies\n * — a consumer reading `get(id)` inside a `computed` / `watchEffect`\n * re-runs when the id's occupancy flips.\n */\nexport class NavigationRegistry {\n protected map = shallowReactive(\n new Map<string, Occupant>(),\n );\n\n /**\n * Stable empty entries handed out for absent ids, memoized per id so\n * the SAME reactive handle is returned every call — a consumer\n * subscribed to an absent id keeps its dependency and lights up the\n * moment an occupant registers.\n */\n protected empties = new Map<string, NavigationRegistryEntry>();\n\n /**\n * Claim `id`. Last-wins: a newer occupant replaces the current one\n * (dev warning on collision). Returns a token-guarded unregister\n * closure: it releases `id` ONLY if this registration is still the\n * occupant. During a route handoff (Vue mounts the new page before\n * unmounting the old) the departing nav's closure holds a stale token\n * and cannot evict the incoming occupant.\n */\n register(id: string, entry: NavigationRegistryEntry): NavigationRegistryUnregisterFn {\n if (this.map.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(`[vuecs] navigation registry id \"${id}\" reassigned to a new occupant.`);\n }\n\n const token = Symbol('vc-nav-registry-token');\n\n this.map.set(id, { token, entry });\n\n return () => {\n const occupant = this.map.get(id);\n if (occupant && occupant.token === token) {\n this.map.delete(id);\n }\n };\n }\n\n /** Reactive, empty-safe read. Never returns `undefined`. */\n get<META = any>(id: string): NavigationRegistryEntry<META> {\n const occupant = this.map.get(id);\n if (occupant) {\n return occupant.entry as NavigationRegistryEntry<META>;\n }\n\n let empty = this.empties.get(id);\n if (!empty) {\n empty = createEmptyEntry();\n this.empties.set(id, empty);\n }\n\n return empty as NavigationRegistryEntry<META>;\n }\n\n /** True when an occupant currently holds `id`. */\n has(id: string): boolean {\n return this.map.has(id);\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { inject, provide } from '@vuecs/core';\nimport type { App } from 'vue';\nimport { NavigationRegistry } from './module';\n\nconst sym = Symbol.for('VCNavigationRegistry');\n\nexport function tryInjectNavigationRegistry(app?: App): NavigationRegistry | undefined {\n return inject<NavigationRegistry>(sym, app);\n}\n\nexport function injectNavigationRegistry(app?: App): NavigationRegistry {\n const instance = tryInjectNavigationRegistry(app);\n if (!instance) {\n throw new Error('A navigation registry has not been provided.');\n }\n\n return instance;\n}\n\nexport function provideNavigationRegistry(\n registry: NavigationRegistry = new NavigationRegistry(),\n app?: App,\n): NavigationRegistry {\n provide(sym, registry, app);\n return registry;\n}\n","import type { NavigationItemNormalized } from '../types';\n\ntype ParentMatch = {\n score: number\n};\n\ntype ItemMatchesFindOptions = {\n path?: string\n};\n\nfunction calculateItemScoreForPath(\n item: NavigationItemNormalized,\n currentPath: string,\n) {\n if (item.url === '/') {\n return 1;\n }\n\n if (item.activeMatch) {\n if (item.activeMatch === currentPath) {\n return 6;\n } if (currentPath.startsWith(item.activeMatch)) {\n return 4;\n }\n }\n\n if (item.url) {\n if (item.url === currentPath) {\n return 3;\n } if (currentPath.startsWith(item.url)) {\n return 2;\n }\n }\n\n return 0;\n}\n\nfunction findItemMatchesIF(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions,\n parent: ParentMatch,\n) {\n const output : {\n data: NavigationItemNormalized,\n score: number\n }[] = [];\n\n for (const item of items) {\n let { score } = parent;\n\n if (options.path) {\n score += calculateItemScoreForPath(item, options.path);\n }\n\n if (item.default) {\n score += 1;\n }\n\n if (item.children) {\n const childMatches = findItemMatchesIF(item.children, options, { score });\n\n output.push(...childMatches);\n }\n\n output.push({ data: item, score });\n }\n\n return output.sort((a, b) => b.score - a.score);\n}\n\nexport function findBestItemMatches(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions = {},\n) : NavigationItemNormalized[] {\n const result = findItemMatchesIF(items, options, { score: 0 });\n const [first] = result;\n if (!first) {\n return [];\n }\n\n return result\n .filter((match) => match.score === first.score)\n .map((match) => match.data);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NavigationItem, NavigationItemNormalized } from '../types';\n\nfunction normalizeItemIF(\n item: NavigationItem,\n trace: string[],\n) : NavigationItemNormalized {\n const output : NavigationItemNormalized = {\n ...item,\n children: [],\n trace: [\n ...trace,\n item.name,\n ],\n meta: item.meta || {},\n };\n\n if (!item.children) {\n return output;\n }\n\n for (let i = 0; i < item.children.length; i++) {\n output.children.push(normalizeItemIF(item.children[i], output.trace));\n }\n\n return output;\n}\n\nexport function normalizeItem(\n item: NavigationItem,\n) : NavigationItemNormalized {\n return normalizeItemIF(item, []);\n}\n\nexport function normalizeItems(\n items: NavigationItem[],\n) : NavigationItemNormalized[] {\n return items.map((item) => normalizeItem(item));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isTraceEqual(\n a: string[],\n b: string[],\n): boolean {\n if (a.length !== b.length) {\n return false;\n }\n\n for (const [i, element] of a.entries()) {\n if (element !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isTracePartOf(item: string[], parent: string[]) {\n for (const [i, element] of item.entries()) {\n if (parent[i] !== element) {\n return false;\n }\n }\n\n return true;\n}\n","import type { NavigationItemNormalized } from '../types';\nimport { isTraceEqual, isTracePartOf } from './trace';\n\nfunction resetItemsByTraceIF(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n for (const item of items) {\n const isEqual = isTraceEqual(item.trace, trace);\n item.active = isEqual;\n item.display = true;\n\n if (isEqual) {\n item.activeWithin = false;\n item.displayChildren = true;\n } else {\n const isAncestor = isTracePartOf(item.trace, trace);\n item.activeWithin = isAncestor;\n item.displayChildren = isAncestor;\n }\n\n item.children = resetItemsByTraceIF(item.children, trace);\n }\n\n return items;\n}\n\nexport function resetItemsByTrace(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n return resetItemsByTraceIF(items, trace);\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n NavigationOrientation,\n NavigationSubmenu,\n NavigationSubmenuMode,\n} from '../types';\n\n/**\n * Resolve the effective submenu presentation. An explicit `collapse` /\n * `dropdown` wins; `auto` derives from orientation — only an explicit\n * `horizontal` opts into the dropdown (NavigationMenu) path, everything\n * else collapses (Collapsible).\n */\nexport function resolveSubmenuMode(\n submenu: NavigationSubmenu | undefined,\n orientation: NavigationOrientation | undefined,\n): NavigationSubmenuMode {\n if (submenu === 'collapse' || submenu === 'dropdown') {\n return submenu;\n }\n\n return orientation === 'horizontal' ? 'dropdown' : 'collapse';\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NavigationItemNormalized } from '../types';\n\n/**\n * Walk a normalized tree along `trace` (an ordered list of item names,\n * root → leaf) and collect the item at each depth. Returns the ordered\n * active trail: `[0]` is the top-level section, `.at(-1)` is the leaf.\n */\nexport function collectTrail(\n items: NavigationItemNormalized[],\n trace: string[],\n): NavigationItemNormalized[] {\n const output: NavigationItemNormalized[] = [];\n\n let level = items;\n for (const name of trace) {\n const found = level.find((item) => item.name === name);\n if (!found) {\n break;\n }\n\n output.push(found);\n level = found.children;\n }\n\n return output;\n}\n\n/**\n * Depth-first collect of every item in the tree matching `predicate`.\n */\nexport function flattenWhere(\n items: NavigationItemNormalized[],\n predicate: (item: NavigationItemNormalized) => boolean,\n): NavigationItemNormalized[] {\n const output: NavigationItemNormalized[] = [];\n\n for (const item of items) {\n if (predicate(item)) {\n output.push(item);\n }\n\n if (item.children.length > 0) {\n output.push(...flattenWhere(item.children, predicate));\n }\n }\n\n return output;\n}\n","export function isAbsoluteURL(str: string): boolean {\n return str.substring(0, 7) === 'http://' ||\n str.substring(0, 8) === 'https://';\n}\n","import type { ComponentThemeDefinition } from '@vuecs/core';\nimport type { NavigationThemeClasses } from '../../helpers/component/types';\n\n/**\n * Default classes for the `navigation` theme entry. Shared between\n * `<VCNavItems>` (the container) and `<VCNavItem>` (the per-row\n * component) — both call `useComponentTheme('navigation', …)` with\n * the same slot defaults, so the source of truth lives here.\n */\nexport const navigationThemeDefaults: ComponentThemeDefinition<NavigationThemeClasses> = {\n classes: {\n group: 'vc-nav-items',\n item: 'vc-nav-item',\n itemNested: 'vc-nav-item-nested',\n separator: 'vc-nav-separator',\n link: 'vc-nav-link',\n linkRoot: 'vc-nav-link-root',\n linkIcon: 'vc-nav-link-icon',\n linkText: 'vc-nav-link-text',\n trigger: 'vc-nav-trigger',\n content: 'vc-nav-content',\n viewport: 'vc-nav-viewport',\n },\n variants: {\n // `list` is the default vertical/stacked look; `pills` renders the\n // items as a joined pill group (the nav-pills style). Structural CSS\n // for these markers ships in the package `assets/index.css`; palette\n // colors stay the theme's responsibility.\n variant: {\n list: {},\n pills: {\n group: 'vc-nav-items--pills',\n item: 'vc-nav-item--pills',\n link: 'vc-nav-link--pills',\n },\n },\n orientation: {\n horizontal: {},\n vertical: { group: 'vc-nav-items--vertical' },\n },\n },\n defaultVariants: {\n variant: 'list',\n orientation: 'horizontal',\n },\n};\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { NavigationItemNormalized } from '../types';\n\n/**\n * Channels a `<VCNavItem>`'s already-normalized + scored `children` down\n * to the nested `<VCNavItems>` that renders its submenu.\n *\n * The top-level nav scores the WHOLE tree once; nested lists must render\n * those results as-is rather than re-resolving / re-scoring a subtree\n * (which would clobber traces and lose whole-tree active context). The\n * nested `<VCNavItems>` reads this when it has no own `data` prop —\n * presence of the injected nodes is what marks it as a nested renderer\n * rather than a resolving root. Each `<VCNavItem>` re-provides its own\n * children, so the value is correctly scoped per nesting level.\n */\nexport const NAVIGATION_NODES_KEY: InjectionKey<ComputedRef<NavigationItemNormalized[]>> = Symbol('vc-navigation-nodes');\n\n/**\n * Bridges a clicked `<VCNavItem>` up to the owning root `<VCNavItems>`.\n *\n * A url-less item can't navigate, so a click instead \"selects\" it: the\n * root nav records the item's trace and folds it into its active-state\n * derivation, publishing it through the registry's `active` / `activeTrail`.\n * Dependent navs then react with zero app wiring — exactly as they would\n * for a route-driven active change.\n */\nexport type NavigationSelectContext = {\n /** Invoke to mark `item` as the selected (active) item of the root nav. */\n select: (item: NavigationItemNormalized) => void;\n};\n\nexport const NAVIGATION_SELECT_KEY: InjectionKey<NavigationSelectContext> = Symbol('vc-navigation-select');\n","import { hasNormalizedSlot, normalizeSlot, useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport type { LinkProperties } from '@vuecs/link';\nimport { VCLink } from '@vuecs/link';\nimport type {\n Component,\n ExtractPublicPropTypes,\n PropType,\n SlotsType,\n VNodeChild,\n} from 'vue';\nimport {\n computed,\n defineComponent,\n h,\n inject,\n provide,\n ref,\n resolveComponent,\n toRef,\n watch,\n} from 'vue';\nimport {\n CollapsibleContent,\n CollapsibleRoot,\n CollapsibleTrigger,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuTrigger,\n} from 'reka-ui';\nimport type {\n NavigationItemNormalized,\n NavigationOrientation,\n NavigationSubmenuMode,\n} from '../../types';\nimport type { NavigationThemeClasses } from '../../helpers/component/types';\nimport { isAbsoluteURL } from '../../helpers';\nimport { ElementType, SlotName } from '../../constants';\nimport type {\n NavItemLinkSlotProps,\n NavItemSeparatorSlotProps,\n NavItemSubItemsSlotProps,\n NavItemSubSlotProps,\n NavItemSubTitleSlotProps,\n} from '../type';\nimport { navigationThemeDefaults } from '../items/theme';\nimport { NAVIGATION_NODES_KEY, NAVIGATION_SELECT_KEY } from '../select-context';\n\nconst navItemProps = {\n data: {\n type: Object as PropType<NavigationItemNormalized>,\n required: true,\n },\n variant: {\n type: String,\n default: undefined,\n },\n orientation: {\n type: String as PropType<NavigationOrientation>,\n default: undefined,\n },\n /**\n * Resolved submenu presentation handed down by the parent\n * `<VCNavItems>`. `collapse` renders groups as an inline\n * Reka `Collapsible`; `dropdown` renders them as Reka\n * `NavigationMenu` flyouts.\n */\n submenu: {\n type: String as PropType<NavigationSubmenuMode>,\n default: 'collapse',\n },\n /**\n * The tag (or component) this item renders as — its own wrapper\n * (`<li>` by default). Receives `<VCNavItems>`' `itemAs`. Honored in\n * collapse mode only.\n */\n as: {\n type: [String, Object, Function] as PropType<string | Component>,\n default: 'li',\n },\n /**\n * The list-container tag for this item's nested submenu\n * `<VCNavItems>` (`<ul>` by default). Receives `<VCNavItems>`' `as`.\n * Honored in collapse mode only.\n */\n itemsAs: {\n type: [String, Object, Function] as PropType<string | Component>,\n default: 'ul',\n },\n themeClass: {\n type: Object as PropType<ThemeClassesOverride<NavigationThemeClasses>>,\n default: undefined,\n },\n themeVariant: {\n type: Object as PropType<VariantValues>,\n default: undefined,\n },\n};\n\nexport type NavItemProps = ExtractPublicPropTypes<typeof navItemProps>;\n\nexport const VCNavItem = defineComponent({\n name: 'VCNavItem',\n props: navItemProps,\n slots: Object as SlotsType<{\n separator: NavItemSeparatorSlotProps;\n link: NavItemLinkSlotProps;\n sub: NavItemSubSlotProps;\n 'sub-title': NavItemSubTitleSlotProps;\n 'sub-items': NavItemSubItemsSlotProps;\n }>,\n setup(props, { slots }) {\n const itemsNode = resolveComponent('VCNavItems');\n\n const themeProps: UseComponentThemeProps<NavigationThemeClasses> = {\n get themeClass() {\n return props.themeClass;\n },\n get themeVariant() {\n return {\n ...(props.themeVariant ?? {}),\n ...(props.variant !== undefined ? { variant: props.variant } : {}),\n };\n },\n };\n\n const theme = useComponentTheme('navigation', themeProps, navigationThemeDefaults);\n\n const data = toRef(props, 'data');\n const hasChildren = computed(() => data.value.children &&\n data.value.children.length > 0);\n\n // Channel this item's already-scored children down to the nested\n // `<VCNavItems>` that renders its submenu, so the child list renders\n // them as-is instead of re-resolving / re-scoring a subtree. Scoped\n // per item — each `<VCNavItem>` re-provides its own children.\n provide(NAVIGATION_NODES_KEY, computed(() => data.value.children));\n\n // Local expand state — seeded from the resolved `displayChildren`\n // (driven by active-trail matching upstream) and resynced whenever\n // that recomputes, so a path change auto-opens the active branch.\n const open = ref(!!data.value.displayChildren);\n watch(() => data.value.displayChildren, (value) => {\n open.value = !!value;\n });\n\n // Selection bubbles up to the owning root `<VCNavItems>`, which folds\n // this item's trace into its active state and republishes through the\n // registry. The primary use is url-less section switchers (a top-nav\n // tab that swaps a dependent sidebar without navigating). Items with\n // a real url also navigate; the route change then supersedes the\n // selection upstream.\n const selectContext = inject(NAVIGATION_SELECT_KEY, null);\n const select = () => {\n selectContext?.select(data.value);\n };\n\n const toggle = () => {\n open.value = !open.value;\n };\n\n // Iconify-style icon strings (e.g. `fa6-solid:home`, `lucide:plus`)\n // contain a colon. Render via the globally-registered <VCIcon> so\n // they resolve through the Iconify pipeline rather than landing as\n // raw CSS classes on a literal <i>. Legacy class-string icons\n // (`fa fa-home`, `material-icons home`) keep their <i class> rendering.\n const renderIcon = (icon: string): VNodeChild => {\n if (icon.includes(':')) {\n return h(resolveComponent('VCIcon'), { name: icon });\n }\n return h('i', { class: icon });\n };\n\n const renderTitleInner = (resolved: NavigationThemeClasses): VNodeChild[] => [\n ...(data.value.icon ?\n [h('div', { class: resolved.linkIcon || undefined }, [\n renderIcon(data.value.icon),\n ])] :\n []),\n h('div', { class: resolved.linkText || undefined }, [\n data.value.name,\n ]),\n ];\n\n const renderLeaf = (resolved: NavigationThemeClasses): VNodeChild => {\n if (hasNormalizedSlot(SlotName.LINK, slots)) {\n return normalizeSlot(SlotName.LINK, {\n data: data.value,\n select,\n isActive: data.value.active,\n }, slots);\n }\n\n const linkProps: LinkProperties = {\n active: data.value.active,\n disabled: false,\n prefetch: true,\n };\n\n if (data.value.url) {\n if (\n isAbsoluteURL(data.value.url) ||\n data.value.url.startsWith('#')\n ) {\n linkProps.href = data.value.url;\n if (data.value.urlTarget) {\n linkProps.target = data.value.urlTarget;\n }\n } else {\n linkProps.to = data.value.url;\n }\n }\n\n return h(VCLink, {\n class: [resolved.link],\n 'data-vc-collection-item': '',\n ...linkProps,\n onClicked: select,\n }, { default: () => renderTitleInner(resolved) });\n };\n\n const renderChildren = (): VNodeChild => {\n if (hasNormalizedSlot(SlotName.SUB_ITEMS, slots)) {\n return normalizeSlot(SlotName.SUB_ITEMS, {\n data: data.value,\n select,\n toggle,\n });\n }\n\n // A dropdown group's flyout panel is plain content — a list of\n // links — NOT another menu bar. Recursing with `submenu=\"dropdown\"`\n // would nest a second `NavigationMenuRoot` inside this root's\n // `NavigationMenuContent`; Reka's NavigationMenu is built around a\n // SINGLE root per bar, and nesting roots breaks the hover state\n // machine (the panel only opens on the first hover and never\n // reopens). Rendering the panel contents in `collapse` mode keeps\n // them a plain `<ul>` of links, so deeper groups degrade to inline\n // collapsibles within the flyout instead of buggy sub-roots.\n // No `data`: the nested list reads this item's children via the\n // NAVIGATION_NODES_KEY inject provided in setup above.\n return h(itemsNode, {\n variant: props.variant,\n orientation: props.orientation,\n submenu: props.submenu === 'dropdown' ? 'collapse' : props.submenu,\n as: props.itemsAs,\n itemAs: props.as,\n themeClass: props.themeClass,\n themeVariant: props.themeVariant,\n });\n };\n\n return () => {\n const resolved = theme.value;\n const isDropdown = props.submenu === 'dropdown';\n const isActive = data.value.active || data.value.activeWithin;\n\n // type: separator\n if (data.value.type === ElementType.SEPARATOR) {\n const body = hasNormalizedSlot(SlotName.SEPARATOR, slots) ?\n normalizeSlot(SlotName.SEPARATOR, { data: data.value }, slots) :\n h('div', { class: resolved.separator || undefined }, data.value.name);\n\n if (isDropdown) {\n return h(NavigationMenuItem, { class: [resolved.item] }, { default: () => body });\n }\n return h(props.as, { class: [resolved.item] }, [body]);\n }\n\n // type: link (no children)\n if (!hasChildren.value) {\n const leaf = renderLeaf(resolved);\n\n if (isDropdown) {\n return h(NavigationMenuItem, {\n class: [resolved.item],\n 'data-active': data.value.active ? '' : undefined,\n }, {\n default: () => h(NavigationMenuLink, {\n active: data.value.active,\n asChild: true,\n }, { default: () => leaf }),\n });\n }\n\n return h(props.as, {\n class: [resolved.item, { active: data.value.active }],\n 'data-active': data.value.active ? '' : undefined,\n }, [leaf]);\n }\n\n // type: group with children — full-override slot bypasses the\n // Collapsible / NavigationMenu machinery entirely.\n if (hasNormalizedSlot(SlotName.SUB, slots)) {\n const body = normalizeSlot(SlotName.SUB, {\n data: data.value,\n select,\n toggle,\n }, slots);\n\n if (isDropdown) {\n return h(NavigationMenuItem, {\n class: [resolved.item, resolved.itemNested],\n 'data-active': isActive ? '' : undefined,\n }, { default: () => body });\n }\n return h(props.as, {\n class: [resolved.item, resolved.itemNested, { active: isActive }],\n 'data-active': isActive ? '' : undefined,\n }, [body]);\n }\n\n const title = hasNormalizedSlot(SlotName.SUB_TITLE, slots) ?\n normalizeSlot(SlotName.SUB_TITLE, {\n data: data.value,\n select,\n toggle,\n }) :\n renderTitleInner(resolved);\n\n // dropdown: Reka NavigationMenu flyout\n if (isDropdown) {\n return h(NavigationMenuItem, {\n class: [resolved.item, resolved.itemNested],\n 'data-active': isActive ? '' : undefined,\n }, {\n default: () => [\n h(NavigationMenuTrigger, {\n class: resolved.trigger || undefined,\n 'data-vc-collection-item': '',\n 'data-active': isActive ? '' : undefined,\n }, { default: () => title }),\n // Re-invoke `renderChildren()` per mount: Reka's\n // NavigationMenuContent unmounts on close and remounts on\n // reopen (unmountOnHide). A VNode can only be rendered\n // once, so handing back a pre-computed tree renders an\n // EMPTY flyout on the second open. The thunk produces a\n // fresh subtree each time the content mounts.\n h(NavigationMenuContent, { class: resolved.content || undefined }, { default: () => renderChildren() }),\n ],\n });\n }\n\n // collapse: inline Reka Collapsible\n return h(CollapsibleRoot, {\n as: props.as,\n class: [\n resolved.item,\n resolved.itemNested,\n { active: data.value.active || open.value },\n ],\n 'data-active': isActive ? '' : undefined,\n open: open.value,\n 'onUpdate:open': (value: boolean) => {\n open.value = value;\n },\n }, {\n default: () => [\n h(CollapsibleTrigger, {\n class: resolved.trigger || undefined,\n 'data-vc-collection-item': '',\n 'data-active': isActive ? '' : undefined,\n }, { default: () => title }),\n h(CollapsibleContent, { class: resolved.content || undefined }, { default: () => renderChildren() }),\n ],\n });\n };\n },\n});\n","import {\n hasNormalizedSlot,\n isPromise,\n normalizeSlot,\n useArrowNavigation,\n useComponentTheme,\n} from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport type {\n Component,\n ExtractPublicPropTypes,\n PropType,\n SlotsType,\n VNodeArrayChildren,\n VNodeChild,\n WatchSource,\n} from 'vue';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n inject,\n onMounted,\n onUnmounted,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue';\nimport { NavigationMenuList, NavigationMenuRoot } from 'reka-ui';\nimport { SlotName } from '../../constants';\nimport type {\n NavigationItem,\n NavigationItemNormalized,\n NavigationOrientation,\n NavigationResolver,\n NavigationSubmenu,\n} from '../../types';\nimport type { NavigationThemeClasses } from '../../helpers/component/types';\nimport {\n collectTrail,\n findBestItemMatches,\n flattenWhere,\n normalizeItems,\n resetItemsByTrace,\n resolveSubmenuMode,\n} from '../../helpers';\nimport { NavigationRegistry, tryInjectNavigationRegistry } from '../../registry';\nimport { VCNavItem } from '../item';\nimport { NAVIGATION_NODES_KEY, NAVIGATION_SELECT_KEY } from '../select-context';\nimport type { NavItemsItemSlotProps } from '../type';\nimport { navigationThemeDefaults } from './theme';\n\nconst navItemsProps = {\n /**\n * The source of this nav's items. Plain array, sync fn, or async fn.\n * A fn receives a NavigationResolverContext and may read reactive\n * state freely — the nav re-runs it automatically when that state\n * changes.\n *\n * When omitted, the nav checks whether it is a nested submenu of a\n * parent `<VCNavItem>` (via the {@link NAVIGATION_NODES_KEY} inject)\n * and, if so, renders that parent's already-scored children as-is.\n */\n data: {\n type: [Array, Function] as PropType<NavigationItem[] | NavigationResolver>,\n default: undefined,\n },\n /** Opt in to publishing this nav's resolved output into the registry. */\n registry: { type: Boolean, default: false },\n /** The key under which to publish. Required when `registry` is true. */\n registryId: { type: String, default: undefined },\n /**\n * Current path for active-state matching. When omitted, the nav softly\n * reads vue-router's current route (via the `$route` global property)\n * if a router is installed; router-free apps simply get `undefined`.\n */\n path: { type: String, default: undefined },\n /**\n * Extra reactive deps that should retrigger the resolver — for state\n * read only AFTER the first `await` in an async resolver (auto-track\n * can't see past an await).\n */\n watch: { type: Array as PropType<WatchSource[]>, default: undefined },\n variant: { type: String, default: undefined },\n orientation: { type: String as PropType<NavigationOrientation>, default: undefined },\n /**\n * How items with children render their submenu. `auto` derives from\n * orientation (horizontal → dropdown, otherwise collapse).\n */\n submenu: { type: String as PropType<NavigationSubmenu>, default: 'auto' },\n /**\n * The tag (or component) for this nav's list container. Defaults to\n * `'ul'`. Forwarded unchanged to every nesting level so the whole tree\n * renders the same container tag. Honored in collapse mode only —\n * dropdown mode keeps Reka's NavigationMenu primitives.\n */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'ul' },\n /**\n * The tag (or component) for each item wrapper. Defaults to `'li'`.\n * Forwarded unchanged to every nesting level. Honored in collapse mode\n * only — dropdown mode keeps Reka's NavigationMenu primitives.\n */\n itemAs: { type: [String, Object, Function] as PropType<string | Component>, default: 'li' },\n themeClass: { type: Object as PropType<ThemeClassesOverride<NavigationThemeClasses>>, default: undefined },\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type NavItemsProps = ExtractPublicPropTypes<typeof navItemsProps>;\n\nexport const VCNavItems = defineComponent({\n name: 'VCNavItems',\n props: navItemsProps,\n slots: Object as SlotsType<{\n item: NavItemsItemSlotProps;\n }>,\n setup(props, { slots, expose }) {\n // Merge the convenience `variant` prop into themeVariant before\n // resolution so themes can drive slot classes off it. Getter keeps\n // it reactive (computed() inside useComponentTheme tracks the read).\n const themeProps: UseComponentThemeProps<NavigationThemeClasses> = {\n get themeClass() {\n return props.themeClass;\n },\n get themeVariant() {\n return {\n ...(props.themeVariant ?? {}),\n ...(props.variant !== undefined ? { variant: props.variant } : {}),\n ...(props.orientation !== undefined ? { orientation: props.orientation } : {}),\n };\n },\n };\n\n const theme = useComponentTheme('navigation', themeProps, navigationThemeDefaults);\n\n const rootRef = ref<HTMLUListElement | null>(null);\n\n const onKeyDown = (event: KeyboardEvent) => {\n useArrowNavigation(\n event,\n event.target as HTMLElement | null,\n rootRef.value,\n {\n arrowKeyOptions: 'vertical',\n focus: true,\n loop: true,\n },\n );\n };\n\n // Registry is empty-safe: a standalone nav (no plugin installed)\n // falls back to a local empty registry so `registry(id)` still works.\n const registry = tryInjectNavigationRegistry() ?? new NavigationRegistry();\n\n // Soft vue-router lookup: vue-router installs a reactive `$route`\n // getter on `globalProperties`. Reading it inside a computed tracks\n // route changes without a static `vue-router` import, so router-free\n // apps degrade to `undefined` instead of failing to resolve the\n // module. An explicit `:path` prop always wins.\n const globals = getCurrentInstance()?.appContext.config.globalProperties;\n const currentPath = computed<string | undefined>(() => {\n if (typeof props.path !== 'undefined') {\n return props.path;\n }\n const route = globals?.$route as { path?: string } | undefined;\n return route?.path;\n });\n\n // Nested submenu detection: a parent `<VCNavItem>` provides its\n // already-scored children via NAVIGATION_NODES_KEY. When this nav\n // has no own `data` and such nodes are present, it is a nested\n // renderer — it skips resolving / scoring / select / registry and\n // just renders the provided subtree. An explicit `data` always\n // wins (treated as a resolving root even when nested in markup).\n const injectedNodes = inject(NAVIGATION_NODES_KEY, null);\n const isNested = computed(() => typeof props.data === 'undefined' && injectedNodes !== null);\n\n // --- click-driven selection (url-less section switchers) ---\n // A url-less item can't navigate, so a click \"selects\" it instead:\n // we record its trace and fold it into active-state derivation\n // below, publishing it through the registry like a route change.\n // Only a root nav holds this state and provides the bridge —\n // nested `<VCNavItems>` let the click bubble up to their owning root.\n const selectedTrace = ref<string[] | null>(null);\n if (!isNested.value) {\n provide(NAVIGATION_SELECT_KEY, {\n select: (item) => {\n selectedTrace.value = item.trace;\n },\n });\n // A real navigation supersedes a prior selection: once the\n // route changes, hand active-state back to path matching.\n watch(currentPath, () => {\n selectedTrace.value = null;\n });\n }\n\n // --- resolver + reactivity (root mode only; nested bypasses) ---\n const raw = ref<NavigationItem[]>([]);\n // Monotonic run token: overlapping async resolvers can settle out of\n // order, so only the latest invocation is allowed to write `raw.value`\n // — a slower earlier run must not clobber a fresher result.\n let runToken = 0;\n\n async function run() {\n const token = ++runToken;\n const value = typeof props.data === 'function' ?\n props.data({\n path: currentPath.value,\n registry: (id: string) => registry.get(id),\n }) :\n (props.data ?? []);\n\n if (!isPromise(value)) {\n raw.value = value ?? [];\n return;\n }\n\n try {\n const awaited = (await value) ?? [];\n if (token === runToken) {\n raw.value = awaited;\n }\n } catch (error) {\n // Without this, a rejected resolver surfaces as an unhandled\n // rejection from the watcher effect. Only the latest run logs.\n if (token === runToken) {\n // eslint-disable-next-line no-console\n console.error('[vuecs] <VCNavItems> resolver rejected:', error);\n }\n }\n }\n\n if (!isNested.value) {\n // Auto-track: reactive reads in `run` BEFORE the first await retrigger it.\n watchEffect(run);\n // Escape hatch for state read AFTER an await:\n if (props.watch) {\n watch(props.watch, run);\n }\n }\n\n // Imperative escape hatch:\n expose({ refresh: run });\n\n // --- normalized + tree-wide scored derivation ---\n const resolved = computed<{ items: NavigationItemNormalized[]; trace: string[] }>(() => {\n if (isNested.value && injectedNodes) {\n return { items: injectedNodes.value, trace: [] };\n }\n\n const normalized = normalizeItems(raw.value);\n const [match] = findBestItemMatches(normalized, { path: currentPath.value });\n // A click-driven selection (url-less switcher) overrides the\n // path match until the next real navigation clears it.\n const trace = selectedTrace.value ?? (match ? match.trace : []);\n // sets per item: .active (exact) AND .activeWithin (ancestor)\n resetItemsByTrace(normalized, trace);\n return { items: normalized, trace };\n });\n\n const tree = computed(() => resolved.value.items);\n const active = computed(() => flattenWhere(tree.value, (item) => !!item.active));\n const activeTrail = computed(() => collectTrail(tree.value, resolved.value.trace));\n\n // --- registry publish (opt-in, lifecycle-bound) ---\n if (props.registry) {\n let unsubscribeFn : (() => void) | undefined;\n\n const entry = {\n items: tree,\n active,\n activeTrail,\n };\n\n onMounted(() => {\n if (!props.registryId) {\n // eslint-disable-next-line no-console\n console.warn('[vuecs] <VCNavItems registry> requires a `registry-id`.');\n return;\n }\n unsubscribeFn = registry.register(props.registryId, entry);\n });\n onUnmounted(() => {\n if (!props.registryId || !unsubscribeFn) {\n return;\n }\n\n unsubscribeFn();\n });\n }\n\n const submenuMode = computed(() => resolveSubmenuMode(props.submenu, props.orientation));\n\n return () => {\n const resolvedTheme = theme.value;\n const vNodes: VNodeArrayChildren = [];\n\n for (let i = 0; i < tree.value.length; i++) {\n const item = tree.value[i];\n if (!item.display && !item.displayChildren) {\n continue;\n }\n\n let vNode: VNodeChild;\n if (hasNormalizedSlot(SlotName.ITEM, slots)) {\n vNode = normalizeSlot(SlotName.ITEM, { data: item }, slots);\n } else {\n vNode = h(\n VCNavItem,\n {\n key: item.trace.join('/') || i,\n data: item,\n variant: props.variant,\n orientation: props.orientation,\n submenu: submenuMode.value,\n as: props.itemAs,\n itemsAs: props.as,\n themeClass: props.themeClass,\n themeVariant: props.themeVariant,\n },\n );\n }\n\n vNodes.push(vNode);\n }\n\n // Dropdown mode wraps the list in Reka's NavigationMenu so group\n // triggers get flyout machinery (hover-grace, edge-aware content,\n // arrow-key nav). Collapse mode stays a plain <ul> and wires our\n // own arrow-navigation on the root.\n if (submenuMode.value === 'dropdown') {\n return h(\n NavigationMenuRoot,\n { orientation: 'horizontal' },\n {\n default: () => h(\n NavigationMenuList,\n { class: resolvedTheme.group || undefined },\n { default: () => vNodes },\n ),\n },\n );\n }\n\n const isRoot = !isNested.value;\n\n return h(\n props.as,\n {\n class: resolvedTheme.group || undefined,\n ...(isRoot ?\n { ref: rootRef, onKeydown: onKeyDown } :\n {}),\n },\n vNodes,\n );\n };\n },\n});\n","import type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { ThemeClassesOverride, VariantValues } from '@vuecs/core';\nimport type { StepperThemeClasses } from './types';\n\n/**\n * Context shared from `<VCStepper>` to its descendant parts so that\n * theme-class and theme-variant values applied to the root propagate\n * automatically to indicator / title / description / separator / item /\n * trigger without the consumer having to repeat the props on every\n * child. Per-instance values on a child still win over inherited ones.\n *\n * Optional — children render bare (without inherited theme values) when\n * mounted outside `<VCStepper>` for unit tests / Storybook.\n */\nexport type StepperContext = {\n themeClass: () => ThemeClassesOverride<StepperThemeClasses> | undefined;\n themeVariant: () => VariantValues | undefined;\n};\n\nconst STEPPER_CONTEXT_KEY: InjectionKey<StepperContext> = Symbol('vcStepperContext');\n\nexport function provideStepperContext(ctx: StepperContext): void {\n provide(STEPPER_CONTEXT_KEY, ctx);\n}\n\nexport function useStepperContext(): StepperContext | null {\n return inject(STEPPER_CONTEXT_KEY, null);\n}\n","import type { ComponentThemeDefinition } from '@vuecs/core';\nimport type { StepperThemeClasses } from './types';\n\nexport const stepperThemeDefaults: ComponentThemeDefinition<StepperThemeClasses> = {\n classes: {\n root: 'vc-stepper',\n item: 'vc-stepper-item',\n trigger: 'vc-stepper-trigger',\n indicator: 'vc-stepper-indicator',\n title: 'vc-stepper-title',\n description: 'vc-stepper-description',\n separator: 'vc-stepper-separator',\n },\n};\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperRoot } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, VariantValues } from '@vuecs/core';\nimport { provideStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperProps = {\n /** Active step (1-based). v-modeled. */\n modelValue: { type: Number, default: undefined },\n /** Initial active step for uncontrolled usage. */\n defaultValue: { type: Number, default: 1 },\n /** Layout direction. */\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n /** Reading direction. Falls back to the ConfigManager's `dir` value when omitted. */\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n /** When `true`, steps must be completed in order — Reka blocks navigation past the next incomplete step. */\n linear: { type: Boolean, default: true },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperProps = ExtractPublicPropTypes<typeof stepperProps>;\n\nexport default defineComponent({\n name: 'VCStepper',\n inheritAttrs: false,\n props: stepperProps,\n emits: ['update:modelValue'],\n setup(props, {\n attrs,\n slots,\n emit,\n }) {\n // Propagate theme-class + theme-variant to descendant indicator /\n // title / description / separator / item / trigger parts so a single\n // `<VCStepper :theme-variant=\"{ size: 'sm' }\">` resizes the whole\n // stepper, and `:theme-class=\"{ indicator: 'ring-2' }\">` skins every\n // indicator. Children fall back to their own per-instance values\n // when the consumer wants to override them.\n provideStepperContext({\n themeClass: () => props.themeClass,\n themeVariant: () => props.themeVariant,\n });\n const theme = useComponentTheme('stepper', props, stepperThemeDefaults);\n return () => h(\n StepperRoot,\n mergeProps(attrs, {\n modelValue: props.modelValue,\n defaultValue: props.defaultValue,\n orientation: props.orientation,\n dir: props.dir,\n linear: props.linear,\n 'onUpdate:modelValue': (value: number | undefined) => emit('update:modelValue', value),\n class: theme.value.root || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperRoot } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, VariantValues } from '@vuecs/core';\nimport { provideStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperProps = {\n /** Active step (1-based). v-modeled. */\n modelValue: { type: Number, default: undefined },\n /** Initial active step for uncontrolled usage. */\n defaultValue: { type: Number, default: 1 },\n /** Layout direction. */\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n /** Reading direction. Falls back to the ConfigManager's `dir` value when omitted. */\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n /** When `true`, steps must be completed in order — Reka blocks navigation past the next incomplete step. */\n linear: { type: Boolean, default: true },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperProps = ExtractPublicPropTypes<typeof stepperProps>;\n\nexport default defineComponent({\n name: 'VCStepper',\n inheritAttrs: false,\n props: stepperProps,\n emits: ['update:modelValue'],\n setup(props, {\n attrs,\n slots,\n emit,\n }) {\n // Propagate theme-class + theme-variant to descendant indicator /\n // title / description / separator / item / trigger parts so a single\n // `<VCStepper :theme-variant=\"{ size: 'sm' }\">` resizes the whole\n // stepper, and `:theme-class=\"{ indicator: 'ring-2' }\">` skins every\n // indicator. Children fall back to their own per-instance values\n // when the consumer wants to override them.\n provideStepperContext({\n themeClass: () => props.themeClass,\n themeVariant: () => props.themeVariant,\n });\n const theme = useComponentTheme('stepper', props, stepperThemeDefaults);\n return () => h(\n StepperRoot,\n mergeProps(attrs, {\n modelValue: props.modelValue,\n defaultValue: props.defaultValue,\n orientation: props.orientation,\n dir: props.dir,\n linear: props.linear,\n 'onUpdate:modelValue': (value: number | undefined) => emit('update:modelValue', value),\n class: theme.value.root || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType, SlotsType } from 'vue';\nimport { StepperItem } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nexport type StepperItemSlotProps = {\n state: 'active' | 'completed' | 'inactive';\n};\n\nconst stepperItemProps = {\n /** 1-based step index. Required by Reka — used to determine completion / active state. */\n step: { type: Number, required: true },\n /** Block interaction with this step. */\n disabled: { type: Boolean, default: false },\n /** Force completion state. Reka derives this automatically when `false`. */\n completed: { type: Boolean, default: false },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperItemProps = ExtractPublicPropTypes<typeof stepperItemProps>;\n\nexport default defineComponent({\n name: 'VCStepperItem',\n inheritAttrs: false,\n props: stepperItemProps,\n slots: Object as SlotsType<{\n default: StepperItemSlotProps;\n }>,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperItem,\n // `step` is required on StepperItem; vue-tsc loses that\n // through `mergeProps`'s untyped `Data` return, so we pass\n // it as a direct prop (and merge attrs separately for\n // pass-through HTML attrs / data-* / class composition).\n // The `group` utility scopes child\n // `group-data-[state=...]:` selectors in theme-tailwind so\n // child indicators / titles can react to the parent step's\n // state without explicit attribute wiring on every child.\n {\n step: props.step,\n disabled: props.disabled,\n completed: props.completed,\n ...mergeProps(attrs, { class: ['group', theme.value.item || undefined] }),\n },\n { default: ({ state }: StepperItemSlotProps) => slots.default?.({ state }) },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType, SlotsType } from 'vue';\nimport { StepperItem } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nexport type StepperItemSlotProps = {\n state: 'active' | 'completed' | 'inactive';\n};\n\nconst stepperItemProps = {\n /** 1-based step index. Required by Reka — used to determine completion / active state. */\n step: { type: Number, required: true },\n /** Block interaction with this step. */\n disabled: { type: Boolean, default: false },\n /** Force completion state. Reka derives this automatically when `false`. */\n completed: { type: Boolean, default: false },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperItemProps = ExtractPublicPropTypes<typeof stepperItemProps>;\n\nexport default defineComponent({\n name: 'VCStepperItem',\n inheritAttrs: false,\n props: stepperItemProps,\n slots: Object as SlotsType<{\n default: StepperItemSlotProps;\n }>,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperItem,\n // `step` is required on StepperItem; vue-tsc loses that\n // through `mergeProps`'s untyped `Data` return, so we pass\n // it as a direct prop (and merge attrs separately for\n // pass-through HTML attrs / data-* / class composition).\n // The `group` utility scopes child\n // `group-data-[state=...]:` selectors in theme-tailwind so\n // child indicators / titles can react to the parent step's\n // state without explicit attribute wiring on every child.\n {\n step: props.step,\n disabled: props.disabled,\n completed: props.completed,\n ...mergeProps(attrs, { class: ['group', theme.value.item || undefined] }),\n },\n { default: ({ state }: StepperItemSlotProps) => slots.default?.({ state }) },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTrigger } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTriggerProps = {\n /** Render the consumer's slot child as the trigger root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'button' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTriggerProps = ExtractPublicPropTypes<typeof stepperTriggerProps>;\n\nexport default defineComponent({\n name: 'VCStepperTrigger',\n inheritAttrs: false,\n props: stepperTriggerProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTrigger,\n mergeProps(\n // Default to type=\"button\" only when rendering a real\n // <button>; otherwise it'd submit any wrapping <form>.\n // Consumer's `attrs` still wins because mergeProps gives\n // later objects precedence on `type`.\n props.as === 'button' ? { type: 'button' } : {},\n attrs,\n {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.trigger || undefined,\n },\n ),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTrigger } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTriggerProps = {\n /** Render the consumer's slot child as the trigger root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'button' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTriggerProps = ExtractPublicPropTypes<typeof stepperTriggerProps>;\n\nexport default defineComponent({\n name: 'VCStepperTrigger',\n inheritAttrs: false,\n props: stepperTriggerProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTrigger,\n mergeProps(\n // Default to type=\"button\" only when rendering a real\n // <button>; otherwise it'd submit any wrapping <form>.\n // Consumer's `attrs` still wins because mergeProps gives\n // later objects precedence on `type`.\n props.as === 'button' ? { type: 'button' } : {},\n attrs,\n {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.trigger || undefined,\n },\n ),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperIndicator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperIndicatorProps = {\n /** Render the consumer's slot child as the indicator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperIndicatorProps = ExtractPublicPropTypes<typeof stepperIndicatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperIndicator',\n inheritAttrs: false,\n props: stepperIndicatorProps,\n setup(props, { attrs, slots }) {\n // Inherit theme-variant (notably `size`) from the parent <VCStepper>\n // so the consumer doesn't have to repeat `:theme-variant` on every\n // indicator. Per-instance `props.themeVariant` still wins.\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperIndicator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.indicator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperIndicator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperIndicatorProps = {\n /** Render the consumer's slot child as the indicator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperIndicatorProps = ExtractPublicPropTypes<typeof stepperIndicatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperIndicator',\n inheritAttrs: false,\n props: stepperIndicatorProps,\n setup(props, { attrs, slots }) {\n // Inherit theme-variant (notably `size`) from the parent <VCStepper>\n // so the consumer doesn't have to repeat `:theme-variant` on every\n // indicator. Per-instance `props.themeVariant` still wins.\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperIndicator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.indicator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTitle } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTitleProps = {\n /** Render the consumer's slot child as the title root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'h4' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTitleProps = ExtractPublicPropTypes<typeof stepperTitleProps>;\n\nexport default defineComponent({\n name: 'VCStepperTitle',\n inheritAttrs: false,\n props: stepperTitleProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTitle,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.title || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTitle } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTitleProps = {\n /** Render the consumer's slot child as the title root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'h4' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTitleProps = ExtractPublicPropTypes<typeof stepperTitleProps>;\n\nexport default defineComponent({\n name: 'VCStepperTitle',\n inheritAttrs: false,\n props: stepperTitleProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTitle,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.title || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperDescription } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperDescriptionProps = {\n /** Render the consumer's slot child as the description root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'p' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperDescriptionProps = ExtractPublicPropTypes<typeof stepperDescriptionProps>;\n\nexport default defineComponent({\n name: 'VCStepperDescription',\n inheritAttrs: false,\n props: stepperDescriptionProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperDescription,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.description || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperDescription } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperDescriptionProps = {\n /** Render the consumer's slot child as the description root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'p' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperDescriptionProps = ExtractPublicPropTypes<typeof stepperDescriptionProps>;\n\nexport default defineComponent({\n name: 'VCStepperDescription',\n inheritAttrs: false,\n props: stepperDescriptionProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperDescription,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.description || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperSeparator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperSeparatorProps = {\n /** Render the consumer's slot child as the separator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperSeparatorProps = ExtractPublicPropTypes<typeof stepperSeparatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperSeparator',\n inheritAttrs: false,\n props: stepperSeparatorProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperSeparator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.separator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperSeparator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperSeparatorProps = {\n /** Render the consumer's slot child as the separator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperSeparatorProps = ExtractPublicPropTypes<typeof stepperSeparatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperSeparator',\n inheritAttrs: false,\n props: stepperSeparatorProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperSeparator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.separator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","import { installDefaultsManager, installThemeManager } from '@vuecs/core';\nimport type { App, Plugin } from 'vue';\n\nimport '../assets/index.css';\nimport './vue';\nimport { NavigationRegistry, provideNavigationRegistry } from './registry';\n\nimport {\n VCNavItem,\n VCNavItems,\n VCStepper,\n VCStepperDescription,\n VCStepperIndicator,\n VCStepperItem,\n VCStepperSeparator,\n VCStepperTitle,\n VCStepperTrigger,\n} from './components';\nimport type { Options } from './types';\n\nexport * from './components';\nexport * from './registry';\nexport * from './types';\n\nexport function install(instance: App, options: Options = {}): void {\n provideNavigationRegistry(new NavigationRegistry(), instance);\n\n installThemeManager(instance, options);\n installDefaultsManager(instance, options);\n\n Object.entries({\n VCNavItem,\n VCNavItems,\n VCStepper,\n VCStepperItem,\n VCStepperTrigger,\n VCStepperIndicator,\n VCStepperTitle,\n VCStepperDescription,\n VCStepperSeparator,\n }).forEach(([componentName, component]) => {\n instance.component(componentName, component);\n });\n}\n\nexport default { install } satisfies Plugin<[Options?]>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["inject","inject","inject"],"sources":["../src/registry/module.ts","../src/registry/singleton.ts","../src/helpers/match.ts","../src/helpers/normalize.ts","../src/helpers/trace.ts","../src/helpers/reset.ts","../src/helpers/submenu.ts","../src/helpers/trail.ts","../src/helpers/url.ts","../src/components/items/theme.ts","../src/components/select-context.ts","../src/components/item/module.ts","../src/components/items/module.ts","../src/components/stepper/context.ts","../src/components/stepper/theme.ts","../src/components/stepper/Stepper.vue","../src/components/stepper/Stepper.vue","../src/components/stepper/StepperItem.vue","../src/components/stepper/StepperItem.vue","../src/components/stepper/StepperTrigger.vue","../src/components/stepper/StepperTrigger.vue","../src/components/stepper/StepperIndicator.vue","../src/components/stepper/StepperIndicator.vue","../src/components/stepper/StepperTitle.vue","../src/components/stepper/StepperTitle.vue","../src/components/stepper/StepperDescription.vue","../src/components/stepper/StepperDescription.vue","../src/components/stepper/StepperSeparator.vue","../src/components/stepper/StepperSeparator.vue","../src/index.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { computed, ref, shallowReactive } from 'vue';\nimport type { NavigationItemNormalized } from '../types';\nimport type { NavigationRegistryEntry } from './types';\n\ntype Occupant = {\n token: symbol;\n entry: NavigationRegistryEntry;\n};\n\nfunction createEmptyEntry(): NavigationRegistryEntry {\n const items = ref<NavigationItemNormalized[]>([]);\n return {\n items,\n active: computed(() => []),\n activeTrail: computed(() => []),\n };\n}\n\ntype NavigationRegistryUnregisterFn = () => void;\n\n/**\n * Reactive, app-wide navigation registry. `<VCNavItems registry>`\n * publishes its resolved output here under a `registry-id`; other navs\n * read it reactively + empty-safe via the resolver context's\n * `registry(id)`.\n *\n * The backing map is `shallowReactive`, so membership changes\n * (register + the returned unregister closure) are tracked dependencies\n * — a consumer reading `get(id)` inside a `computed` / `watchEffect`\n * re-runs when the id's occupancy flips.\n */\nexport class NavigationRegistry {\n protected map = shallowReactive(\n new Map<string, Occupant>(),\n );\n\n /**\n * Stable empty entries handed out for absent ids, memoized per id so\n * the SAME reactive handle is returned every call — a consumer\n * subscribed to an absent id keeps its dependency and lights up the\n * moment an occupant registers.\n */\n protected empties = new Map<string, NavigationRegistryEntry>();\n\n /**\n * Claim `id`. Last-wins: a newer occupant replaces the current one\n * (dev warning on collision). Returns a token-guarded unregister\n * closure: it releases `id` ONLY if this registration is still the\n * occupant. During a route handoff (Vue mounts the new page before\n * unmounting the old) the departing nav's closure holds a stale token\n * and cannot evict the incoming occupant.\n */\n register(id: string, entry: NavigationRegistryEntry): NavigationRegistryUnregisterFn {\n if (this.map.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(`[vuecs] navigation registry id \"${id}\" reassigned to a new occupant.`);\n }\n\n const token = Symbol('vc-nav-registry-token');\n\n this.map.set(id, { token, entry });\n\n return () => {\n const occupant = this.map.get(id);\n if (occupant && occupant.token === token) {\n this.map.delete(id);\n }\n };\n }\n\n /** Reactive, empty-safe read. Never returns `undefined`. */\n get<META = any>(id: string): NavigationRegistryEntry<META> {\n const occupant = this.map.get(id);\n if (occupant) {\n return occupant.entry as NavigationRegistryEntry<META>;\n }\n\n let empty = this.empties.get(id);\n if (!empty) {\n empty = createEmptyEntry();\n this.empties.set(id, empty);\n }\n\n return empty as NavigationRegistryEntry<META>;\n }\n\n /** True when an occupant currently holds `id`. */\n has(id: string): boolean {\n return this.map.has(id);\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { inject, provide } from '@vuecs/core';\nimport type { App } from 'vue';\nimport { NavigationRegistry } from './module';\n\nconst sym = Symbol.for('VCNavigationRegistry');\n\nexport function tryInjectNavigationRegistry(app?: App): NavigationRegistry | undefined {\n return inject<NavigationRegistry>(sym, app);\n}\n\nexport function injectNavigationRegistry(app?: App): NavigationRegistry {\n const instance = tryInjectNavigationRegistry(app);\n if (!instance) {\n throw new Error('A navigation registry has not been provided.');\n }\n\n return instance;\n}\n\nexport function provideNavigationRegistry(\n registry: NavigationRegistry = new NavigationRegistry(),\n app?: App,\n): NavigationRegistry {\n provide(sym, registry, app);\n return registry;\n}\n","import type { NavigationItemNormalized } from '../types';\n\ntype ParentMatch = {\n score: number\n};\n\ntype ItemMatchesFindOptions = {\n path?: string\n};\n\nfunction calculateItemScoreForPath(\n item: NavigationItemNormalized,\n currentPath: string,\n) {\n if (item.url === '/') {\n return 1;\n }\n\n if (item.activeMatch) {\n if (item.activeMatch === currentPath) {\n return 6;\n } if (currentPath.startsWith(item.activeMatch)) {\n return 4;\n }\n }\n\n if (item.url) {\n if (item.url === currentPath) {\n return 3;\n } if (currentPath.startsWith(item.url)) {\n return 2;\n }\n }\n\n return 0;\n}\n\nfunction findItemMatchesIF(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions,\n parent: ParentMatch,\n) {\n const output : {\n data: NavigationItemNormalized,\n score: number\n }[] = [];\n\n for (const item of items) {\n let { score } = parent;\n\n if (options.path) {\n score += calculateItemScoreForPath(item, options.path);\n }\n\n if (item.default) {\n score += 1;\n }\n\n if (item.children) {\n const childMatches = findItemMatchesIF(item.children, options, { score });\n\n output.push(...childMatches);\n }\n\n output.push({ data: item, score });\n }\n\n return output.sort((a, b) => b.score - a.score);\n}\n\nexport function findBestItemMatches(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions = {},\n) : NavigationItemNormalized[] {\n const result = findItemMatchesIF(items, options, { score: 0 });\n const [first] = result;\n if (!first) {\n return [];\n }\n\n return result\n .filter((match) => match.score === first.score)\n .map((match) => match.data);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NavigationItem, NavigationItemNormalized } from '../types';\n\nfunction normalizeItemIF(\n item: NavigationItem,\n trace: string[],\n) : NavigationItemNormalized {\n const output : NavigationItemNormalized = {\n ...item,\n children: [],\n trace: [\n ...trace,\n item.name,\n ],\n meta: item.meta || {},\n };\n\n if (!item.children) {\n return output;\n }\n\n for (let i = 0; i < item.children.length; i++) {\n output.children.push(normalizeItemIF(item.children[i], output.trace));\n }\n\n return output;\n}\n\nexport function normalizeItem(\n item: NavigationItem,\n) : NavigationItemNormalized {\n return normalizeItemIF(item, []);\n}\n\nexport function normalizeItems(\n items: NavigationItem[],\n) : NavigationItemNormalized[] {\n return items.map((item) => normalizeItem(item));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isTraceEqual(\n a: string[],\n b: string[],\n): boolean {\n if (a.length !== b.length) {\n return false;\n }\n\n for (const [i, element] of a.entries()) {\n if (element !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isTracePartOf(item: string[], parent: string[]) {\n for (const [i, element] of item.entries()) {\n if (parent[i] !== element) {\n return false;\n }\n }\n\n return true;\n}\n","import type { NavigationItemNormalized } from '../types';\nimport { isTraceEqual, isTracePartOf } from './trace';\n\nfunction resetItemsByTraceIF(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n for (const item of items) {\n const isEqual = isTraceEqual(item.trace, trace);\n item.active = isEqual;\n item.display = true;\n\n if (isEqual) {\n item.activeWithin = false;\n item.displayChildren = true;\n } else {\n const isAncestor = isTracePartOf(item.trace, trace);\n item.activeWithin = isAncestor;\n item.displayChildren = isAncestor;\n }\n\n item.children = resetItemsByTraceIF(item.children, trace);\n }\n\n return items;\n}\n\nexport function resetItemsByTrace(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n return resetItemsByTraceIF(items, trace);\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n NavigationOrientation,\n NavigationSubmenu,\n NavigationSubmenuMode,\n} from '../types';\n\n/**\n * Resolve the effective submenu presentation. An explicit `collapse` /\n * `dropdown` wins; `auto` derives from orientation — only an explicit\n * `horizontal` opts into the dropdown (NavigationMenu) path, everything\n * else collapses (Collapsible).\n */\nexport function resolveSubmenuMode(\n submenu: NavigationSubmenu | undefined,\n orientation: NavigationOrientation | undefined,\n): NavigationSubmenuMode {\n if (submenu === 'collapse' || submenu === 'dropdown') {\n return submenu;\n }\n\n return orientation === 'horizontal' ? 'dropdown' : 'collapse';\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NavigationItemNormalized } from '../types';\n\n/**\n * Walk a normalized tree along `trace` (an ordered list of item names,\n * root → leaf) and collect the item at each depth. Returns the ordered\n * active trail: `[0]` is the top-level section, `.at(-1)` is the leaf.\n */\nexport function collectTrail(\n items: NavigationItemNormalized[],\n trace: string[],\n): NavigationItemNormalized[] {\n const output: NavigationItemNormalized[] = [];\n\n let level = items;\n for (const name of trace) {\n const found = level.find((item) => item.name === name);\n if (!found) {\n break;\n }\n\n output.push(found);\n level = found.children;\n }\n\n return output;\n}\n\n/**\n * Depth-first collect of every item in the tree matching `predicate`.\n */\nexport function flattenWhere(\n items: NavigationItemNormalized[],\n predicate: (item: NavigationItemNormalized) => boolean,\n): NavigationItemNormalized[] {\n const output: NavigationItemNormalized[] = [];\n\n for (const item of items) {\n if (predicate(item)) {\n output.push(item);\n }\n\n if (item.children.length > 0) {\n output.push(...flattenWhere(item.children, predicate));\n }\n }\n\n return output;\n}\n","export function isAbsoluteURL(str: string): boolean {\n return str.substring(0, 7) === 'http://' ||\n str.substring(0, 8) === 'https://';\n}\n","import type { ComponentThemeDefinition } from '@vuecs/core';\nimport type { NavigationThemeClasses } from '../../helpers/component/types';\n\n/**\n * Default classes for the `navigation` theme entry. Shared between\n * `<VCNavItems>` (the container) and `<VCNavItem>` (the per-row\n * component) — both call `useComponentTheme('navigation', …)` with\n * the same slot defaults, so the source of truth lives here.\n */\nexport const navigationThemeDefaults: ComponentThemeDefinition<NavigationThemeClasses> = {\n classes: {\n group: 'vc-nav-items',\n item: 'vc-nav-item',\n itemNested: 'vc-nav-item-nested',\n separator: 'vc-nav-separator',\n link: 'vc-nav-link',\n linkRoot: 'vc-nav-link-root',\n linkIcon: 'vc-nav-link-icon',\n linkText: 'vc-nav-link-text',\n trigger: 'vc-nav-trigger',\n content: 'vc-nav-content',\n viewport: 'vc-nav-viewport',\n },\n variants: {\n // `list` is the default vertical/stacked look; `pills` renders the\n // items as a joined pill group (the nav-pills style). Structural CSS\n // for these markers ships in the package `assets/index.css`; palette\n // colors stay the theme's responsibility.\n variant: {\n list: {},\n pills: {\n group: 'vc-nav-items--pills',\n item: 'vc-nav-item--pills',\n link: 'vc-nav-link--pills',\n },\n },\n orientation: {\n horizontal: {},\n vertical: { group: 'vc-nav-items--vertical' },\n },\n },\n defaultVariants: {\n variant: 'list',\n orientation: 'horizontal',\n },\n};\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { NavigationItemNormalized } from '../types';\n\n/**\n * Channels a `<VCNavItem>`'s already-normalized + scored `children` down\n * to the nested `<VCNavItems>` that renders its submenu.\n *\n * The top-level nav scores the WHOLE tree once; nested lists must render\n * those results as-is rather than re-resolving / re-scoring a subtree\n * (which would clobber traces and lose whole-tree active context). The\n * nested `<VCNavItems>` reads this when it has no own `data` prop —\n * presence of the injected nodes is what marks it as a nested renderer\n * rather than a resolving root. Each `<VCNavItem>` re-provides its own\n * children, so the value is correctly scoped per nesting level.\n */\nexport const NAVIGATION_NODES_KEY: InjectionKey<ComputedRef<NavigationItemNormalized[]>> = Symbol('vc-navigation-nodes');\n\n/**\n * Bridges a clicked `<VCNavItem>` up to the owning root `<VCNavItems>`.\n *\n * A url-less item can't navigate, so a click instead \"selects\" it: the\n * root nav records the item's trace and folds it into its active-state\n * derivation, publishing it through the registry's `active` / `activeTrail`.\n * Dependent navs then react with zero app wiring — exactly as they would\n * for a route-driven active change.\n */\nexport type NavigationSelectContext = {\n /** Invoke to mark `item` as the selected (active) item of the root nav. */\n select: (item: NavigationItemNormalized) => void;\n};\n\nexport const NAVIGATION_SELECT_KEY: InjectionKey<NavigationSelectContext> = Symbol('vc-navigation-select');\n","import { hasNormalizedSlot, normalizeSlot, useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport type { LinkProperties } from '@vuecs/link';\nimport { VCLink } from '@vuecs/link';\nimport type {\n Component,\n ExtractPublicPropTypes,\n PropType,\n SlotsType,\n VNodeChild,\n} from 'vue';\nimport {\n computed,\n defineComponent,\n h,\n inject,\n provide,\n ref,\n resolveComponent,\n watch,\n} from 'vue';\nimport {\n CollapsibleContent,\n CollapsibleRoot,\n CollapsibleTrigger,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuTrigger,\n} from 'reka-ui';\nimport type {\n NavigationItemNormalized,\n NavigationOrientation,\n NavigationSubmenuMode,\n} from '../../types';\nimport type { NavigationThemeClasses } from '../../helpers/component/types';\nimport { isAbsoluteURL } from '../../helpers';\nimport { ElementType, SlotName } from '../../constants';\nimport type {\n NavItemLinkSlotProps,\n NavItemSeparatorSlotProps,\n NavItemSubItemsSlotProps,\n NavItemSubSlotProps,\n NavItemSubTitleSlotProps,\n} from '../type';\nimport { navigationThemeDefaults } from '../items/theme';\nimport { NAVIGATION_NODES_KEY, NAVIGATION_SELECT_KEY } from '../select-context';\n\nconst navItemProps = {\n data: {\n type: Object as PropType<NavigationItemNormalized>,\n required: true,\n },\n variant: {\n type: String,\n default: undefined,\n },\n orientation: {\n type: String as PropType<NavigationOrientation>,\n default: undefined,\n },\n /**\n * Resolved submenu presentation handed down by the parent\n * `<VCNavItems>`. `collapse` renders groups as an inline\n * Reka `Collapsible`; `dropdown` renders them as Reka\n * `NavigationMenu` flyouts.\n */\n submenu: {\n type: String as PropType<NavigationSubmenuMode>,\n default: 'collapse',\n },\n /**\n * The tag (or component) this item renders as — its own wrapper\n * (`<li>` by default). Receives `<VCNavItems>`' `itemAs`. Honored in\n * collapse mode only.\n */\n as: {\n type: [String, Object, Function] as PropType<string | Component>,\n default: 'li',\n },\n /**\n * The list-container tag for this item's nested submenu\n * `<VCNavItems>` (`<ul>` by default). Receives `<VCNavItems>`' `as`.\n * Honored in collapse mode only.\n */\n itemsAs: {\n type: [String, Object, Function] as PropType<string | Component>,\n default: 'ul',\n },\n themeClass: {\n type: Object as PropType<ThemeClassesOverride<NavigationThemeClasses>>,\n default: undefined,\n },\n themeVariant: {\n type: Object as PropType<VariantValues>,\n default: undefined,\n },\n};\n\nexport type NavItemProps = ExtractPublicPropTypes<typeof navItemProps>;\n\nexport const VCNavItem = defineComponent({\n name: 'VCNavItem',\n props: navItemProps,\n slots: Object as SlotsType<{\n separator: NavItemSeparatorSlotProps;\n link: NavItemLinkSlotProps;\n sub: NavItemSubSlotProps;\n 'sub-title': NavItemSubTitleSlotProps;\n 'sub-items': NavItemSubItemsSlotProps;\n }>,\n setup(props, { slots }) {\n const itemsNode = resolveComponent('VCNavItems');\n\n const themeProps: UseComponentThemeProps<NavigationThemeClasses> = {\n get themeClass() {\n return props.themeClass;\n },\n get themeVariant() {\n return {\n ...(props.themeVariant ?? {}),\n ...(props.variant !== undefined ? { variant: props.variant } : {}),\n };\n },\n };\n\n const theme = useComponentTheme('navigation', themeProps, navigationThemeDefaults);\n\n // `data` is `required: true`, so it's always present at runtime. The\n // non-null assertion is needed because `defineComponent` widens\n // required props declared via a separate `const` props object to\n // `| undefined` in `setup` under strict (a Vue/TS inference quirk —\n // inline prop objects don't exhibit it). Asserting here keeps every\n // downstream `data.value` read clean instead of scattering `!`.\n const data = computed(() => props.data!);\n const hasChildren = computed(() => data.value.children &&\n data.value.children.length > 0);\n\n // Channel this item's already-scored children down to the nested\n // `<VCNavItems>` that renders its submenu, so the child list renders\n // them as-is instead of re-resolving / re-scoring a subtree. Scoped\n // per item — each `<VCNavItem>` re-provides its own children.\n provide(NAVIGATION_NODES_KEY, computed(() => data.value.children));\n\n // Local expand state — seeded from the resolved `displayChildren`\n // (driven by active-trail matching upstream) and resynced whenever\n // that recomputes, so a path change auto-opens the active branch.\n const open = ref(!!data.value.displayChildren);\n watch(() => data.value.displayChildren, (value) => {\n open.value = !!value;\n });\n\n // Selection bubbles up to the owning root `<VCNavItems>`, which folds\n // this item's trace into its active state and republishes through the\n // registry. The primary use is url-less section switchers (a top-nav\n // tab that swaps a dependent sidebar without navigating). Items with\n // a real url also navigate; the route change then supersedes the\n // selection upstream.\n const selectContext = inject(NAVIGATION_SELECT_KEY, null);\n const select = () => {\n selectContext?.select(data.value);\n };\n\n const toggle = () => {\n open.value = !open.value;\n };\n\n // Iconify-style icon strings (e.g. `fa6-solid:home`, `lucide:plus`)\n // contain a colon. Render via the globally-registered <VCIcon> so\n // they resolve through the Iconify pipeline rather than landing as\n // raw CSS classes on a literal <i>. Legacy class-string icons\n // (`fa fa-home`, `material-icons home`) keep their <i class> rendering.\n const renderIcon = (icon: string): VNodeChild => {\n if (icon.includes(':')) {\n return h(resolveComponent('VCIcon'), { name: icon });\n }\n return h('i', { class: icon });\n };\n\n const renderTitleInner = (resolved: NavigationThemeClasses): VNodeChild[] => [\n ...(data.value.icon ?\n [h('div', { class: resolved.linkIcon || undefined }, [\n renderIcon(data.value.icon),\n ])] :\n []),\n h('div', { class: resolved.linkText || undefined }, [\n data.value.name,\n ]),\n ];\n\n const renderLeaf = (resolved: NavigationThemeClasses): VNodeChild => {\n if (hasNormalizedSlot(SlotName.LINK, slots)) {\n return normalizeSlot(SlotName.LINK, {\n data: data.value,\n select,\n isActive: data.value.active,\n }, slots);\n }\n\n const linkProps: LinkProperties = {\n active: data.value.active,\n disabled: false,\n prefetch: true,\n };\n\n if (data.value.url) {\n if (\n isAbsoluteURL(data.value.url) ||\n data.value.url.startsWith('#')\n ) {\n linkProps.href = data.value.url;\n if (data.value.urlTarget) {\n linkProps.target = data.value.urlTarget;\n }\n } else {\n linkProps.to = data.value.url;\n }\n }\n\n return h(VCLink, {\n class: [resolved.link],\n 'data-vc-collection-item': '',\n ...linkProps,\n onClicked: select,\n }, { default: () => renderTitleInner(resolved) });\n };\n\n const renderChildren = (): VNodeChild => {\n if (hasNormalizedSlot(SlotName.SUB_ITEMS, slots)) {\n return normalizeSlot(SlotName.SUB_ITEMS, {\n data: data.value,\n select,\n toggle,\n });\n }\n\n // A dropdown group's flyout panel is plain content — a list of\n // links — NOT another menu bar. Recursing with `submenu=\"dropdown\"`\n // would nest a second `NavigationMenuRoot` inside this root's\n // `NavigationMenuContent`; Reka's NavigationMenu is built around a\n // SINGLE root per bar, and nesting roots breaks the hover state\n // machine (the panel only opens on the first hover and never\n // reopens). Rendering the panel contents in `collapse` mode keeps\n // them a plain `<ul>` of links, so deeper groups degrade to inline\n // collapsibles within the flyout instead of buggy sub-roots.\n // No `data`: the nested list reads this item's children via the\n // NAVIGATION_NODES_KEY inject provided in setup above.\n return h(itemsNode, {\n variant: props.variant,\n orientation: props.orientation,\n submenu: props.submenu === 'dropdown' ? 'collapse' : props.submenu,\n as: props.itemsAs,\n itemAs: props.as,\n themeClass: props.themeClass,\n themeVariant: props.themeVariant,\n });\n };\n\n return () => {\n const resolved = theme.value;\n const isDropdown = props.submenu === 'dropdown';\n const isActive = data.value.active || data.value.activeWithin;\n\n // type: separator\n if (data.value.type === ElementType.SEPARATOR) {\n const body = hasNormalizedSlot(SlotName.SEPARATOR, slots) ?\n normalizeSlot(SlotName.SEPARATOR, { data: data.value }, slots) :\n h('div', { class: resolved.separator || undefined }, data.value.name);\n\n if (isDropdown) {\n return h(NavigationMenuItem, { class: [resolved.item] }, { default: () => body });\n }\n return h(props.as, { class: [resolved.item] }, [body]);\n }\n\n // type: link (no children)\n if (!hasChildren.value) {\n const leaf = renderLeaf(resolved);\n\n if (isDropdown) {\n return h(NavigationMenuItem, {\n class: [resolved.item],\n 'data-active': data.value.active ? '' : undefined,\n }, {\n default: () => h(NavigationMenuLink, {\n active: data.value.active,\n asChild: true,\n }, { default: () => leaf }),\n });\n }\n\n return h(props.as, {\n class: [resolved.item, { active: data.value.active }],\n 'data-active': data.value.active ? '' : undefined,\n }, [leaf]);\n }\n\n // type: group with children — full-override slot bypasses the\n // Collapsible / NavigationMenu machinery entirely.\n if (hasNormalizedSlot(SlotName.SUB, slots)) {\n const body = normalizeSlot(SlotName.SUB, {\n data: data.value,\n select,\n toggle,\n }, slots);\n\n if (isDropdown) {\n return h(NavigationMenuItem, {\n class: [resolved.item, resolved.itemNested],\n 'data-active': isActive ? '' : undefined,\n }, { default: () => body });\n }\n return h(props.as, {\n class: [resolved.item, resolved.itemNested, { active: isActive }],\n 'data-active': isActive ? '' : undefined,\n }, [body]);\n }\n\n const title = hasNormalizedSlot(SlotName.SUB_TITLE, slots) ?\n normalizeSlot(SlotName.SUB_TITLE, {\n data: data.value,\n select,\n toggle,\n }) :\n renderTitleInner(resolved);\n\n // dropdown: Reka NavigationMenu flyout\n if (isDropdown) {\n return h(NavigationMenuItem, {\n class: [resolved.item, resolved.itemNested],\n 'data-active': isActive ? '' : undefined,\n }, {\n default: () => [\n h(NavigationMenuTrigger, {\n class: resolved.trigger || undefined,\n 'data-vc-collection-item': '',\n 'data-active': isActive ? '' : undefined,\n }, { default: () => title }),\n // Re-invoke `renderChildren()` per mount: Reka's\n // NavigationMenuContent unmounts on close and remounts on\n // reopen (unmountOnHide). A VNode can only be rendered\n // once, so handing back a pre-computed tree renders an\n // EMPTY flyout on the second open. The thunk produces a\n // fresh subtree each time the content mounts.\n h(NavigationMenuContent, { class: resolved.content || undefined }, { default: () => renderChildren() }),\n ],\n });\n }\n\n // collapse: inline Reka Collapsible\n return h(CollapsibleRoot, {\n as: props.as,\n class: [\n resolved.item,\n resolved.itemNested,\n { active: data.value.active || open.value },\n ],\n 'data-active': isActive ? '' : undefined,\n open: open.value,\n 'onUpdate:open': (value: boolean) => {\n open.value = value;\n },\n }, {\n default: () => [\n h(CollapsibleTrigger, {\n class: resolved.trigger || undefined,\n 'data-vc-collection-item': '',\n 'data-active': isActive ? '' : undefined,\n }, { default: () => title }),\n h(CollapsibleContent, { class: resolved.content || undefined }, { default: () => renderChildren() }),\n ],\n });\n };\n },\n});\n","import {\n hasNormalizedSlot,\n isPromise,\n normalizeSlot,\n useArrowNavigation,\n useComponentTheme,\n} from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport type {\n Component,\n ExtractPublicPropTypes,\n PropType,\n SlotsType,\n VNodeArrayChildren,\n VNodeChild,\n WatchSource,\n} from 'vue';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n inject,\n onMounted,\n onUnmounted,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue';\nimport { NavigationMenuList, NavigationMenuRoot } from 'reka-ui';\nimport { SlotName } from '../../constants';\nimport type {\n NavigationItem,\n NavigationItemNormalized,\n NavigationOrientation,\n NavigationResolver,\n NavigationSubmenu,\n} from '../../types';\nimport type { NavigationThemeClasses } from '../../helpers/component/types';\nimport {\n collectTrail,\n findBestItemMatches,\n flattenWhere,\n normalizeItems,\n resetItemsByTrace,\n resolveSubmenuMode,\n} from '../../helpers';\nimport { NavigationRegistry, tryInjectNavigationRegistry } from '../../registry';\nimport { VCNavItem } from '../item';\nimport { NAVIGATION_NODES_KEY, NAVIGATION_SELECT_KEY } from '../select-context';\nimport type { NavItemsItemSlotProps } from '../type';\nimport { navigationThemeDefaults } from './theme';\n\nconst navItemsProps = {\n /**\n * The source of this nav's items. Plain array, sync fn, or async fn.\n * A fn receives a NavigationResolverContext and may read reactive\n * state freely — the nav re-runs it automatically when that state\n * changes.\n *\n * When omitted, the nav checks whether it is a nested submenu of a\n * parent `<VCNavItem>` (via the {@link NAVIGATION_NODES_KEY} inject)\n * and, if so, renders that parent's already-scored children as-is.\n */\n data: {\n type: [Array, Function] as PropType<NavigationItem[] | NavigationResolver>,\n default: undefined,\n },\n /** Opt in to publishing this nav's resolved output into the registry. */\n registry: { type: Boolean, default: false },\n /** The key under which to publish. Required when `registry` is true. */\n registryId: { type: String, default: undefined },\n /**\n * Current path for active-state matching. When omitted, the nav softly\n * reads vue-router's current route (via the `$route` global property)\n * if a router is installed; router-free apps simply get `undefined`.\n */\n path: { type: String, default: undefined },\n /**\n * Extra reactive deps that should retrigger the resolver — for state\n * read only AFTER the first `await` in an async resolver (auto-track\n * can't see past an await).\n */\n watch: { type: Array as PropType<WatchSource[]>, default: undefined },\n variant: { type: String, default: undefined },\n orientation: { type: String as PropType<NavigationOrientation>, default: undefined },\n /**\n * How items with children render their submenu. `auto` derives from\n * orientation (horizontal → dropdown, otherwise collapse).\n */\n submenu: { type: String as PropType<NavigationSubmenu>, default: 'auto' },\n /**\n * The tag (or component) for this nav's list container. Defaults to\n * `'ul'`. Forwarded unchanged to every nesting level so the whole tree\n * renders the same container tag. Honored in collapse mode only —\n * dropdown mode keeps Reka's NavigationMenu primitives.\n */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'ul' },\n /**\n * The tag (or component) for each item wrapper. Defaults to `'li'`.\n * Forwarded unchanged to every nesting level. Honored in collapse mode\n * only — dropdown mode keeps Reka's NavigationMenu primitives.\n */\n itemAs: { type: [String, Object, Function] as PropType<string | Component>, default: 'li' },\n themeClass: { type: Object as PropType<ThemeClassesOverride<NavigationThemeClasses>>, default: undefined },\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type NavItemsProps = ExtractPublicPropTypes<typeof navItemsProps>;\n\nexport const VCNavItems = defineComponent({\n name: 'VCNavItems',\n props: navItemsProps,\n slots: Object as SlotsType<{\n item: NavItemsItemSlotProps;\n }>,\n setup(props, { slots, expose }) {\n // Merge the convenience `variant` prop into themeVariant before\n // resolution so themes can drive slot classes off it. Getter keeps\n // it reactive (computed() inside useComponentTheme tracks the read).\n const themeProps: UseComponentThemeProps<NavigationThemeClasses> = {\n get themeClass() {\n return props.themeClass;\n },\n get themeVariant() {\n return {\n ...(props.themeVariant ?? {}),\n ...(props.variant !== undefined ? { variant: props.variant } : {}),\n ...(props.orientation !== undefined ? { orientation: props.orientation } : {}),\n };\n },\n };\n\n const theme = useComponentTheme('navigation', themeProps, navigationThemeDefaults);\n\n const rootRef = ref<HTMLUListElement | null>(null);\n\n const onKeyDown = (event: KeyboardEvent) => {\n useArrowNavigation(\n event,\n event.target as HTMLElement | null,\n rootRef.value,\n {\n arrowKeyOptions: 'vertical',\n focus: true,\n loop: true,\n },\n );\n };\n\n // Registry is empty-safe: a standalone nav (no plugin installed)\n // falls back to a local empty registry so `registry(id)` still works.\n const registry = tryInjectNavigationRegistry() ?? new NavigationRegistry();\n\n // Soft vue-router lookup: vue-router installs a reactive `$route`\n // getter on `globalProperties`. Reading it inside a computed tracks\n // route changes without a static `vue-router` import, so router-free\n // apps degrade to `undefined` instead of failing to resolve the\n // module. An explicit `:path` prop always wins.\n const globals = getCurrentInstance()?.appContext.config.globalProperties;\n const currentPath = computed<string | undefined>(() => {\n if (typeof props.path !== 'undefined') {\n return props.path;\n }\n const route = globals?.$route as { path?: string } | undefined;\n return route?.path;\n });\n\n // Nested submenu detection: a parent `<VCNavItem>` provides its\n // already-scored children via NAVIGATION_NODES_KEY. When this nav\n // has no own `data` and such nodes are present, it is a nested\n // renderer — it skips resolving / scoring / select / registry and\n // just renders the provided subtree. An explicit `data` always\n // wins (treated as a resolving root even when nested in markup).\n const injectedNodes = inject(NAVIGATION_NODES_KEY, null);\n const isNested = computed(() => typeof props.data === 'undefined' && injectedNodes !== null);\n\n // --- click-driven selection (url-less section switchers) ---\n // A url-less item can't navigate, so a click \"selects\" it instead:\n // we record its trace and fold it into active-state derivation\n // below, publishing it through the registry like a route change.\n // Only a root nav holds this state and provides the bridge —\n // nested `<VCNavItems>` let the click bubble up to their owning root.\n const selectedTrace = ref<string[] | null>(null);\n if (!isNested.value) {\n provide(NAVIGATION_SELECT_KEY, {\n select: (item) => {\n selectedTrace.value = item.trace;\n },\n });\n // A real navigation supersedes a prior selection: once the\n // route changes, hand active-state back to path matching.\n watch(currentPath, () => {\n selectedTrace.value = null;\n });\n }\n\n // --- resolver + reactivity (root mode only; nested bypasses) ---\n const raw = ref<NavigationItem[]>([]);\n // Monotonic run token: overlapping async resolvers can settle out of\n // order, so only the latest invocation is allowed to write `raw.value`\n // — a slower earlier run must not clobber a fresher result.\n let runToken = 0;\n\n async function run() {\n const token = ++runToken;\n const value = typeof props.data === 'function' ?\n props.data({\n path: currentPath.value,\n registry: (id: string) => registry.get(id),\n }) :\n (props.data ?? []);\n\n if (!isPromise(value)) {\n raw.value = value ?? [];\n return;\n }\n\n try {\n const awaited = (await value) ?? [];\n if (token === runToken) {\n raw.value = awaited;\n }\n } catch (error) {\n // Without this, a rejected resolver surfaces as an unhandled\n // rejection from the watcher effect. Only the latest run logs.\n if (token === runToken) {\n // eslint-disable-next-line no-console\n console.error('[vuecs] <VCNavItems> resolver rejected:', error);\n }\n }\n }\n\n if (!isNested.value) {\n // Auto-track: reactive reads in `run` BEFORE the first await retrigger it.\n watchEffect(run);\n // Escape hatch for state read AFTER an await:\n if (props.watch) {\n watch(props.watch, run);\n }\n }\n\n // Imperative escape hatch:\n expose({ refresh: run });\n\n // --- normalized + tree-wide scored derivation ---\n const resolved = computed<{ items: NavigationItemNormalized[]; trace: string[] }>(() => {\n if (isNested.value && injectedNodes) {\n return { items: injectedNodes.value, trace: [] };\n }\n\n const normalized = normalizeItems(raw.value);\n const [match] = findBestItemMatches(normalized, { path: currentPath.value });\n // A click-driven selection (url-less switcher) overrides the\n // path match until the next real navigation clears it.\n const trace = selectedTrace.value ?? (match ? match.trace : []);\n // sets per item: .active (exact) AND .activeWithin (ancestor)\n resetItemsByTrace(normalized, trace);\n return { items: normalized, trace };\n });\n\n const tree = computed(() => resolved.value.items);\n const active = computed(() => flattenWhere(tree.value, (item) => !!item.active));\n const activeTrail = computed(() => collectTrail(tree.value, resolved.value.trace));\n\n // --- registry publish (opt-in, lifecycle-bound) ---\n if (props.registry) {\n let unsubscribeFn : (() => void) | undefined;\n\n const entry = {\n items: tree,\n active,\n activeTrail,\n };\n\n onMounted(() => {\n if (!props.registryId) {\n // eslint-disable-next-line no-console\n console.warn('[vuecs] <VCNavItems registry> requires a `registry-id`.');\n return;\n }\n unsubscribeFn = registry.register(props.registryId, entry);\n });\n onUnmounted(() => {\n if (!props.registryId || !unsubscribeFn) {\n return;\n }\n\n unsubscribeFn();\n });\n }\n\n const submenuMode = computed(() => resolveSubmenuMode(props.submenu, props.orientation));\n\n return () => {\n const resolvedTheme = theme.value;\n const vNodes: VNodeArrayChildren = [];\n\n for (let i = 0; i < tree.value.length; i++) {\n const item = tree.value[i];\n if (!item.display && !item.displayChildren) {\n continue;\n }\n\n let vNode: VNodeChild;\n if (hasNormalizedSlot(SlotName.ITEM, slots)) {\n vNode = normalizeSlot(SlotName.ITEM, { data: item }, slots);\n } else {\n vNode = h(\n VCNavItem,\n {\n key: item.trace.join('/') || i,\n data: item,\n variant: props.variant,\n orientation: props.orientation,\n submenu: submenuMode.value,\n as: props.itemAs,\n itemsAs: props.as,\n themeClass: props.themeClass,\n themeVariant: props.themeVariant,\n },\n );\n }\n\n vNodes.push(vNode);\n }\n\n // Dropdown mode wraps the list in Reka's NavigationMenu so group\n // triggers get flyout machinery (hover-grace, edge-aware content,\n // arrow-key nav). Collapse mode stays a plain <ul> and wires our\n // own arrow-navigation on the root.\n if (submenuMode.value === 'dropdown') {\n return h(\n NavigationMenuRoot,\n { orientation: 'horizontal' },\n {\n default: () => h(\n NavigationMenuList,\n { class: resolvedTheme.group || undefined },\n { default: () => vNodes },\n ),\n },\n );\n }\n\n const isRoot = !isNested.value;\n\n return h(\n props.as,\n {\n class: resolvedTheme.group || undefined,\n ...(isRoot ?\n { ref: rootRef, onKeydown: onKeyDown } :\n {}),\n },\n vNodes,\n );\n };\n },\n});\n","import type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { ThemeClassesOverride, VariantValues } from '@vuecs/core';\nimport type { StepperThemeClasses } from './types';\n\n/**\n * Context shared from `<VCStepper>` to its descendant parts so that\n * theme-class and theme-variant values applied to the root propagate\n * automatically to indicator / title / description / separator / item /\n * trigger without the consumer having to repeat the props on every\n * child. Per-instance values on a child still win over inherited ones.\n *\n * Optional — children render bare (without inherited theme values) when\n * mounted outside `<VCStepper>` for unit tests / Storybook.\n */\nexport type StepperContext = {\n themeClass: () => ThemeClassesOverride<StepperThemeClasses> | undefined;\n themeVariant: () => VariantValues | undefined;\n};\n\nconst STEPPER_CONTEXT_KEY: InjectionKey<StepperContext> = Symbol('vcStepperContext');\n\nexport function provideStepperContext(ctx: StepperContext): void {\n provide(STEPPER_CONTEXT_KEY, ctx);\n}\n\nexport function useStepperContext(): StepperContext | null {\n return inject(STEPPER_CONTEXT_KEY, null);\n}\n","import type { ComponentThemeDefinition } from '@vuecs/core';\nimport type { StepperThemeClasses } from './types';\n\nexport const stepperThemeDefaults: ComponentThemeDefinition<StepperThemeClasses> = {\n classes: {\n root: 'vc-stepper',\n item: 'vc-stepper-item',\n trigger: 'vc-stepper-trigger',\n indicator: 'vc-stepper-indicator',\n title: 'vc-stepper-title',\n description: 'vc-stepper-description',\n separator: 'vc-stepper-separator',\n },\n};\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperRoot } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, VariantValues } from '@vuecs/core';\nimport { provideStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperProps = {\n /** Active step (1-based). v-modeled. */\n modelValue: { type: Number, default: undefined },\n /** Initial active step for uncontrolled usage. */\n defaultValue: { type: Number, default: 1 },\n /** Layout direction. */\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n /** Reading direction. Falls back to the ConfigManager's `dir` value when omitted. */\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n /** When `true`, steps must be completed in order — Reka blocks navigation past the next incomplete step. */\n linear: { type: Boolean, default: true },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperProps = ExtractPublicPropTypes<typeof stepperProps>;\n\nexport default defineComponent({\n name: 'VCStepper',\n inheritAttrs: false,\n props: stepperProps,\n emits: ['update:modelValue'],\n setup(props, {\n attrs,\n slots,\n emit,\n }) {\n // Propagate theme-class + theme-variant to descendant indicator /\n // title / description / separator / item / trigger parts so a single\n // `<VCStepper :theme-variant=\"{ size: 'sm' }\">` resizes the whole\n // stepper, and `:theme-class=\"{ indicator: 'ring-2' }\">` skins every\n // indicator. Children fall back to their own per-instance values\n // when the consumer wants to override them.\n provideStepperContext({\n themeClass: () => props.themeClass,\n themeVariant: () => props.themeVariant,\n });\n const theme = useComponentTheme('stepper', props, stepperThemeDefaults);\n return () => h(\n StepperRoot,\n mergeProps(attrs, {\n modelValue: props.modelValue,\n defaultValue: props.defaultValue,\n orientation: props.orientation,\n dir: props.dir,\n linear: props.linear,\n 'onUpdate:modelValue': (value: number | undefined) => emit('update:modelValue', value),\n class: theme.value.root || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperRoot } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, VariantValues } from '@vuecs/core';\nimport { provideStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperProps = {\n /** Active step (1-based). v-modeled. */\n modelValue: { type: Number, default: undefined },\n /** Initial active step for uncontrolled usage. */\n defaultValue: { type: Number, default: 1 },\n /** Layout direction. */\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n /** Reading direction. Falls back to the ConfigManager's `dir` value when omitted. */\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n /** When `true`, steps must be completed in order — Reka blocks navigation past the next incomplete step. */\n linear: { type: Boolean, default: true },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperProps = ExtractPublicPropTypes<typeof stepperProps>;\n\nexport default defineComponent({\n name: 'VCStepper',\n inheritAttrs: false,\n props: stepperProps,\n emits: ['update:modelValue'],\n setup(props, {\n attrs,\n slots,\n emit,\n }) {\n // Propagate theme-class + theme-variant to descendant indicator /\n // title / description / separator / item / trigger parts so a single\n // `<VCStepper :theme-variant=\"{ size: 'sm' }\">` resizes the whole\n // stepper, and `:theme-class=\"{ indicator: 'ring-2' }\">` skins every\n // indicator. Children fall back to their own per-instance values\n // when the consumer wants to override them.\n provideStepperContext({\n themeClass: () => props.themeClass,\n themeVariant: () => props.themeVariant,\n });\n const theme = useComponentTheme('stepper', props, stepperThemeDefaults);\n return () => h(\n StepperRoot,\n mergeProps(attrs, {\n modelValue: props.modelValue,\n defaultValue: props.defaultValue,\n orientation: props.orientation,\n dir: props.dir,\n linear: props.linear,\n 'onUpdate:modelValue': (value: number | undefined) => emit('update:modelValue', value),\n class: theme.value.root || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType, SlotsType } from 'vue';\nimport { StepperItem } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nexport type StepperItemSlotProps = {\n state: 'active' | 'completed' | 'inactive';\n};\n\nconst stepperItemProps = {\n /** 1-based step index. Required by Reka — used to determine completion / active state. */\n step: { type: Number, required: true },\n /** Block interaction with this step. */\n disabled: { type: Boolean, default: false },\n /** Force completion state. Reka derives this automatically when `false`. */\n completed: { type: Boolean, default: false },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperItemProps = ExtractPublicPropTypes<typeof stepperItemProps>;\n\nexport default defineComponent({\n name: 'VCStepperItem',\n inheritAttrs: false,\n props: stepperItemProps,\n slots: Object as SlotsType<{\n default: StepperItemSlotProps;\n }>,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperItem,\n // `step` is required on StepperItem; vue-tsc loses that\n // through `mergeProps`'s untyped `Data` return, so we pass\n // it as a direct prop (and merge attrs separately for\n // pass-through HTML attrs / data-* / class composition).\n // The `group` utility scopes child\n // `group-data-[state=...]:` selectors in theme-tailwind so\n // child indicators / titles can react to the parent step's\n // state without explicit attribute wiring on every child.\n {\n // `step` is `required: true`; the `!` counters the\n // separate-const props widening to `| undefined` under strict.\n step: props.step!,\n disabled: props.disabled,\n completed: props.completed,\n ...mergeProps(attrs, { class: ['group', theme.value.item || undefined] }),\n },\n { default: ({ state }: StepperItemSlotProps) => slots.default?.({ state }) },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { ExtractPublicPropTypes, PropType, SlotsType } from 'vue';\nimport { StepperItem } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nexport type StepperItemSlotProps = {\n state: 'active' | 'completed' | 'inactive';\n};\n\nconst stepperItemProps = {\n /** 1-based step index. Required by Reka — used to determine completion / active state. */\n step: { type: Number, required: true },\n /** Block interaction with this step. */\n disabled: { type: Boolean, default: false },\n /** Force completion state. Reka derives this automatically when `false`. */\n completed: { type: Boolean, default: false },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperItemProps = ExtractPublicPropTypes<typeof stepperItemProps>;\n\nexport default defineComponent({\n name: 'VCStepperItem',\n inheritAttrs: false,\n props: stepperItemProps,\n slots: Object as SlotsType<{\n default: StepperItemSlotProps;\n }>,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperItem,\n // `step` is required on StepperItem; vue-tsc loses that\n // through `mergeProps`'s untyped `Data` return, so we pass\n // it as a direct prop (and merge attrs separately for\n // pass-through HTML attrs / data-* / class composition).\n // The `group` utility scopes child\n // `group-data-[state=...]:` selectors in theme-tailwind so\n // child indicators / titles can react to the parent step's\n // state without explicit attribute wiring on every child.\n {\n // `step` is `required: true`; the `!` counters the\n // separate-const props widening to `| undefined` under strict.\n step: props.step!,\n disabled: props.disabled,\n completed: props.completed,\n ...mergeProps(attrs, { class: ['group', theme.value.item || undefined] }),\n },\n { default: ({ state }: StepperItemSlotProps) => slots.default?.({ state }) },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTrigger } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTriggerProps = {\n /** Render the consumer's slot child as the trigger root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'button' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTriggerProps = ExtractPublicPropTypes<typeof stepperTriggerProps>;\n\nexport default defineComponent({\n name: 'VCStepperTrigger',\n inheritAttrs: false,\n props: stepperTriggerProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTrigger,\n mergeProps(\n // Default to type=\"button\" only when rendering a real\n // <button>; otherwise it'd submit any wrapping <form>.\n // Consumer's `attrs` still wins because mergeProps gives\n // later objects precedence on `type`.\n props.as === 'button' ? { type: 'button' } : {},\n attrs,\n {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.trigger || undefined,\n },\n ),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTrigger } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTriggerProps = {\n /** Render the consumer's slot child as the trigger root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'button' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTriggerProps = ExtractPublicPropTypes<typeof stepperTriggerProps>;\n\nexport default defineComponent({\n name: 'VCStepperTrigger',\n inheritAttrs: false,\n props: stepperTriggerProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTrigger,\n mergeProps(\n // Default to type=\"button\" only when rendering a real\n // <button>; otherwise it'd submit any wrapping <form>.\n // Consumer's `attrs` still wins because mergeProps gives\n // later objects precedence on `type`.\n props.as === 'button' ? { type: 'button' } : {},\n attrs,\n {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.trigger || undefined,\n },\n ),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperIndicator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperIndicatorProps = {\n /** Render the consumer's slot child as the indicator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperIndicatorProps = ExtractPublicPropTypes<typeof stepperIndicatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperIndicator',\n inheritAttrs: false,\n props: stepperIndicatorProps,\n setup(props, { attrs, slots }) {\n // Inherit theme-variant (notably `size`) from the parent <VCStepper>\n // so the consumer doesn't have to repeat `:theme-variant` on every\n // indicator. Per-instance `props.themeVariant` still wins.\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperIndicator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.indicator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperIndicator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperIndicatorProps = {\n /** Render the consumer's slot child as the indicator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperIndicatorProps = ExtractPublicPropTypes<typeof stepperIndicatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperIndicator',\n inheritAttrs: false,\n props: stepperIndicatorProps,\n setup(props, { attrs, slots }) {\n // Inherit theme-variant (notably `size`) from the parent <VCStepper>\n // so the consumer doesn't have to repeat `:theme-variant` on every\n // indicator. Per-instance `props.themeVariant` still wins.\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperIndicator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.indicator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTitle } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTitleProps = {\n /** Render the consumer's slot child as the title root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'h4' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTitleProps = ExtractPublicPropTypes<typeof stepperTitleProps>;\n\nexport default defineComponent({\n name: 'VCStepperTitle',\n inheritAttrs: false,\n props: stepperTitleProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTitle,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.title || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperTitle } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperTitleProps = {\n /** Render the consumer's slot child as the title root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'h4' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperTitleProps = ExtractPublicPropTypes<typeof stepperTitleProps>;\n\nexport default defineComponent({\n name: 'VCStepperTitle',\n inheritAttrs: false,\n props: stepperTitleProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperTitle,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.title || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperDescription } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperDescriptionProps = {\n /** Render the consumer's slot child as the description root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'p' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperDescriptionProps = ExtractPublicPropTypes<typeof stepperDescriptionProps>;\n\nexport default defineComponent({\n name: 'VCStepperDescription',\n inheritAttrs: false,\n props: stepperDescriptionProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperDescription,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.description || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperDescription } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperDescriptionProps = {\n /** Render the consumer's slot child as the description root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'p' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperDescriptionProps = ExtractPublicPropTypes<typeof stepperDescriptionProps>;\n\nexport default defineComponent({\n name: 'VCStepperDescription',\n inheritAttrs: false,\n props: stepperDescriptionProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperDescription,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.description || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperSeparator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperSeparatorProps = {\n /** Render the consumer's slot child as the separator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperSeparatorProps = ExtractPublicPropTypes<typeof stepperSeparatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperSeparator',\n inheritAttrs: false,\n props: stepperSeparatorProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperSeparator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.separator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { defineComponent, h, mergeProps } from 'vue';\nimport type { Component, ExtractPublicPropTypes, PropType } from 'vue';\nimport { StepperSeparator } from 'reka-ui';\nimport { useComponentTheme } from '@vuecs/core';\nimport type { ThemeClassesOverride, UseComponentThemeProps, VariantValues } from '@vuecs/core';\nimport { useStepperContext } from './context';\nimport { stepperThemeDefaults } from './theme';\nimport type { StepperThemeClasses } from './types';\n\nconst stepperSeparatorProps = {\n /** Render the consumer's slot child as the separator root (Reka `asChild` pattern). */\n asChild: { type: Boolean, default: false },\n /** HTML tag to render. */\n as: { type: [String, Object, Function] as PropType<string | Component>, default: 'div' },\n /** Theme-class overrides for this component instance. */\n themeClass: { type: Object as PropType<ThemeClassesOverride<StepperThemeClasses>>, default: undefined },\n /** Theme-variant values for this component instance. */\n themeVariant: { type: Object as PropType<VariantValues>, default: undefined },\n};\n\nexport type StepperSeparatorProps = ExtractPublicPropTypes<typeof stepperSeparatorProps>;\n\nexport default defineComponent({\n name: 'VCStepperSeparator',\n inheritAttrs: false,\n props: stepperSeparatorProps,\n setup(props, { attrs, slots }) {\n const ctx = useStepperContext();\n const themeProps: UseComponentThemeProps<StepperThemeClasses> = {\n get themeClass() { return { ...(ctx?.themeClass() ?? {}), ...(props.themeClass ?? {}) }; },\n get themeVariant() {\n return { ...(ctx?.themeVariant() ?? {}), ...(props.themeVariant ?? {}) };\n },\n };\n const theme = useComponentTheme('stepper', themeProps, stepperThemeDefaults);\n return () => h(\n StepperSeparator,\n mergeProps(attrs, {\n as: props.as,\n asChild: props.asChild,\n class: theme.value.separator || undefined,\n }),\n { default: () => slots.default?.() },\n );\n },\n});\n</script>\n","import { installDefaultsManager, installThemeManager } from '@vuecs/core';\nimport type { App, Plugin } from 'vue';\n\nimport '../assets/index.css';\nimport './vue';\nimport { NavigationRegistry, provideNavigationRegistry } from './registry';\n\nimport {\n VCNavItem,\n VCNavItems,\n VCStepper,\n VCStepperDescription,\n VCStepperIndicator,\n VCStepperItem,\n VCStepperSeparator,\n VCStepperTitle,\n VCStepperTrigger,\n} from './components';\nimport type { Options } from './types';\n\nexport * from './components';\nexport * from './registry';\nexport * from './types';\n\nexport function install(instance: App, options: Options = {}): void {\n provideNavigationRegistry(new NavigationRegistry(), instance);\n\n installThemeManager(instance, options);\n installDefaultsManager(instance, options);\n\n Object.entries({\n VCNavItem,\n VCNavItems,\n VCStepper,\n VCStepperItem,\n VCStepperTrigger,\n VCStepperIndicator,\n VCStepperTitle,\n VCStepperDescription,\n VCStepperSeparator,\n }).forEach(([componentName, component]) => {\n instance.component(componentName, component);\n });\n}\n\nexport default { install } satisfies Plugin<[Options?]>;\n"],"mappings":";;;;;AAgBA,SAAS,mBAA4C;CAEjD,OAAO;EACH,OAFU,IAAgC,CAAC,CAEvC;EACJ,QAAQ,eAAe,CAAC,CAAC;EACzB,aAAa,eAAe,CAAC,CAAC;CAClC;AACJ;;;;;;;;;;;;AAeA,IAAa,qBAAb,MAAgC;CAC5B,MAAgB,gCACZ,IAAI,IAAsB,CAC9B;;;;;;;CAQA,0BAAoB,IAAI,IAAqC;;;;;;;;;CAU7D,SAAS,IAAY,OAAgE;EACjF,IAAI,KAAK,IAAI,IAAI,EAAE,GAEf,QAAQ,KAAK,mCAAmC,GAAG,gCAAgC;EAGvF,MAAM,QAAQ,OAAO,uBAAuB;EAE5C,KAAK,IAAI,IAAI,IAAI;GAAE;GAAO;EAAM,CAAC;EAEjC,aAAa;GACT,MAAM,WAAW,KAAK,IAAI,IAAI,EAAE;GAChC,IAAI,YAAY,SAAS,UAAU,OAC/B,KAAK,IAAI,OAAO,EAAE;EAE1B;CACJ;;CAGA,IAAgB,IAA2C;EACvD,MAAM,WAAW,KAAK,IAAI,IAAI,EAAE;EAChC,IAAI,UACA,OAAO,SAAS;EAGpB,IAAI,QAAQ,KAAK,QAAQ,IAAI,EAAE;EAC/B,IAAI,CAAC,OAAO;GACR,QAAQ,iBAAiB;GACzB,KAAK,QAAQ,IAAI,IAAI,KAAK;EAC9B;EAEA,OAAO;CACX;;CAGA,IAAI,IAAqB;EACrB,OAAO,KAAK,IAAI,IAAI,EAAE;CAC1B;AACJ;;;ACtFA,MAAM,MAAM,OAAO,IAAI,sBAAsB;AAE7C,SAAgB,4BAA4B,KAA2C;CACnF,OAAO,OAA2B,KAAK,GAAG;AAC9C;AAEA,SAAgB,yBAAyB,KAA+B;CACpE,MAAM,WAAW,4BAA4B,GAAG;CAChD,IAAI,CAAC,UACD,MAAM,IAAI,MAAM,8CAA8C;CAGlE,OAAO;AACX;AAEA,SAAgB,0BACZ,WAA+B,IAAI,mBAAmB,GACtD,KACkB;CAClB,QAAQ,KAAK,UAAU,GAAG;CAC1B,OAAO;AACX;;;ACtBA,SAAS,0BACL,MACA,aACF;CACE,IAAI,KAAK,QAAQ,KACb,OAAO;CAGX,IAAI,KAAK,aAAa;EAClB,IAAI,KAAK,gBAAgB,aACrB,OAAO;EACT,IAAI,YAAY,WAAW,KAAK,WAAW,GACzC,OAAO;CAEf;CAEA,IAAI,KAAK,KAAK;EACV,IAAI,KAAK,QAAQ,aACb,OAAO;EACT,IAAI,YAAY,WAAW,KAAK,GAAG,GACjC,OAAO;CAEf;CAEA,OAAO;AACX;AAEA,SAAS,kBACL,OACA,SACA,QACF;CACE,MAAM,SAGA,CAAC;CAEP,KAAK,MAAM,QAAQ,OAAO;EACtB,IAAI,EAAE,UAAU;EAEhB,IAAI,QAAQ,MACR,SAAS,0BAA0B,MAAM,QAAQ,IAAI;EAGzD,IAAI,KAAK,SACL,SAAS;EAGb,IAAI,KAAK,UAAU;GACf,MAAM,eAAe,kBAAkB,KAAK,UAAU,SAAS,EAAE,MAAM,CAAC;GAExE,OAAO,KAAK,GAAG,YAAY;EAC/B;EAEA,OAAO,KAAK;GAAE,MAAM;GAAM;EAAM,CAAC;CACrC;CAEA,OAAO,OAAO,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAClD;AAEA,SAAgB,oBACZ,OACA,UAAkC,CAAC,GACR;CAC3B,MAAM,SAAS,kBAAkB,OAAO,SAAS,EAAE,OAAO,EAAE,CAAC;CAC7D,MAAM,CAAC,SAAS;CAChB,IAAI,CAAC,OACD,OAAO,CAAC;CAGZ,OAAO,OACF,QAAQ,UAAU,MAAM,UAAU,MAAM,KAAK,CAAC,CAC9C,KAAK,UAAU,MAAM,IAAI;AAClC;;;AC1EA,SAAS,gBACL,MACA,OACyB;CACzB,MAAM,SAAoC;EACtC,GAAG;EACH,UAAU,CAAC;EACX,OAAO,CACH,GAAG,OACH,KAAK,IACT;EACA,MAAM,KAAK,QAAQ,CAAC;CACxB;CAEA,IAAI,CAAC,KAAK,UACN,OAAO;CAGX,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KACtC,OAAO,SAAS,KAAK,gBAAgB,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC;CAGxE,OAAO;AACX;AAEA,SAAgB,cACZ,MACyB;CACzB,OAAO,gBAAgB,MAAM,CAAC,CAAC;AACnC;AAEA,SAAgB,eACZ,OAC2B;CAC3B,OAAO,MAAM,KAAK,SAAS,cAAc,IAAI,CAAC;AAClD;;;ACrCA,SAAgB,aACZ,GACA,GACO;CACP,IAAI,EAAE,WAAW,EAAE,QACf,OAAO;CAGX,KAAK,MAAM,CAAC,GAAG,YAAY,EAAE,QAAQ,GACjC,IAAI,YAAY,EAAE,IACd,OAAO;CAIf,OAAO;AACX;AAEA,SAAgB,cAAc,MAAgB,QAAkB;CAC5D,KAAK,MAAM,CAAC,GAAG,YAAY,KAAK,QAAQ,GACpC,IAAI,OAAO,OAAO,SACd,OAAO;CAIf,OAAO;AACX;;;AC7BA,SAAS,oBACL,OACA,OACF;CACE,KAAK,MAAM,QAAQ,OAAO;EACtB,MAAM,UAAU,aAAa,KAAK,OAAO,KAAK;EAC9C,KAAK,SAAS;EACd,KAAK,UAAU;EAEf,IAAI,SAAS;GACT,KAAK,eAAe;GACpB,KAAK,kBAAkB;EAC3B,OAAO;GACH,MAAM,aAAa,cAAc,KAAK,OAAO,KAAK;GAClD,KAAK,eAAe;GACpB,KAAK,kBAAkB;EAC3B;EAEA,KAAK,WAAW,oBAAoB,KAAK,UAAU,KAAK;CAC5D;CAEA,OAAO;AACX;AAEA,SAAgB,kBACZ,OACA,OACF;CACE,OAAO,oBAAoB,OAAO,KAAK;AAC3C;;;;;;;;;ACbA,SAAgB,mBACZ,SACA,aACqB;CACrB,IAAI,YAAY,cAAc,YAAY,YACtC,OAAO;CAGX,OAAO,gBAAgB,eAAe,aAAa;AACvD;;;;;;;;ACdA,SAAgB,aACZ,OACA,OAC0B;CAC1B,MAAM,SAAqC,CAAC;CAE5C,IAAI,QAAQ;CACZ,KAAK,MAAM,QAAQ,OAAO;EACtB,MAAM,QAAQ,MAAM,MAAM,SAAS,KAAK,SAAS,IAAI;EACrD,IAAI,CAAC,OACD;EAGJ,OAAO,KAAK,KAAK;EACjB,QAAQ,MAAM;CAClB;CAEA,OAAO;AACX;;;;AAKA,SAAgB,aACZ,OACA,WAC0B;CAC1B,MAAM,SAAqC,CAAC;CAE5C,KAAK,MAAM,QAAQ,OAAO;EACtB,IAAI,UAAU,IAAI,GACd,OAAO,KAAK,IAAI;EAGpB,IAAI,KAAK,SAAS,SAAS,GACvB,OAAO,KAAK,GAAG,aAAa,KAAK,UAAU,SAAS,CAAC;CAE7D;CAEA,OAAO;AACX;;;ACtDA,SAAgB,cAAc,KAAsB;CAChD,OAAO,IAAI,UAAU,GAAG,CAAC,MAAM,aAC3B,IAAI,UAAU,GAAG,CAAC,MAAM;AAChC;;;;;;;;;ACMA,MAAa,0BAA4E;CACrF,SAAS;EACL,OAAO;EACP,MAAM;EACN,YAAY;EACZ,WAAW;EACX,MAAM;EACN,UAAU;EACV,UAAU;EACV,UAAU;EACV,SAAS;EACT,SAAS;EACT,UAAU;CACd;CACA,UAAU;EAKN,SAAS;GACL,MAAM,CAAC;GACP,OAAO;IACH,OAAO;IACP,MAAM;IACN,MAAM;GACV;EACJ;EACA,aAAa;GACT,YAAY,CAAC;GACb,UAAU,EAAE,OAAO,yBAAyB;EAChD;CACJ;CACA,iBAAiB;EACb,SAAS;EACT,aAAa;CACjB;AACJ;;;;;;;;;;;;;;;AC9BA,MAAa,uBAA8E,OAAO,qBAAqB;AAgBvH,MAAa,wBAA+D,OAAO,sBAAsB;ACsEzG,MAAa,YAAY,gBAAgB;CACrC,MAAM;CACN,OAAO;EAtDP,MAAM;GACF,MAAM;GACN,UAAU;EACd;EACA,SAAS;GACL,MAAM;GACN,SAAS,KAAA;EACb;EACA,aAAa;GACT,MAAM;GACN,SAAS,KAAA;EACb;;;;;;;EAOA,SAAS;GACL,MAAM;GACN,SAAS;EACb;;;;;;EAMA,IAAI;GACA,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAC/B,SAAS;EACb;;;;;;EAMA,SAAS;GACL,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAC/B,SAAS;EACb;EACA,YAAY;GACR,MAAM;GACN,SAAS,KAAA;EACb;EACA,cAAc;GACV,MAAM;GACN,SAAS,KAAA;EACb;CAOO;CACP,OAAO;CAOP,MAAM,OAAO,EAAE,SAAS;EACpB,MAAM,YAAY,iBAAiB,YAAY;EAc/C,MAAM,QAAQ,kBAAkB,cAAc;GAX1C,IAAI,aAAa;IACb,OAAO,MAAM;GACjB;GACA,IAAI,eAAe;IACf,OAAO;KACH,GAAI,MAAM,gBAAgB,CAAC;KAC3B,GAAI,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;IACpE;GACJ;EAGmD,GAAG,uBAAuB;EAQjF,MAAM,OAAO,eAAe,MAAM,IAAK;EACvC,MAAM,cAAc,eAAe,KAAK,MAAM,YAC1C,KAAK,MAAM,SAAS,SAAS,CAAC;EAMlC,UAAQ,sBAAsB,eAAe,KAAK,MAAM,QAAQ,CAAC;EAKjE,MAAM,OAAO,IAAI,CAAC,CAAC,KAAK,MAAM,eAAe;EAC7C,YAAY,KAAK,MAAM,kBAAkB,UAAU;GAC/C,KAAK,QAAQ,CAAC,CAAC;EACnB,CAAC;EAQD,MAAM,gBAAgBA,SAAO,uBAAuB,IAAI;EACxD,MAAM,eAAe;GACjB,eAAe,OAAO,KAAK,KAAK;EACpC;EAEA,MAAM,eAAe;GACjB,KAAK,QAAQ,CAAC,KAAK;EACvB;EAOA,MAAM,cAAc,SAA6B;GAC7C,IAAI,KAAK,SAAS,GAAG,GACjB,OAAO,EAAE,iBAAiB,QAAQ,GAAG,EAAE,MAAM,KAAK,CAAC;GAEvD,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC;EACjC;EAEA,MAAM,oBAAoB,aAAmD,CACzE,GAAI,KAAK,MAAM,OACX,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,YAAY,KAAA,EAAU,GAAG,CACjD,WAAW,KAAK,MAAM,IAAI,CAC9B,CAAC,CAAC,IACF,CAAC,GACL,EAAE,OAAO,EAAE,OAAO,SAAS,YAAY,KAAA,EAAU,GAAG,CAChD,KAAK,MAAM,IACf,CAAC,CACL;EAEA,MAAM,cAAc,aAAiD;GACjE,IAAI,kBAAA,QAAiC,KAAK,GACtC,OAAO,cAAA,QAA6B;IAChC,MAAM,KAAK;IACX;IACA,UAAU,KAAK,MAAM;GACzB,GAAG,KAAK;GAGZ,MAAM,YAA4B;IAC9B,QAAQ,KAAK,MAAM;IACnB,UAAU;IACV,UAAU;GACd;GAEA,IAAI,KAAK,MAAM,KACX,IACI,cAAc,KAAK,MAAM,GAAG,KAC5B,KAAK,MAAM,IAAI,WAAW,GAAG,GAC/B;IACE,UAAU,OAAO,KAAK,MAAM;IAC5B,IAAI,KAAK,MAAM,WACX,UAAU,SAAS,KAAK,MAAM;GAEtC,OACI,UAAU,KAAK,KAAK,MAAM;GAIlC,OAAO,EAAE,QAAQ;IACb,OAAO,CAAC,SAAS,IAAI;IACrB,2BAA2B;IAC3B,GAAG;IACH,WAAW;GACf,GAAG,EAAE,eAAe,iBAAiB,QAAQ,EAAE,CAAC;EACpD;EAEA,MAAM,uBAAmC;GACrC,IAAI,kBAAA,aAAsC,KAAK,GAC3C,OAAO,cAAA,aAAkC;IACrC,MAAM,KAAK;IACX;IACA;GACJ,CAAC;GAcL,OAAO,EAAE,WAAW;IAChB,SAAS,MAAM;IACf,aAAa,MAAM;IACnB,SAAS,MAAM,YAAY,aAAa,aAAa,MAAM;IAC3D,IAAI,MAAM;IACV,QAAQ,MAAM;IACd,YAAY,MAAM;IAClB,cAAc,MAAM;GACxB,CAAC;EACL;EAEA,aAAa;GACT,MAAM,WAAW,MAAM;GACvB,MAAM,aAAa,MAAM,YAAY;GACrC,MAAM,WAAW,KAAK,MAAM,UAAU,KAAK,MAAM;GAGjD,IAAI,KAAK,MAAM,SAAA,aAAgC;IAC3C,MAAM,OAAO,kBAAA,aAAsC,KAAK,IACpD,cAAA,aAAkC,EAAE,MAAM,KAAK,MAAM,GAAG,KAAK,IAC7D,EAAE,OAAO,EAAE,OAAO,SAAS,aAAa,KAAA,EAAU,GAAG,KAAK,MAAM,IAAI;IAExE,IAAI,YACA,OAAO,EAAE,oBAAoB,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,eAAe,KAAK,CAAC;IAEpF,OAAO,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;GACzD;GAGA,IAAI,CAAC,YAAY,OAAO;IACpB,MAAM,OAAO,WAAW,QAAQ;IAEhC,IAAI,YACA,OAAO,EAAE,oBAAoB;KACzB,OAAO,CAAC,SAAS,IAAI;KACrB,eAAe,KAAK,MAAM,SAAS,KAAK,KAAA;IAC5C,GAAG,EACC,eAAe,EAAE,oBAAoB;KACjC,QAAQ,KAAK,MAAM;KACnB,SAAS;IACb,GAAG,EAAE,eAAe,KAAK,CAAC,EAC9B,CAAC;IAGL,OAAO,EAAE,MAAM,IAAI;KACf,OAAO,CAAC,SAAS,MAAM,EAAE,QAAQ,KAAK,MAAM,OAAO,CAAC;KACpD,eAAe,KAAK,MAAM,SAAS,KAAK,KAAA;IAC5C,GAAG,CAAC,IAAI,CAAC;GACb;GAIA,IAAI,kBAAA,OAAgC,KAAK,GAAG;IACxC,MAAM,OAAO,cAAA,OAA4B;KACrC,MAAM,KAAK;KACX;KACA;IACJ,GAAG,KAAK;IAER,IAAI,YACA,OAAO,EAAE,oBAAoB;KACzB,OAAO,CAAC,SAAS,MAAM,SAAS,UAAU;KAC1C,eAAe,WAAW,KAAK,KAAA;IACnC,GAAG,EAAE,eAAe,KAAK,CAAC;IAE9B,OAAO,EAAE,MAAM,IAAI;KACf,OAAO;MAAC,SAAS;MAAM,SAAS;MAAY,EAAE,QAAQ,SAAS;KAAC;KAChE,eAAe,WAAW,KAAK,KAAA;IACnC,GAAG,CAAC,IAAI,CAAC;GACb;GAEA,MAAM,QAAQ,kBAAA,aAAsC,KAAK,IACrD,cAAA,aAAkC;IAC9B,MAAM,KAAK;IACX;IACA;GACJ,CAAC,IACD,iBAAiB,QAAQ;GAG7B,IAAI,YACA,OAAO,EAAE,oBAAoB;IACzB,OAAO,CAAC,SAAS,MAAM,SAAS,UAAU;IAC1C,eAAe,WAAW,KAAK,KAAA;GACnC,GAAG,EACC,eAAe,CACX,EAAE,uBAAuB;IACrB,OAAO,SAAS,WAAW,KAAA;IAC3B,2BAA2B;IAC3B,eAAe,WAAW,KAAK,KAAA;GACnC,GAAG,EAAE,eAAe,MAAM,CAAC,GAO3B,EAAE,uBAAuB,EAAE,OAAO,SAAS,WAAW,KAAA,EAAU,GAAG,EAAE,eAAe,eAAe,EAAE,CAAC,CAC1G,EACJ,CAAC;GAIL,OAAO,EAAE,iBAAiB;IACtB,IAAI,MAAM;IACV,OAAO;KACH,SAAS;KACT,SAAS;KACT,EAAE,QAAQ,KAAK,MAAM,UAAU,KAAK,MAAM;IAC9C;IACA,eAAe,WAAW,KAAK,KAAA;IAC/B,MAAM,KAAK;IACX,kBAAkB,UAAmB;KACjC,KAAK,QAAQ;IACjB;GACJ,GAAG,EACC,eAAe,CACX,EAAE,oBAAoB;IAClB,OAAO,SAAS,WAAW,KAAA;IAC3B,2BAA2B;IAC3B,eAAe,WAAW,KAAK,KAAA;GACnC,GAAG,EAAE,eAAe,MAAM,CAAC,GAC3B,EAAE,oBAAoB,EAAE,OAAO,SAAS,WAAW,KAAA,EAAU,GAAG,EAAE,eAAe,eAAe,EAAE,CAAC,CACvG,EACJ,CAAC;EACL;CACJ;AACJ,CAAC;ACvQD,MAAa,aAAa,gBAAgB;CACtC,MAAM;CACN,OAAO;;;;;;;;;;;EAhDP,MAAM;GACF,MAAM,CAAC,OAAO,QAAQ;GACtB,SAAS,KAAA;EACb;;EAEA,UAAU;GAAE,MAAM;GAAS,SAAS;EAAM;;EAE1C,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;;;;;;EAM/C,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;;;;;;EAMzC,OAAO;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACpE,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC5C,aAAa;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;;;;;EAKnF,SAAS;GAAE,MAAM;GAAuC,SAAS;EAAO;;;;;;;EAOxE,IAAI;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAAmC,SAAS;EAAK;;;;;;EAMtF,QAAQ;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAAmC,SAAS;EAAK;EAC1F,YAAY;GAAE,MAAM;GAAkE,SAAS,KAAA;EAAU;EACzG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAOrE;CACP,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,UAAU;EAiB5B,MAAM,QAAQ,kBAAkB,cAAc;GAZ1C,IAAI,aAAa;IACb,OAAO,MAAM;GACjB;GACA,IAAI,eAAe;IACf,OAAO;KACH,GAAI,MAAM,gBAAgB,CAAC;KAC3B,GAAI,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;KAChE,GAAI,MAAM,gBAAgB,KAAA,IAAY,EAAE,aAAa,MAAM,YAAY,IAAI,CAAC;IAChF;GACJ;EAGmD,GAAG,uBAAuB;EAEjF,MAAM,UAAU,IAA6B,IAAI;EAEjD,MAAM,aAAa,UAAyB;GACxC,mBACI,OACA,MAAM,QACN,QAAQ,OACR;IACI,iBAAiB;IACjB,OAAO;IACP,MAAM;GACV,CACJ;EACJ;EAIA,MAAM,WAAW,4BAA4B,KAAK,IAAI,mBAAmB;EAOzE,MAAM,UAAU,mBAAmB,CAAC,EAAE,WAAW,OAAO;EACxD,MAAM,cAAc,eAAmC;GACnD,IAAI,OAAO,MAAM,SAAS,aACtB,OAAO,MAAM;GAGjB,QADc,SAAS,OAAA,EACT;EAClB,CAAC;EAQD,MAAM,gBAAgBC,SAAO,sBAAsB,IAAI;EACvD,MAAM,WAAW,eAAe,OAAO,MAAM,SAAS,eAAe,kBAAkB,IAAI;EAQ3F,MAAM,gBAAgB,IAAqB,IAAI;EAC/C,IAAI,CAAC,SAAS,OAAO;GACjB,UAAQ,uBAAuB,EAC3B,SAAS,SAAS;IACd,cAAc,QAAQ,KAAK;GAC/B,EACJ,CAAC;GAGD,MAAM,mBAAmB;IACrB,cAAc,QAAQ;GAC1B,CAAC;EACL;EAGA,MAAM,MAAM,IAAsB,CAAC,CAAC;EAIpC,IAAI,WAAW;EAEf,eAAe,MAAM;GACjB,MAAM,QAAQ,EAAE;GAChB,MAAM,QAAQ,OAAO,MAAM,SAAS,aAChC,MAAM,KAAK;IACP,MAAM,YAAY;IAClB,WAAW,OAAe,SAAS,IAAI,EAAE;GAC7C,CAAC,IACA,MAAM,QAAQ,CAAC;GAEpB,IAAI,CAAC,UAAU,KAAK,GAAG;IACnB,IAAI,QAAQ,SAAS,CAAC;IACtB;GACJ;GAEA,IAAI;IACA,MAAM,UAAW,MAAM,SAAU,CAAC;IAClC,IAAI,UAAU,UACV,IAAI,QAAQ;GAEpB,SAAS,OAAO;IAGZ,IAAI,UAAU,UAEV,QAAQ,MAAM,2CAA2C,KAAK;GAEtE;EACJ;EAEA,IAAI,CAAC,SAAS,OAAO;GAEjB,YAAY,GAAG;GAEf,IAAI,MAAM,OACN,MAAM,MAAM,OAAO,GAAG;EAE9B;EAGA,OAAO,EAAE,SAAS,IAAI,CAAC;EAGvB,MAAM,WAAW,eAAuE;GACpF,IAAI,SAAS,SAAS,eAClB,OAAO;IAAE,OAAO,cAAc;IAAO,OAAO,CAAC;GAAE;GAGnD,MAAM,aAAa,eAAe,IAAI,KAAK;GAC3C,MAAM,CAAC,SAAS,oBAAoB,YAAY,EAAE,MAAM,YAAY,MAAM,CAAC;GAG3E,MAAM,QAAQ,cAAc,UAAU,QAAQ,MAAM,QAAQ,CAAC;GAE7D,kBAAkB,YAAY,KAAK;GACnC,OAAO;IAAE,OAAO;IAAY;GAAM;EACtC,CAAC;EAED,MAAM,OAAO,eAAe,SAAS,MAAM,KAAK;EAChD,MAAM,SAAS,eAAe,aAAa,KAAK,QAAQ,SAAS,CAAC,CAAC,KAAK,MAAM,CAAC;EAC/E,MAAM,cAAc,eAAe,aAAa,KAAK,OAAO,SAAS,MAAM,KAAK,CAAC;EAGjF,IAAI,MAAM,UAAU;GAChB,IAAI;GAEJ,MAAM,QAAQ;IACV,OAAO;IACP;IACA;GACJ;GAEA,gBAAgB;IACZ,IAAI,CAAC,MAAM,YAAY;KAEnB,QAAQ,KAAK,yDAAyD;KACtE;IACJ;IACA,gBAAgB,SAAS,SAAS,MAAM,YAAY,KAAK;GAC7D,CAAC;GACD,kBAAkB;IACd,IAAI,CAAC,MAAM,cAAc,CAAC,eACtB;IAGJ,cAAc;GAClB,CAAC;EACL;EAEA,MAAM,cAAc,eAAe,mBAAmB,MAAM,SAAS,MAAM,WAAW,CAAC;EAEvF,aAAa;GACT,MAAM,gBAAgB,MAAM;GAC5B,MAAM,SAA6B,CAAC;GAEpC,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;IACxC,MAAM,OAAO,KAAK,MAAM;IACxB,IAAI,CAAC,KAAK,WAAW,CAAC,KAAK,iBACvB;IAGJ,IAAI;IACJ,IAAI,kBAAA,QAAiC,KAAK,GACtC,QAAQ,cAAA,QAA6B,EAAE,MAAM,KAAK,GAAG,KAAK;SAE1D,QAAQ,EACJ,WACA;KACI,KAAK,KAAK,MAAM,KAAK,GAAG,KAAK;KAC7B,MAAM;KACN,SAAS,MAAM;KACf,aAAa,MAAM;KACnB,SAAS,YAAY;KACrB,IAAI,MAAM;KACV,SAAS,MAAM;KACf,YAAY,MAAM;KAClB,cAAc,MAAM;IACxB,CACJ;IAGJ,OAAO,KAAK,KAAK;GACrB;GAMA,IAAI,YAAY,UAAU,YACtB,OAAO,EACH,oBACA,EAAE,aAAa,aAAa,GAC5B,EACI,eAAe,EACX,oBACA,EAAE,OAAO,cAAc,SAAS,KAAA,EAAU,GAC1C,EAAE,eAAe,OAAO,CAC5B,EACJ,CACJ;GAGJ,MAAM,SAAS,CAAC,SAAS;GAEzB,OAAO,EACH,MAAM,IACN;IACI,OAAO,cAAc,SAAS,KAAA;IAC9B,GAAI,SACA;KAAE,KAAK;KAAS,WAAW;IAAU,IACrC,CAAC;GACT,GACA,MACJ;EACJ;CACJ;AACJ,CAAC;;;ACpVD,MAAM,sBAAoD,OAAO,kBAAkB;AAEnF,SAAgB,sBAAsB,KAA2B;CAC7D,UAAQ,qBAAqB,GAAG;AACpC;AAEA,SAAgB,oBAA2C;CACvD,OAAOC,SAAO,qBAAqB,IAAI;AAC3C;;;ACzBA,MAAa,uBAAsE,EAC/E,SAAS;CACL,MAAM;CACN,MAAM;CACN,SAAS;CACT,WAAW;CACX,OAAO;CACP,aAAa;CACb,WAAW;AACf,EACJ;;;sBCgBe,gBAAgB;CAC3B,MAAM;CACN,cAAc;CACd,OAAO;;EApBP,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;;EAE/C,cAAc;GAAE,MAAM;GAAQ,SAAS;EAAE;;EAEzC,aAAa;GAAE,MAAM;GAA+C,SAAS;EAAa;;EAE1F,KAAK;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;;EAEnE,QAAQ;GAAE,MAAM;GAAS,SAAS;EAAK;;EAEvC,YAAY;GAAE,MAAM;GAA+D,SAAS,KAAA;EAAU;;EAEtG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAQrE;CACP,OAAO,CAAC,mBAAmB;CAC3B,MAAM,OAAO,EACT,OACA,OACA,QACD;EAOC,sBAAsB;GAClB,kBAAkB,MAAM;GACxB,oBAAoB,MAAM;EAC9B,CAAC;EACD,MAAM,QAAQ,kBAAkB,WAAW,OAAO,oBAAoB;EACtE,aAAa,EACT,aACA,WAAW,OAAO;GACd,YAAY,MAAM;GAClB,cAAc,MAAM;GACpB,aAAa,MAAM;GACnB,KAAK,MAAM;GACX,QAAQ,MAAM;GACd,wBAAwB,UAA8B,KAAK,qBAAqB,KAAK;GACrF,OAAO,MAAM,MAAM,QAAQ,KAAA;EAC/B,CAAC,GACD,EAAE,eAAe,MAAM,UAAU,EAAE,CACvC;CACJ;AACJ;;;0BEnCe,gBAAgB;CAC3B,MAAM;CACN,cAAc;CACd,OAAO;;EAhBP,MAAM;GAAE,MAAM;GAAQ,UAAU;EAAK;;EAErC,UAAU;GAAE,MAAM;GAAS,SAAS;EAAM;;EAE1C,WAAW;GAAE,MAAM;GAAS,SAAS;EAAM;;EAE3C,YAAY;GAAE,MAAM;GAA+D,SAAS,KAAA;EAAU;;EAEtG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAQrE;CACP,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,SAAS;EAC3B,MAAM,MAAM,kBAAkB;EAO9B,MAAM,QAAQ,kBAAkB,WAAW;GALvC,IAAI,aAAa;IAAE,OAAO;KAAE,GAAI,KAAK,WAAW,KAAK,CAAC;KAAI,GAAI,MAAM,cAAc,CAAC;IAAG;GAAG;GACzF,IAAI,eAAe;IACf,OAAO;KAAE,GAAI,KAAK,aAAa,KAAK,CAAC;KAAI,GAAI,MAAM,gBAAgB,CAAC;IAAG;GAC3E;EAEgD,GAAG,oBAAoB;EAC3E,aAAa,EACT,aASA;GAGI,MAAM,MAAM;GACZ,UAAU,MAAM;GAChB,WAAW,MAAM;GACjB,GAAG,WAAW,OAAO,EAAE,OAAO,CAAC,SAAS,MAAM,MAAM,QAAQ,KAAA,CAAS,EAAE,CAAC;EAC5E,GACA,EAAE,UAAU,EAAE,YAAkC,MAAM,UAAU,EAAE,MAAM,CAAC,EAAE,CAC/E;CACJ;AACJ;;;6BE3Ce,gBAAgB;CAC3B,MAAM;CACN,cAAc;CACd,OAAO;;EAdP,SAAS;GAAE,MAAM;GAAS,SAAS;EAAM;;EAEzC,IAAI;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAAmC,SAAS;EAAS;;EAE1F,YAAY;GAAE,MAAM;GAA+D,SAAS,KAAA;EAAU;;EAEtG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAQrE;CACP,MAAM,OAAO,EAAE,OAAO,SAAS;EAC3B,MAAM,MAAM,kBAAkB;EAO9B,MAAM,QAAQ,kBAAkB,WAAW;GALvC,IAAI,aAAa;IAAE,OAAO;KAAE,GAAI,KAAK,WAAW,KAAK,CAAC;KAAI,GAAI,MAAM,cAAc,CAAC;IAAG;GAAG;GACzF,IAAI,eAAe;IACf,OAAO;KAAE,GAAI,KAAK,aAAa,KAAK,CAAC;KAAI,GAAI,MAAM,gBAAgB,CAAC;IAAG;GAC3E;EAEgD,GAAG,oBAAoB;EAC3E,aAAa,EACT,gBACA,WAKI,MAAM,OAAO,WAAW,EAAE,MAAM,SAAS,IAAI,CAAC,GAC9C,OACA;GACI,IAAI,MAAM;GACV,SAAS,MAAM;GACf,OAAO,MAAM,MAAM,WAAW,KAAA;EAClC,CACJ,GACA,EAAE,eAAe,MAAM,UAAU,EAAE,CACvC;CACJ;AACJ;;;+BE/Be,gBAAgB;CAC3B,MAAM;CACN,cAAc;CACd,OAAO;;EAdP,SAAS;GAAE,MAAM;GAAS,SAAS;EAAM;;EAEzC,IAAI;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAAmC,SAAS;EAAM;;EAEvF,YAAY;GAAE,MAAM;GAA+D,SAAS,KAAA;EAAU;;EAEtG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAQrE;CACP,MAAM,OAAO,EAAE,OAAO,SAAS;EAI3B,MAAM,MAAM,kBAAkB;EAO9B,MAAM,QAAQ,kBAAkB,WAAW;GALvC,IAAI,aAAa;IAAE,OAAO;KAAE,GAAI,KAAK,WAAW,KAAK,CAAC;KAAI,GAAI,MAAM,cAAc,CAAC;IAAG;GAAG;GACzF,IAAI,eAAe;IACf,OAAO;KAAE,GAAI,KAAK,aAAa,KAAK,CAAC;KAAI,GAAI,MAAM,gBAAgB,CAAC;IAAG;GAC3E;EAEgD,GAAG,oBAAoB;EAC3E,aAAa,EACT,kBACA,WAAW,OAAO;GACd,IAAI,MAAM;GACV,SAAS,MAAM;GACf,OAAO,MAAM,MAAM,aAAa,KAAA;EACpC,CAAC,GACD,EAAE,eAAe,MAAM,UAAU,EAAE,CACvC;CACJ;AACJ;;;2BE1Be,gBAAgB;CAC3B,MAAM;CACN,cAAc;CACd,OAAO;;EAdP,SAAS;GAAE,MAAM;GAAS,SAAS;EAAM;;EAEzC,IAAI;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAAmC,SAAS;EAAK;;EAEtF,YAAY;GAAE,MAAM;GAA+D,SAAS,KAAA;EAAU;;EAEtG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAQrE;CACP,MAAM,OAAO,EAAE,OAAO,SAAS;EAC3B,MAAM,MAAM,kBAAkB;EAO9B,MAAM,QAAQ,kBAAkB,WAAW;GALvC,IAAI,aAAa;IAAE,OAAO;KAAE,GAAI,KAAK,WAAW,KAAK,CAAC;KAAI,GAAI,MAAM,cAAc,CAAC;IAAG;GAAG;GACzF,IAAI,eAAe;IACf,OAAO;KAAE,GAAI,KAAK,aAAa,KAAK,CAAC;KAAI,GAAI,MAAM,gBAAgB,CAAC;IAAG;GAC3E;EAEgD,GAAG,oBAAoB;EAC3E,aAAa,EACT,cACA,WAAW,OAAO;GACd,IAAI,MAAM;GACV,SAAS,MAAM;GACf,OAAO,MAAM,MAAM,SAAS,KAAA;EAChC,CAAC,GACD,EAAE,eAAe,MAAM,UAAU,EAAE,CACvC;CACJ;AACJ;;;iCEvBe,gBAAgB;CAC3B,MAAM;CACN,cAAc;CACd,OAAO;;EAdP,SAAS;GAAE,MAAM;GAAS,SAAS;EAAM;;EAEzC,IAAI;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAAmC,SAAS;EAAI;;EAErF,YAAY;GAAE,MAAM;GAA+D,SAAS,KAAA;EAAU;;EAEtG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAQrE;CACP,MAAM,OAAO,EAAE,OAAO,SAAS;EAC3B,MAAM,MAAM,kBAAkB;EAO9B,MAAM,QAAQ,kBAAkB,WAAW;GALvC,IAAI,aAAa;IAAE,OAAO;KAAE,GAAI,KAAK,WAAW,KAAK,CAAC;KAAI,GAAI,MAAM,cAAc,CAAC;IAAG;GAAG;GACzF,IAAI,eAAe;IACf,OAAO;KAAE,GAAI,KAAK,aAAa,KAAK,CAAC;KAAI,GAAI,MAAM,gBAAgB,CAAC;IAAG;GAC3E;EAEgD,GAAG,oBAAoB;EAC3E,aAAa,EACT,oBACA,WAAW,OAAO;GACd,IAAI,MAAM;GACV,SAAS,MAAM;GACf,OAAO,MAAM,MAAM,eAAe,KAAA;EACtC,CAAC,GACD,EAAE,eAAe,MAAM,UAAU,EAAE,CACvC;CACJ;AACJ;;;+BEvBe,gBAAgB;CAC3B,MAAM;CACN,cAAc;CACd,OAAO;;EAdP,SAAS;GAAE,MAAM;GAAS,SAAS;EAAM;;EAEzC,IAAI;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAQ;GAAmC,SAAS;EAAM;;EAEvF,YAAY;GAAE,MAAM;GAA+D,SAAS,KAAA;EAAU;;EAEtG,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CAQrE;CACP,MAAM,OAAO,EAAE,OAAO,SAAS;EAC3B,MAAM,MAAM,kBAAkB;EAO9B,MAAM,QAAQ,kBAAkB,WAAW;GALvC,IAAI,aAAa;IAAE,OAAO;KAAE,GAAI,KAAK,WAAW,KAAK,CAAC;KAAI,GAAI,MAAM,cAAc,CAAC;IAAG;GAAG;GACzF,IAAI,eAAe;IACf,OAAO;KAAE,GAAI,KAAK,aAAa,KAAK,CAAC;KAAI,GAAI,MAAM,gBAAgB,CAAC;IAAG;GAC3E;EAEgD,GAAG,oBAAoB;EAC3E,aAAa,EACT,kBACA,WAAW,OAAO;GACd,IAAI,MAAM;GACV,SAAS,MAAM;GACf,OAAO,MAAM,MAAM,aAAa,KAAA;EACpC,CAAC,GACD,EAAE,eAAe,MAAM,UAAU,EAAE,CACvC;CACJ;AACJ;;;AEtBA,SAAgB,QAAQ,UAAe,UAAmB,CAAC,GAAS;CAChE,0BAA0B,IAAI,mBAAmB,GAAG,QAAQ;CAE5D,oBAAoB,UAAU,OAAO;CACrC,uBAAuB,UAAU,OAAO;CAExC,OAAO,QAAQ;EACX;EACA;EACA,WAAA;EACA,eAAA;EACA,kBAAA;EACA,oBAAA;EACA,gBAAA;EACA,sBAAA;EACA,oBAAA;CACJ,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,eAAe;EACvC,SAAS,UAAU,eAAe,SAAS;CAC/C,CAAC;AACL;AAEA,IAAA,cAAe,EAAE,QAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuecs/navigation",
3
- "version": "4.0.3",
3
+ "version": "4.0.4",
4
4
  "type": "module",
5
5
  "description": "A package for multi level navigations.",
6
6
  "exports": {
@@ -53,14 +53,14 @@
53
53
  },
54
54
  "devDependencies": {
55
55
  "@vue/test-utils": "^2.4.11",
56
- "@vuecs/core": "^3.2.1",
56
+ "@vuecs/core": "^3.2.2",
57
57
  "@vuecs/link": "^2.0.2",
58
58
  "jsdom": "^29.1.1",
59
59
  "vue": "^3.5.38",
60
60
  "vue-router": "^5.1.0"
61
61
  },
62
62
  "peerDependencies": {
63
- "@vuecs/core": "^3.2.1",
63
+ "@vuecs/core": "^3.2.2",
64
64
  "@vuecs/link": "^2.0.2",
65
65
  "vue": "^3.x",
66
66
  "vue-router": "^4.x || ^5.x"