@robot-admin/layout 2.3.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,326 +1,17 @@
1
- import { Fragment as e, KeepAlive as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createTextVNode as l, createVNode as u, defineComponent as d, h as f, inject as p, nextTick as m, normalizeClass as h, normalizeStyle as g, onMounted as _, onUnmounted as v, openBlock as y, provide as b, ref as x, renderList as S, renderSlot as C, resolveComponent as w, resolveDynamicComponent as T, toDisplayString as E, toValue as D, unref as O, useModel as k, watch as A, withCtx as j, withKeys as M, withModifiers as N } from "vue";
2
- import { defineStore as P } from "pinia";
3
- import { NButton as F, NColorPicker as I, NDrawer as L, NDrawerContent as R, NDropdown as z, NInput as B, NLayout as V, NLayoutContent as H, NLayoutSider as ee, NMenu as te, NRadioButton as U, NRadioGroup as W, NSlider as ne, NSwitch as G, NTabPane as re, NTabs as ie, useDialog as ae, useMessage as oe } from "naive-ui";
1
+ import { Fragment as e, KeepAlive as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createTextVNode as l, createVNode as u, defineComponent as d, h as f, inject as p, mergeModels as m, nextTick as h, normalizeClass as g, normalizeStyle as _, onMounted as v, onUnmounted as y, openBlock as b, provide as x, ref as S, renderList as C, renderSlot as w, resolveComponent as T, resolveDynamicComponent as E, toDisplayString as D, toValue as O, unref as k, useModel as A, watch as j, withCtx as M, withKeys as N, withModifiers as P } from "vue";
2
+ import { NButton as F, NColorPicker as I, NDrawer as L, NDrawerContent as R, NDropdown as z, NInput as B, NLayout as V, NLayoutContent as H, NLayoutSider as U, NMenu as ee, NRadioButton as W, NRadioGroup as te, NSlider as ne, NSwitch as G, NTabPane as re, NTabs as ie, useDialog as ae, useMessage as oe } from "naive-ui";
4
3
  import { useRoute as K, useRouter as q } from "vue-router";
5
- //#region src/constants/index.ts
6
- var se = [
7
- {
8
- name: "拂晓蓝",
9
- value: "#409eff"
10
- },
11
- {
12
- name: "薄暮红",
13
- value: "#f5222d"
14
- },
15
- {
16
- name: "火山橙",
17
- value: "#fa541c"
18
- },
19
- {
20
- name: "日暮黄",
21
- value: "#faad14"
22
- },
23
- {
24
- name: "极光绿",
25
- value: "#52c41a"
26
- },
27
- {
28
- name: "明青",
29
- value: "#13c2c2"
30
- },
31
- {
32
- name: "极客蓝",
33
- value: "#2f54eb"
34
- },
35
- {
36
- name: "酱紫",
37
- value: "#722ed1"
38
- }
39
- ], ce = [
40
- {
41
- name: "科技蓝",
42
- icon: "💙",
43
- primaryColor: "#409eff"
44
- },
45
- {
46
- name: "清新绿",
47
- icon: "💚",
48
- primaryColor: "#52c41a"
49
- },
50
- {
51
- name: "商务灰",
52
- icon: "🖤",
53
- primaryColor: "#595959"
54
- },
55
- {
56
- name: "活力橙",
57
- icon: "🧡",
58
- primaryColor: "#fa8c16"
59
- },
60
- {
61
- name: "优雅紫",
62
- icon: "💜",
63
- primaryColor: "#722ed1"
64
- },
65
- {
66
- name: "经典红",
67
- icon: "❤️",
68
- primaryColor: "#f5222d"
69
- }
70
- ], le = [
71
- {
72
- mode: "side",
73
- label: "左侧菜单",
74
- description: "经典的左侧导航布局",
75
- icon: "i-mdi:page-layout-sidebar-left"
76
- },
77
- {
78
- mode: "top",
79
- label: "顶部菜单",
80
- description: "顶部水平导航布局",
81
- icon: "i-mdi:page-layout-header"
82
- },
83
- {
84
- mode: "mix",
85
- label: "混合菜单",
86
- description: "顶部 + 侧边混合布局",
87
- icon: "i-mdi:view-dashboard-outline"
88
- },
89
- {
90
- mode: "mix-top",
91
- label: "顶部混合",
92
- description: "侧边优先的混合布局",
93
- icon: "i-mdi:view-dashboard-variant-outline"
94
- },
95
- {
96
- mode: "reverse-horizontal-mix",
97
- label: "反转混合",
98
- description: "反转的水平混合布局",
99
- icon: "i-mdi:page-layout-header-footer"
100
- },
101
- {
102
- mode: "card-layout",
103
- label: "卡片布局",
104
- description: "卡片式布局风格",
105
- icon: "i-mdi:card-outline"
106
- }
107
- ], ue = {
108
- small: "4px",
109
- medium: "6px",
110
- large: "8px"
111
- }, de = {
112
- fade: "fade-transform",
113
- slide: "fade-slide",
114
- zoom: "fade-zoom",
115
- none: ""
116
- }, J = {
117
- themeMode: "light",
118
- primaryColor: "#409eff",
119
- borderRadius: "medium",
120
- transitionType: "slide",
121
- enableTransition: !0,
122
- layoutMode: "side",
123
- menuExpandMode: "inline",
124
- collapsed: !1,
125
- fixedHeader: !0,
126
- showBreadcrumb: !0,
127
- showBreadcrumbIcon: !0,
128
- showTagsView: !0,
129
- tagsViewHeight: 44,
130
- tagsViewStyle: "default",
131
- showFooter: !0,
132
- sidebarWidth: 220,
133
- sidebarCollapsedWidth: 64,
134
- headerHeight: 56,
135
- enableHotkeys: !0,
136
- version: "2.3.2"
137
- }, fe = se.map((e) => e.value), pe = {
138
- themeMode: new Set([
139
- "light",
140
- "dark",
141
- "system"
142
- ]),
143
- borderRadius: new Set([
144
- "small",
145
- "medium",
146
- "large"
147
- ]),
148
- transitionType: new Set([
149
- "fade",
150
- "slide",
151
- "zoom",
152
- "none"
153
- ]),
154
- layoutMode: new Set([
155
- "side",
156
- "top",
157
- "mix",
158
- "mix-top",
159
- "reverse-horizontal-mix",
160
- "card-layout"
161
- ]),
162
- menuExpandMode: new Set(["inline", "panel"]),
163
- tagsViewStyle: new Set([
164
- "default",
165
- "card",
166
- "smart"
167
- ])
168
- }, me = new Set([
169
- "enableTransition",
170
- "collapsed",
171
- "fixedHeader",
172
- "showBreadcrumb",
173
- "showBreadcrumbIcon",
174
- "showTagsView",
175
- "showFooter",
176
- "enableHotkeys"
177
- ]), he = {
178
- tagsViewHeight: [24, 100],
179
- sidebarWidth: [120, 480],
180
- sidebarCollapsedWidth: [32, 160],
181
- headerHeight: [32, 160]
182
- };
183
- function ge(e) {
184
- if (!e || typeof e != "object" || Array.isArray(e)) throw TypeError("settings 必须是对象");
185
- let t = e, n = {}, r = (e, t) => {
186
- n[e] = t;
187
- };
188
- for (let [e, n] of Object.entries(pe)) {
189
- let i = t[e];
190
- if (i !== void 0) {
191
- if (typeof i != "string" || !n.has(i)) throw RangeError(`无效的设置项 ${e}: ${String(i)}`);
192
- r(e, i);
193
- }
194
- }
195
- for (let e of me) {
196
- let n = t[e];
197
- if (n !== void 0) {
198
- if (typeof n != "boolean") throw TypeError(`设置项 ${e} 必须是布尔值`);
199
- r(e, n);
200
- }
201
- }
202
- for (let [e, n] of Object.entries(he)) {
203
- let i = t[e];
204
- if (i !== void 0) {
205
- if (typeof i != "number" || !Number.isFinite(i) || i < n[0] || i > n[1]) throw RangeError(`设置项 ${e} 超出允许范围`);
206
- r(e, i);
207
- }
208
- }
209
- if (t.primaryColor !== void 0) {
210
- if (typeof t.primaryColor != "string" || !/^#[0-9a-fA-F]{6}$/.test(t.primaryColor)) throw RangeError("primaryColor 必须是 #rrggbb 格式");
211
- n.primaryColor = t.primaryColor;
212
- }
213
- if (t.version !== void 0) {
214
- if (typeof t.version != "string" || t.version.length > 50) throw TypeError("version 必须是长度不超过 50 的字符串");
215
- n.version = t.version;
216
- }
217
- return n;
218
- }
219
- function _e(e, t) {
220
- if (typeof e != "string") return "#000000";
221
- if (!Number.isFinite(t)) return e;
222
- let n = Math.round(t), r = e.trim(), i = r.startsWith("#") ? r.slice(1) : r;
223
- if (i.length === 3 && (i = i.split("").map((e) => e + e).join("")), !/^[0-9a-fA-F]{6}$/.test(i)) return e;
224
- let a = parseInt(i, 16), o = Math.min(255, Math.max(0, (a >> 16) + n)), s = Math.min(255, Math.max(0, (a >> 8 & 255) + n)), c = Math.min(255, Math.max(0, (a & 255) + n));
225
- return `#${(o << 16 | s << 8 | c).toString(16).padStart(6, "0")}`;
226
- }
227
- function ve(e = {}) {
228
- let { id: t = "settings", defaults: n = {}, onThemeModeChange: i } = e;
229
- if (typeof t != "string" || !t.trim()) throw RangeError("Settings store id 不能为空");
230
- let a = {
231
- ...J,
232
- ...ge(n)
233
- };
234
- return P(t, () => {
235
- let e = x(a.themeMode), t = x(a.primaryColor), n = x(a.borderRadius), o = x(a.transitionType), s = x(a.enableTransition), c = x(a.layoutMode), l = x(a.menuExpandMode), u = x(a.collapsed), d = x(a.fixedHeader), f = x(a.showBreadcrumb), p = x(a.showBreadcrumbIcon), m = x(a.showTagsView), h = x(a.tagsViewHeight), g = x(a.tagsViewStyle), _ = x(a.showFooter), v = x(a.sidebarWidth), y = x(a.sidebarCollapsedWidth), b = x(a.headerHeight), S = x(a.enableHotkeys), C = x(a.version), w = r(() => ue[n.value]), T = r(() => de[o.value]), E = r(() => s.value && o.value !== "none"), D = r(() => ({
236
- themeMode: e.value,
237
- primaryColor: t.value,
238
- borderRadius: n.value,
239
- transitionType: o.value,
240
- enableTransition: s.value,
241
- layoutMode: c.value,
242
- menuExpandMode: l.value,
243
- collapsed: u.value,
244
- fixedHeader: d.value,
245
- showBreadcrumb: f.value,
246
- showBreadcrumbIcon: p.value,
247
- showTagsView: m.value,
248
- tagsViewHeight: h.value,
249
- tagsViewStyle: g.value,
250
- showFooter: _.value,
251
- sidebarWidth: v.value,
252
- sidebarCollapsedWidth: y.value,
253
- headerHeight: b.value,
254
- enableHotkeys: S.value,
255
- version: C.value
256
- })), O = () => {
257
- if (typeof document > "u") return;
258
- let e = document.documentElement;
259
- e.style.setProperty("--primary-color", t.value), e.style.setProperty("--primary-color-hover", _e(t.value, 10)), e.style.setProperty("--primary-color-pressed", _e(t.value, -10)), e.style.setProperty("--border-radius", w.value), e.style.setProperty("--sidebar-width", `${v.value}px`), e.style.setProperty("--sidebar-collapsed-width", `${y.value}px`), e.style.setProperty("--header-height", `${b.value}px`), e.style.setProperty("--tags-view-height", `${h.value}px`);
260
- };
261
- return A([
262
- t,
263
- w,
264
- v,
265
- y,
266
- b,
267
- h
268
- ], () => {
269
- O();
270
- }, { immediate: !0 }), {
271
- themeMode: e,
272
- primaryColor: t,
273
- borderRadius: n,
274
- transitionType: o,
275
- enableTransition: s,
276
- layoutMode: c,
277
- menuExpandMode: l,
278
- collapsed: u,
279
- fixedHeader: d,
280
- showBreadcrumb: f,
281
- showBreadcrumbIcon: p,
282
- showTagsView: m,
283
- tagsViewHeight: h,
284
- tagsViewStyle: g,
285
- showFooter: _,
286
- sidebarWidth: v,
287
- sidebarCollapsedWidth: y,
288
- headerHeight: b,
289
- enableHotkeys: S,
290
- version: C,
291
- borderRadiusValue: w,
292
- transitionName: T,
293
- shouldEnableTransition: E,
294
- settingsState: D,
295
- syncCSSVariables: O,
296
- applyPreset: async (e) => {
297
- t.value = e.primaryColor, e.settings && (e.settings.borderRadius && (n.value = e.settings.borderRadius), e.settings.transitionType && (o.value = e.settings.transitionType), e.settings.showBreadcrumb !== void 0 && (f.value = e.settings.showBreadcrumb), e.settings.showTagsView !== void 0 && (m.value = e.settings.showTagsView), e.settings.tagsViewStyle && (g.value = e.settings.tagsViewStyle));
298
- },
299
- resetSettings: () => {
300
- e.value = a.themeMode, t.value = a.primaryColor, n.value = a.borderRadius, o.value = a.transitionType, s.value = a.enableTransition, c.value = a.layoutMode, l.value = a.menuExpandMode, u.value = a.collapsed, d.value = a.fixedHeader, f.value = a.showBreadcrumb, p.value = a.showBreadcrumbIcon, m.value = a.showTagsView, h.value = a.tagsViewHeight, g.value = a.tagsViewStyle, _.value = a.showFooter, v.value = a.sidebarWidth, y.value = a.sidebarCollapsedWidth, b.value = a.headerHeight, S.value = a.enableHotkeys;
301
- },
302
- updateThemeMode: async (t) => {
303
- if (!pe.themeMode.has(t)) throw RangeError(`未知的主题模式: ${String(t)}`);
304
- let n = e.value;
305
- e.value = t;
306
- try {
307
- i && await i(t);
308
- } catch (t) {
309
- throw e.value = n, t;
310
- }
311
- },
312
- toggleCollapse: () => {
313
- u.value = !u.value;
314
- }
315
- };
316
- });
317
- }
318
- var ye = ve(), be = Symbol("layout-context"), xe = Symbol("drawer-handlers");
4
+ import { defineStore as se } from "pinia";
5
+ //#region src/composables/useLayoutContext.ts
6
+ var J = Symbol("layout-context"), ce = Symbol("layout-settings"), le = Symbol("menu-collapse"), ue = Symbol("drawer-handlers");
319
7
  function Y() {
320
- let e = p(be);
8
+ let e = p(J);
321
9
  if (!e) throw Error("[Layout] LayoutContext not provided. 请在上层组件中使用 provide(LAYOUT_CONTEXT_KEY, ...) 注入布局数据。");
322
10
  return e;
323
11
  }
12
+ function de(e) {
13
+ return x(J, e), e;
14
+ }
324
15
  var X = {
325
16
  name: "Admin",
326
17
  subtitle: "",
@@ -332,22 +23,25 @@ var X = {
332
23
  };
333
24
  //#endregion
334
25
  //#region src/composables/useLayoutCache.ts
26
+ function fe(e) {
27
+ return typeof e.name == "string" && e.meta.keepAlive === !0;
28
+ }
335
29
  function Z(e = {}) {
336
- let { maxCacheCount: t = 20, enableDevLog: n = !1, exposeToWindow: r = !1 } = e, i = K(), a = x([]), o = x(t), s = (e) => !e || typeof e != "string" ? !1 : i.meta?.keepAlive === !0, c = (e) => {
337
- !a.value.includes(e) && s(e) && (a.value.push(e), a.value.length > o.value && a.value.shift(), n && console.debug(`[KeepAlive] ✅ 缓存: ${e} (${a.value.length}/${o.value})`));
30
+ let { maxCacheCount: t = 20, enableDevLog: n = !1, exposeToWindow: r = !1 } = e, i = K(), a = Number.isFinite(t) && t > 0 ? Math.floor(t) : 20, o = S([]), s = S(a), c = (e) => {
31
+ e && !o.value.includes(e) && (o.value.push(e), o.value.length > s.value && o.value.shift(), n && console.debug(`[KeepAlive] ✅ 缓存: ${e} (${o.value.length}/${s.value})`));
338
32
  }, l = (e) => {
339
- let t = a.value.indexOf(e);
340
- t > -1 && (a.value.splice(t, 1), n && console.debug(`[KeepAlive] ❌ 移除: ${e}`));
33
+ let t = o.value.indexOf(e);
34
+ t > -1 && (o.value.splice(t, 1), n && console.debug(`[KeepAlive] ❌ 移除: ${e}`));
341
35
  }, u = () => {
342
- a.value = [], n && console.debug("[KeepAlive] 🗑️ 清空所有缓存");
343
- }, d = () => a.value;
344
- return r && typeof window < "u" && (window.__clearCache__ = u, window.__removeCache__ = l, window.__getCachedViews__ = d, v(() => {
36
+ o.value = [], n && console.debug("[KeepAlive] 🗑️ 清空所有缓存");
37
+ }, d = () => o.value;
38
+ return r && typeof window < "u" && (window.__clearCache__ = u, window.__removeCache__ = l, window.__getCachedViews__ = d, y(() => {
345
39
  window.__clearCache__ === u && delete window.__clearCache__, window.__removeCache__ === l && delete window.__removeCache__, window.__getCachedViews__ === d && delete window.__getCachedViews__;
346
- })), A(() => i.name, (e) => {
347
- e && typeof e == "string" && c(e);
40
+ })), j(() => [i.name, i.meta.keepAlive], () => {
41
+ fe(i) && c(i.name);
348
42
  }, { immediate: !0 }), {
349
- cachedViews: a,
350
- maxCacheCount: o,
43
+ cachedViews: o,
44
+ maxCacheCount: s,
351
45
  addCache: c,
352
46
  removeCache: l,
353
47
  clearAllCache: u
@@ -355,7 +49,7 @@ function Z(e = {}) {
355
49
  }
356
50
  //#endregion
357
51
  //#region src/components/layouts/SideLayout/index.vue
358
- var Se = /* @__PURE__ */ d({
52
+ var pe = /* @__PURE__ */ d({
359
53
  name: "SideLayout",
360
54
  __name: "index",
361
55
  props: { collapsed: {
@@ -364,11 +58,11 @@ var Se = /* @__PURE__ */ d({
364
58
  } },
365
59
  emits: ["update:collapsed"],
366
60
  setup(e, { expose: a, emit: o }) {
367
- let s = e, c = o, l = Y(), { cachedViews: d, maxCacheCount: f } = Z(), p = x(s.collapsed);
368
- A(() => s.collapsed, (e) => {
61
+ let s = e, c = o, l = Y(), { cachedViews: d, maxCacheCount: f } = Z(), p = S(s.collapsed);
62
+ j(() => s.collapsed, (e) => {
369
63
  p.value = e;
370
64
  });
371
- let m = r(() => p.value), g = (e) => {
65
+ let m = r(() => p.value), h = (e) => {
372
66
  p.value = e, c("update:collapsed", e);
373
67
  };
374
68
  return a({
@@ -378,49 +72,49 @@ var Se = /* @__PURE__ */ d({
378
72
  p.value = e, c("update:collapsed", e);
379
73
  }
380
74
  }), (e, r) => {
381
- let a = w("RouterView");
382
- return y(), i(O(V), { "has-sider": "" }, {
383
- default: j(() => [u(O(ee), {
75
+ let a = T("RouterView");
76
+ return b(), i(k(V), { "has-sider": "" }, {
77
+ default: M(() => [u(k(U), {
384
78
  bordered: "",
385
79
  "collapse-mode": "width",
386
- "collapsed-width": O(l).sidebarCollapsedWidth.value,
387
- width: O(l).sidebarWidth.value,
80
+ "collapsed-width": k(l).sidebarCollapsedWidth.value,
81
+ width: k(l).sidebarWidth.value,
388
82
  "native-scrollbar": !1,
389
83
  collapsed: m.value,
390
- "onUpdate:collapsed": g,
391
- class: h([
84
+ "onUpdate:collapsed": h,
85
+ class: g([
392
86
  "layout-sider",
393
87
  "no-horizontal-scroll",
394
- O(l).isDark.value ? "dark-theme" : "light-theme"
88
+ k(l).isDark.value ? "dark-theme" : "light-theme"
395
89
  ])
396
90
  }, {
397
- default: j(() => [C(e.$slots, "logo"), C(e.$slots, "menu", { collapsed: m.value })]),
91
+ default: M(() => [w(e.$slots, "logo"), w(e.$slots, "menu", { collapsed: m.value })]),
398
92
  _: 3
399
93
  }, 8, [
400
94
  "collapsed-width",
401
95
  "width",
402
96
  "collapsed",
403
97
  "class"
404
- ]), u(O(V), null, {
405
- default: j(() => [
406
- C(e.$slots, "header"),
407
- u(O(H), { class: "content-with-header p16px app-content" }, {
408
- default: j(() => [u(a, null, {
409
- default: j(({ Component: e, route: r }) => [u(n, {
410
- name: O(l).transitionName.value,
98
+ ]), u(k(V), null, {
99
+ default: M(() => [
100
+ w(e.$slots, "header"),
101
+ u(k(H), { class: "content-with-header p16px app-content" }, {
102
+ default: M(() => [u(a, null, {
103
+ default: M(({ Component: e, route: r }) => [u(n, {
104
+ name: k(l).transitionName.value,
411
105
  mode: "out-in"
412
106
  }, {
413
- default: j(() => [(y(), i(t, {
414
- include: O(d),
415
- max: O(f)
416
- }, [(y(), i(T(e), { key: r.path }))], 1032, ["include", "max"]))]),
107
+ default: M(() => [(b(), i(t, {
108
+ include: k(d),
109
+ max: k(f)
110
+ }, [(b(), i(E(e), { key: r.path }))], 1032, ["include", "max"]))]),
417
111
  _: 2
418
112
  }, 1032, ["name"])]),
419
113
  _: 1
420
114
  })]),
421
115
  _: 1
422
116
  }),
423
- C(e.$slots, "footer")
117
+ w(e.$slots, "footer")
424
118
  ]),
425
119
  _: 3
426
120
  })]),
@@ -428,15 +122,12 @@ var Se = /* @__PURE__ */ d({
428
122
  });
429
123
  };
430
124
  }
431
- }), Ce = {
432
- ref: "visibleRef",
433
- class: "responsive-menu__visible"
434
- }, we = { class: "responsive-menu__more" }, Te = /* @__PURE__ */ d({
125
+ }), me = { class: "responsive-menu__visible" }, he = { class: "responsive-menu__more" }, ge = /* @__PURE__ */ d({
435
126
  name: "ResponsiveMenu",
436
127
  __name: "index",
437
128
  props: { data: {} },
438
129
  setup(e) {
439
- let t = e, n = K(), c = q(), l = Y(), d = r(() => t.data || []), p = r(() => n.path), h = l.isDark, g = {
130
+ let t = e, n = K(), c = q(), l = Y(), d = r(() => t.data || []), p = r(() => n.path), m = l.isDark, g = {
440
131
  itemTextColor: "rgba(51, 65, 85, 0.85)",
441
132
  itemTextColorHover: "rgba(30, 64, 175, 0.95)",
442
133
  itemTextColorActive: "rgba(30, 64, 175, 1)",
@@ -459,7 +150,7 @@ var Se = /* @__PURE__ */ d({
459
150
  itemPadding: "0 18px",
460
151
  itemBorderRadius: "10px",
461
152
  groupTextColor: "rgba(51, 65, 85, 0.65)"
462
- }, b = {
153
+ }, _ = {
463
154
  itemTextColor: "rgba(226, 232, 240, 0.85)",
464
155
  itemTextColorHover: "rgba(255, 255, 255, 0.95)",
465
156
  itemTextColorActive: "rgba(147, 197, 253, 1)",
@@ -482,7 +173,7 @@ var Se = /* @__PURE__ */ d({
482
173
  itemPadding: "0 18px",
483
174
  itemBorderRadius: "10px",
484
175
  groupTextColor: "rgba(226, 232, 240, 0.6)"
485
- }, S = r(() => h.value ? b : g), C = (e, t = 18) => l.iconComponent ? () => f(l.iconComponent, {
176
+ }, x = r(() => m.value ? _ : g), C = (e, t = 18) => l.iconComponent ? () => f(l.iconComponent, {
486
177
  name: e,
487
178
  size: t
488
179
  }) : () => f("i", {
@@ -497,7 +188,7 @@ var Se = /* @__PURE__ */ d({
497
188
  label: e.meta?.title || e.name || "",
498
189
  icon: e.meta?.icon ? C(e.meta.icon, 18) : void 0,
499
190
  children: e.children?.length ? e.children.map(w) : void 0
500
- }), T = x(), E = x([]), D = x([]), k = r(() => E.value.map(w)), M = r(() => D.value.map((e) => ({
191
+ }), T = S(), E = S([]), D = S([]), O = r(() => E.value.map(w)), A = r(() => D.value.map((e) => ({
501
192
  key: e.path || "",
502
193
  label: e.meta?.title || e.name || "",
503
194
  icon: e.meta?.icon ? C(e.meta.icon, 16) : void 0,
@@ -531,46 +222,43 @@ var Se = /* @__PURE__ */ d({
531
222
  }, L = () => {
532
223
  if (!T.value || !d.value.length) return;
533
224
  let e = T.value.offsetWidth;
534
- if (e === 0) {
535
- m(() => L());
536
- return;
537
- }
225
+ if (e <= 0) return;
538
226
  let t = I(e);
539
227
  E.value = d.value.slice(0, t), D.value = d.value.slice(t);
540
228
  }, R = null, B = () => {
541
- R && clearTimeout(R), R = window.setTimeout(() => L(), 100);
229
+ R && clearTimeout(R), R = setTimeout(() => L(), 100);
542
230
  }, V = null;
543
- return _(() => {
544
- m(() => L()), T.value && (V = new ResizeObserver(() => B()), V.observe(T.value));
545
- }), v(() => {
546
- V?.disconnect(), R && clearTimeout(R);
547
- }), A(() => t.data, () => m(() => L()), { deep: !0 }), (e, t) => (y(), o("div", {
231
+ return v(() => {
232
+ h(() => L()), T.value && typeof ResizeObserver < "u" ? (V = new ResizeObserver(() => B()), V.observe(T.value)) : typeof window < "u" && window.addEventListener("resize", B, { passive: !0 });
233
+ }), y(() => {
234
+ V?.disconnect(), typeof window < "u" && window.removeEventListener("resize", B), R && clearTimeout(R);
235
+ }), j(() => t.data, () => h(() => L()), { deep: !0 }), (e, t) => (b(), o("div", {
548
236
  ref_key: "containerRef",
549
237
  ref: T,
550
238
  class: "responsive-menu"
551
- }, [s("div", Ce, [k.value.length > 0 ? (y(), i(O(te), {
239
+ }, [s("div", me, [O.value.length > 0 ? (b(), i(k(ee), {
552
240
  key: 0,
553
241
  mode: "horizontal",
554
242
  value: p.value,
555
- options: k.value,
556
- "theme-overrides": S.value,
243
+ options: O.value,
244
+ "theme-overrides": x.value,
557
245
  "onUpdate:value": N
558
246
  }, null, 8, [
559
247
  "value",
560
248
  "options",
561
249
  "theme-overrides"
562
- ])) : a("", !0)], 512), D.value.length > 0 ? (y(), i(O(z), {
250
+ ])) : a("", !0)]), D.value.length > 0 ? (b(), i(k(z), {
563
251
  key: 0,
564
- options: M.value,
252
+ options: A.value,
565
253
  placement: "bottom-end",
566
254
  trigger: "hover",
567
255
  onSelect: N
568
256
  }, {
569
- default: j(() => [s("div", we, [u(O(F), {
257
+ default: M(() => [s("div", he, [u(k(F), {
570
258
  text: "",
571
259
  class: "responsive-menu__more-btn"
572
260
  }, {
573
- default: j(() => [...t[0] ||= [s("span", { class: "dots-icon" }, [
261
+ default: M(() => [...t[0] ||= [s("span", { class: "dots-icon" }, [
574
262
  s("span"),
575
263
  s("span"),
576
264
  s("span")
@@ -584,28 +272,29 @@ var Se = /* @__PURE__ */ d({
584
272
  let n = e.__vccOpts || e;
585
273
  for (let [e, r] of t) n[e] = r;
586
274
  return n;
587
- }, $ = /* @__PURE__ */ Q(Te, [["__scopeId", "data-v-d329131b"]]), Ee = { class: "top-layout-container" }, De = { class: "navbar-left" }, Oe = { class: "logo-container" }, ke = [
275
+ }, _e = /* @__PURE__ */ Q(ge, [["__scopeId", "data-v-01fd38ee"]]), ve = { class: "top-layout-container" }, ye = { class: "navbar-left" }, be = { class: "logo-container" }, xe = [
588
276
  "src",
589
277
  "width",
590
278
  "height"
591
- ], Ae = [
279
+ ], Se = [
592
280
  "src",
593
281
  "width",
594
- "height"
595
- ], je = { class: "brand-name" }, Me = { class: "brand-title" }, Ne = { class: "brand-subtitle" }, Pe = { class: "navbar-center" }, Fe = { class: "page-content" }, Ie = /* @__PURE__ */ d({
282
+ "height",
283
+ "alt"
284
+ ], Ce = { class: "brand-name" }, we = { class: "brand-title" }, Te = { class: "brand-subtitle" }, Ee = { class: "navbar-center" }, De = { class: "page-content" }, Oe = /* @__PURE__ */ d({
596
285
  name: "TopLayout",
597
286
  __name: "index",
598
287
  setup(e) {
599
- let c = Y(), { cachedViews: l, maxCacheCount: d } = Z(), f = c.isDark, p = r(() => c.menus.value), m = r(() => c.showTagsView.value), _ = r(() => c.tagsViewHeight.value), v = r(() => c.showFooter.value), b = r(() => c.transitionName.value), x = {
288
+ let c = Y(), { cachedViews: l, maxCacheCount: d } = Z(), f = c.isDark, p = r(() => c.menus.value), m = r(() => c.showTagsView.value), h = r(() => c.tagsViewHeight.value), v = r(() => c.showFooter.value), y = r(() => c.transitionName.value), x = {
600
289
  ...X,
601
290
  ...c.brand
602
291
  };
603
292
  return (e, r) => {
604
- let c = w("RouterView");
605
- return y(), o("div", Ee, [
606
- s("div", { class: h(["top-navbar", [O(f) ? "dark-theme" : "light-theme"]]) }, [
607
- s("div", De, [C(e.$slots, "logo", {}, () => [
608
- s("div", Oe, [r[0] ||= s("div", { class: "logo-glow" }, null, -1), x.logoType === "video" ? (y(), o("video", {
293
+ let c = T("RouterView");
294
+ return b(), o("div", ve, [
295
+ s("div", { class: g(["top-navbar", [k(f) ? "dark-theme" : "light-theme"]]) }, [
296
+ s("div", ye, [w(e.$slots, "logo", {}, () => [
297
+ s("div", be, [r[0] ||= s("div", { class: "logo-glow" }, null, -1), x.logoType === "video" && x.logoSrc ? (b(), o("video", {
609
298
  key: 0,
610
299
  src: x.logoSrc,
611
300
  width: x.logoSize || 36,
@@ -615,41 +304,42 @@ var Se = /* @__PURE__ */ d({
615
304
  muted: "",
616
305
  playsinline: "",
617
306
  class: "logo-video"
618
- }, " 您的浏览器不支持 video 标签。 ", 8, ke)) : (y(), o("img", {
307
+ }, " 您的浏览器不支持 video 标签。 ", 8, xe)) : x.logoSrc ? (b(), o("img", {
619
308
  key: 1,
620
309
  src: x.logoSrc,
621
310
  width: x.logoSize || 36,
622
311
  height: x.logoSize || 36,
623
- class: "logo-video"
624
- }, null, 8, Ae))]),
625
- s("div", je, [s("span", Me, E(x.name), 1), s("span", Ne, E(x.subtitle), 1)]),
312
+ class: "logo-video",
313
+ alt: x.name || "Logo"
314
+ }, null, 8, Se)) : a("", !0)]),
315
+ s("div", Ce, [s("span", we, D(x.name), 1), s("span", Te, D(x.subtitle), 1)]),
626
316
  r[1] ||= s("div", { class: "navbar-divider" }, null, -1)
627
317
  ])]),
628
- s("div", Pe, [C(e.$slots, "menu", {}, () => [u($, { data: p.value }, null, 8, ["data"])])]),
629
- C(e.$slots, "header-extra")
318
+ s("div", Ee, [w(e.$slots, "menu", {}, () => [u(_e, { data: p.value }, null, 8, ["data"])])]),
319
+ w(e.$slots, "header-extra")
630
320
  ], 2),
631
- m.value ? (y(), o("div", {
321
+ m.value ? (b(), o("div", {
632
322
  key: 0,
633
323
  class: "tags-view-container",
634
- style: g({ height: `${_.value}px` })
635
- }, [C(e.$slots, "tags-view")], 4)) : a("", !0),
636
- u(O(V), null, {
637
- default: j(() => [u(O(H), { class: "main-content" }, {
638
- default: j(() => [s("div", Fe, [u(c, null, {
639
- default: j(({ Component: e, route: r }) => [u(n, {
640
- name: b.value,
324
+ style: _({ height: `${h.value}px` })
325
+ }, [w(e.$slots, "tags-view")], 4)) : a("", !0),
326
+ u(k(V), null, {
327
+ default: M(() => [u(k(H), { class: "main-content" }, {
328
+ default: M(() => [s("div", De, [u(c, null, {
329
+ default: M(({ Component: e, route: r }) => [u(n, {
330
+ name: y.value,
641
331
  mode: "out-in"
642
332
  }, {
643
- default: j(() => [(y(), i(t, {
644
- include: O(l),
645
- max: O(d)
646
- }, [(y(), i(T(e), { key: r.path }))], 1032, ["include", "max"]))]),
333
+ default: M(() => [(b(), i(t, {
334
+ include: k(l),
335
+ max: k(d)
336
+ }, [(b(), i(E(e), { key: r.path }))], 1032, ["include", "max"]))]),
647
337
  _: 2
648
338
  }, 1032, ["name"])]),
649
339
  _: 1
650
340
  })])]),
651
341
  _: 1
652
- }), v.value ? C(e.$slots, "footer", { key: 0 }) : a("", !0)]),
342
+ }), v.value ? w(e.$slots, "footer", {}, void 0, void 0, 0) : a("", !0)]),
653
343
  _: 3
654
344
  })
655
345
  ]);
@@ -658,26 +348,26 @@ var Se = /* @__PURE__ */ d({
658
348
  });
659
349
  //#endregion
660
350
  //#region src/composables/useMenuSplit.ts
661
- function Le(e, t) {
351
+ function ke(e, t) {
662
352
  if (!e) return !1;
663
353
  let n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean);
664
354
  return n.length === 0 ? r.length === 0 : n.every((e, t) => r[t] === e);
665
355
  }
666
- function Re(e) {
667
- let { menus: t, floatingSecondMenu: n = !1 } = e, i = K(), a = q(), o = x(""), s = x(null), c = x(!1), l = r(() => s.value || f.value || null), u = (e) => Le(e, i.path), d = (e) => {
356
+ function Ae(e) {
357
+ let { menus: t, floatingSecondMenu: n = !1 } = e, i = K(), a = q(), o = S(""), s = S(null), c = S(!1), l = r(() => s.value || f.value || null), u = (e) => ke(e, i.path), d = (e) => {
668
358
  for (let t of e) if (u(t.path) || t.children?.length && d(t.children)) return t;
669
359
  return null;
670
360
  }, f = r(() => t.value.find((e) => e.path === o.value)), p = r(() => f.value?.children || []), m = (e) => {
671
- D(n) ? e.children && e.children.length > 0 ? c.value && o.value === e.path ? c.value = !1 : (o.value = e.path || "", c.value = !0) : (o.value = e.path || "", c.value = !1, e.path && a.push(e.path)) : (!e.children || e.children.length === 0) && e.path && a.push(e.path);
361
+ e.disabled || (O(n) ? e.children && e.children.length > 0 ? c.value && o.value === e.path ? c.value = !1 : (o.value = e.path || "", c.value = !0) : (o.value = e.path || "", c.value = !1, e.path && a.push(e.path)) : (!e.children || e.children.length === 0) && e.path && a.push(e.path));
672
362
  }, h = (e) => {
673
- e.path && a.push(e.path);
363
+ !e.disabled && e.path && a.push(e.path);
674
364
  }, g = () => {
675
365
  let e = t.value, r = d(e);
676
- r ? (o.value = r.path || "", D(n) && r.children?.length && (c.value = !0)) : e.length > 0 && !o.value && (o.value = e[0].path || "");
366
+ r ? (o.value = r.path || "", O(n) && r.children?.length && (c.value = !0)) : e.length > 0 && !o.value && (o.value = e[0].path || "");
677
367
  };
678
- return A(() => i.path, () => g(), { immediate: !0 }), A(t, (e) => {
368
+ return j(() => i.path, () => g(), { immediate: !0 }), j(t, (e) => {
679
369
  e && e.length > 0 && g();
680
- }, { immediate: !0 }), _(() => g()), {
370
+ }, { immediate: !0 }), v(() => g()), {
681
371
  activeFirstMenu: o,
682
372
  activeFirstMenuItem: f,
683
373
  currentSecondMenus: p,
@@ -691,28 +381,39 @@ function Re(e) {
691
381
  }
692
382
  //#endregion
693
383
  //#region src/components/layouts/MixLayout/index.vue?vue&type=script&setup=true&lang.ts
694
- var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve = [
384
+ var je = { class: "mix-layout-container" }, Me = { class: "logo-container" }, Ne = [
695
385
  "src",
696
386
  "width",
697
387
  "height"
698
- ], He = [
388
+ ], Pe = [
699
389
  "src",
700
390
  "width",
701
- "height"
702
- ], Ue = { class: "first-menu-list" }, We = ["onClick"], Ge = { class: "menu-item-content" }, Ke = {
391
+ "height",
392
+ "alt"
393
+ ], Fe = { class: "first-menu-list" }, Ie = [
394
+ "tabindex",
395
+ "aria-disabled",
396
+ "onClick",
397
+ "onKeydown"
398
+ ], Le = { class: "menu-item-content" }, Re = {
703
399
  key: 1,
704
400
  class: "menu-item-text"
705
- }, qe = { class: "menu-item-label" }, Je = { class: "second-menu-header" }, Ye = { class: "menu-title" }, Xe = { class: "second-menu-list" }, Ze = ["onClick"], Qe = { class: "menu-item-label" }, $e = { class: "main-layout" }, et = /* @__PURE__ */ d({
401
+ }, ze = { class: "menu-item-label" }, Be = { class: "second-menu-header" }, Ve = { class: "menu-title" }, He = { class: "second-menu-list" }, Ue = [
402
+ "tabindex",
403
+ "aria-disabled",
404
+ "onClick",
405
+ "onKeydown"
406
+ ], We = { class: "menu-item-label" }, Ge = { class: "main-layout" }, Ke = /* @__PURE__ */ d({
706
407
  name: "MixLayout",
707
408
  __name: "index",
708
409
  setup(c) {
709
- let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), g = l.isDark, _ = r(() => l.menus.value), v = r(() => l.showFooter.value), b = r(() => l.transitionName.value), x = {
410
+ let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), h = l.isDark, _ = r(() => l.menus.value), v = r(() => l.showFooter.value), y = r(() => l.transitionName.value), x = {
710
411
  ...X,
711
412
  ...l.brand
712
- }, D = Re({
413
+ }, S = Ae({
713
414
  menus: l.menus,
714
415
  floatingSecondMenu: r(() => !0)
715
- }), k = l.iconComponent ?? d({
416
+ }), O = l.iconComponent ?? d({
716
417
  name: "LayoutIcon",
717
418
  props: {
718
419
  name: String,
@@ -734,9 +435,9 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
734
435
  }
735
436
  });
736
437
  return (r, c) => {
737
- let l = w("RouterView");
738
- return y(), o("div", ze, [
739
- s("div", { class: h(["first-level-menu", [O(g) ? "dark-theme" : "light-theme"]]) }, [s("div", Be, [C(r.$slots, "logo", {}, () => [c[0] ||= s("div", { class: "logo-glow" }, null, -1), x.logoType === "video" ? (y(), o("video", {
438
+ let l = T("RouterView");
439
+ return b(), o("div", je, [
440
+ s("div", { class: g(["first-level-menu", [k(h) ? "dark-theme" : "light-theme"]]) }, [s("div", Me, [w(r.$slots, "logo", {}, () => [c[0] ||= s("div", { class: "logo-glow" }, null, -1), x.logoType === "video" && x.logoSrc ? (b(), o("video", {
740
441
  key: 0,
741
442
  src: x.logoSrc,
742
443
  width: x.logoSize || 40,
@@ -746,605 +447,1029 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
746
447
  muted: "",
747
448
  playsinline: "",
748
449
  class: "logo-video"
749
- }, " 您的浏览器不支持 video 标签。 ", 8, Ve)) : (y(), o("img", {
450
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ne)) : x.logoSrc ? (b(), o("img", {
750
451
  key: 1,
751
452
  src: x.logoSrc,
752
453
  width: x.logoSize || 40,
753
454
  height: x.logoSize || 40,
754
- class: "logo-video"
755
- }, null, 8, He))])]), s("div", Ue, [(y(!0), o(e, null, S(_.value, (e) => (y(), o("div", {
455
+ class: "logo-video",
456
+ alt: x.name || "Logo"
457
+ }, null, 8, Pe)) : a("", !0)])]), s("div", Fe, [(b(!0), o(e, null, C(_.value, (e) => (b(), o("div", {
756
458
  key: e.path,
757
- class: h(["first-menu-item", { active: O(D).activeFirstMenu.value === e.path }]),
758
- onClick: (t) => O(D).handleFirstMenuClick(e)
759
- }, [s("div", Ge, [e.meta?.icon ? (y(), i(T(O(k)), {
459
+ class: g(["first-menu-item", { active: k(S).activeFirstMenu.value === e.path }]),
460
+ role: "button",
461
+ tabindex: e.disabled ? -1 : 0,
462
+ "aria-disabled": e.disabled || void 0,
463
+ onClick: (t) => k(S).handleFirstMenuClick(e),
464
+ onKeydown: [N((t) => k(S).handleFirstMenuClick(e), ["enter"]), N(P((t) => k(S).handleFirstMenuClick(e), ["prevent"]), ["space"])]
465
+ }, [s("div", Le, [e.meta?.icon ? (b(), i(E(k(O)), {
760
466
  key: 0,
761
467
  name: e.meta.icon,
762
468
  size: 22
763
- }, null, 8, ["name"])) : (y(), o("span", Ke, E((e.meta?.title || "")[0]), 1))]), s("span", qe, E(e.meta?.title), 1)], 10, We))), 128))])], 2),
469
+ }, null, 8, ["name"])) : (b(), o("span", Re, D((e.meta?.title || "")[0]), 1))]), s("span", ze, D(e.meta?.title), 1)], 42, Ie))), 128))])], 2),
764
470
  u(n, { name: "slide-fade" }, {
765
- default: j(() => [O(D).showSecondMenu.value ? (y(), o("div", {
471
+ default: M(() => [k(S).showSecondMenu.value ? (b(), o("div", {
766
472
  key: 0,
767
- class: h(["second-level-menu-popup", [O(g) ? "dark-theme" : "light-theme"]])
768
- }, [s("div", Je, [O(D).displayMenuItem.value?.meta?.icon ? (y(), i(T(O(k)), {
473
+ class: g(["second-level-menu-popup", [k(h) ? "dark-theme" : "light-theme"]])
474
+ }, [s("div", Be, [k(S).displayMenuItem.value?.meta?.icon ? (b(), i(E(k(O)), {
769
475
  key: 0,
770
- name: O(D).displayMenuItem.value.meta.icon,
476
+ name: k(S).displayMenuItem.value.meta.icon,
771
477
  size: 20
772
- }, null, 8, ["name"])) : a("", !0), s("span", Ye, E(O(D).displayMenuItem.value?.meta?.title), 1)]), s("div", Xe, [(y(!0), o(e, null, S(O(D).displayMenuItem.value?.children || [], (e) => (y(), o("div", {
478
+ }, null, 8, ["name"])) : a("", !0), s("span", Ve, D(k(S).displayMenuItem.value?.meta?.title), 1)]), s("div", He, [(b(!0), o(e, null, C(k(S).displayMenuItem.value?.children || [], (e) => (b(), o("div", {
773
479
  key: e.path,
774
- class: h(["second-menu-item", { active: O(D).isMenuItemActive(e.path) }]),
775
- onClick: (t) => O(D).handleSecondMenuClick(e)
776
- }, [e.meta?.icon ? (y(), i(T(O(k)), {
480
+ class: g(["second-menu-item", { active: k(S).isMenuItemActive(e.path) }]),
481
+ role: "link",
482
+ tabindex: e.disabled ? -1 : 0,
483
+ "aria-disabled": e.disabled || void 0,
484
+ onClick: (t) => k(S).handleSecondMenuClick(e),
485
+ onKeydown: [N((t) => k(S).handleSecondMenuClick(e), ["enter"]), N(P((t) => k(S).handleSecondMenuClick(e), ["prevent"]), ["space"])]
486
+ }, [e.meta?.icon ? (b(), i(E(k(O)), {
777
487
  key: 0,
778
488
  name: e.meta.icon,
779
489
  size: 16
780
- }, null, 8, ["name"])) : a("", !0), s("span", Qe, E(e.meta?.title), 1)], 10, Ze))), 128))])], 2)) : a("", !0)]),
490
+ }, null, 8, ["name"])) : a("", !0), s("span", We, D(e.meta?.title), 1)], 42, Ue))), 128))])], 2)) : a("", !0)]),
781
491
  _: 1
782
492
  }),
783
- s("div", $e, [C(r.$slots, "header"), u(O(V), null, {
784
- default: j(() => [u(O(H), { class: "content-with-header p16px app-content" }, {
785
- default: j(() => [u(l, null, {
786
- default: j(({ Component: e, route: r }) => [u(n, {
787
- name: b.value,
493
+ s("div", Ge, [w(r.$slots, "header"), u(k(V), null, {
494
+ default: M(() => [u(k(H), { class: "content-with-header p16px app-content" }, {
495
+ default: M(() => [u(l, null, {
496
+ default: M(({ Component: e, route: r }) => [u(n, {
497
+ name: y.value,
788
498
  mode: "out-in"
789
499
  }, {
790
- default: j(() => [(y(), i(t, {
791
- include: O(p),
792
- max: O(m)
793
- }, [(y(), i(T(e), { key: r.path }))], 1032, ["include", "max"]))]),
500
+ default: M(() => [(b(), i(t, {
501
+ include: k(p),
502
+ max: k(m)
503
+ }, [(b(), i(E(e), { key: r.path }))], 1032, ["include", "max"]))]),
794
504
  _: 2
795
505
  }, 1032, ["name"])]),
796
506
  _: 1
797
507
  })]),
798
508
  _: 1
799
- }), v.value ? C(r.$slots, "footer", { key: 0 }) : a("", !0)]),
509
+ }), v.value ? w(r.$slots, "footer", {}, void 0, void 0, 0) : a("", !0)]),
510
+ _: 3
511
+ })])
512
+ ]);
513
+ };
514
+ }
515
+ }), qe = { class: "mix-top-layout-container" }, Je = { class: "logo-container" }, Ye = [
516
+ "src",
517
+ "width",
518
+ "height"
519
+ ], Xe = [
520
+ "src",
521
+ "width",
522
+ "height",
523
+ "alt"
524
+ ], Ze = { class: "first-menu-list" }, Qe = [
525
+ "tabindex",
526
+ "aria-disabled",
527
+ "aria-current",
528
+ "onClick",
529
+ "onKeydown"
530
+ ], $e = { class: "menu-item-content" }, et = {
531
+ key: 1,
532
+ class: "menu-item-text"
533
+ }, tt = { class: "menu-item-label" }, nt = { class: "main-area" }, rt = { class: "navbar-left" }, it = { class: "brand-name" }, at = { class: "brand-title" }, ot = { class: "brand-subtitle" }, st = { class: "navbar-center" }, ct = { class: "page-content" }, lt = /* @__PURE__ */ d({
534
+ name: "MixTopLayout",
535
+ __name: "index",
536
+ setup(c) {
537
+ let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), h = l.isDark, v = r(() => l.menus.value), y = r(() => l.showTagsView.value), x = r(() => l.tagsViewHeight.value), S = r(() => l.showFooter.value), O = r(() => l.transitionName.value), A = {
538
+ ...X,
539
+ ...l.brand
540
+ }, j = Ae({
541
+ menus: l.menus,
542
+ floatingSecondMenu: r(() => !1)
543
+ }), F = l.iconComponent ?? d({
544
+ name: "LayoutIcon",
545
+ props: {
546
+ name: String,
547
+ size: {
548
+ type: Number,
549
+ default: 18
550
+ }
551
+ },
552
+ setup(e) {
553
+ return () => f("i", {
554
+ class: e.name,
555
+ style: {
556
+ fontSize: `${e.size}px`,
557
+ display: "inline-flex",
558
+ alignItems: "center",
559
+ justifyContent: "center"
560
+ }
561
+ });
562
+ }
563
+ });
564
+ return (r, c) => {
565
+ let l = T("RouterView");
566
+ return b(), o("div", qe, [s("div", { class: g(["first-level-sidebar", [k(h) ? "dark-theme" : "light-theme"]]) }, [s("div", Je, [w(r.$slots, "logo", {}, () => [c[0] ||= s("div", { class: "logo-glow" }, null, -1), A.logoType === "video" && A.logoSrc ? (b(), o("video", {
567
+ key: 0,
568
+ src: A.logoSrc,
569
+ width: A.logoSize || 40,
570
+ height: A.logoSize || 40,
571
+ autoplay: "",
572
+ loop: "",
573
+ muted: "",
574
+ playsinline: "",
575
+ class: "logo-video"
576
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ye)) : A.logoSrc ? (b(), o("img", {
577
+ key: 1,
578
+ src: A.logoSrc,
579
+ width: A.logoSize || 40,
580
+ height: A.logoSize || 40,
581
+ class: "logo-video",
582
+ alt: A.name || "Logo"
583
+ }, null, 8, Xe)) : a("", !0)])]), s("div", Ze, [(b(!0), o(e, null, C(v.value, (e) => (b(), o("div", {
584
+ key: e.path,
585
+ class: g(["first-menu-item", { active: k(j).activeFirstMenu.value === e.path }]),
586
+ role: "button",
587
+ tabindex: e.disabled ? -1 : 0,
588
+ "aria-disabled": e.disabled || void 0,
589
+ "aria-current": k(j).activeFirstMenu.value === e.path ? "page" : void 0,
590
+ onClick: (t) => k(j).handleFirstMenuClick(e),
591
+ onKeydown: [N((t) => k(j).handleFirstMenuClick(e), ["enter"]), N(P((t) => k(j).handleFirstMenuClick(e), ["prevent"]), ["space"])]
592
+ }, [s("div", $e, [e.meta?.icon ? (b(), i(E(k(F)), {
593
+ key: 0,
594
+ name: e.meta.icon,
595
+ size: 22
596
+ }, null, 8, ["name"])) : (b(), o("span", et, D((e.meta?.title || "")[0]), 1))]), s("span", tt, D(e.meta?.title), 1)], 42, Qe))), 128))])], 2), s("div", nt, [
597
+ s("div", { class: g(["top-navbar", [k(h) ? "dark-theme" : "light-theme"]]) }, [
598
+ s("div", rt, [w(r.$slots, "brand", {}, () => [s("div", it, [s("span", at, D(A.name), 1), s("span", ot, D(A.subtitle), 1)]), c[1] ||= s("div", { class: "navbar-divider" }, null, -1)])]),
599
+ s("div", st, [w(r.$slots, "top-menu", {}, () => [k(j).currentSecondMenus.value.length > 0 ? (b(), i(_e, {
600
+ key: 0,
601
+ data: k(j).currentSecondMenus.value
602
+ }, null, 8, ["data"])) : a("", !0)])]),
603
+ w(r.$slots, "header-extra")
604
+ ], 2),
605
+ y.value ? (b(), o("div", {
606
+ key: 0,
607
+ class: "tags-view-container",
608
+ style: _({ height: `${x.value}px` })
609
+ }, [w(r.$slots, "tags-view")], 4)) : a("", !0),
610
+ u(k(V), { class: "content-layout" }, {
611
+ default: M(() => [u(k(H), { class: "main-content" }, {
612
+ default: M(() => [s("div", ct, [u(l, null, {
613
+ default: M(({ Component: e, route: r }) => [u(n, {
614
+ name: O.value,
615
+ mode: "out-in"
616
+ }, {
617
+ default: M(() => [(b(), i(t, {
618
+ include: k(p),
619
+ max: k(m)
620
+ }, [(b(), i(E(e), { key: r.path }))], 1032, ["include", "max"]))]),
621
+ _: 2
622
+ }, 1032, ["name"])]),
623
+ _: 1
624
+ })])]),
625
+ _: 1
626
+ }), S.value ? w(r.$slots, "footer", {}, void 0, void 0, 0) : a("", !0)]),
627
+ _: 3
628
+ })
629
+ ])]);
630
+ };
631
+ }
632
+ }), ut = { class: "reverse-horizontal-mix-layout-container" }, dt = { class: "navbar-left" }, ft = { class: "logo-container" }, pt = [
633
+ "src",
634
+ "width",
635
+ "height"
636
+ ], mt = [
637
+ "src",
638
+ "width",
639
+ "height",
640
+ "alt"
641
+ ], ht = { class: "brand-name" }, gt = { class: "brand-title" }, _t = { class: "brand-subtitle" }, vt = { class: "navbar-center" }, yt = { class: "main-area" }, bt = { class: "page-content" }, xt = ["aria-expanded", "onKeydown"], St = { class: "header-icon" }, Ct = { class: "header-title" }, wt = { class: "sidebar-menu-list" }, Tt = {
642
+ key: 0,
643
+ class: "menu-group"
644
+ }, Et = { class: "group-title" }, Dt = [
645
+ "tabindex",
646
+ "aria-disabled",
647
+ "aria-current",
648
+ "onClick",
649
+ "onKeydown"
650
+ ], Ot = { class: "item-title" }, kt = [
651
+ "tabindex",
652
+ "aria-disabled",
653
+ "aria-current",
654
+ "onClick",
655
+ "onKeydown"
656
+ ], At = { class: "item-title" }, jt = /* @__PURE__ */ d({
657
+ name: "ReverseHorizontalMixLayout",
658
+ __name: "index",
659
+ setup(c) {
660
+ let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), h = l.isDark, v = r(() => l.menus.value), y = r(() => l.showTagsView.value), x = r(() => l.tagsViewHeight.value), O = r(() => l.showFooter.value), A = r(() => l.transitionName.value), j = {
661
+ ...X,
662
+ ...l.brand
663
+ }, F = Ae({
664
+ menus: l.menus,
665
+ floatingSecondMenu: r(() => !1)
666
+ }), I = S(!1), L = () => {
667
+ I.value = !I.value;
668
+ }, R = l.iconComponent ?? d({
669
+ name: "LayoutIcon",
670
+ props: {
671
+ name: String,
672
+ size: {
673
+ type: Number,
674
+ default: 18
675
+ }
676
+ },
677
+ setup(e) {
678
+ return () => f("i", {
679
+ class: e.name,
680
+ style: {
681
+ fontSize: `${e.size}px`,
682
+ display: "inline-flex",
683
+ alignItems: "center",
684
+ justifyContent: "center"
685
+ }
686
+ });
687
+ }
688
+ });
689
+ return (r, c) => {
690
+ let l = T("RouterView");
691
+ return b(), o("div", ut, [
692
+ s("div", { class: g(["top-navbar", [k(h) ? "dark-theme" : "light-theme"]]) }, [
693
+ s("div", dt, [w(r.$slots, "logo", {}, () => [
694
+ s("div", ft, [c[0] ||= s("div", { class: "logo-glow" }, null, -1), j.logoType === "video" && j.logoSrc ? (b(), o("video", {
695
+ key: 0,
696
+ src: j.logoSrc,
697
+ width: j.logoSize || 36,
698
+ height: j.logoSize || 36,
699
+ autoplay: "",
700
+ loop: "",
701
+ muted: "",
702
+ playsinline: "",
703
+ class: "logo-video"
704
+ }, " 您的浏览器不支持 video 标签。 ", 8, pt)) : j.logoSrc ? (b(), o("img", {
705
+ key: 1,
706
+ src: j.logoSrc,
707
+ width: j.logoSize || 36,
708
+ height: j.logoSize || 36,
709
+ class: "logo-video",
710
+ alt: j.name || "Logo"
711
+ }, null, 8, mt)) : a("", !0)]),
712
+ s("div", ht, [s("span", gt, D(j.name), 1), s("span", _t, D(j.subtitle), 1)]),
713
+ c[1] ||= s("div", { class: "navbar-divider" }, null, -1)
714
+ ])]),
715
+ s("div", vt, [w(r.$slots, "top-menu", {}, () => [u(_e, { data: v.value }, null, 8, ["data"])])]),
716
+ w(r.$slots, "header-extra")
717
+ ], 2),
718
+ y.value ? (b(), o("div", {
719
+ key: 0,
720
+ class: "tags-view-container",
721
+ style: _({ height: `${x.value}px` })
722
+ }, [w(r.$slots, "tags-view")], 4)) : a("", !0),
723
+ s("div", yt, [
724
+ u(k(V), { class: "content-layout" }, {
725
+ default: M(() => [u(k(H), { class: "main-content" }, {
726
+ default: M(() => [s("div", bt, [u(l, null, {
727
+ default: M(({ Component: e, route: r }) => [u(n, {
728
+ name: A.value,
729
+ mode: "out-in"
730
+ }, {
731
+ default: M(() => [(b(), i(t, {
732
+ include: k(p),
733
+ max: k(m)
734
+ }, [(b(), i(E(e), { key: r.path }))], 1032, ["include", "max"]))]),
735
+ _: 2
736
+ }, 1032, ["name"])]),
737
+ _: 1
738
+ })])]),
739
+ _: 1
740
+ }), O.value ? w(r.$slots, "footer", {}, void 0, void 0, 0) : a("", !0)]),
741
+ _: 3
742
+ }),
743
+ k(F).currentSecondMenus.value.length > 0 ? (b(), o("div", {
744
+ key: 0,
745
+ class: g(["sidebar-toggle", [k(h) ? "dark-theme" : "light-theme", { active: !I.value }]]),
746
+ onClick: L,
747
+ role: "button",
748
+ tabindex: "0",
749
+ "aria-expanded": !I.value,
750
+ onKeydown: [N(L, ["enter"]), N(P(L, ["prevent"]), ["space"])]
751
+ }, [s("span", { class: g([
752
+ "collapse-arrow",
753
+ "toggle-icon",
754
+ I.value ? "collapsed" : "expanded"
755
+ ]) }, [...c[2] ||= [s("span", { class: "arrow-line" }, null, -1), s("span", { class: "arrow-line" }, null, -1)]], 2)], 42, xt)) : a("", !0),
756
+ k(F).currentSecondMenus.value.length > 0 ? (b(), o("div", {
757
+ key: 1,
758
+ class: g(["right-sidebar-wrapper", { collapsed: I.value }])
759
+ }, [s("div", { class: g(["right-sidebar", [k(h) ? "dark-theme" : "light-theme"]]) }, [s("div", { class: g(["sidebar-header", [k(h) ? "dark-theme" : "light-theme"]]) }, [s("div", St, [k(F).activeFirstMenuItem.value?.meta?.icon ? (b(), i(E(k(R)), {
760
+ key: 0,
761
+ name: k(F).activeFirstMenuItem.value.meta.icon,
762
+ size: 20
763
+ }, null, 8, ["name"])) : a("", !0)]), s("span", Ct, D(k(F).activeFirstMenuItem.value?.meta?.title || "菜单"), 1)], 2), s("div", wt, [(b(!0), o(e, null, C(k(F).currentSecondMenus.value, (t) => (b(), o(e, { key: t.path }, [t.children && t.children.length > 0 ? (b(), o("div", Tt, [s("div", Et, [t.meta?.icon ? (b(), i(E(k(R)), {
764
+ key: 0,
765
+ name: t.meta.icon,
766
+ size: 16
767
+ }, null, 8, ["name"])) : a("", !0), s("span", null, D(t.meta?.title), 1)]), (b(!0), o(e, null, C(t.children, (e) => (b(), o("div", {
768
+ key: e.path,
769
+ class: g(["menu-item sub-item", { active: k(F).isMenuItemActive(e.path) }]),
770
+ role: "button",
771
+ tabindex: e.disabled ? -1 : 0,
772
+ "aria-disabled": e.disabled || void 0,
773
+ "aria-current": k(F).isMenuItemActive(e.path) ? "page" : void 0,
774
+ onClick: (t) => k(F).handleSecondMenuClick(e),
775
+ onKeydown: [N((t) => k(F).handleSecondMenuClick(e), ["enter"]), N(P((t) => k(F).handleSecondMenuClick(e), ["prevent"]), ["space"])]
776
+ }, [e.meta?.icon ? (b(), i(E(k(R)), {
777
+ key: 0,
778
+ name: e.meta.icon,
779
+ size: 16
780
+ }, null, 8, ["name"])) : a("", !0), s("span", Ot, D(e.meta?.title), 1)], 42, Dt))), 128))])) : (b(), o("div", {
781
+ key: 1,
782
+ class: g(["menu-item", { active: k(F).isMenuItemActive(t.path) }]),
783
+ role: "button",
784
+ tabindex: t.disabled ? -1 : 0,
785
+ "aria-disabled": t.disabled || void 0,
786
+ "aria-current": k(F).isMenuItemActive(t.path) ? "page" : void 0,
787
+ onClick: (e) => k(F).handleSecondMenuClick(t),
788
+ onKeydown: [N((e) => k(F).handleSecondMenuClick(t), ["enter"]), N(P((e) => k(F).handleSecondMenuClick(t), ["prevent"]), ["space"])]
789
+ }, [t.meta?.icon ? (b(), i(E(k(R)), {
790
+ key: 0,
791
+ name: t.meta.icon,
792
+ size: 18
793
+ }, null, 8, ["name"])) : a("", !0), s("span", At, D(t.meta?.title), 1)], 42, kt))], 64))), 128))])], 2)], 2)) : a("", !0)
794
+ ])
795
+ ]);
796
+ };
797
+ }
798
+ }), Mt = { class: "card-layout-container" }, Nt = { class: "navbar-left" }, Pt = { class: "logo-container" }, Ft = [
799
+ "src",
800
+ "width",
801
+ "height"
802
+ ], It = [
803
+ "src",
804
+ "width",
805
+ "height",
806
+ "alt"
807
+ ], Lt = { class: "brand-name" }, Rt = { class: "brand-title" }, zt = { class: "brand-subtitle" }, Bt = { class: "drawer-content" }, Vt = { class: "menu-grid" }, Ht = [
808
+ "tabindex",
809
+ "aria-disabled",
810
+ "onClick",
811
+ "onKeydown"
812
+ ], Ut = {
813
+ key: 0,
814
+ class: "category-items"
815
+ }, Wt = [
816
+ "tabindex",
817
+ "aria-disabled",
818
+ "onClick",
819
+ "onKeydown"
820
+ ], Gt = { class: "item-title" }, Kt = {
821
+ key: 0,
822
+ class: "submenu-items"
823
+ }, qt = { class: "submenu-title" }, Jt = [
824
+ "tabindex",
825
+ "aria-disabled",
826
+ "onClick",
827
+ "onKeydown"
828
+ ], Yt = { class: "item-title" }, Xt = { class: "main-content-area" }, Zt = { class: "page-content" }, Qt = /* @__PURE__ */ Q(/* @__PURE__ */ d({
829
+ name: "CardLayout",
830
+ __name: "index",
831
+ setup(c) {
832
+ let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), h = q(), v = l.isDark, x = r(() => l.menus.value), O = r(() => l.showTagsView.value), A = r(() => l.tagsViewHeight.value), j = r(() => l.showFooter.value), F = r(() => l.transitionName.value), I = {
833
+ ...X,
834
+ ...l.brand
835
+ }, L = S(!1), R = S(null), z = () => {
836
+ R.value && clearTimeout(R.value), R.value = setTimeout(() => {
837
+ L.value = !1;
838
+ }, 300);
839
+ }, B = () => {
840
+ R.value &&= (clearTimeout(R.value), null), L.value = !0;
841
+ }, U = (e) => {
842
+ !e.disabled && e.path && (h.push(e.path), L.value = !1);
843
+ }, ee = l.iconComponent ?? d({
844
+ name: "LayoutIcon",
845
+ props: {
846
+ name: String,
847
+ size: {
848
+ type: Number,
849
+ default: 18
850
+ }
851
+ },
852
+ setup(e) {
853
+ return () => f("i", {
854
+ class: e.name,
855
+ style: {
856
+ fontSize: `${e.size}px`,
857
+ display: "inline-flex",
858
+ alignItems: "center",
859
+ justifyContent: "center"
860
+ }
861
+ });
862
+ }
863
+ });
864
+ return y(() => {
865
+ R.value && clearTimeout(R.value);
866
+ }), (r, c) => {
867
+ let l = T("RouterView");
868
+ return b(), o("div", Mt, [
869
+ s("div", { class: g(["top-navbar", [k(v) ? "dark-theme" : "light-theme"]]) }, [s("div", Nt, [s("div", {
870
+ class: "hover-trigger-area",
871
+ onMouseenter: B,
872
+ onMouseleave: z
873
+ }, [w(r.$slots, "menu-trigger", {}, () => [c[0] ||= s("div", { class: "menu-indicator" }, [s("span", { class: "hamburger-icon" }, [
874
+ s("span"),
875
+ s("span"),
876
+ s("span")
877
+ ])], -1)], !0)], 32), w(r.$slots, "logo", {}, () => [
878
+ s("div", Pt, [c[1] ||= s("div", { class: "logo-glow" }, null, -1), I.logoType === "video" && I.logoSrc ? (b(), o("video", {
879
+ key: 0,
880
+ src: I.logoSrc,
881
+ width: I.logoSize || 36,
882
+ height: I.logoSize || 36,
883
+ autoplay: "",
884
+ loop: "",
885
+ muted: "",
886
+ playsinline: "",
887
+ class: "logo-video"
888
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ft)) : I.logoSrc ? (b(), o("img", {
889
+ key: 1,
890
+ src: I.logoSrc,
891
+ width: I.logoSize || 36,
892
+ height: I.logoSize || 36,
893
+ class: "logo-video",
894
+ alt: I.name || "Logo"
895
+ }, null, 8, It)) : a("", !0)]),
896
+ s("div", Lt, [s("span", Rt, D(I.name), 1), s("span", zt, D(I.subtitle), 1)]),
897
+ c[2] ||= s("div", { class: "navbar-divider" }, null, -1)
898
+ ], !0)]), w(r.$slots, "header-extra", {}, void 0, !0)], 2),
899
+ O.value ? (b(), o("div", {
900
+ key: 0,
901
+ class: "tags-view-container",
902
+ style: _({ height: `${A.value}px` })
903
+ }, [w(r.$slots, "tags-view", {}, void 0, !0)], 4)) : a("", !0),
904
+ s("div", {
905
+ class: g(["drawer-menu", [k(v) ? "dark-theme" : "light-theme", { visible: L.value }]]),
906
+ onMouseenter: B,
907
+ onMouseleave: z
908
+ }, [w(r.$slots, "drawer-menu", {}, () => [c[3] ||= s("div", { class: "drawer-header" }, [s("div", { class: "drawer-title" }, [s("span", { class: "grid-icon" }, [
909
+ s("span"),
910
+ s("span"),
911
+ s("span"),
912
+ s("span")
913
+ ]), s("span", null, "功能导航")])], -1), s("div", Bt, [s("div", Vt, [(b(!0), o(e, null, C(x.value, (t) => (b(), o("div", {
914
+ key: t.path,
915
+ class: "menu-category"
916
+ }, [s("div", {
917
+ class: "category-header",
918
+ role: "link",
919
+ tabindex: t.disabled ? -1 : 0,
920
+ "aria-disabled": t.disabled || void 0,
921
+ onClick: (e) => U(t),
922
+ onKeydown: [N((e) => U(t), ["enter"]), N(P((e) => U(t), ["prevent"]), ["space"])]
923
+ }, [t.meta?.icon ? (b(), i(E(k(ee)), {
924
+ key: 0,
925
+ name: t.meta.icon,
926
+ size: 18
927
+ }, null, 8, ["name"])) : a("", !0), s("span", null, D(t.meta?.title), 1)], 40, Ht), t.children && t.children.length > 0 ? (b(), o("div", Ut, [(b(!0), o(e, null, C(t.children, (e) => (b(), o("div", {
928
+ key: e.path,
929
+ class: "menu-item",
930
+ role: "link",
931
+ tabindex: e.disabled ? -1 : 0,
932
+ "aria-disabled": e.disabled || void 0,
933
+ onClick: (t) => U(e),
934
+ onKeydown: [N((t) => U(e), ["enter"]), N(P((t) => U(e), ["prevent"]), ["space"])]
935
+ }, [e.meta?.icon ? (b(), i(E(k(ee)), {
936
+ key: 0,
937
+ name: e.meta.icon,
938
+ size: 16
939
+ }, null, 8, ["name"])) : a("", !0), s("span", Gt, D(e.meta?.title), 1)], 40, Wt))), 128)), (b(!0), o(e, null, C(t.children, (t) => (b(), o(e, { key: "sub-" + t.path }, [t.children && t.children.length > 0 ? (b(), o("div", Kt, [s("div", qt, D(t.meta?.title), 1), (b(!0), o(e, null, C(t.children, (e) => (b(), o("div", {
940
+ key: e.path,
941
+ class: "menu-item submenu-item",
942
+ role: "link",
943
+ tabindex: e.disabled ? -1 : 0,
944
+ "aria-disabled": e.disabled || void 0,
945
+ onClick: (t) => U(e),
946
+ onKeydown: [N((t) => U(e), ["enter"]), N(P((t) => U(e), ["prevent"]), ["space"])]
947
+ }, [e.meta?.icon ? (b(), i(E(k(ee)), {
948
+ key: 0,
949
+ name: e.meta.icon,
950
+ size: 14
951
+ }, null, 8, ["name"])) : a("", !0), s("span", Yt, D(e.meta?.title), 1)], 40, Jt))), 128))])) : a("", !0)], 64))), 128))])) : a("", !0)]))), 128))])])], !0)], 34),
952
+ s("div", Xt, [u(k(V), { class: "content-layout" }, {
953
+ default: M(() => [u(k(H), { class: "main-content p16px app-content" }, {
954
+ default: M(() => [s("div", Zt, [u(l, null, {
955
+ default: M(({ Component: e, route: r }) => [u(n, {
956
+ name: F.value,
957
+ mode: "out-in"
958
+ }, {
959
+ default: M(() => [(b(), i(t, {
960
+ include: k(p),
961
+ max: k(m)
962
+ }, [(b(), i(E(e), { key: r.path }))], 1032, ["include", "max"]))]),
963
+ _: 2
964
+ }, 1032, ["name"])]),
965
+ _: 1
966
+ })])]),
967
+ _: 1
968
+ }), j.value ? w(r.$slots, "footer", {}, void 0, !0, 0) : a("", !0)]),
800
969
  _: 3
801
970
  })])
802
971
  ]);
803
972
  };
804
973
  }
805
- }), tt = { class: "mix-top-layout-container" }, nt = { class: "logo-container" }, rt = [
806
- "src",
807
- "width",
808
- "height"
809
- ], it = [
810
- "src",
811
- "width",
812
- "height"
813
- ], at = { class: "first-menu-list" }, ot = ["onClick"], st = { class: "menu-item-content" }, ct = {
814
- key: 1,
815
- class: "menu-item-text"
816
- }, lt = { class: "menu-item-label" }, ut = { class: "main-area" }, dt = { class: "navbar-left" }, ft = { class: "brand-name" }, pt = { class: "brand-title" }, mt = { class: "brand-subtitle" }, ht = { class: "navbar-center" }, gt = { class: "page-content" }, _t = /* @__PURE__ */ d({
817
- name: "MixTopLayout",
818
- __name: "index",
819
- setup(c) {
820
- let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), _ = l.isDark, v = r(() => l.menus.value), b = r(() => l.showTagsView.value), x = r(() => l.tagsViewHeight.value), D = r(() => l.showFooter.value), k = r(() => l.transitionName.value), A = {
821
- ...X,
822
- ...l.brand
823
- }, M = Re({
824
- menus: l.menus,
825
- floatingSecondMenu: r(() => !1)
826
- }), N = l.iconComponent ?? d({
827
- name: "LayoutIcon",
828
- props: {
829
- name: String,
830
- size: {
831
- type: Number,
832
- default: 18
833
- }
834
- },
835
- setup(e) {
836
- return () => f("i", {
837
- class: e.name,
838
- style: {
839
- fontSize: `${e.size}px`,
840
- display: "inline-flex",
841
- alignItems: "center",
842
- justifyContent: "center"
843
- }
844
- });
845
- }
846
- });
847
- return (r, c) => {
848
- let l = w("RouterView");
849
- return y(), o("div", tt, [s("div", { class: h(["first-level-sidebar", [O(_) ? "dark-theme" : "light-theme"]]) }, [s("div", nt, [C(r.$slots, "logo", {}, () => [c[0] ||= s("div", { class: "logo-glow" }, null, -1), A.logoType === "video" ? (y(), o("video", {
850
- key: 0,
851
- src: A.logoSrc,
852
- width: A.logoSize || 40,
853
- height: A.logoSize || 40,
854
- autoplay: "",
855
- loop: "",
856
- muted: "",
857
- playsinline: "",
858
- class: "logo-video"
859
- }, " 您的浏览器不支持 video 标签。 ", 8, rt)) : (y(), o("img", {
860
- key: 1,
861
- src: A.logoSrc,
862
- width: A.logoSize || 40,
863
- height: A.logoSize || 40,
864
- class: "logo-video"
865
- }, null, 8, it))])]), s("div", at, [(y(!0), o(e, null, S(v.value, (e) => (y(), o("div", {
866
- key: e.path,
867
- class: h(["first-menu-item", { active: O(M).activeFirstMenu.value === e.path }]),
868
- onClick: (t) => O(M).handleFirstMenuClick(e)
869
- }, [s("div", st, [e.meta?.icon ? (y(), i(T(O(N)), {
870
- key: 0,
871
- name: e.meta.icon,
872
- size: 22
873
- }, null, 8, ["name"])) : (y(), o("span", ct, E((e.meta?.title || "")[0]), 1))]), s("span", lt, E(e.meta?.title), 1)], 10, ot))), 128))])], 2), s("div", ut, [
874
- s("div", { class: h(["top-navbar", [O(_) ? "dark-theme" : "light-theme"]]) }, [
875
- s("div", dt, [C(r.$slots, "brand", {}, () => [s("div", ft, [s("span", pt, E(A.name), 1), s("span", mt, E(A.subtitle), 1)]), c[1] ||= s("div", { class: "navbar-divider" }, null, -1)])]),
876
- s("div", ht, [C(r.$slots, "top-menu", {}, () => [O(M).currentSecondMenus.value.length > 0 ? (y(), i($, {
877
- key: 0,
878
- data: O(M).currentSecondMenus.value
879
- }, null, 8, ["data"])) : a("", !0)])]),
880
- C(r.$slots, "header-extra")
881
- ], 2),
882
- b.value ? (y(), o("div", {
883
- key: 0,
884
- class: "tags-view-container",
885
- style: g({ height: `${x.value}px` })
886
- }, [C(r.$slots, "tags-view")], 4)) : a("", !0),
887
- u(O(V), { class: "content-layout" }, {
888
- default: j(() => [u(O(H), { class: "main-content" }, {
889
- default: j(() => [s("div", gt, [u(l, null, {
890
- default: j(({ Component: e, route: r }) => [u(n, {
891
- name: k.value,
892
- mode: "out-in"
893
- }, {
894
- default: j(() => [(y(), i(t, {
895
- include: O(p),
896
- max: O(m)
897
- }, [(y(), i(T(e), { key: r.path }))], 1032, ["include", "max"]))]),
898
- _: 2
899
- }, 1032, ["name"])]),
900
- _: 1
901
- })])]),
902
- _: 1
903
- }), D.value ? C(r.$slots, "footer", { key: 0 }) : a("", !0)]),
904
- _: 3
905
- })
906
- ])]);
907
- };
974
+ }), [["__scopeId", "data-v-c5ad8728"]]), $t = {
975
+ key: 6,
976
+ class: "layout-coming-soon"
977
+ }, en = /* @__PURE__ */ d({
978
+ name: "C_LayoutContainer",
979
+ __name: "index",
980
+ setup(e) {
981
+ let t = Y(), n = t.layoutMode, a = t.isDark, l = S(!1), u = r({
982
+ get: () => t.collapsed?.value ?? l.value,
983
+ set: (e) => {
984
+ t.collapsed ? t.collapsed.value = e : l.value = e;
985
+ }
986
+ }), d = {
987
+ isCollapsed: u,
988
+ handleCollapsedChange: (e) => {
989
+ u.value = e;
990
+ }
991
+ };
992
+ return x(le, d), x("menuCollapse", d), (e, t) => (b(), o("div", { class: g(["layout-container", k(a) ? "dark-mode" : "light-mode"]) }, [k(n) === "side" ? (b(), i(pe, {
993
+ key: 0,
994
+ collapsed: u.value,
995
+ "onUpdate:collapsed": t[0] ||= (e) => u.value = e
996
+ }, c({
997
+ menu: M(() => [w(e.$slots, "menu", { collapsed: u.value })]),
998
+ header: M(() => [w(e.$slots, "header")]),
999
+ footer: M(() => [w(e.$slots, "footer")]),
1000
+ _: 2
1001
+ }, [e.$slots.logo ? {
1002
+ name: "logo",
1003
+ fn: M(() => [w(e.$slots, "logo")]),
1004
+ key: "0"
1005
+ } : void 0]), 1032, ["collapsed"])) : k(n) === "top" ? (b(), i(Oe, { key: 1 }, c({ _: 2 }, [
1006
+ e.$slots.logo ? {
1007
+ name: "logo",
1008
+ fn: M(() => [w(e.$slots, "logo")]),
1009
+ key: "0"
1010
+ } : void 0,
1011
+ e.$slots["top-menu"] ? {
1012
+ name: "menu",
1013
+ fn: M(() => [w(e.$slots, "top-menu")]),
1014
+ key: "1"
1015
+ } : void 0,
1016
+ e.$slots["header-extra"] ? {
1017
+ name: "header-extra",
1018
+ fn: M(() => [w(e.$slots, "header-extra")]),
1019
+ key: "2"
1020
+ } : void 0,
1021
+ e.$slots["tags-view"] ? {
1022
+ name: "tags-view",
1023
+ fn: M(() => [w(e.$slots, "tags-view")]),
1024
+ key: "3"
1025
+ } : void 0,
1026
+ e.$slots.footer ? {
1027
+ name: "footer",
1028
+ fn: M(() => [w(e.$slots, "footer")]),
1029
+ key: "4"
1030
+ } : void 0
1031
+ ]), 1024)) : k(n) === "mix" ? (b(), i(Ke, { key: 2 }, c({
1032
+ header: M(() => [w(e.$slots, "header")]),
1033
+ _: 2
1034
+ }, [e.$slots.logo ? {
1035
+ name: "logo",
1036
+ fn: M(() => [w(e.$slots, "logo")]),
1037
+ key: "0"
1038
+ } : void 0, e.$slots.footer ? {
1039
+ name: "footer",
1040
+ fn: M(() => [w(e.$slots, "footer")]),
1041
+ key: "1"
1042
+ } : void 0]), 1024)) : k(n) === "mix-top" ? (b(), i(lt, { key: 3 }, c({ _: 2 }, [
1043
+ e.$slots.logo ? {
1044
+ name: "logo",
1045
+ fn: M(() => [w(e.$slots, "logo")]),
1046
+ key: "0"
1047
+ } : void 0,
1048
+ e.$slots.brand ? {
1049
+ name: "brand",
1050
+ fn: M(() => [w(e.$slots, "brand")]),
1051
+ key: "1"
1052
+ } : void 0,
1053
+ e.$slots["top-menu"] ? {
1054
+ name: "top-menu",
1055
+ fn: M(() => [w(e.$slots, "top-menu")]),
1056
+ key: "2"
1057
+ } : void 0,
1058
+ e.$slots["header-extra"] ? {
1059
+ name: "header-extra",
1060
+ fn: M(() => [w(e.$slots, "header-extra")]),
1061
+ key: "3"
1062
+ } : void 0,
1063
+ e.$slots["tags-view"] ? {
1064
+ name: "tags-view",
1065
+ fn: M(() => [w(e.$slots, "tags-view")]),
1066
+ key: "4"
1067
+ } : void 0,
1068
+ e.$slots.footer ? {
1069
+ name: "footer",
1070
+ fn: M(() => [w(e.$slots, "footer")]),
1071
+ key: "5"
1072
+ } : void 0
1073
+ ]), 1024)) : k(n) === "reverse-horizontal-mix" ? (b(), i(jt, { key: 4 }, c({ _: 2 }, [
1074
+ e.$slots.logo ? {
1075
+ name: "logo",
1076
+ fn: M(() => [w(e.$slots, "logo")]),
1077
+ key: "0"
1078
+ } : void 0,
1079
+ e.$slots["top-menu"] ? {
1080
+ name: "top-menu",
1081
+ fn: M(() => [w(e.$slots, "top-menu")]),
1082
+ key: "1"
1083
+ } : void 0,
1084
+ e.$slots["header-extra"] ? {
1085
+ name: "header-extra",
1086
+ fn: M(() => [w(e.$slots, "header-extra")]),
1087
+ key: "2"
1088
+ } : void 0,
1089
+ e.$slots["tags-view"] ? {
1090
+ name: "tags-view",
1091
+ fn: M(() => [w(e.$slots, "tags-view")]),
1092
+ key: "3"
1093
+ } : void 0,
1094
+ e.$slots.footer ? {
1095
+ name: "footer",
1096
+ fn: M(() => [w(e.$slots, "footer")]),
1097
+ key: "4"
1098
+ } : void 0
1099
+ ]), 1024)) : k(n) === "card-layout" ? (b(), i(Qt, { key: 5 }, c({ _: 2 }, [
1100
+ e.$slots["menu-trigger"] ? {
1101
+ name: "menu-trigger",
1102
+ fn: M(() => [w(e.$slots, "menu-trigger")]),
1103
+ key: "0"
1104
+ } : void 0,
1105
+ e.$slots.logo ? {
1106
+ name: "logo",
1107
+ fn: M(() => [w(e.$slots, "logo")]),
1108
+ key: "1"
1109
+ } : void 0,
1110
+ e.$slots["header-extra"] ? {
1111
+ name: "header-extra",
1112
+ fn: M(() => [w(e.$slots, "header-extra")]),
1113
+ key: "2"
1114
+ } : void 0,
1115
+ e.$slots["tags-view"] ? {
1116
+ name: "tags-view",
1117
+ fn: M(() => [w(e.$slots, "tags-view")]),
1118
+ key: "3"
1119
+ } : void 0,
1120
+ e.$slots["drawer-menu"] ? {
1121
+ name: "drawer-menu",
1122
+ fn: M(() => [w(e.$slots, "drawer-menu")]),
1123
+ key: "4"
1124
+ } : void 0,
1125
+ e.$slots.footer ? {
1126
+ name: "footer",
1127
+ fn: M(() => [w(e.$slots, "footer")]),
1128
+ key: "5"
1129
+ } : void 0
1130
+ ]), 1024)) : (b(), o("div", $t, [...t[1] ||= [s("div", { class: "coming-soon-content" }, [s("div", { class: "coming-soon-icon" }, "🚧"), s("div", { class: "coming-soon-title" }, "布局开发中")], -1)]]))], 2));
1131
+ }
1132
+ }), tn = [
1133
+ {
1134
+ name: "拂晓蓝",
1135
+ value: "#409eff"
1136
+ },
1137
+ {
1138
+ name: "薄暮红",
1139
+ value: "#f5222d"
1140
+ },
1141
+ {
1142
+ name: "火山橙",
1143
+ value: "#fa541c"
1144
+ },
1145
+ {
1146
+ name: "日暮黄",
1147
+ value: "#faad14"
1148
+ },
1149
+ {
1150
+ name: "极光绿",
1151
+ value: "#52c41a"
1152
+ },
1153
+ {
1154
+ name: "明青",
1155
+ value: "#13c2c2"
1156
+ },
1157
+ {
1158
+ name: "极客蓝",
1159
+ value: "#2f54eb"
1160
+ },
1161
+ {
1162
+ name: "酱紫",
1163
+ value: "#722ed1"
1164
+ }
1165
+ ], nn = [
1166
+ {
1167
+ name: "科技蓝",
1168
+ icon: "💙",
1169
+ primaryColor: "#409eff"
1170
+ },
1171
+ {
1172
+ name: "清新绿",
1173
+ icon: "💚",
1174
+ primaryColor: "#52c41a"
1175
+ },
1176
+ {
1177
+ name: "商务灰",
1178
+ icon: "🖤",
1179
+ primaryColor: "#595959"
1180
+ },
1181
+ {
1182
+ name: "活力橙",
1183
+ icon: "🧡",
1184
+ primaryColor: "#fa8c16"
1185
+ },
1186
+ {
1187
+ name: "优雅紫",
1188
+ icon: "💜",
1189
+ primaryColor: "#722ed1"
1190
+ },
1191
+ {
1192
+ name: "经典红",
1193
+ icon: "❤️",
1194
+ primaryColor: "#f5222d"
1195
+ }
1196
+ ], rn = [
1197
+ {
1198
+ mode: "side",
1199
+ label: "左侧菜单",
1200
+ description: "经典的左侧导航布局",
1201
+ icon: "i-mdi:page-layout-sidebar-left"
1202
+ },
1203
+ {
1204
+ mode: "top",
1205
+ label: "顶部菜单",
1206
+ description: "顶部水平导航布局",
1207
+ icon: "i-mdi:page-layout-header"
1208
+ },
1209
+ {
1210
+ mode: "mix",
1211
+ label: "混合菜单",
1212
+ description: "顶部 + 侧边混合布局",
1213
+ icon: "i-mdi:view-dashboard-outline"
1214
+ },
1215
+ {
1216
+ mode: "mix-top",
1217
+ label: "顶部混合",
1218
+ description: "侧边优先的混合布局",
1219
+ icon: "i-mdi:view-dashboard-variant-outline"
1220
+ },
1221
+ {
1222
+ mode: "reverse-horizontal-mix",
1223
+ label: "反转混合",
1224
+ description: "反转的水平混合布局",
1225
+ icon: "i-mdi:page-layout-header-footer"
1226
+ },
1227
+ {
1228
+ mode: "card-layout",
1229
+ label: "卡片布局",
1230
+ description: "卡片式布局风格",
1231
+ icon: "i-mdi:card-outline"
1232
+ }
1233
+ ], an = {
1234
+ small: "4px",
1235
+ medium: "6px",
1236
+ large: "8px"
1237
+ }, on = {
1238
+ fade: "fade-transform",
1239
+ slide: "fade-slide",
1240
+ zoom: "fade-zoom",
1241
+ none: ""
1242
+ }, $ = {
1243
+ themeMode: "light",
1244
+ primaryColor: "#409eff",
1245
+ borderRadius: "medium",
1246
+ transitionType: "slide",
1247
+ enableTransition: !0,
1248
+ layoutMode: "side",
1249
+ menuExpandMode: "inline",
1250
+ collapsed: !1,
1251
+ fixedHeader: !0,
1252
+ showBreadcrumb: !0,
1253
+ showBreadcrumbIcon: !0,
1254
+ showTagsView: !0,
1255
+ tagsViewHeight: 44,
1256
+ tagsViewStyle: "default",
1257
+ showFooter: !0,
1258
+ sidebarWidth: 220,
1259
+ sidebarCollapsedWidth: 64,
1260
+ headerHeight: 56,
1261
+ enableHotkeys: !0,
1262
+ version: "3.0.0"
1263
+ }, sn = tn.map((e) => e.value), cn = {
1264
+ themeMode: new Set([
1265
+ "light",
1266
+ "dark",
1267
+ "system"
1268
+ ]),
1269
+ borderRadius: new Set([
1270
+ "small",
1271
+ "medium",
1272
+ "large"
1273
+ ]),
1274
+ transitionType: new Set([
1275
+ "fade",
1276
+ "slide",
1277
+ "zoom",
1278
+ "none"
1279
+ ]),
1280
+ layoutMode: new Set([
1281
+ "side",
1282
+ "top",
1283
+ "mix",
1284
+ "mix-top",
1285
+ "reverse-horizontal-mix",
1286
+ "card-layout"
1287
+ ]),
1288
+ menuExpandMode: new Set(["inline", "panel"]),
1289
+ tagsViewStyle: new Set([
1290
+ "default",
1291
+ "card",
1292
+ "smart"
1293
+ ])
1294
+ }, ln = new Set([
1295
+ "enableTransition",
1296
+ "collapsed",
1297
+ "fixedHeader",
1298
+ "showBreadcrumb",
1299
+ "showBreadcrumbIcon",
1300
+ "showTagsView",
1301
+ "showFooter",
1302
+ "enableHotkeys"
1303
+ ]), un = {
1304
+ tagsViewHeight: [24, 100],
1305
+ sidebarWidth: [120, 480],
1306
+ sidebarCollapsedWidth: [32, 160],
1307
+ headerHeight: [32, 160]
1308
+ }, dn = 1;
1309
+ function fn(e) {
1310
+ if (!e || typeof e != "object" || Array.isArray(e)) throw TypeError("settings 必须是对象");
1311
+ let t = e, n = {}, r = (e, t) => {
1312
+ n[e] = t;
1313
+ };
1314
+ for (let [e, n] of Object.entries(cn)) {
1315
+ let i = t[e];
1316
+ if (i !== void 0) {
1317
+ if (typeof i != "string" || !n.has(i)) throw RangeError(`无效的设置项 ${e}: ${String(i)}`);
1318
+ r(e, i);
1319
+ }
1320
+ }
1321
+ for (let e of ln) {
1322
+ let n = t[e];
1323
+ if (n !== void 0) {
1324
+ if (typeof n != "boolean") throw TypeError(`设置项 ${e} 必须是布尔值`);
1325
+ r(e, n);
1326
+ }
908
1327
  }
909
- }), vt = { class: "reverse-horizontal-mix-layout-container" }, yt = { class: "navbar-left" }, bt = { class: "logo-container" }, xt = [
910
- "src",
911
- "width",
912
- "height"
913
- ], St = [
914
- "src",
915
- "width",
916
- "height"
917
- ], Ct = { class: "brand-name" }, wt = { class: "brand-title" }, Tt = { class: "brand-subtitle" }, Et = { class: "navbar-center" }, Dt = { class: "main-area" }, Ot = { class: "page-content" }, kt = { class: "header-icon" }, At = { class: "header-title" }, jt = { class: "sidebar-menu-list" }, Mt = {
918
- key: 0,
919
- class: "menu-group"
920
- }, Nt = { class: "group-title" }, Pt = ["onClick"], Ft = { class: "item-title" }, It = ["onClick"], Lt = { class: "item-title" }, Rt = /* @__PURE__ */ d({
921
- name: "ReverseHorizontalMixLayout",
922
- __name: "index",
923
- setup(c) {
924
- let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), _ = l.isDark, v = r(() => l.menus.value), b = r(() => l.showTagsView.value), D = r(() => l.tagsViewHeight.value), k = r(() => l.showFooter.value), A = r(() => l.transitionName.value), M = {
925
- ...X,
926
- ...l.brand
927
- }, N = Re({
928
- menus: l.menus,
929
- floatingSecondMenu: r(() => !1)
930
- }), P = x(!1), F = () => {
931
- P.value = !P.value;
932
- }, I = l.iconComponent ?? d({
933
- name: "LayoutIcon",
934
- props: {
935
- name: String,
936
- size: {
937
- type: Number,
938
- default: 18
939
- }
940
- },
941
- setup(e) {
942
- return () => f("i", {
943
- class: e.name,
944
- style: {
945
- fontSize: `${e.size}px`,
946
- display: "inline-flex",
947
- alignItems: "center",
948
- justifyContent: "center"
949
- }
950
- });
951
- }
952
- });
953
- return (r, c) => {
954
- let l = w("RouterView");
955
- return y(), o("div", vt, [
956
- s("div", { class: h(["top-navbar", [O(_) ? "dark-theme" : "light-theme"]]) }, [
957
- s("div", yt, [C(r.$slots, "logo", {}, () => [
958
- s("div", bt, [c[0] ||= s("div", { class: "logo-glow" }, null, -1), M.logoType === "video" ? (y(), o("video", {
959
- key: 0,
960
- src: M.logoSrc,
961
- width: M.logoSize || 36,
962
- height: M.logoSize || 36,
963
- autoplay: "",
964
- loop: "",
965
- muted: "",
966
- playsinline: "",
967
- class: "logo-video"
968
- }, " 您的浏览器不支持 video 标签。 ", 8, xt)) : (y(), o("img", {
969
- key: 1,
970
- src: M.logoSrc,
971
- width: M.logoSize || 36,
972
- height: M.logoSize || 36,
973
- class: "logo-video"
974
- }, null, 8, St))]),
975
- s("div", Ct, [s("span", wt, E(M.name), 1), s("span", Tt, E(M.subtitle), 1)]),
976
- c[1] ||= s("div", { class: "navbar-divider" }, null, -1)
977
- ])]),
978
- s("div", Et, [C(r.$slots, "top-menu", {}, () => [u($, { data: v.value }, null, 8, ["data"])])]),
979
- C(r.$slots, "header-extra")
980
- ], 2),
981
- b.value ? (y(), o("div", {
982
- key: 0,
983
- class: "tags-view-container",
984
- style: g({ height: `${D.value}px` })
985
- }, [C(r.$slots, "tags-view")], 4)) : a("", !0),
986
- s("div", Dt, [
987
- u(O(V), { class: "content-layout" }, {
988
- default: j(() => [u(O(H), { class: "main-content" }, {
989
- default: j(() => [s("div", Ot, [u(l, null, {
990
- default: j(({ Component: e, route: r }) => [u(n, {
991
- name: A.value,
992
- mode: "out-in"
993
- }, {
994
- default: j(() => [(y(), i(t, {
995
- include: O(p),
996
- max: O(m)
997
- }, [(y(), i(T(e), { key: r.path }))], 1032, ["include", "max"]))]),
998
- _: 2
999
- }, 1032, ["name"])]),
1000
- _: 1
1001
- })])]),
1002
- _: 1
1003
- }), k.value ? C(r.$slots, "footer", { key: 0 }) : a("", !0)]),
1004
- _: 3
1005
- }),
1006
- O(N).currentSecondMenus.value.length > 0 ? (y(), o("div", {
1007
- key: 0,
1008
- class: h(["sidebar-toggle", [O(_) ? "dark-theme" : "light-theme", { active: !P.value }]]),
1009
- onClick: F
1010
- }, [s("span", { class: h([
1011
- "collapse-arrow",
1012
- "toggle-icon",
1013
- P.value ? "collapsed" : "expanded"
1014
- ]) }, [...c[2] ||= [s("span", { class: "arrow-line" }, null, -1), s("span", { class: "arrow-line" }, null, -1)]], 2)], 2)) : a("", !0),
1015
- O(N).currentSecondMenus.value.length > 0 ? (y(), o("div", {
1016
- key: 1,
1017
- class: h(["right-sidebar-wrapper", { collapsed: P.value }])
1018
- }, [s("div", { class: h(["right-sidebar", [O(_) ? "dark-theme" : "light-theme"]]) }, [s("div", { class: h(["sidebar-header", [O(_) ? "dark-theme" : "light-theme"]]) }, [s("div", kt, [O(N).activeFirstMenuItem.value?.meta?.icon ? (y(), i(T(O(I)), {
1019
- key: 0,
1020
- name: O(N).activeFirstMenuItem.value.meta.icon,
1021
- size: 20
1022
- }, null, 8, ["name"])) : a("", !0)]), s("span", At, E(O(N).activeFirstMenuItem.value?.meta?.title || "菜单"), 1)], 2), s("div", jt, [(y(!0), o(e, null, S(O(N).currentSecondMenus.value, (t) => (y(), o(e, { key: t.path }, [t.children && t.children.length > 0 ? (y(), o("div", Mt, [s("div", Nt, [t.meta?.icon ? (y(), i(T(O(I)), {
1023
- key: 0,
1024
- name: t.meta.icon,
1025
- size: 16
1026
- }, null, 8, ["name"])) : a("", !0), s("span", null, E(t.meta?.title), 1)]), (y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
1027
- key: e.path,
1028
- class: h(["menu-item sub-item", { active: O(N).isMenuItemActive(e.path) }]),
1029
- onClick: (t) => O(N).handleSecondMenuClick(e)
1030
- }, [e.meta?.icon ? (y(), i(T(O(I)), {
1031
- key: 0,
1032
- name: e.meta.icon,
1033
- size: 16
1034
- }, null, 8, ["name"])) : a("", !0), s("span", Ft, E(e.meta?.title), 1)], 10, Pt))), 128))])) : (y(), o("div", {
1035
- key: 1,
1036
- class: h(["menu-item", { active: O(N).isMenuItemActive(t.path) }]),
1037
- onClick: (e) => O(N).handleSecondMenuClick(t)
1038
- }, [t.meta?.icon ? (y(), i(T(O(I)), {
1039
- key: 0,
1040
- name: t.meta.icon,
1041
- size: 18
1042
- }, null, 8, ["name"])) : a("", !0), s("span", Lt, E(t.meta?.title), 1)], 10, It))], 64))), 128))])], 2)], 2)) : a("", !0)
1043
- ])
1044
- ]);
1328
+ for (let [e, n] of Object.entries(un)) {
1329
+ let i = t[e];
1330
+ if (i !== void 0) {
1331
+ if (typeof i != "number" || !Number.isFinite(i) || i < n[0] || i > n[1]) throw RangeError(`设置项 ${e} 超出允许范围`);
1332
+ r(e, i);
1333
+ }
1334
+ }
1335
+ if (t.primaryColor !== void 0) {
1336
+ if (typeof t.primaryColor != "string" || !/^#[0-9a-fA-F]{6}$/.test(t.primaryColor)) throw RangeError("primaryColor 必须是 #rrggbb 格式");
1337
+ n.primaryColor = t.primaryColor;
1338
+ }
1339
+ if (t.version !== void 0) {
1340
+ if (typeof t.version != "string" || t.version.length > 50) throw TypeError("version 必须是长度不超过 50 的字符串");
1341
+ n.version = t.version;
1342
+ }
1343
+ return n;
1344
+ }
1345
+ function pn(e) {
1346
+ if (!e || typeof e != "object" || Array.isArray(e)) throw TypeError("配置文件根节点必须是对象");
1347
+ let t = e, n = {};
1348
+ if (t.schemaVersion !== void 0) {
1349
+ if (typeof t.schemaVersion != "number" || !Number.isInteger(t.schemaVersion) || t.schemaVersion < 1 || t.schemaVersion > 1) throw RangeError("不支持的配置格式版本");
1350
+ n.schemaVersion = t.schemaVersion;
1351
+ }
1352
+ t.settings !== void 0 && (n.settings = fn(t.settings));
1353
+ for (let e of ["gray", "colorWeak"]) {
1354
+ let r = t[e];
1355
+ if (r !== void 0) {
1356
+ if (typeof r != "boolean") throw TypeError(`${e} 必须是布尔值`);
1357
+ n[e] = r;
1358
+ }
1359
+ }
1360
+ if (t.watermark !== void 0) {
1361
+ if (!t.watermark || typeof t.watermark != "object" || Array.isArray(t.watermark)) throw TypeError("watermark 必须是对象");
1362
+ let e = t.watermark;
1363
+ if (typeof e.enabled != "boolean" || typeof e.text != "string" || e.text.length > 200) throw TypeError("watermark 配置无效");
1364
+ n.watermark = {
1365
+ enabled: e.enabled,
1366
+ text: e.text
1045
1367
  };
1046
1368
  }
1047
- }), zt = { class: "card-layout-container" }, Bt = { class: "navbar-left" }, Vt = { class: "logo-container" }, Ht = [
1048
- "src",
1049
- "width",
1050
- "height"
1051
- ], Ut = [
1052
- "src",
1053
- "width",
1054
- "height"
1055
- ], Wt = { class: "brand-name" }, Gt = { class: "brand-title" }, Kt = { class: "brand-subtitle" }, qt = { class: "drawer-content" }, Jt = { class: "menu-grid" }, Yt = ["onClick"], Xt = {
1056
- key: 0,
1057
- class: "category-items"
1058
- }, Zt = ["onClick"], Qt = { class: "item-title" }, $t = {
1059
- key: 0,
1060
- class: "submenu-items"
1061
- }, en = { class: "submenu-title" }, tn = ["onClick"], nn = { class: "item-title" }, rn = { class: "main-content-area" }, an = { class: "page-content" }, on = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1062
- name: "CardLayout",
1063
- __name: "index",
1064
- setup(c) {
1065
- let l = Y(), { cachedViews: p, maxCacheCount: m } = Z(), _ = q(), b = l.isDark, D = r(() => l.menus.value), k = r(() => l.showTagsView.value), A = r(() => l.tagsViewHeight.value), M = r(() => l.showFooter.value), N = r(() => l.transitionName.value), P = {
1066
- ...X,
1067
- ...l.brand
1068
- }, F = x(!1), I = x(null), L = () => {
1069
- I.value && clearTimeout(I.value), I.value = setTimeout(() => {
1070
- F.value = !1;
1071
- }, 300);
1072
- }, R = () => {
1073
- I.value &&= (clearTimeout(I.value), null), F.value = !0;
1074
- }, z = (e) => {
1075
- e.path && (_.push(e.path), F.value = !1);
1076
- }, B = l.iconComponent ?? d({
1077
- name: "LayoutIcon",
1078
- props: {
1079
- name: String,
1080
- size: {
1081
- type: Number,
1082
- default: 18
1369
+ return n;
1370
+ }
1371
+ function mn(e, t) {
1372
+ if (typeof e != "string") return "#000000";
1373
+ if (!Number.isFinite(t)) return e;
1374
+ let n = Math.round(t), r = e.trim(), i = r.startsWith("#") ? r.slice(1) : r;
1375
+ if (i.length === 3 && (i = i.split("").map((e) => e + e).join("")), !/^[0-9a-fA-F]{6}$/.test(i)) return e;
1376
+ let a = parseInt(i, 16), o = Math.min(255, Math.max(0, (a >> 16) + n)), s = Math.min(255, Math.max(0, (a >> 8 & 255) + n)), c = Math.min(255, Math.max(0, (a & 255) + n));
1377
+ return `#${(o << 16 | s << 8 | c).toString(16).padStart(6, "0")}`;
1378
+ }
1379
+ //#endregion
1380
+ //#region src/stores/settings.ts
1381
+ function hn(e = {}) {
1382
+ let { id: t = "settings", defaults: n = {}, onThemeModeChange: i } = e;
1383
+ if (typeof t != "string" || !t.trim()) throw RangeError("Settings store id 不能为空");
1384
+ let a = {
1385
+ ...$,
1386
+ ...fn(n)
1387
+ };
1388
+ return se(t, () => {
1389
+ let e = S(a.themeMode), t = S(a.primaryColor), n = S(a.borderRadius), o = S(a.transitionType), s = S(a.enableTransition), c = S(a.layoutMode), l = S(a.menuExpandMode), u = S(a.collapsed), d = S(a.fixedHeader), f = S(a.showBreadcrumb), p = S(a.showBreadcrumbIcon), m = S(a.showTagsView), h = S(a.tagsViewHeight), g = S(a.tagsViewStyle), _ = S(a.showFooter), v = S(a.sidebarWidth), y = S(a.sidebarCollapsedWidth), b = S(a.headerHeight), x = S(a.enableHotkeys), C = S(a.version), w = r(() => an[n.value]), T = r(() => s.value && o.value !== "none"), E = r(() => T.value ? on[o.value] : ""), D = r(() => ({
1390
+ themeMode: e.value,
1391
+ primaryColor: t.value,
1392
+ borderRadius: n.value,
1393
+ transitionType: o.value,
1394
+ enableTransition: s.value,
1395
+ layoutMode: c.value,
1396
+ menuExpandMode: l.value,
1397
+ collapsed: u.value,
1398
+ fixedHeader: d.value,
1399
+ showBreadcrumb: f.value,
1400
+ showBreadcrumbIcon: p.value,
1401
+ showTagsView: m.value,
1402
+ tagsViewHeight: h.value,
1403
+ tagsViewStyle: g.value,
1404
+ showFooter: _.value,
1405
+ sidebarWidth: v.value,
1406
+ sidebarCollapsedWidth: y.value,
1407
+ headerHeight: b.value,
1408
+ enableHotkeys: x.value,
1409
+ version: C.value
1410
+ })), O = () => {
1411
+ if (typeof document > "u") return;
1412
+ let e = document.documentElement;
1413
+ e.style.setProperty("--primary-color", t.value), e.style.setProperty("--primary-color-hover", mn(t.value, 10)), e.style.setProperty("--primary-color-pressed", mn(t.value, -10)), e.style.setProperty("--border-radius", w.value), e.style.setProperty("--sidebar-width", `${v.value}px`), e.style.setProperty("--sidebar-collapsed-width", `${y.value}px`), e.style.setProperty("--header-height", `${b.value}px`), e.style.setProperty("--tags-view-height", `${h.value}px`);
1414
+ };
1415
+ return j([
1416
+ t,
1417
+ w,
1418
+ v,
1419
+ y,
1420
+ b,
1421
+ h
1422
+ ], () => {
1423
+ O();
1424
+ }, { immediate: !0 }), {
1425
+ themeMode: e,
1426
+ primaryColor: t,
1427
+ borderRadius: n,
1428
+ transitionType: o,
1429
+ enableTransition: s,
1430
+ layoutMode: c,
1431
+ menuExpandMode: l,
1432
+ collapsed: u,
1433
+ fixedHeader: d,
1434
+ showBreadcrumb: f,
1435
+ showBreadcrumbIcon: p,
1436
+ showTagsView: m,
1437
+ tagsViewHeight: h,
1438
+ tagsViewStyle: g,
1439
+ showFooter: _,
1440
+ sidebarWidth: v,
1441
+ sidebarCollapsedWidth: y,
1442
+ headerHeight: b,
1443
+ enableHotkeys: x,
1444
+ version: C,
1445
+ borderRadiusValue: w,
1446
+ transitionName: E,
1447
+ shouldEnableTransition: T,
1448
+ settingsState: D,
1449
+ syncCSSVariables: O,
1450
+ applyPreset: async (e) => {
1451
+ t.value = e.primaryColor, e.settings && (e.settings.borderRadius && (n.value = e.settings.borderRadius), e.settings.transitionType && (o.value = e.settings.transitionType), e.settings.showBreadcrumb !== void 0 && (f.value = e.settings.showBreadcrumb), e.settings.showTagsView !== void 0 && (m.value = e.settings.showTagsView), e.settings.tagsViewStyle && (g.value = e.settings.tagsViewStyle));
1452
+ },
1453
+ resetSettings: () => {
1454
+ e.value = a.themeMode, t.value = a.primaryColor, n.value = a.borderRadius, o.value = a.transitionType, s.value = a.enableTransition, c.value = a.layoutMode, l.value = a.menuExpandMode, u.value = a.collapsed, d.value = a.fixedHeader, f.value = a.showBreadcrumb, p.value = a.showBreadcrumbIcon, m.value = a.showTagsView, h.value = a.tagsViewHeight, g.value = a.tagsViewStyle, _.value = a.showFooter, v.value = a.sidebarWidth, y.value = a.sidebarCollapsedWidth, b.value = a.headerHeight, x.value = a.enableHotkeys, C.value = a.version;
1455
+ },
1456
+ updateThemeMode: async (t) => {
1457
+ fn({ themeMode: t });
1458
+ let n = e.value;
1459
+ e.value = t;
1460
+ try {
1461
+ i && await i(t);
1462
+ } catch (t) {
1463
+ throw e.value = n, t;
1083
1464
  }
1084
1465
  },
1085
- setup(e) {
1086
- return () => f("i", {
1087
- class: e.name,
1088
- style: {
1089
- fontSize: `${e.size}px`,
1090
- display: "inline-flex",
1091
- alignItems: "center",
1092
- justifyContent: "center"
1093
- }
1094
- });
1466
+ toggleCollapse: () => {
1467
+ u.value = !u.value;
1095
1468
  }
1096
- });
1097
- return v(() => {
1098
- I.value && clearTimeout(I.value);
1099
- }), (r, c) => {
1100
- let l = w("RouterView");
1101
- return y(), o("div", zt, [
1102
- s("div", { class: h(["top-navbar", [O(b) ? "dark-theme" : "light-theme"]]) }, [s("div", Bt, [s("div", {
1103
- class: "hover-trigger-area",
1104
- onMouseenter: R,
1105
- onMouseleave: L
1106
- }, [C(r.$slots, "menu-trigger", {}, () => [c[0] ||= s("div", { class: "menu-indicator" }, [s("span", { class: "hamburger-icon" }, [
1107
- s("span"),
1108
- s("span"),
1109
- s("span")
1110
- ])], -1)], !0)], 32), C(r.$slots, "logo", {}, () => [
1111
- s("div", Vt, [c[1] ||= s("div", { class: "logo-glow" }, null, -1), P.logoType === "video" ? (y(), o("video", {
1112
- key: 0,
1113
- src: P.logoSrc,
1114
- width: P.logoSize || 36,
1115
- height: P.logoSize || 36,
1116
- autoplay: "",
1117
- loop: "",
1118
- muted: "",
1119
- playsinline: "",
1120
- class: "logo-video"
1121
- }, " 您的浏览器不支持 video 标签。 ", 8, Ht)) : (y(), o("img", {
1122
- key: 1,
1123
- src: P.logoSrc,
1124
- width: P.logoSize || 36,
1125
- height: P.logoSize || 36,
1126
- class: "logo-video"
1127
- }, null, 8, Ut))]),
1128
- s("div", Wt, [s("span", Gt, E(P.name), 1), s("span", Kt, E(P.subtitle), 1)]),
1129
- c[2] ||= s("div", { class: "navbar-divider" }, null, -1)
1130
- ], !0)]), C(r.$slots, "header-extra", {}, void 0, !0)], 2),
1131
- k.value ? (y(), o("div", {
1132
- key: 0,
1133
- class: "tags-view-container",
1134
- style: g({ height: `${A.value}px` })
1135
- }, [C(r.$slots, "tags-view", {}, void 0, !0)], 4)) : a("", !0),
1136
- s("div", {
1137
- class: h(["drawer-menu", [O(b) ? "dark-theme" : "light-theme", { visible: F.value }]]),
1138
- onMouseenter: R,
1139
- onMouseleave: L
1140
- }, [C(r.$slots, "drawer-menu", {}, () => [c[3] ||= s("div", { class: "drawer-header" }, [s("div", { class: "drawer-title" }, [s("span", { class: "grid-icon" }, [
1141
- s("span"),
1142
- s("span"),
1143
- s("span"),
1144
- s("span")
1145
- ]), s("span", null, "功能导航")])], -1), s("div", qt, [s("div", Jt, [(y(!0), o(e, null, S(D.value, (t) => (y(), o("div", {
1146
- key: t.path,
1147
- class: "menu-category"
1148
- }, [s("div", {
1149
- class: "category-header",
1150
- onClick: (e) => z(t)
1151
- }, [t.meta?.icon ? (y(), i(T(O(B)), {
1152
- key: 0,
1153
- name: t.meta.icon,
1154
- size: 18
1155
- }, null, 8, ["name"])) : a("", !0), s("span", null, E(t.meta?.title), 1)], 8, Yt), t.children && t.children.length > 0 ? (y(), o("div", Xt, [(y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
1156
- key: e.path,
1157
- class: "menu-item",
1158
- onClick: (t) => z(e)
1159
- }, [e.meta?.icon ? (y(), i(T(O(B)), {
1160
- key: 0,
1161
- name: e.meta.icon,
1162
- size: 16
1163
- }, null, 8, ["name"])) : a("", !0), s("span", Qt, E(e.meta?.title), 1)], 8, Zt))), 128)), (y(!0), o(e, null, S(t.children, (t) => (y(), o(e, { key: "sub-" + t.path }, [t.children && t.children.length > 0 ? (y(), o("div", $t, [s("div", en, E(t.meta?.title), 1), (y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
1164
- key: e.path,
1165
- class: "menu-item submenu-item",
1166
- onClick: (t) => z(e)
1167
- }, [e.meta?.icon ? (y(), i(T(O(B)), {
1168
- key: 0,
1169
- name: e.meta.icon,
1170
- size: 14
1171
- }, null, 8, ["name"])) : a("", !0), s("span", nn, E(e.meta?.title), 1)], 8, tn))), 128))])) : a("", !0)], 64))), 128))])) : a("", !0)]))), 128))])])], !0)], 34),
1172
- s("div", rn, [u(O(V), { class: "content-layout" }, {
1173
- default: j(() => [u(O(H), { class: "main-content p16px app-content" }, {
1174
- default: j(() => [s("div", an, [u(l, null, {
1175
- default: j(({ Component: e, route: r }) => [u(n, {
1176
- name: N.value,
1177
- mode: "out-in"
1178
- }, {
1179
- default: j(() => [(y(), i(t, {
1180
- include: O(p),
1181
- max: O(m)
1182
- }, [(y(), i(T(e), { key: r.path }))], 1032, ["include", "max"]))]),
1183
- _: 2
1184
- }, 1032, ["name"])]),
1185
- _: 1
1186
- })])]),
1187
- _: 1
1188
- }), M.value ? C(r.$slots, "footer", { key: 0 }, void 0, !0) : a("", !0)]),
1189
- _: 3
1190
- })])
1191
- ]);
1192
1469
  };
1193
- }
1194
- }), [["__scopeId", "data-v-3e4915c5"]]), sn = {
1195
- key: 6,
1196
- class: "layout-coming-soon"
1197
- }, cn = /* @__PURE__ */ d({
1198
- name: "C_LayoutContainer",
1199
- __name: "index",
1200
- setup(e) {
1201
- let t = ye(), n = Y(), a = r(() => t.layoutMode), l = n.isDark, u = x(!1);
1202
- return b("menuCollapse", {
1203
- isCollapsed: u,
1204
- handleCollapsedChange: (e) => {
1205
- u.value = e;
1206
- }
1207
- }), (e, t) => (y(), o("div", { class: h(["layout-container", O(l) ? "dark-mode" : "light-mode"]) }, [a.value === "side" ? (y(), i(Se, {
1208
- key: 0,
1209
- collapsed: u.value,
1210
- "onUpdate:collapsed": t[0] ||= (e) => u.value = e
1211
- }, c({
1212
- menu: j(() => [C(e.$slots, "menu", { collapsed: u.value })]),
1213
- header: j(() => [C(e.$slots, "header")]),
1214
- footer: j(() => [C(e.$slots, "footer")]),
1215
- _: 2
1216
- }, [e.$slots.logo ? {
1217
- name: "logo",
1218
- fn: j(() => [C(e.$slots, "logo")]),
1219
- key: "0"
1220
- } : void 0]), 1032, ["collapsed"])) : a.value === "top" ? (y(), i(Ie, { key: 1 }, c({ _: 2 }, [
1221
- e.$slots.logo ? {
1222
- name: "logo",
1223
- fn: j(() => [C(e.$slots, "logo")]),
1224
- key: "0"
1225
- } : void 0,
1226
- e.$slots["top-menu"] ? {
1227
- name: "menu",
1228
- fn: j(() => [C(e.$slots, "top-menu")]),
1229
- key: "1"
1230
- } : void 0,
1231
- e.$slots["header-extra"] ? {
1232
- name: "header-extra",
1233
- fn: j(() => [C(e.$slots, "header-extra")]),
1234
- key: "2"
1235
- } : void 0,
1236
- e.$slots["tags-view"] ? {
1237
- name: "tags-view",
1238
- fn: j(() => [C(e.$slots, "tags-view")]),
1239
- key: "3"
1240
- } : void 0,
1241
- e.$slots.footer ? {
1242
- name: "footer",
1243
- fn: j(() => [C(e.$slots, "footer")]),
1244
- key: "4"
1245
- } : void 0
1246
- ]), 1024)) : a.value === "mix" ? (y(), i(et, { key: 2 }, c({
1247
- header: j(() => [C(e.$slots, "header")]),
1248
- _: 2
1249
- }, [e.$slots.logo ? {
1250
- name: "logo",
1251
- fn: j(() => [C(e.$slots, "logo")]),
1252
- key: "0"
1253
- } : void 0, e.$slots.footer ? {
1254
- name: "footer",
1255
- fn: j(() => [C(e.$slots, "footer")]),
1256
- key: "1"
1257
- } : void 0]), 1024)) : a.value === "mix-top" ? (y(), i(_t, { key: 3 }, c({ _: 2 }, [
1258
- e.$slots.logo ? {
1259
- name: "logo",
1260
- fn: j(() => [C(e.$slots, "logo")]),
1261
- key: "0"
1262
- } : void 0,
1263
- e.$slots.brand ? {
1264
- name: "brand",
1265
- fn: j(() => [C(e.$slots, "brand")]),
1266
- key: "1"
1267
- } : void 0,
1268
- e.$slots["top-menu"] ? {
1269
- name: "top-menu",
1270
- fn: j(() => [C(e.$slots, "top-menu")]),
1271
- key: "2"
1272
- } : void 0,
1273
- e.$slots["header-extra"] ? {
1274
- name: "header-extra",
1275
- fn: j(() => [C(e.$slots, "header-extra")]),
1276
- key: "3"
1277
- } : void 0,
1278
- e.$slots["tags-view"] ? {
1279
- name: "tags-view",
1280
- fn: j(() => [C(e.$slots, "tags-view")]),
1281
- key: "4"
1282
- } : void 0,
1283
- e.$slots.footer ? {
1284
- name: "footer",
1285
- fn: j(() => [C(e.$slots, "footer")]),
1286
- key: "5"
1287
- } : void 0
1288
- ]), 1024)) : a.value === "reverse-horizontal-mix" ? (y(), i(Rt, { key: 4 }, c({ _: 2 }, [
1289
- e.$slots.logo ? {
1290
- name: "logo",
1291
- fn: j(() => [C(e.$slots, "logo")]),
1292
- key: "0"
1293
- } : void 0,
1294
- e.$slots["top-menu"] ? {
1295
- name: "top-menu",
1296
- fn: j(() => [C(e.$slots, "top-menu")]),
1297
- key: "1"
1298
- } : void 0,
1299
- e.$slots["header-extra"] ? {
1300
- name: "header-extra",
1301
- fn: j(() => [C(e.$slots, "header-extra")]),
1302
- key: "2"
1303
- } : void 0,
1304
- e.$slots["tags-view"] ? {
1305
- name: "tags-view",
1306
- fn: j(() => [C(e.$slots, "tags-view")]),
1307
- key: "3"
1308
- } : void 0,
1309
- e.$slots.footer ? {
1310
- name: "footer",
1311
- fn: j(() => [C(e.$slots, "footer")]),
1312
- key: "4"
1313
- } : void 0
1314
- ]), 1024)) : a.value === "card-layout" ? (y(), i(on, { key: 5 }, c({ _: 2 }, [
1315
- e.$slots["menu-trigger"] ? {
1316
- name: "menu-trigger",
1317
- fn: j(() => [C(e.$slots, "menu-trigger")]),
1318
- key: "0"
1319
- } : void 0,
1320
- e.$slots.logo ? {
1321
- name: "logo",
1322
- fn: j(() => [C(e.$slots, "logo")]),
1323
- key: "1"
1324
- } : void 0,
1325
- e.$slots["header-extra"] ? {
1326
- name: "header-extra",
1327
- fn: j(() => [C(e.$slots, "header-extra")]),
1328
- key: "2"
1329
- } : void 0,
1330
- e.$slots["tags-view"] ? {
1331
- name: "tags-view",
1332
- fn: j(() => [C(e.$slots, "tags-view")]),
1333
- key: "3"
1334
- } : void 0,
1335
- e.$slots["drawer-menu"] ? {
1336
- name: "drawer-menu",
1337
- fn: j(() => [C(e.$slots, "drawer-menu")]),
1338
- key: "4"
1339
- } : void 0,
1340
- e.$slots.footer ? {
1341
- name: "footer",
1342
- fn: j(() => [C(e.$slots, "footer")]),
1343
- key: "5"
1344
- } : void 0
1345
- ]), 1024)) : (y(), o("div", sn, [...t[1] ||= [s("div", { class: "coming-soon-content" }, [s("div", { class: "coming-soon-icon" }, "🚧"), s("div", { class: "coming-soon-title" }, "布局开发中")], -1)]]))], 2));
1346
- }
1347
- }), ln = [
1470
+ });
1471
+ }
1472
+ var gn = hn(), _n = [
1348
1473
  {
1349
1474
  label: "左侧菜单(默认)",
1350
1475
  value: "side",
@@ -1381,49 +1506,55 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1381
1506
  disabled: !1,
1382
1507
  svg: "\n <rect x=\"0\" y=\"0\" width=\"24\" height=\"20\" rx=\"2\" fill=\"currentColor\" fill-opacity=\"0.9\"/>\n <rect x=\"32\" y=\"0\" width=\"24\" height=\"20\" rx=\"2\" fill=\"currentColor\" fill-opacity=\"0.7\"/>\n <rect x=\"0\" y=\"24\" width=\"24\" height=\"20\" rx=\"2\" fill=\"currentColor\" fill-opacity=\"0.6\"/>\n <rect x=\"32\" y=\"24\" width=\"24\" height=\"20\" rx=\"2\" fill=\"currentColor\" fill-opacity=\"0.4\"/>\n "
1383
1508
  }
1384
- ], un = { class: "settings-section" }, dn = { class: "preset-grid" }, fn = [
1509
+ ], vn = { class: "settings-section" }, yn = { class: "preset-grid" }, bn = [
1385
1510
  "aria-pressed",
1386
1511
  "onClick",
1387
1512
  "onKeydown"
1388
- ], pn = { class: "preset-icon" }, mn = { class: "preset-name" }, hn = { class: "preset-color" }, gn = { class: "settings-section" }, _n = { class: "settings-section" }, vn = { class: "color-picker-wrapper" }, yn = { class: "color-value" }, bn = { class: "settings-section" }, xn = { class: "settings-section" }, Sn = { class: "flex items-center justify-between mb-2" }, Cn = { class: "settings-section" }, wn = { class: "settings-section" }, Tn = { class: "layout-grid" }, En = [
1513
+ ], xn = { class: "preset-icon" }, Sn = { class: "preset-name" }, Cn = { class: "preset-color" }, wn = { class: "settings-section" }, Tn = { class: "settings-section" }, En = { class: "color-picker-wrapper" }, Dn = { class: "color-value" }, On = { class: "settings-section" }, kn = { class: "settings-section" }, An = { class: "flex items-center justify-between mb-2" }, jn = { class: "settings-section" }, Mn = { class: "settings-section" }, Nn = { class: "layout-grid" }, Pn = [
1389
1514
  "tabindex",
1390
1515
  "aria-disabled",
1391
1516
  "aria-pressed",
1392
1517
  "onClick",
1393
1518
  "onKeydown"
1394
- ], Dn = { class: "layout-screenshot" }, On = {
1519
+ ], Fn = { class: "layout-screenshot" }, In = {
1395
1520
  class: "layout-svg",
1396
1521
  viewBox: "0 0 56 48",
1397
1522
  fill: "none",
1398
1523
  xmlns: "http://www.w3.org/2000/svg"
1399
- }, kn = ["innerHTML"], An = { class: "layout-label" }, jn = {
1524
+ }, Ln = ["innerHTML"], Rn = { class: "layout-label" }, zn = {
1400
1525
  key: 0,
1401
1526
  class: "badge-soon"
1402
- }, Mn = {
1527
+ }, Bn = {
1403
1528
  class: "settings-section menu-expand-section",
1404
1529
  "data-menu-expand-mode": "built-in"
1405
- }, Nn = { class: "settings-section" }, Pn = { class: "setting-item" }, Fn = { class: "setting-item" }, In = { class: "setting-item" }, Ln = { class: "setting-item" }, Rn = { class: "settings-section" }, zn = { class: "slider-item" }, Bn = { class: "slider-label" }, Vn = { class: "slider-value" }, Hn = { class: "slider-item" }, Un = { class: "slider-label" }, Wn = { class: "slider-value" }, Gn = { class: "settings-section" }, Kn = { class: "settings-section" }, qn = { class: "action-buttons-grid" }, Jn = { class: "settings-section" }, Yn = { class: "action-buttons-grid" }, Xn = { class: "settings-section" }, Zn = { class: "setting-item" }, Qn = { class: "setting-item" }, $n = { class: "settings-section" }, er = { class: "setting-item" }, tr = {
1530
+ }, Vn = { class: "settings-section" }, Hn = { class: "setting-item" }, Un = { class: "setting-item" }, Wn = { class: "setting-item" }, Gn = { class: "setting-item" }, Kn = { class: "settings-section" }, qn = { class: "slider-item" }, Jn = { class: "slider-label" }, Yn = { class: "slider-value" }, Xn = { class: "slider-item" }, Zn = { class: "slider-label" }, Qn = { class: "slider-value" }, $n = { class: "settings-section" }, er = { class: "settings-section" }, tr = { class: "action-buttons-grid" }, nr = { class: "settings-section" }, rr = { class: "action-buttons-grid" }, ir = { class: "settings-section" }, ar = { class: "setting-item" }, or = { class: "setting-item" }, sr = { class: "settings-section" }, cr = { class: "setting-item" }, lr = {
1406
1531
  key: 0,
1407
1532
  class: "mt-2"
1408
- }, nr = { class: "settings-section" }, rr = { class: "system-info" }, ir = { class: "info-item" }, ar = { class: "info-value" }, or = { class: "info-item" }, sr = { class: "info-value" }, cr = { class: "info-item" }, lr = { class: "info-value" }, ur = { class: "info-item" }, dr = { class: "info-value" }, fr = { class: "info-item" }, pr = { class: "info-value" }, mr = { class: "info-item" }, hr = { class: "info-value" }, gr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1533
+ }, ur = { class: "settings-section" }, dr = { class: "system-info" }, fr = { class: "info-item" }, pr = { class: "info-value" }, mr = { class: "info-item" }, hr = { class: "info-value" }, gr = { class: "info-item" }, _r = { class: "info-value" }, vr = { class: "info-item" }, yr = { class: "info-value" }, br = { class: "info-item" }, xr = { class: "info-value" }, Sr = { class: "info-item" }, Cr = { class: "info-value" }, wr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1409
1534
  __name: "index",
1410
- props: {
1535
+ props: /* @__PURE__ */ m({
1536
+ width: { default: 380 },
1537
+ store: {},
1538
+ actions: {},
1539
+ maxImportBytes: { default: 1024 * 1024 }
1540
+ }, {
1411
1541
  show: {
1412
1542
  type: Boolean,
1413
1543
  default: !1
1414
1544
  },
1415
1545
  showModifiers: {}
1416
- },
1546
+ }),
1417
1547
  emits: ["update:show"],
1418
1548
  setup(t) {
1419
- let n = oe(), c = ae(), d = ye(), f = k(t, "show"), p = x("appearance"), m = x(!1), _ = x(!1), b = x(!1), C = x("Robot Admin"), w = null, T = (e) => {
1420
- w &&= (document.body.removeChild(w), null);
1421
- let t = document.createElement("canvas"), r = t.getContext("2d");
1422
- if (!r) {
1423
- n.error("当前浏览器无法创建水印画布");
1549
+ let n = t, c = oe(), d = ae(), f = p(ce, null), m = n.store ?? f ?? gn(), h = A(t, "show"), v = S("appearance"), x = typeof document < "u" && document.documentElement.classList.contains("gray-mode"), T = typeof document < "u" && document.documentElement.classList.contains("color-weak-mode"), E = S(x), O = S(T), z = S(!1), V = S("Robot Admin"), H = null, U = (e) => {
1550
+ if (typeof document > "u") return;
1551
+ H &&= (H.remove(), null);
1552
+ let t = document.createElement("canvas"), n = t.getContext("2d");
1553
+ if (!n) {
1554
+ c.error("当前浏览器无法创建水印画布");
1424
1555
  return;
1425
1556
  }
1426
- t.width = 200, t.height = 150, r.font = "14px Microsoft JhengHei", r.fillStyle = "rgba(120, 120, 120, 0.15)", r.rotate(-20 * Math.PI / 180), r.fillText(e, 0, 80), w = document.createElement("div"), w.style.cssText = `
1557
+ t.width = 200, t.height = 150, n.font = "14px Microsoft JhengHei", n.fillStyle = "rgba(120, 120, 120, 0.15)", n.rotate(-20 * Math.PI / 180), n.fillText(e, 0, 80), H = document.createElement("div"), H.dataset.robotAdminLayoutWatermark = "true", H.style.cssText = `
1427
1558
  position: fixed;
1428
1559
  top: 0;
1429
1560
  left: 0;
@@ -1434,20 +1565,20 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1434
1565
  background-repeat: repeat;
1435
1566
  z-index: 9999;
1436
1567
  user-select: none;
1437
- `, document.body.appendChild(w);
1438
- }, D = () => {
1439
- w &&= (document.body.removeChild(w), null);
1568
+ `, document.body.appendChild(H);
1569
+ }, ee = () => {
1570
+ H &&= (H.remove(), null);
1440
1571
  };
1441
- A(m, (e) => {
1442
- document.documentElement.classList.toggle("gray-mode", e);
1443
- }), A(_, (e) => {
1444
- document.documentElement.classList.toggle("color-weak-mode", e);
1445
- }), A(b, (e) => {
1446
- e ? T(C.value) : D();
1447
- }), A(C, (e) => {
1448
- b.value && T(e);
1572
+ j(E, (e) => {
1573
+ typeof document < "u" && document.documentElement.classList.toggle("gray-mode", e);
1574
+ }), j(O, (e) => {
1575
+ typeof document < "u" && document.documentElement.classList.toggle("color-weak-mode", e);
1576
+ }), j(z, (e) => {
1577
+ e ? U(V.value) : ee();
1578
+ }), j(V, (e) => {
1579
+ z.value && U(e);
1449
1580
  });
1450
- let P = r(() => {
1581
+ let K = r(() => {
1451
1582
  if (typeof navigator > "u" || typeof window > "u") return {
1452
1583
  browser: "Unknown",
1453
1584
  os: "Unknown",
@@ -1457,7 +1588,7 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1457
1588
  timezone: "Unknown"
1458
1589
  };
1459
1590
  let e = navigator.userAgent, t = "Unknown", n = "Unknown";
1460
- return e.includes("Chrome") ? t = "Chrome" : e.includes("Firefox") ? t = "Firefox" : e.includes("Safari") ? t = "Safari" : e.includes("Edge") && (t = "Edge"), e.includes("Windows") ? n = "Windows" : e.includes("Mac") ? n = "macOS" : e.includes("Linux") ? n = "Linux" : e.includes("Android") ? n = "Android" : e.includes("iOS") && (n = "iOS"), {
1591
+ return e.includes("Edg/") ? t = "Edge" : e.includes("Firefox") ? t = "Firefox" : e.includes("Chrome") ? t = "Chrome" : e.includes("Safari") && (t = "Safari"), e.includes("Windows") ? n = "Windows" : e.includes("Mac") ? n = "macOS" : e.includes("Android") ? n = "Android" : e.includes("iOS") ? n = "iOS" : e.includes("Linux") && (n = "Linux"), {
1461
1592
  browser: t,
1462
1593
  os: n,
1463
1594
  resolution: `${window.screen.width} × ${window.screen.height}`,
@@ -1466,283 +1597,288 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1466
1597
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
1467
1598
  };
1468
1599
  });
1469
- v(() => {
1470
- D();
1600
+ y(() => {
1601
+ ee(), typeof document < "u" && (document.documentElement.classList.toggle("gray-mode", x), document.documentElement.classList.toggle("color-weak-mode", T));
1471
1602
  });
1472
- let z = (e, t) => {
1473
- t || (d.layoutMode = e);
1474
- }, V = (e) => d.primaryColor === e.primaryColor, H = (e) => {
1475
- d.applyPreset(e), n.success(`已应用「${e.name}」主题方案`);
1476
- }, ee = async (e) => {
1603
+ let q = (e, t) => {
1604
+ t || (m.layoutMode = e);
1605
+ }, se = (e) => m.primaryColor === e.primaryColor, J = (e) => {
1606
+ m.applyPreset(e), c.success(`已应用「${e.name}」主题方案`);
1607
+ }, le = async (e) => {
1608
+ try {
1609
+ await m.updateThemeMode(e);
1610
+ } catch {
1611
+ c.error("主题模式切换失败");
1612
+ }
1613
+ }, ue = async () => {
1477
1614
  try {
1478
- await d.updateThemeMode(e);
1615
+ await m.updateThemeMode($.themeMode), m.primaryColor = $.primaryColor, m.borderRadius = $.borderRadius, m.transitionType = $.transitionType, m.enableTransition = $.enableTransition, c.success("已恢复外观默认设置");
1479
1616
  } catch {
1480
- n.error("主题模式切换失败");
1617
+ c.error("恢复外观默认设置失败");
1481
1618
  }
1482
- }, te = () => {
1483
- d.themeMode = J.themeMode, d.primaryColor = J.primaryColor, d.borderRadius = J.borderRadius, d.transitionType = J.transitionType, d.enableTransition = J.enableTransition, n.success("已恢复外观默认设置");
1484
- }, K = () => {
1485
- d.layoutMode = J.layoutMode, d.menuExpandMode = J.menuExpandMode, d.fixedHeader = J.fixedHeader, d.showBreadcrumb = J.showBreadcrumb, d.showBreadcrumbIcon = J.showBreadcrumbIcon, d.showTagsView = J.showTagsView, d.tagsViewHeight = J.tagsViewHeight, d.tagsViewStyle = J.tagsViewStyle, d.showFooter = J.showFooter, d.sidebarWidth = J.sidebarWidth, d.sidebarCollapsedWidth = J.sidebarCollapsedWidth, d.headerHeight = J.headerHeight, n.success("已恢复布局默认设置");
1486
- }, q = () => {
1487
- c.warning({
1619
+ }, Y = () => {
1620
+ m.layoutMode = $.layoutMode, m.menuExpandMode = $.menuExpandMode, m.fixedHeader = $.fixedHeader, m.showBreadcrumb = $.showBreadcrumb, m.showBreadcrumbIcon = $.showBreadcrumbIcon, m.showTagsView = $.showTagsView, m.tagsViewHeight = $.tagsViewHeight, m.tagsViewStyle = $.tagsViewStyle, m.showFooter = $.showFooter, m.sidebarWidth = $.sidebarWidth, m.sidebarCollapsedWidth = $.sidebarCollapsedWidth, m.headerHeight = $.headerHeight, c.success("已恢复布局默认设置");
1621
+ }, de = () => {
1622
+ d.warning({
1488
1623
  title: "确认重置",
1489
1624
  content: "确定要恢复默认配置吗?此操作不可撤销。",
1490
1625
  positiveText: "确认",
1491
1626
  negativeText: "取消",
1492
- onPositiveClick: () => {
1493
- d.resetSettings(), n.success("已恢复默认配置");
1627
+ onPositiveClick: async () => {
1628
+ let e = { ...m.settingsState };
1629
+ try {
1630
+ m.resetSettings(), await m.updateThemeMode(m.themeMode), c.success("已恢复默认配置");
1631
+ } catch {
1632
+ m.$patch(e), c.error("恢复默认配置失败");
1633
+ }
1494
1634
  }
1495
1635
  });
1496
- }, se = () => {
1497
- c.warning({
1636
+ }, X = () => {
1637
+ d.warning({
1498
1638
  title: "确认清除",
1499
1639
  content: "确定要清除浏览器缓存吗?",
1500
1640
  positiveText: "确认",
1501
1641
  negativeText: "取消",
1502
- onPositiveClick: () => {
1503
- let e = ["theme-mode", "robot-admin-settings"];
1504
- Object.keys(localStorage).forEach((t) => {
1505
- e.includes(t) || localStorage.removeItem(t);
1506
- }), sessionStorage.clear(), n.success("缓存已清除");
1642
+ onPositiveClick: async () => {
1643
+ if (!n.actions?.clearCache) {
1644
+ c.warning("宿主应用未配置可安全清理的缓存");
1645
+ return;
1646
+ }
1647
+ try {
1648
+ await n.actions.clearCache(), c.success("缓存已清除");
1649
+ } catch {
1650
+ c.error("缓存清除失败");
1651
+ }
1507
1652
  }
1508
1653
  });
1509
- }, le = () => {
1510
- location.reload();
1511
- }, ue = () => {
1654
+ }, fe = () => {
1655
+ n.actions?.reloadPage ? n.actions.reloadPage() : typeof window < "u" && window.location.reload();
1656
+ }, Z = () => {
1512
1657
  let e = {
1513
- settings: d.settingsState,
1514
- gray: m.value,
1515
- colorWeak: _.value,
1658
+ schemaVersion: 1,
1659
+ settings: m.settingsState,
1660
+ gray: E.value,
1661
+ colorWeak: O.value,
1516
1662
  watermark: {
1517
- enabled: b.value,
1518
- text: C.value
1663
+ enabled: z.value,
1664
+ text: V.value
1519
1665
  },
1520
1666
  exportTime: (/* @__PURE__ */ new Date()).toISOString()
1521
- }, t = new Blob([JSON.stringify(e, null, 2)], { type: "application/json" }), r = URL.createObjectURL(t), i = document.createElement("a");
1522
- i.href = r, i.download = `robot-admin-config-${Date.now()}.json`, i.click(), URL.revokeObjectURL(r), n.success("配置已导出");
1523
- }, de = () => {
1667
+ }, t = new Blob([JSON.stringify(e, null, 2)], { type: "application/json" }), n = URL.createObjectURL(t), r = document.createElement("a");
1668
+ r.href = n, r.download = `robot-admin-config-${Date.now()}.json`, r.click(), URL.revokeObjectURL(n), c.success("配置已导出");
1669
+ }, pe = () => {
1670
+ if (typeof document > "u") return;
1524
1671
  let e = document.createElement("input");
1525
1672
  e.type = "file", e.accept = "application/json", e.onchange = async (e) => {
1526
1673
  let t = e.target.files?.[0];
1527
1674
  if (t) try {
1528
- let e = await t.text(), r = JSON.parse(e);
1529
- if (!r || typeof r != "object" || Array.isArray(r)) throw TypeError("配置文件根节点必须是对象");
1530
- let i = r;
1531
- if (i.settings !== void 0) {
1532
- let e = ge(i.settings);
1533
- e.themeMode !== void 0 && (await d.updateThemeMode(e.themeMode), delete e.themeMode), d.$patch(e);
1534
- }
1535
- if (i.gray !== void 0) {
1536
- if (typeof i.gray != "boolean") throw TypeError("gray");
1537
- m.value = i.gray;
1675
+ if (t.size > n.maxImportBytes) throw RangeError("配置文件过大");
1676
+ let e = await t.text(), r = pn(JSON.parse(e));
1677
+ if (r.settings !== void 0) {
1678
+ let { themeMode: e, ...t } = r.settings;
1679
+ e !== void 0 && await m.updateThemeMode(e), m.$patch(t);
1538
1680
  }
1539
- if (i.colorWeak !== void 0) {
1540
- if (typeof i.colorWeak != "boolean") throw TypeError("colorWeak");
1541
- _.value = i.colorWeak;
1542
- }
1543
- if (i.watermark !== void 0) {
1544
- if (!i.watermark || typeof i.watermark != "object" || Array.isArray(i.watermark)) throw TypeError("watermark");
1545
- let e = i.watermark;
1546
- if (typeof e.enabled != "boolean" || typeof e.text != "string" || e.text.length > 200) throw TypeError("watermark");
1547
- b.value = e.enabled, C.value = e.text;
1548
- }
1549
- n.success("配置已导入");
1681
+ r.gray !== void 0 && (E.value = r.gray), r.colorWeak !== void 0 && (O.value = r.colorWeak), r.watermark !== void 0 && (z.value = r.watermark.enabled, V.value = r.watermark.text), c.success("配置已导入");
1550
1682
  } catch {
1551
- n.error("配置文件格式错误");
1683
+ c.error("配置文件格式错误");
1552
1684
  }
1553
1685
  }, e.click();
1554
1686
  };
1555
- return (t, n) => (y(), i(O(L), {
1556
- show: f.value,
1557
- "onUpdate:show": n[16] ||= (e) => f.value = e,
1558
- width: 380,
1687
+ return (n, r) => (b(), i(k(L), {
1688
+ show: h.value,
1689
+ "onUpdate:show": r[16] ||= (e) => h.value = e,
1690
+ width: t.width,
1559
1691
  placement: "right",
1560
1692
  "trap-focus": !0,
1561
1693
  "block-scroll": !0
1562
1694
  }, {
1563
- default: j(() => [u(O(R), {
1695
+ default: M(() => [u(k(R), {
1564
1696
  title: "⚙️ 布局配置",
1565
1697
  closable: ""
1566
1698
  }, {
1567
- default: j(() => [u(O(ie), {
1568
- value: p.value,
1569
- "onUpdate:value": n[15] ||= (e) => p.value = e,
1699
+ default: M(() => [u(k(ie), {
1700
+ value: v.value,
1701
+ "onUpdate:value": r[15] ||= (e) => v.value = e,
1570
1702
  animated: "",
1571
1703
  class: "settings-tabs"
1572
1704
  }, {
1573
- default: j(() => [
1574
- u(O(re), {
1705
+ default: M(() => [
1706
+ u(k(re), {
1575
1707
  name: "appearance",
1576
1708
  tab: "🎨 外观"
1577
1709
  }, {
1578
- default: j(() => [
1579
- s("div", un, [s("div", dn, [(y(!0), o(e, null, S(O(ce), (e) => (y(), o("div", {
1710
+ default: M(() => [
1711
+ w(n.$slots, "appearance-prepend", { settings: k(m) }, void 0, !0),
1712
+ s("div", vn, [s("div", yn, [(b(!0), o(e, null, C(k(nn), (e) => (b(), o("div", {
1580
1713
  key: e.name,
1581
- class: h(["preset-card", { active: V(e) }]),
1714
+ class: g(["preset-card", { active: se(e) }]),
1582
1715
  role: "button",
1583
1716
  tabindex: "0",
1584
- "aria-pressed": V(e),
1585
- onClick: (t) => H(e),
1586
- onKeydown: [M((t) => H(e), ["enter"]), M(N((t) => H(e), ["prevent"]), ["space"])]
1717
+ "aria-pressed": se(e),
1718
+ onClick: (t) => J(e),
1719
+ onKeydown: [N((t) => J(e), ["enter"]), N(P((t) => J(e), ["prevent"]), ["space"])]
1587
1720
  }, [
1588
- s("div", pn, E(e.icon), 1),
1589
- s("div", mn, E(e.name), 1),
1590
- s("div", hn, [s("span", {
1721
+ s("div", xn, D(e.icon), 1),
1722
+ s("div", Sn, D(e.name), 1),
1723
+ s("div", Cn, [s("span", {
1591
1724
  class: "color-dot",
1592
- style: g({ backgroundColor: e.primaryColor })
1725
+ style: _({ backgroundColor: e.primaryColor })
1593
1726
  }, null, 4)])
1594
- ], 42, fn))), 128))])]),
1595
- s("div", gn, [n[20] ||= s("div", { class: "section-title" }, "主题模式", -1), u(O(W), {
1596
- value: O(d).themeMode,
1727
+ ], 42, bn))), 128))])]),
1728
+ s("div", wn, [r[20] ||= s("div", { class: "section-title" }, "主题模式", -1), u(k(te), {
1729
+ value: k(m).themeMode,
1597
1730
  class: "mode-group",
1598
- "onUpdate:value": ee
1731
+ "onUpdate:value": le
1599
1732
  }, {
1600
- default: j(() => [
1601
- u(O(U), { value: "light" }, {
1602
- default: j(() => [...n[17] ||= [s("span", { class: "i-mdi:white-balance-sunny mr-1" }, null, -1), l(" 浅色 ", -1)]]),
1733
+ default: M(() => [
1734
+ u(k(W), { value: "light" }, {
1735
+ default: M(() => [...r[17] ||= [s("span", { class: "i-mdi:white-balance-sunny mr-1" }, null, -1), l(" 浅色 ", -1)]]),
1603
1736
  _: 1
1604
1737
  }),
1605
- u(O(U), { value: "dark" }, {
1606
- default: j(() => [...n[18] ||= [s("span", { class: "i-mdi:moon-waning-crescent mr-1" }, null, -1), l(" 深色 ", -1)]]),
1738
+ u(k(W), { value: "dark" }, {
1739
+ default: M(() => [...r[18] ||= [s("span", { class: "i-mdi:moon-waning-crescent mr-1" }, null, -1), l(" 深色 ", -1)]]),
1607
1740
  _: 1
1608
1741
  }),
1609
- u(O(U), { value: "system" }, {
1610
- default: j(() => [...n[19] ||= [s("span", { class: "i-mdi:theme-light-dark mr-1" }, null, -1), l(" 自动 ", -1)]]),
1742
+ u(k(W), { value: "system" }, {
1743
+ default: M(() => [...r[19] ||= [s("span", { class: "i-mdi:theme-light-dark mr-1" }, null, -1), l(" 自动 ", -1)]]),
1611
1744
  _: 1
1612
1745
  })
1613
1746
  ]),
1614
1747
  _: 1
1615
1748
  }, 8, ["value"])]),
1616
- s("div", _n, [n[21] ||= s("div", { class: "section-title" }, "主题色", -1), s("div", vn, [u(O(I), {
1617
- value: O(d).primaryColor,
1618
- "onUpdate:value": n[0] ||= (e) => O(d).primaryColor = e,
1749
+ s("div", Tn, [r[21] ||= s("div", { class: "section-title" }, "主题色", -1), s("div", En, [u(k(I), {
1750
+ value: k(m).primaryColor,
1751
+ "onUpdate:value": r[0] ||= (e) => k(m).primaryColor = e,
1619
1752
  "show-alpha": !1,
1620
- swatches: O(fe),
1753
+ swatches: k(sn),
1621
1754
  actions: ["confirm"]
1622
- }, null, 8, ["value", "swatches"]), s("span", yn, E(O(d).primaryColor), 1)])]),
1623
- s("div", bn, [n[25] ||= s("div", { class: "section-title" }, "圆角大小", -1), u(O(W), {
1624
- value: O(d).borderRadius,
1625
- "onUpdate:value": n[1] ||= (e) => O(d).borderRadius = e,
1755
+ }, null, 8, ["value", "swatches"]), s("span", Dn, D(k(m).primaryColor), 1)])]),
1756
+ s("div", On, [r[25] ||= s("div", { class: "section-title" }, "圆角大小", -1), u(k(te), {
1757
+ value: k(m).borderRadius,
1758
+ "onUpdate:value": r[1] ||= (e) => k(m).borderRadius = e,
1626
1759
  class: "radius-group"
1627
1760
  }, {
1628
- default: j(() => [
1629
- u(O(U), { value: "small" }, {
1630
- default: j(() => [...n[22] ||= [l("小 (4px)", -1)]]),
1761
+ default: M(() => [
1762
+ u(k(W), { value: "small" }, {
1763
+ default: M(() => [...r[22] ||= [l("小 (4px)", -1)]]),
1631
1764
  _: 1
1632
1765
  }),
1633
- u(O(U), { value: "medium" }, {
1634
- default: j(() => [...n[23] ||= [l("中 (6px)", -1)]]),
1766
+ u(k(W), { value: "medium" }, {
1767
+ default: M(() => [...r[23] ||= [l("中 (6px)", -1)]]),
1635
1768
  _: 1
1636
1769
  }),
1637
- u(O(U), { value: "large" }, {
1638
- default: j(() => [...n[24] ||= [l("大 (8px)", -1)]]),
1770
+ u(k(W), { value: "large" }, {
1771
+ default: M(() => [...r[24] ||= [l("大 (8px)", -1)]]),
1639
1772
  _: 1
1640
1773
  })
1641
1774
  ]),
1642
1775
  _: 1
1643
1776
  }, 8, ["value"])]),
1644
- s("div", xn, [
1645
- n[31] ||= s("div", { class: "section-title" }, "页面动画", -1),
1646
- s("div", Sn, [n[26] ||= s("span", { class: "text-sm" }, "启用动画", -1), u(O(G), {
1647
- value: O(d).enableTransition,
1648
- "onUpdate:value": n[2] ||= (e) => O(d).enableTransition = e
1777
+ s("div", kn, [
1778
+ r[31] ||= s("div", { class: "section-title" }, "页面动画", -1),
1779
+ s("div", An, [r[26] ||= s("span", { class: "text-sm" }, "启用动画", -1), u(k(G), {
1780
+ value: k(m).enableTransition,
1781
+ "onUpdate:value": r[2] ||= (e) => k(m).enableTransition = e
1649
1782
  }, null, 8, ["value"])]),
1650
- u(O(W), {
1651
- value: O(d).transitionType,
1652
- "onUpdate:value": n[3] ||= (e) => O(d).transitionType = e,
1653
- disabled: !O(d).enableTransition,
1783
+ u(k(te), {
1784
+ value: k(m).transitionType,
1785
+ "onUpdate:value": r[3] ||= (e) => k(m).transitionType = e,
1786
+ disabled: !k(m).enableTransition,
1654
1787
  class: "transition-group"
1655
1788
  }, {
1656
- default: j(() => [
1657
- u(O(U), { value: "fade" }, {
1658
- default: j(() => [...n[27] ||= [l("淡入", -1)]]),
1789
+ default: M(() => [
1790
+ u(k(W), { value: "fade" }, {
1791
+ default: M(() => [...r[27] ||= [l("淡入", -1)]]),
1659
1792
  _: 1
1660
1793
  }),
1661
- u(O(U), { value: "slide" }, {
1662
- default: j(() => [...n[28] ||= [l("滑动", -1)]]),
1794
+ u(k(W), { value: "slide" }, {
1795
+ default: M(() => [...r[28] ||= [l("滑动", -1)]]),
1663
1796
  _: 1
1664
1797
  }),
1665
- u(O(U), { value: "zoom" }, {
1666
- default: j(() => [...n[29] ||= [l("缩放", -1)]]),
1798
+ u(k(W), { value: "zoom" }, {
1799
+ default: M(() => [...r[29] ||= [l("缩放", -1)]]),
1667
1800
  _: 1
1668
1801
  }),
1669
- u(O(U), { value: "none" }, {
1670
- default: j(() => [...n[30] ||= [l("无", -1)]]),
1802
+ u(k(W), { value: "none" }, {
1803
+ default: M(() => [...r[30] ||= [l("无", -1)]]),
1671
1804
  _: 1
1672
1805
  })
1673
1806
  ]),
1674
1807
  _: 1
1675
1808
  }, 8, ["value", "disabled"])
1676
1809
  ]),
1677
- s("div", Cn, [u(O(F), {
1810
+ s("div", jn, [u(k(F), {
1678
1811
  block: "",
1679
1812
  secondary: "",
1680
- onClick: te
1813
+ onClick: ue
1681
1814
  }, {
1682
- icon: j(() => [...n[32] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1683
- default: j(() => [n[33] ||= l(" 恢复外观默认设置 ", -1)]),
1815
+ icon: M(() => [...r[32] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1816
+ default: M(() => [r[33] ||= l(" 恢复外观默认设置 ", -1)]),
1684
1817
  _: 1
1685
- })])
1818
+ })]),
1819
+ w(n.$slots, "appearance-append", { settings: k(m) }, void 0, !0)
1686
1820
  ]),
1687
- _: 1
1821
+ _: 3
1688
1822
  }),
1689
- u(O(re), {
1823
+ u(k(re), {
1690
1824
  name: "layout",
1691
1825
  tab: "📐 布局"
1692
1826
  }, {
1693
- default: j(() => [
1694
- s("div", wn, [n[34] ||= s("div", { class: "section-title" }, "布局模式", -1), s("div", Tn, [(y(!0), o(e, null, S(O(ln), (e) => (y(), o("div", {
1827
+ default: M(() => [
1828
+ w(n.$slots, "layout-prepend", { settings: k(m) }, void 0, !0),
1829
+ s("div", Mn, [r[34] ||= s("div", { class: "section-title" }, "布局模式", -1), s("div", Nn, [(b(!0), o(e, null, C(k(_n), (e) => (b(), o("div", {
1695
1830
  key: e.value,
1696
- class: h(["layout-item", {
1697
- active: O(d).layoutMode === e.value,
1831
+ class: g(["layout-item", {
1832
+ active: k(m).layoutMode === e.value,
1698
1833
  disabled: e.disabled
1699
1834
  }]),
1700
1835
  role: "button",
1701
1836
  tabindex: e.disabled ? -1 : 0,
1702
1837
  "aria-disabled": e.disabled,
1703
- "aria-pressed": O(d).layoutMode === e.value,
1704
- onClick: N((t) => z(e.value, e.disabled), ["stop"]),
1705
- onKeydown: [M(N((t) => z(e.value, e.disabled), ["stop"]), ["enter"]), M(N((t) => z(e.value, e.disabled), ["stop", "prevent"]), ["space"])]
1706
- }, [s("div", Dn, [(y(), o("svg", On, [s("g", { innerHTML: e.svg }, null, 8, kn)]))]), s("div", An, [l(E(e.label) + " ", 1), e.disabled ? (y(), o("span", jn, "敬请期待")) : a("", !0)])], 42, En))), 128))])]),
1707
- s("div", Mn, [n[37] ||= s("div", { class: "section-title" }, "菜单展开方式", -1), u(O(W), {
1708
- value: O(d).menuExpandMode,
1709
- "onUpdate:value": n[4] ||= (e) => O(d).menuExpandMode = e,
1838
+ "aria-pressed": k(m).layoutMode === e.value,
1839
+ onClick: P((t) => q(e.value, e.disabled), ["stop"]),
1840
+ onKeydown: [N(P((t) => q(e.value, e.disabled), ["stop"]), ["enter"]), N(P((t) => q(e.value, e.disabled), ["stop", "prevent"]), ["space"])]
1841
+ }, [s("div", Fn, [(b(), o("svg", In, [s("g", { innerHTML: e.svg }, null, 8, Ln)]))]), s("div", Rn, [l(D(e.label) + " ", 1), e.disabled ? (b(), o("span", zn, "敬请期待")) : a("", !0)])], 42, Pn))), 128))])]),
1842
+ w(n.$slots, "layout-after-mode", { settings: k(m) }, void 0, !0),
1843
+ s("div", Bn, [r[37] ||= s("div", { class: "section-title" }, "菜单展开方式", -1), u(k(te), {
1844
+ value: k(m).menuExpandMode,
1845
+ "onUpdate:value": r[4] ||= (e) => k(m).menuExpandMode = e,
1710
1846
  class: "menu-expand-group"
1711
1847
  }, {
1712
- default: j(() => [u(O(U), { value: "inline" }, {
1713
- default: j(() => [...n[35] ||= [l("传统展开", -1)]]),
1848
+ default: M(() => [u(k(W), { value: "inline" }, {
1849
+ default: M(() => [...r[35] ||= [l("传统展开", -1)]]),
1714
1850
  _: 1
1715
- }), u(O(U), { value: "panel" }, {
1716
- default: j(() => [...n[36] ||= [l("右侧面板", -1)]]),
1851
+ }), u(k(W), { value: "panel" }, {
1852
+ default: M(() => [...r[36] ||= [l("右侧面板", -1)]]),
1717
1853
  _: 1
1718
1854
  })]),
1719
1855
  _: 1
1720
1856
  }, 8, ["value"])]),
1721
- s("div", Nn, [
1722
- n[42] ||= s("div", { class: "section-title" }, "界面元素", -1),
1723
- s("div", Pn, [n[38] ||= s("span", null, "显示面包屑", -1), u(O(G), {
1724
- value: O(d).showBreadcrumb,
1725
- "onUpdate:value": n[5] ||= (e) => O(d).showBreadcrumb = e
1857
+ s("div", Vn, [
1858
+ r[42] ||= s("div", { class: "section-title" }, "界面元素", -1),
1859
+ s("div", Hn, [r[38] ||= s("span", null, "显示面包屑", -1), u(k(G), {
1860
+ value: k(m).showBreadcrumb,
1861
+ "onUpdate:value": r[5] ||= (e) => k(m).showBreadcrumb = e
1726
1862
  }, null, 8, ["value"])]),
1727
- s("div", Fn, [n[39] ||= s("span", null, "显示面包屑图标", -1), u(O(G), {
1728
- value: O(d).showBreadcrumbIcon,
1729
- "onUpdate:value": n[6] ||= (e) => O(d).showBreadcrumbIcon = e,
1730
- disabled: !O(d).showBreadcrumb
1863
+ s("div", Un, [r[39] ||= s("span", null, "显示面包屑图标", -1), u(k(G), {
1864
+ value: k(m).showBreadcrumbIcon,
1865
+ "onUpdate:value": r[6] ||= (e) => k(m).showBreadcrumbIcon = e,
1866
+ disabled: !k(m).showBreadcrumb
1731
1867
  }, null, 8, ["value", "disabled"])]),
1732
- s("div", In, [n[40] ||= s("span", null, "显示标签页", -1), u(O(G), {
1733
- value: O(d).showTagsView,
1734
- "onUpdate:value": n[7] ||= (e) => O(d).showTagsView = e
1868
+ s("div", Wn, [r[40] ||= s("span", null, "显示标签页", -1), u(k(G), {
1869
+ value: k(m).showTagsView,
1870
+ "onUpdate:value": r[7] ||= (e) => k(m).showTagsView = e
1735
1871
  }, null, 8, ["value"])]),
1736
- s("div", Ln, [n[41] ||= s("span", null, "显示页脚", -1), u(O(G), {
1737
- value: O(d).showFooter,
1738
- "onUpdate:value": n[8] ||= (e) => O(d).showFooter = e
1872
+ s("div", Gn, [r[41] ||= s("span", null, "显示页脚", -1), u(k(G), {
1873
+ value: k(m).showFooter,
1874
+ "onUpdate:value": r[8] ||= (e) => k(m).showFooter = e
1739
1875
  }, null, 8, ["value"])])
1740
1876
  ]),
1741
- s("div", Rn, [
1742
- n[45] ||= s("div", { class: "section-title" }, "尺寸调整", -1),
1743
- s("div", zn, [s("div", Bn, [n[43] ||= s("span", null, "侧边栏宽度", -1), s("span", Vn, E(O(d).sidebarWidth) + "px", 1)]), u(O(ne), {
1744
- value: O(d).sidebarWidth,
1745
- "onUpdate:value": n[9] ||= (e) => O(d).sidebarWidth = e,
1877
+ s("div", Kn, [
1878
+ r[45] ||= s("div", { class: "section-title" }, "尺寸调整", -1),
1879
+ s("div", qn, [s("div", Jn, [r[43] ||= s("span", null, "侧边栏宽度", -1), s("span", Yn, D(k(m).sidebarWidth) + "px", 1)]), u(k(ne), {
1880
+ value: k(m).sidebarWidth,
1881
+ "onUpdate:value": r[9] ||= (e) => k(m).sidebarWidth = e,
1746
1882
  min: 180,
1747
1883
  max: 280,
1748
1884
  step: 10,
@@ -1752,9 +1888,9 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1752
1888
  280: "280"
1753
1889
  }
1754
1890
  }, null, 8, ["value"])]),
1755
- s("div", Hn, [s("div", Un, [n[44] ||= s("span", null, "头部高度", -1), s("span", Wn, E(O(d).headerHeight) + "px", 1)]), u(O(ne), {
1756
- value: O(d).headerHeight,
1757
- "onUpdate:value": n[10] ||= (e) => O(d).headerHeight = e,
1891
+ s("div", Xn, [s("div", Zn, [r[44] ||= s("span", null, "头部高度", -1), s("span", Qn, D(k(m).headerHeight) + "px", 1)]), u(k(ne), {
1892
+ value: k(m).headerHeight,
1893
+ "onUpdate:value": r[10] ||= (e) => k(m).headerHeight = e,
1758
1894
  min: 48,
1759
1895
  max: 64,
1760
1896
  step: 4,
@@ -1765,125 +1901,128 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1765
1901
  }
1766
1902
  }, null, 8, ["value"])])
1767
1903
  ]),
1768
- s("div", Gn, [u(O(F), {
1904
+ s("div", $n, [u(k(F), {
1769
1905
  block: "",
1770
1906
  secondary: "",
1771
- onClick: K
1907
+ onClick: Y
1772
1908
  }, {
1773
- icon: j(() => [...n[46] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1774
- default: j(() => [n[47] ||= l(" 恢复布局默认设置 ", -1)]),
1909
+ icon: M(() => [...r[46] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1910
+ default: M(() => [r[47] ||= l(" 恢复布局默认设置 ", -1)]),
1775
1911
  _: 1
1776
- })])
1912
+ })]),
1913
+ w(n.$slots, "layout-append", { settings: k(m) }, void 0, !0)
1777
1914
  ]),
1778
- _: 1
1915
+ _: 3
1779
1916
  }),
1780
- u(O(re), {
1917
+ u(k(re), {
1781
1918
  name: "features",
1782
1919
  tab: "🔧 功能"
1783
1920
  }, {
1784
- default: j(() => [
1785
- s("div", Kn, [n[52] ||= s("div", { class: "section-title" }, "缓存管理", -1), s("div", qn, [u(O(F), {
1921
+ default: M(() => [
1922
+ w(n.$slots, "features-prepend", { settings: k(m) }, void 0, !0),
1923
+ s("div", er, [r[52] ||= s("div", { class: "section-title" }, "缓存管理", -1), s("div", tr, [u(k(F), {
1786
1924
  secondary: "",
1787
- onClick: se
1925
+ onClick: X
1788
1926
  }, {
1789
- icon: j(() => [...n[48] ||= [s("span", { class: "i-mdi:delete-sweep" }, null, -1)]]),
1790
- default: j(() => [n[49] ||= l(" 清除缓存 ", -1)]),
1927
+ icon: M(() => [...r[48] ||= [s("span", { class: "i-mdi:delete-sweep" }, null, -1)]]),
1928
+ default: M(() => [r[49] ||= l(" 清除缓存 ", -1)]),
1791
1929
  _: 1
1792
- }), u(O(F), {
1930
+ }), u(k(F), {
1793
1931
  secondary: "",
1794
- onClick: le
1932
+ onClick: fe
1795
1933
  }, {
1796
- icon: j(() => [...n[50] ||= [s("span", { class: "i-mdi:refresh" }, null, -1)]]),
1797
- default: j(() => [n[51] ||= l(" 重新加载 ", -1)]),
1934
+ icon: M(() => [...r[50] ||= [s("span", { class: "i-mdi:refresh" }, null, -1)]]),
1935
+ default: M(() => [r[51] ||= l(" 重新加载 ", -1)]),
1798
1936
  _: 1
1799
1937
  })])]),
1800
- s("div", Jn, [
1801
- n[59] ||= s("div", { class: "section-title" }, "配置管理", -1),
1802
- s("div", Yn, [u(O(F), {
1938
+ s("div", nr, [
1939
+ r[59] ||= s("div", { class: "section-title" }, "配置管理", -1),
1940
+ s("div", rr, [u(k(F), {
1803
1941
  secondary: "",
1804
- onClick: ue
1942
+ onClick: Z
1805
1943
  }, {
1806
- icon: j(() => [...n[53] ||= [s("span", { class: "i-mdi:download" }, null, -1)]]),
1807
- default: j(() => [n[54] ||= l(" 导出配置 ", -1)]),
1944
+ icon: M(() => [...r[53] ||= [s("span", { class: "i-mdi:download" }, null, -1)]]),
1945
+ default: M(() => [r[54] ||= l(" 导出配置 ", -1)]),
1808
1946
  _: 1
1809
- }), u(O(F), {
1947
+ }), u(k(F), {
1810
1948
  secondary: "",
1811
- onClick: de
1949
+ onClick: pe
1812
1950
  }, {
1813
- icon: j(() => [...n[55] ||= [s("span", { class: "i-mdi:upload" }, null, -1)]]),
1814
- default: j(() => [n[56] ||= l(" 导入配置 ", -1)]),
1951
+ icon: M(() => [...r[55] ||= [s("span", { class: "i-mdi:upload" }, null, -1)]]),
1952
+ default: M(() => [r[56] ||= l(" 导入配置 ", -1)]),
1815
1953
  _: 1
1816
1954
  })]),
1817
- u(O(F), {
1955
+ u(k(F), {
1818
1956
  block: "",
1819
1957
  type: "error",
1820
1958
  secondary: "",
1821
1959
  class: "mt-2",
1822
- onClick: q
1960
+ onClick: de
1823
1961
  }, {
1824
- icon: j(() => [...n[57] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1825
- default: j(() => [n[58] ||= l(" 重置所有配置 ", -1)]),
1962
+ icon: M(() => [...r[57] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1963
+ default: M(() => [r[58] ||= l(" 重置所有配置 ", -1)]),
1826
1964
  _: 1
1827
1965
  })
1828
1966
  ]),
1829
- s("div", Xn, [
1830
- n[62] ||= s("div", { class: "section-title" }, "系统模式", -1),
1831
- s("div", Zn, [n[60] ||= s("div", { class: "setting-label" }, [s("span", null, "灰色模式"), s("span", { class: "setting-desc" }, "用于哀悼日场景")], -1), u(O(G), {
1832
- value: m.value,
1833
- "onUpdate:value": n[11] ||= (e) => m.value = e
1967
+ s("div", ir, [
1968
+ r[62] ||= s("div", { class: "section-title" }, "系统模式", -1),
1969
+ s("div", ar, [r[60] ||= s("div", { class: "setting-label" }, [s("span", null, "灰色模式"), s("span", { class: "setting-desc" }, "用于哀悼日场景")], -1), u(k(G), {
1970
+ value: E.value,
1971
+ "onUpdate:value": r[11] ||= (e) => E.value = e
1834
1972
  }, null, 8, ["value"])]),
1835
- s("div", Qn, [n[61] ||= s("div", { class: "setting-label" }, [s("span", null, "色弱模式"), s("span", { class: "setting-desc" }, "提供无障碍访问支持")], -1), u(O(G), {
1836
- value: _.value,
1837
- "onUpdate:value": n[12] ||= (e) => _.value = e
1973
+ s("div", or, [r[61] ||= s("div", { class: "setting-label" }, [s("span", null, "色弱模式"), s("span", { class: "setting-desc" }, "提供无障碍访问支持")], -1), u(k(G), {
1974
+ value: O.value,
1975
+ "onUpdate:value": r[12] ||= (e) => O.value = e
1838
1976
  }, null, 8, ["value"])])
1839
1977
  ]),
1840
- s("div", $n, [
1841
- n[64] ||= s("div", { class: "section-title" }, "水印设置", -1),
1842
- s("div", er, [n[63] ||= s("span", null, "启用水印", -1), u(O(G), {
1843
- value: b.value,
1844
- "onUpdate:value": n[13] ||= (e) => b.value = e
1978
+ s("div", sr, [
1979
+ r[64] ||= s("div", { class: "section-title" }, "水印设置", -1),
1980
+ s("div", cr, [r[63] ||= s("span", null, "启用水印", -1), u(k(G), {
1981
+ value: z.value,
1982
+ "onUpdate:value": r[13] ||= (e) => z.value = e
1845
1983
  }, null, 8, ["value"])]),
1846
- b.value ? (y(), o("div", tr, [u(O(B), {
1847
- value: C.value,
1848
- "onUpdate:value": n[14] ||= (e) => C.value = e,
1984
+ z.value ? (b(), o("div", lr, [u(k(B), {
1985
+ value: V.value,
1986
+ "onUpdate:value": r[14] ||= (e) => V.value = e,
1849
1987
  placeholder: "请输入水印内容",
1850
1988
  size: "small"
1851
1989
  }, null, 8, ["value"])])) : a("", !0)
1852
1990
  ]),
1853
- s("div", nr, [n[71] ||= s("div", { class: "section-title" }, "系统信息", -1), s("div", rr, [
1854
- s("div", ir, [n[65] ||= s("span", { class: "info-label" }, "浏览器", -1), s("span", ar, E(P.value.browser), 1)]),
1855
- s("div", or, [n[66] ||= s("span", { class: "info-label" }, "操作系统", -1), s("span", sr, E(P.value.os), 1)]),
1856
- s("div", cr, [n[67] ||= s("span", { class: "info-label" }, "屏幕分辨率", -1), s("span", lr, E(P.value.resolution), 1)]),
1857
- s("div", ur, [n[68] ||= s("span", { class: "info-label" }, "设备像素比", -1), s("span", dr, E(P.value.pixelRatio), 1)]),
1858
- s("div", fr, [n[69] ||= s("span", { class: "info-label" }, "语言", -1), s("span", pr, E(P.value.language), 1)]),
1859
- s("div", mr, [n[70] ||= s("span", { class: "info-label" }, "时区", -1), s("span", hr, E(P.value.timezone), 1)])
1860
- ])])
1991
+ s("div", ur, [r[71] ||= s("div", { class: "section-title" }, "系统信息", -1), s("div", dr, [
1992
+ s("div", fr, [r[65] ||= s("span", { class: "info-label" }, "浏览器", -1), s("span", pr, D(K.value.browser), 1)]),
1993
+ s("div", mr, [r[66] ||= s("span", { class: "info-label" }, "操作系统", -1), s("span", hr, D(K.value.os), 1)]),
1994
+ s("div", gr, [r[67] ||= s("span", { class: "info-label" }, "屏幕分辨率", -1), s("span", _r, D(K.value.resolution), 1)]),
1995
+ s("div", vr, [r[68] ||= s("span", { class: "info-label" }, "设备像素比", -1), s("span", yr, D(K.value.pixelRatio), 1)]),
1996
+ s("div", br, [r[69] ||= s("span", { class: "info-label" }, "语言", -1), s("span", xr, D(K.value.language), 1)]),
1997
+ s("div", Sr, [r[70] ||= s("span", { class: "info-label" }, "时区", -1), s("span", Cr, D(K.value.timezone), 1)])
1998
+ ])]),
1999
+ w(n.$slots, "features-append", { settings: k(m) }, void 0, !0)
1861
2000
  ]),
1862
- _: 1
2001
+ _: 3
1863
2002
  })
1864
2003
  ]),
1865
- _: 1
2004
+ _: 3
1866
2005
  }, 8, ["value"])]),
1867
- _: 1
2006
+ _: 3
1868
2007
  })]),
1869
- _: 1
1870
- }, 8, ["show"]));
2008
+ _: 3
2009
+ }, 8, ["show", "width"]));
1871
2010
  }
1872
- }), [["__scopeId", "data-v-99f8c69e"]]), _r = { class: "brand-logo__icon" }, vr = [
2011
+ }), [["__scopeId", "data-v-c78e9ba9"]]), Tr = { class: "brand-logo__icon" }, Er = [
1873
2012
  "src",
1874
2013
  "width",
1875
2014
  "height"
1876
- ], yr = [
2015
+ ], Dr = [
1877
2016
  "src",
1878
2017
  "width",
1879
2018
  "height"
1880
- ], br = { class: "brand-logo__name" }, xr = { class: "brand-logo__title" }, Sr = {
2019
+ ], Or = { class: "brand-logo__name" }, kr = { class: "brand-logo__title" }, Ar = {
1881
2020
  key: 0,
1882
2021
  class: "brand-logo__subtitle"
1883
- }, Cr = {
2022
+ }, jr = {
1884
2023
  key: 0,
1885
2024
  class: "brand-logo__divider"
1886
- }, wr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2025
+ }, Mr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1887
2026
  name: "BrandLogo",
1888
2027
  __name: "index",
1889
2028
  props: {
@@ -1907,10 +2046,10 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1907
2046
  ...X,
1908
2047
  ...n.brand
1909
2048
  };
1910
- return (n, i) => (y(), o("div", { class: h(["brand-logo", {
2049
+ return (n, i) => (b(), o("div", { class: g(["brand-logo", {
1911
2050
  "brand-logo--collapsed": t.collapsed,
1912
2051
  "brand-logo--horizontal": t.variant === "horizontal"
1913
- }]) }, [s("div", _r, [i[0] ||= s("div", { class: "brand-logo__glow" }, null, -1), r.logoType === "video" && r.logoSrc ? (y(), o("video", {
2052
+ }]) }, [s("div", Tr, [i[0] ||= s("div", { class: "brand-logo__glow" }, null, -1), r.logoType === "video" && r.logoSrc ? (b(), o("video", {
1914
2053
  key: 0,
1915
2054
  src: r.logoSrc,
1916
2055
  width: t.size,
@@ -1920,19 +2059,19 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1920
2059
  muted: "",
1921
2060
  playsinline: "",
1922
2061
  class: "brand-logo__media"
1923
- }, null, 8, vr)) : r.logoSrc ? (y(), o("img", {
2062
+ }, null, 8, Er)) : r.logoSrc ? (b(), o("img", {
1924
2063
  key: 1,
1925
2064
  src: r.logoSrc,
1926
2065
  width: t.size,
1927
2066
  height: t.size,
1928
2067
  class: "brand-logo__media",
1929
2068
  alt: "Logo"
1930
- }, null, 8, yr)) : a("", !0)]), t.showName && !t.collapsed ? (y(), o(e, { key: 0 }, [s("div", br, [s("span", xr, E(r.name), 1), r.subtitle ? (y(), o("span", Sr, E(r.subtitle), 1)) : a("", !0)]), t.showDivider ? (y(), o("div", Cr)) : a("", !0)], 64)) : a("", !0)], 2));
2069
+ }, null, 8, Dr)) : a("", !0)]), t.showName && !t.collapsed ? (b(), o(e, { key: 0 }, [s("div", Or, [s("span", kr, D(r.name), 1), r.subtitle ? (b(), o("span", Ar, D(r.subtitle), 1)) : a("", !0)]), t.showDivider ? (b(), o("div", jr)) : a("", !0)], 64)) : a("", !0)], 2));
1931
2070
  }
1932
- }), [["__scopeId", "data-v-fd1c2eec"]]), Tr = { class: "icon-menu" }, Er = ["onClick"], Dr = { class: "icon-menu__icon" }, Or = {
2071
+ }), [["__scopeId", "data-v-fd1c2eec"]]), Nr = { class: "icon-menu" }, Pr = ["onClick"], Fr = { class: "icon-menu__icon" }, Ir = {
1933
2072
  key: 1,
1934
2073
  class: "icon-menu__fallback"
1935
- }, kr = { class: "icon-menu__label" }, Ar = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2074
+ }, Lr = { class: "icon-menu__label" }, Rr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1936
2075
  name: "IconMenu",
1937
2076
  __name: "index",
1938
2077
  props: {
@@ -1942,20 +2081,20 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1942
2081
  emits: ["click"],
1943
2082
  setup(t, { emit: n }) {
1944
2083
  let r = n, a = Y();
1945
- return (n, c) => (y(), o("div", Tr, [(y(!0), o(e, null, S(t.menus, (e) => (y(), o("div", {
2084
+ return (n, c) => (b(), o("div", Nr, [(b(!0), o(e, null, C(t.menus, (e) => (b(), o("div", {
1946
2085
  key: e.path,
1947
- class: h(["icon-menu__item", { "icon-menu__item--active": t.active === e.path }]),
2086
+ class: g(["icon-menu__item", { "icon-menu__item--active": t.active === e.path }]),
1948
2087
  onClick: (t) => r("click", e)
1949
- }, [s("div", Dr, [O(a).iconComponent && e.meta?.icon ? (y(), i(T(O(a).iconComponent), {
2088
+ }, [s("div", Fr, [k(a).iconComponent && e.meta?.icon ? (b(), i(E(k(a).iconComponent), {
1950
2089
  key: 0,
1951
2090
  name: e.meta.icon,
1952
2091
  size: 20
1953
- }, null, 8, ["name"])) : (y(), o("span", Or, E(e.meta?.title?.charAt(0) || "?"), 1))]), s("div", kr, E(e.meta?.title), 1)], 10, Er))), 128))]));
2092
+ }, null, 8, ["name"])) : (b(), o("span", Ir, D(e.meta?.title?.charAt(0) || "?"), 1))]), s("div", Lr, D(e.meta?.title), 1)], 10, Pr))), 128))]));
1954
2093
  }
1955
- }), [["__scopeId", "data-v-f985d475"]]), jr = { class: "floating-menu__header" }, Mr = { class: "floating-menu__brand" }, Nr = { class: "floating-menu__brand-title" }, Pr = { class: "floating-menu__brand-subtitle" }, Fr = { class: "floating-menu__list" }, Ir = {
2094
+ }), [["__scopeId", "data-v-f985d475"]]), zr = { class: "floating-menu__header" }, Br = { class: "floating-menu__brand" }, Vr = { class: "floating-menu__brand-title" }, Hr = { class: "floating-menu__brand-subtitle" }, Ur = { class: "floating-menu__list" }, Wr = {
1956
2095
  key: 0,
1957
2096
  class: "floating-menu__group"
1958
- }, Lr = { class: "floating-menu__group-title" }, Rr = ["onClick", "onKeydown"], zr = { class: "floating-menu__item-text" }, Br = ["onClick", "onKeydown"], Vr = { class: "floating-menu__item-text" }, Hr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2097
+ }, Gr = { class: "floating-menu__group-title" }, Kr = ["onClick", "onKeydown"], qr = { class: "floating-menu__item-text" }, Jr = ["onClick", "onKeydown"], Yr = { class: "floating-menu__item-text" }, Xr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1959
2098
  name: "FloatingMenu",
1960
2099
  __name: "index",
1961
2100
  props: {
@@ -1969,46 +2108,46 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
1969
2108
  ...X,
1970
2109
  ...l.brand
1971
2110
  };
1972
- return (r, d) => (y(), i(n, { name: "slide-fade" }, {
1973
- default: j(() => [t.show && t.menuItem ? (y(), o("div", {
2111
+ return (r, d) => (b(), i(n, { name: "slide-fade" }, {
2112
+ default: M(() => [t.show && t.menuItem ? (b(), o("div", {
1974
2113
  key: 0,
1975
- class: h(["floating-menu", [O(l).isDark.value ? "dark-theme" : "light-theme"]]),
2114
+ class: g(["floating-menu", [k(l).isDark.value ? "dark-theme" : "light-theme"]]),
1976
2115
  role: "navigation",
1977
2116
  "aria-label": "二级功能导航"
1978
- }, [s("div", jr, [s("div", Mr, [s("span", Nr, E(u.name), 1), s("span", Pr, E(u.subtitle), 1)])]), s("div", Fr, [(y(!0), o(e, null, S(t.menuItem.children, (n) => (y(), o(e, { key: n.path }, [n.children && n.children.length > 0 ? (y(), o("div", Ir, [s("div", Lr, [O(l).iconComponent && n.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2117
+ }, [s("div", zr, [s("div", Br, [s("span", Vr, D(u.name), 1), s("span", Hr, D(u.subtitle), 1)])]), s("div", Ur, [(b(!0), o(e, null, C(t.menuItem.children, (n) => (b(), o(e, { key: n.path }, [n.children && n.children.length > 0 ? (b(), o("div", Wr, [s("div", Gr, [k(l).iconComponent && n.meta?.icon ? (b(), i(E(k(l).iconComponent), {
1979
2118
  key: 0,
1980
2119
  name: n.meta.icon,
1981
2120
  size: 16
1982
- }, null, 8, ["name"])) : a("", !0), s("span", null, E(n.meta?.title), 1)]), (y(!0), o(e, null, S(n.children, (e) => (y(), o("div", {
2121
+ }, null, 8, ["name"])) : a("", !0), s("span", null, D(n.meta?.title), 1)]), (b(!0), o(e, null, C(n.children, (e) => (b(), o("div", {
1983
2122
  key: e.path,
1984
- class: h(["floating-menu__item floating-menu__item--sub", { active: t.isActive?.(e.path) }]),
2123
+ class: g(["floating-menu__item floating-menu__item--sub", { active: t.isActive?.(e.path) }]),
1985
2124
  role: "link",
1986
2125
  tabindex: "0",
1987
2126
  onClick: (t) => c("click", e),
1988
- onKeydown: [M((t) => c("click", e), ["enter"]), M(N((t) => c("click", e), ["prevent"]), ["space"])]
1989
- }, [O(l).iconComponent && e.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2127
+ onKeydown: [N((t) => c("click", e), ["enter"]), N(P((t) => c("click", e), ["prevent"]), ["space"])]
2128
+ }, [k(l).iconComponent && e.meta?.icon ? (b(), i(E(k(l).iconComponent), {
1990
2129
  key: 0,
1991
2130
  name: e.meta.icon,
1992
2131
  size: 16
1993
- }, null, 8, ["name"])) : a("", !0), s("span", zr, E(e.meta?.title), 1)], 42, Rr))), 128))])) : (y(), o("div", {
2132
+ }, null, 8, ["name"])) : a("", !0), s("span", qr, D(e.meta?.title), 1)], 42, Kr))), 128))])) : (b(), o("div", {
1994
2133
  key: 1,
1995
- class: h(["floating-menu__item", { active: t.isActive?.(n.path) }]),
2134
+ class: g(["floating-menu__item", { active: t.isActive?.(n.path) }]),
1996
2135
  role: "link",
1997
2136
  tabindex: "0",
1998
2137
  onClick: (e) => c("click", n),
1999
- onKeydown: [M((e) => c("click", n), ["enter"]), M(N((e) => c("click", n), ["prevent"]), ["space"])]
2000
- }, [O(l).iconComponent && n.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2138
+ onKeydown: [N((e) => c("click", n), ["enter"]), N(P((e) => c("click", n), ["prevent"]), ["space"])]
2139
+ }, [k(l).iconComponent && n.meta?.icon ? (b(), i(E(k(l).iconComponent), {
2001
2140
  key: 0,
2002
2141
  name: n.meta.icon,
2003
2142
  size: 18
2004
- }, null, 8, ["name"])) : a("", !0), s("span", Vr, E(n.meta?.title), 1)], 42, Br))], 64))), 128))])], 2)) : a("", !0)]),
2143
+ }, null, 8, ["name"])) : a("", !0), s("span", Yr, D(n.meta?.title), 1)], 42, Jr))], 64))), 128))])], 2)) : a("", !0)]),
2005
2144
  _: 1
2006
2145
  }));
2007
2146
  }
2008
- }), [["__scopeId", "data-v-3dc6f434"]]), Ur = { class: "side-menu__header" }, Wr = { class: "side-menu__header-icon" }, Gr = { class: "side-menu__header-title" }, Kr = { class: "side-menu__list" }, qr = {
2147
+ }), [["__scopeId", "data-v-3dc6f434"]]), Zr = { class: "side-menu__header" }, Qr = { class: "side-menu__header-icon" }, $r = { class: "side-menu__header-title" }, ei = { class: "side-menu__list" }, ti = {
2009
2148
  key: 0,
2010
2149
  class: "side-menu__group"
2011
- }, Jr = { class: "side-menu__group-label" }, Yr = ["onClick"], Xr = { class: "side-menu__item-text" }, Zr = ["onClick"], Qr = { class: "side-menu__item-text" }, $r = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2150
+ }, ni = { class: "side-menu__group-label" }, ri = ["onClick"], ii = { class: "side-menu__item-text" }, ai = ["onClick"], oi = { class: "side-menu__item-text" }, si = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2012
2151
  name: "SideMenu",
2013
2152
  __name: "index",
2014
2153
  props: {
@@ -2018,49 +2157,49 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
2018
2157
  },
2019
2158
  emits: ["click"],
2020
2159
  setup(t, { emit: r }) {
2021
- let c = r, l = Y(), d = x(!1);
2022
- return (r, f) => t.menus.length > 0 ? (y(), o(e, { key: 0 }, [s("div", {
2023
- class: h(["side-menu-toggle", [O(l).isDark.value ? "dark-theme" : "light-theme", { active: !d.value }]]),
2160
+ let c = r, l = Y(), d = S(!1);
2161
+ return (r, f) => t.menus.length > 0 ? (b(), o(e, { key: 0 }, [s("div", {
2162
+ class: g(["side-menu-toggle", [k(l).isDark.value ? "dark-theme" : "light-theme", { active: !d.value }]]),
2024
2163
  onClick: f[0] ||= (e) => d.value = !d.value
2025
- }, [s("i", { class: h(["toggle-icon", d.value ? "i-ri:side-bar-line" : "i-ri:arrow-right-s-line"]) }, null, 2)], 2), u(n, { name: "glass-slide" }, {
2026
- default: j(() => [d.value ? a("", !0) : (y(), o("div", {
2164
+ }, [s("i", { class: g(["toggle-icon", d.value ? "i-ri:side-bar-line" : "i-ri:arrow-right-s-line"]) }, null, 2)], 2), u(n, { name: "glass-slide" }, {
2165
+ default: M(() => [d.value ? a("", !0) : (b(), o("div", {
2027
2166
  key: 0,
2028
- class: h(["side-menu", [O(l).isDark.value ? "dark-theme" : "light-theme"]])
2029
- }, [s("div", Ur, [s("div", Wr, [O(l).iconComponent && t.activeItem?.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2167
+ class: g(["side-menu", [k(l).isDark.value ? "dark-theme" : "light-theme"]])
2168
+ }, [s("div", Zr, [s("div", Qr, [k(l).iconComponent && t.activeItem?.meta?.icon ? (b(), i(E(k(l).iconComponent), {
2030
2169
  key: 0,
2031
2170
  name: t.activeItem.meta.icon,
2032
2171
  size: 17
2033
- }, null, 8, ["name"])) : a("", !0)]), s("span", Gr, E(t.activeItem?.meta?.title || "菜单"), 1)]), s("div", Kr, [(y(!0), o(e, null, S(t.menus, (n) => (y(), o(e, { key: n.path }, [n.children && n.children.length > 0 ? (y(), o("div", qr, [s("div", Jr, [O(l).iconComponent && n.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2172
+ }, null, 8, ["name"])) : a("", !0)]), s("span", $r, D(t.activeItem?.meta?.title || "菜单"), 1)]), s("div", ei, [(b(!0), o(e, null, C(t.menus, (n) => (b(), o(e, { key: n.path }, [n.children && n.children.length > 0 ? (b(), o("div", ti, [s("div", ni, [k(l).iconComponent && n.meta?.icon ? (b(), i(E(k(l).iconComponent), {
2034
2173
  key: 0,
2035
2174
  name: n.meta.icon,
2036
2175
  size: 14
2037
- }, null, 8, ["name"])) : a("", !0), s("span", null, E(n.meta?.title), 1)]), (y(!0), o(e, null, S(n.children, (e) => (y(), o("div", {
2176
+ }, null, 8, ["name"])) : a("", !0), s("span", null, D(n.meta?.title), 1)]), (b(!0), o(e, null, C(n.children, (e) => (b(), o("div", {
2038
2177
  key: e.path,
2039
- class: h(["side-menu__item", { active: t.isActive?.(e.path) }]),
2178
+ class: g(["side-menu__item", { active: t.isActive?.(e.path) }]),
2040
2179
  onClick: (t) => c("click", e)
2041
- }, [O(l).iconComponent && e.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2180
+ }, [k(l).iconComponent && e.meta?.icon ? (b(), i(E(k(l).iconComponent), {
2042
2181
  key: 0,
2043
2182
  name: e.meta.icon,
2044
2183
  size: 15
2045
- }, null, 8, ["name"])) : a("", !0), s("span", Xr, E(e.meta?.title), 1)], 10, Yr))), 128))])) : (y(), o("div", {
2184
+ }, null, 8, ["name"])) : a("", !0), s("span", ii, D(e.meta?.title), 1)], 10, ri))), 128))])) : (b(), o("div", {
2046
2185
  key: 1,
2047
- class: h(["side-menu__item", { active: t.isActive?.(n.path) }]),
2186
+ class: g(["side-menu__item", { active: t.isActive?.(n.path) }]),
2048
2187
  onClick: (e) => c("click", n)
2049
- }, [O(l).iconComponent && n.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2188
+ }, [k(l).iconComponent && n.meta?.icon ? (b(), i(E(k(l).iconComponent), {
2050
2189
  key: 0,
2051
2190
  name: n.meta.icon,
2052
2191
  size: 16
2053
- }, null, 8, ["name"])) : a("", !0), s("span", Qr, E(n.meta?.title), 1)], 10, Zr))], 64))), 128))])], 2))]),
2192
+ }, null, 8, ["name"])) : a("", !0), s("span", oi, D(n.meta?.title), 1)], 10, ai))], 64))), 128))])], 2))]),
2054
2193
  _: 1
2055
2194
  })], 64)) : a("", !0);
2056
2195
  }
2057
- }), [["__scopeId", "data-v-1909f229"]]), ei = ["aria-hidden"], ti = { class: "drawer-menu__content" }, ni = { class: "drawer-menu__grid" }, ri = ["onClick", "onKeydown"], ii = {
2196
+ }), [["__scopeId", "data-v-1909f229"]]), ci = ["aria-hidden"], li = { class: "drawer-menu__content" }, ui = { class: "drawer-menu__grid" }, di = ["onClick", "onKeydown"], fi = {
2058
2197
  key: 0,
2059
2198
  class: "drawer-menu__items"
2060
- }, ai = ["onClick", "onKeydown"], oi = { class: "drawer-menu__item-text" }, si = {
2199
+ }, pi = ["onClick", "onKeydown"], mi = { class: "drawer-menu__item-text" }, hi = {
2061
2200
  key: 0,
2062
2201
  class: "drawer-menu__sub-items"
2063
- }, ci = { class: "drawer-menu__sub-title" }, li = ["onClick", "onKeydown"], ui = { class: "drawer-menu__item-text" }, di = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2202
+ }, gi = { class: "drawer-menu__sub-title" }, _i = ["onClick", "onKeydown"], vi = { class: "drawer-menu__item-text" }, yi = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2064
2203
  name: "DrawerMenu",
2065
2204
  __name: "index",
2066
2205
  props: {
@@ -2068,26 +2207,26 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
2068
2207
  show: { type: Boolean }
2069
2208
  },
2070
2209
  setup(t) {
2071
- let n = Y(), r = q(), c = p(xe, {
2210
+ let n = Y(), r = q(), c = p(ue, {
2072
2211
  show: () => {},
2073
2212
  startHide: () => {},
2074
2213
  hide: () => {}
2075
2214
  }), l = (e) => {
2076
2215
  e.path && (r.push(e.path), c.hide());
2077
2216
  };
2078
- return (r, u) => (y(), o("div", {
2079
- class: h(["drawer-menu", [O(n).isDark.value ? "dark-theme" : "light-theme", { visible: t.show }]]),
2217
+ return (r, u) => (b(), o("div", {
2218
+ class: g(["drawer-menu", [k(n).isDark.value ? "dark-theme" : "light-theme", { visible: t.show }]]),
2080
2219
  role: "navigation",
2081
2220
  "aria-label": "功能导航",
2082
2221
  "aria-hidden": !t.show,
2083
- onMouseenter: u[0] ||= (e) => O(c).show(),
2084
- onMouseleave: u[1] ||= (e) => O(c).startHide()
2222
+ onMouseenter: u[0] ||= (e) => k(c).show(),
2223
+ onMouseleave: u[1] ||= (e) => k(c).startHide()
2085
2224
  }, [u[2] ||= s("div", { class: "drawer-menu__header" }, [s("div", { class: "drawer-menu__title" }, [s("span", { class: "grid-icon" }, [
2086
2225
  s("span"),
2087
2226
  s("span"),
2088
2227
  s("span"),
2089
2228
  s("span")
2090
- ]), s("span", null, "功能导航")])], -1), s("div", ti, [s("div", ni, [(y(!0), o(e, null, S(t.menus, (t) => (y(), o("div", {
2229
+ ]), s("span", null, "功能导航")])], -1), s("div", li, [s("div", ui, [(b(!0), o(e, null, C(t.menus, (t) => (b(), o("div", {
2091
2230
  key: t.path,
2092
2231
  class: "drawer-menu__category"
2093
2232
  }, [s("div", {
@@ -2095,49 +2234,49 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
2095
2234
  role: "link",
2096
2235
  tabindex: "0",
2097
2236
  onClick: (e) => l(t),
2098
- onKeydown: [M((e) => l(t), ["enter"]), M(N((e) => l(t), ["prevent"]), ["space"])]
2099
- }, [O(n).iconComponent && t.meta?.icon ? (y(), i(T(O(n).iconComponent), {
2237
+ onKeydown: [N((e) => l(t), ["enter"]), N(P((e) => l(t), ["prevent"]), ["space"])]
2238
+ }, [k(n).iconComponent && t.meta?.icon ? (b(), i(E(k(n).iconComponent), {
2100
2239
  key: 0,
2101
2240
  name: t.meta.icon,
2102
2241
  size: 18
2103
- }, null, 8, ["name"])) : a("", !0), s("span", null, E(t.meta?.title), 1)], 40, ri), t.children && t.children.length > 0 ? (y(), o("div", ii, [(y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
2242
+ }, null, 8, ["name"])) : a("", !0), s("span", null, D(t.meta?.title), 1)], 40, di), t.children && t.children.length > 0 ? (b(), o("div", fi, [(b(!0), o(e, null, C(t.children, (e) => (b(), o("div", {
2104
2243
  key: e.path,
2105
2244
  class: "drawer-menu__item",
2106
2245
  role: "link",
2107
2246
  tabindex: "0",
2108
2247
  onClick: (t) => l(e),
2109
- onKeydown: [M((t) => l(e), ["enter"]), M(N((t) => l(e), ["prevent"]), ["space"])]
2110
- }, [O(n).iconComponent && e.meta?.icon ? (y(), i(T(O(n).iconComponent), {
2248
+ onKeydown: [N((t) => l(e), ["enter"]), N(P((t) => l(e), ["prevent"]), ["space"])]
2249
+ }, [k(n).iconComponent && e.meta?.icon ? (b(), i(E(k(n).iconComponent), {
2111
2250
  key: 0,
2112
2251
  name: e.meta.icon,
2113
2252
  size: 16
2114
- }, null, 8, ["name"])) : a("", !0), s("span", oi, E(e.meta?.title), 1)], 40, ai))), 128)), (y(!0), o(e, null, S(t.children, (t) => (y(), o(e, { key: t.path }, [t.children && t.children.length > 0 ? (y(), o("div", si, [s("div", ci, E(t.meta?.title), 1), (y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
2253
+ }, null, 8, ["name"])) : a("", !0), s("span", mi, D(e.meta?.title), 1)], 40, pi))), 128)), (b(!0), o(e, null, C(t.children, (t) => (b(), o(e, { key: t.path }, [t.children && t.children.length > 0 ? (b(), o("div", hi, [s("div", gi, D(t.meta?.title), 1), (b(!0), o(e, null, C(t.children, (e) => (b(), o("div", {
2115
2254
  key: e.path,
2116
2255
  class: "drawer-menu__item drawer-menu__item--sub",
2117
2256
  role: "link",
2118
2257
  tabindex: "0",
2119
2258
  onClick: (t) => l(e),
2120
- onKeydown: [M((t) => l(e), ["enter"]), M(N((t) => l(e), ["prevent"]), ["space"])]
2121
- }, [O(n).iconComponent && e.meta?.icon ? (y(), i(T(O(n).iconComponent), {
2259
+ onKeydown: [N((t) => l(e), ["enter"]), N(P((t) => l(e), ["prevent"]), ["space"])]
2260
+ }, [k(n).iconComponent && e.meta?.icon ? (b(), i(E(k(n).iconComponent), {
2122
2261
  key: 0,
2123
2262
  name: e.meta.icon,
2124
2263
  size: 14
2125
- }, null, 8, ["name"])) : a("", !0), s("span", ui, E(e.meta?.title), 1)], 40, li))), 128))])) : a("", !0)], 64))), 128))])) : a("", !0)]))), 128))])])], 42, ei));
2264
+ }, null, 8, ["name"])) : a("", !0), s("span", vi, D(e.meta?.title), 1)], 40, _i))), 128))])) : a("", !0)], 64))), 128))])) : a("", !0)]))), 128))])])], 42, ci));
2126
2265
  }
2127
- }), [["__scopeId", "data-v-91d54a20"]]), fi = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2266
+ }), [["__scopeId", "data-v-91d54a20"]]), bi = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2128
2267
  name: "MenuTrigger",
2129
2268
  __name: "index",
2130
2269
  props: { show: { type: Boolean } },
2131
2270
  setup(e) {
2132
- let t = p(xe, {
2271
+ let t = p(ue, {
2133
2272
  show: () => {},
2134
2273
  startHide: () => {},
2135
2274
  hide: () => {}
2136
2275
  });
2137
- return (e, n) => (y(), o("div", {
2276
+ return (e, n) => (b(), o("div", {
2138
2277
  class: "menu-trigger",
2139
- onMouseenter: n[0] ||= (e) => O(t).show(),
2140
- onMouseleave: n[1] ||= (e) => O(t).startHide()
2278
+ onMouseenter: n[0] ||= (e) => k(t).show(),
2279
+ onMouseleave: n[1] ||= (e) => k(t).startHide()
2141
2280
  }, [...n[2] ||= [s("div", { class: "menu-trigger__indicator" }, [s("span", { class: "hamburger-icon" }, [
2142
2281
  s("span"),
2143
2282
  s("span"),
@@ -2147,11 +2286,11 @@ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve
2147
2286
  }), [["__scopeId", "data-v-2c20af78"]]);
2148
2287
  //#endregion
2149
2288
  //#region src/setup.ts
2150
- function pi(e, t = {}) {
2151
- let n = ve(t);
2152
- return n().syncCSSVariables(), n;
2289
+ function xi(e, t = {}) {
2290
+ let n = hn(t), r = n();
2291
+ return e.provide(ce, r), n;
2153
2292
  }
2154
2293
  //#endregion
2155
- export { ue as BORDER_RADIUS_MAP, wr as BrandLogo, fe as COLOR_SWATCHES, on as C_CardLayout, on as CardLayout, cn as C_LayoutContainer, et as C_MixLayout, et as MixLayout, _t as C_MixTopLayout, _t as MixTopLayout, Rt as C_ReverseHorizontalMixLayout, Rt as ReverseHorizontalMixLayout, Se as C_SideLayout, Se as SideLayout, Ie as C_TopLayout, Ie as TopLayout, X as DEFAULT_BRAND_CONFIG, J as DEFAULT_SETTINGS, xe as DRAWER_HANDLER_KEY, di as DrawerMenu, Hr as FloatingMenu, Ar as IconMenu, be as LAYOUT_CONTEXT_KEY, le as LAYOUT_MODES, fi as MenuTrigger, se as PRESET_COLORS, $ as ResponsiveMenu, gr as SettingsDrawer, $r as SideMenu, ce as THEME_PRESETS, de as TRANSITION_MAP, _e as adjustColor, ve as createSettingsStore, ge as sanitizeSettingsPatch, pi as setupLayout, Z as useLayoutCache, Y as useLayoutContext, Re as useMenuSplit, ye as useSettingsStore };
2294
+ export { an as BORDER_RADIUS_MAP, Mr as BrandLogo, sn as COLOR_SWATCHES, Qt as C_CardLayout, Qt as CardLayout, en as C_LayoutContainer, Ke as C_MixLayout, Ke as MixLayout, lt as C_MixTopLayout, lt as MixTopLayout, jt as C_ReverseHorizontalMixLayout, jt as ReverseHorizontalMixLayout, pe as C_SideLayout, pe as SideLayout, Oe as C_TopLayout, Oe as TopLayout, X as DEFAULT_BRAND_CONFIG, $ as DEFAULT_SETTINGS, ue as DRAWER_HANDLER_KEY, yi as DrawerMenu, Xr as FloatingMenu, Rr as IconMenu, J as LAYOUT_CONTEXT_KEY, rn as LAYOUT_MODES, ce as LAYOUT_SETTINGS_KEY, le as MENU_COLLAPSE_KEY, bi as MenuTrigger, tn as PRESET_COLORS, _e as ResponsiveMenu, dn as SETTINGS_CONFIG_SCHEMA_VERSION, wr as SettingsDrawer, si as SideMenu, nn as THEME_PRESETS, on as TRANSITION_MAP, mn as adjustColor, hn as createSettingsStore, de as provideLayoutContext, pn as sanitizeLayoutSettingsConfig, fn as sanitizeSettingsPatch, xi as setupLayout, fe as shouldCacheRoute, Z as useLayoutCache, Y as useLayoutContext, Ae as useMenuSplit, gn as useSettingsStore };
2156
2295
 
2157
2296
  //# sourceMappingURL=index.js.map