@robot-admin/layout 2.3.0 → 2.3.2

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,9 +1,9 @@
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, withModifiers as M } from "vue";
2
- import { defineStore as N } from "pinia";
3
- import { NButton as P, NColorPicker as F, NDrawer as I, NDrawerContent as L, NDropdown as R, NInput as z, NLayout as B, NLayoutContent as V, NLayoutSider as H, NMenu as ee, NRadioButton as U, NRadioGroup as W, NSlider as te, NSwitch as G, NTabPane as ne, NTabs as re, useDialog as ie, useMessage as ae } 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, 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";
4
4
  import { useRoute as K, useRouter as q } from "vue-router";
5
5
  //#region src/constants/index.ts
6
- var oe = [
6
+ var se = [
7
7
  {
8
8
  name: "拂晓蓝",
9
9
  value: "#409eff"
@@ -36,7 +36,7 @@ var oe = [
36
36
  name: "酱紫",
37
37
  value: "#722ed1"
38
38
  }
39
- ], se = [
39
+ ], ce = [
40
40
  {
41
41
  name: "科技蓝",
42
42
  icon: "💙",
@@ -67,7 +67,7 @@ var oe = [
67
67
  icon: "❤️",
68
68
  primaryColor: "#f5222d"
69
69
  }
70
- ], ce = [
70
+ ], le = [
71
71
  {
72
72
  mode: "side",
73
73
  label: "左侧菜单",
@@ -104,11 +104,11 @@ var oe = [
104
104
  description: "卡片式布局风格",
105
105
  icon: "i-mdi:card-outline"
106
106
  }
107
- ], le = {
107
+ ], ue = {
108
108
  small: "4px",
109
109
  medium: "6px",
110
110
  large: "8px"
111
- }, ue = {
111
+ }, de = {
112
112
  fade: "fade-transform",
113
113
  slide: "fade-slide",
114
114
  zoom: "fade-zoom",
@@ -133,24 +133,109 @@ var oe = [
133
133
  sidebarCollapsedWidth: 64,
134
134
  headerHeight: 56,
135
135
  enableHotkeys: !0,
136
- version: "2.0.2"
137
- }, de = oe.map((e) => e.value);
138
- //#endregion
139
- //#region src/stores/settings.ts
140
- function fe(e, t) {
141
- let n = parseInt(e.replace("#", ""), 16), r = Math.min(255, Math.max(0, (n >> 16) + t)), i = Math.min(255, Math.max(0, (n >> 8 & 255) + t)), a = Math.min(255, Math.max(0, (n & 255) + t));
142
- return `#${(r << 16 | i << 8 | a).toString(16).padStart(6, "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;
143
218
  }
144
- function pe(e = {}) {
145
- let { defaults: t = {}, onThemeModeChange: n } = e, i = {
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 = {
146
231
  ...J,
147
- ...t
232
+ ...ge(n)
148
233
  };
149
- return N("settings", () => {
150
- let e = x(i.themeMode), t = x(i.primaryColor), a = x(i.borderRadius), o = x(i.transitionType), s = x(i.enableTransition), c = x(i.layoutMode), l = x(i.menuExpandMode), u = x(i.collapsed), d = x(i.fixedHeader), f = x(i.showBreadcrumb), p = x(i.showBreadcrumbIcon), m = x(i.showTagsView), h = x(i.tagsViewHeight), g = x(i.tagsViewStyle), _ = x(i.showFooter), v = x(i.sidebarWidth), y = x(i.sidebarCollapsedWidth), b = x(i.headerHeight), S = x(i.enableHotkeys), C = x(i.version), w = r(() => le[a.value]), T = r(() => ue[o.value]), E = r(() => s.value && o.value !== "none"), D = r(() => ({
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(() => ({
151
236
  themeMode: e.value,
152
237
  primaryColor: t.value,
153
- borderRadius: a.value,
238
+ borderRadius: n.value,
154
239
  transitionType: o.value,
155
240
  enableTransition: s.value,
156
241
  layoutMode: c.value,
@@ -171,7 +256,7 @@ function pe(e = {}) {
171
256
  })), O = () => {
172
257
  if (typeof document > "u") return;
173
258
  let e = document.documentElement;
174
- e.style.setProperty("--primary-color", t.value), e.style.setProperty("--primary-color-hover", fe(t.value, 10)), e.style.setProperty("--primary-color-pressed", fe(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`);
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`);
175
260
  };
176
261
  return A([
177
262
  t,
@@ -185,7 +270,7 @@ function pe(e = {}) {
185
270
  }, { immediate: !0 }), {
186
271
  themeMode: e,
187
272
  primaryColor: t,
188
- borderRadius: a,
273
+ borderRadius: n,
189
274
  transitionType: o,
190
275
  enableTransition: s,
191
276
  layoutMode: c,
@@ -209,13 +294,20 @@ function pe(e = {}) {
209
294
  settingsState: D,
210
295
  syncCSSVariables: O,
211
296
  applyPreset: async (e) => {
212
- t.value = e.primaryColor, e.settings && (e.settings.borderRadius && (a.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));
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));
213
298
  },
214
299
  resetSettings: () => {
215
- e.value = i.themeMode, t.value = i.primaryColor, a.value = i.borderRadius, o.value = i.transitionType, s.value = i.enableTransition, c.value = i.layoutMode, l.value = i.menuExpandMode, u.value = i.collapsed, d.value = i.fixedHeader, f.value = i.showBreadcrumb, p.value = i.showBreadcrumbIcon, m.value = i.showTagsView, h.value = i.tagsViewHeight, g.value = i.tagsViewStyle, _.value = i.showFooter, v.value = i.sidebarWidth, y.value = i.sidebarCollapsedWidth, b.value = i.headerHeight, S.value = i.enableHotkeys;
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;
216
301
  },
217
302
  updateThemeMode: async (t) => {
218
- e.value = t, n && await n(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
+ }
219
311
  },
220
312
  toggleCollapse: () => {
221
313
  u.value = !u.value;
@@ -223,9 +315,9 @@ function pe(e = {}) {
223
315
  };
224
316
  });
225
317
  }
226
- var me = pe(), he = Symbol("layout-context"), ge = Symbol("drawer-handlers");
318
+ var ye = ve(), be = Symbol("layout-context"), xe = Symbol("drawer-handlers");
227
319
  function Y() {
228
- let e = p(he);
320
+ let e = p(be);
229
321
  if (!e) throw Error("[Layout] LayoutContext not provided. 请在上层组件中使用 provide(LAYOUT_CONTEXT_KEY, ...) 注入布局数据。");
230
322
  return e;
231
323
  }
@@ -241,27 +333,29 @@ var X = {
241
333
  //#endregion
242
334
  //#region src/composables/useLayoutCache.ts
243
335
  function Z(e = {}) {
244
- let { maxCacheCount: t = 20, enableDevLog: n = !0, exposeToWindow: r = !0 } = e, i = K(), a = x([]), o = x(t), s = (e) => !e || typeof e != "string" ? !1 : i.meta?.keepAlive === !0, c = (e) => {
245
- !a.value.includes(e) && s(e) && (a.value.push(e), a.value.length > o.value && a.value.shift());
246
- };
247
- return A(() => i.name, (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})`));
338
+ }, l = (e) => {
339
+ let t = a.value.indexOf(e);
340
+ t > -1 && (a.value.splice(t, 1), n && console.debug(`[KeepAlive] ❌ 移除: ${e}`));
341
+ }, 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(() => {
345
+ window.__clearCache__ === u && delete window.__clearCache__, window.__removeCache__ === l && delete window.__removeCache__, window.__getCachedViews__ === d && delete window.__getCachedViews__;
346
+ })), A(() => i.name, (e) => {
248
347
  e && typeof e == "string" && c(e);
249
348
  }, { immediate: !0 }), {
250
349
  cachedViews: a,
251
350
  maxCacheCount: o,
252
351
  addCache: c,
253
- removeCache: (e) => {
254
- let t = a.value.indexOf(e);
255
- t > -1 && a.value.splice(t, 1);
256
- },
257
- clearAllCache: () => {
258
- a.value = [];
259
- }
352
+ removeCache: l,
353
+ clearAllCache: u
260
354
  };
261
355
  }
262
356
  //#endregion
263
357
  //#region src/components/layouts/SideLayout/index.vue
264
- var _e = /* @__PURE__ */ d({
358
+ var Se = /* @__PURE__ */ d({
265
359
  name: "SideLayout",
266
360
  __name: "index",
267
361
  props: { collapsed: {
@@ -285,8 +379,8 @@ var _e = /* @__PURE__ */ d({
285
379
  }
286
380
  }), (e, r) => {
287
381
  let a = w("RouterView");
288
- return y(), i(O(B), { "has-sider": "" }, {
289
- default: j(() => [u(O(H), {
382
+ return y(), i(O(V), { "has-sider": "" }, {
383
+ default: j(() => [u(O(ee), {
290
384
  bordered: "",
291
385
  "collapse-mode": "width",
292
386
  "collapsed-width": O(l).sidebarCollapsedWidth.value,
@@ -307,10 +401,10 @@ var _e = /* @__PURE__ */ d({
307
401
  "width",
308
402
  "collapsed",
309
403
  "class"
310
- ]), u(O(B), null, {
404
+ ]), u(O(V), null, {
311
405
  default: j(() => [
312
406
  C(e.$slots, "header"),
313
- u(O(V), { class: "content-with-header p16px app-content" }, {
407
+ u(O(H), { class: "content-with-header p16px app-content" }, {
314
408
  default: j(() => [u(a, null, {
315
409
  default: j(({ Component: e, route: r }) => [u(n, {
316
410
  name: O(l).transitionName.value,
@@ -334,10 +428,10 @@ var _e = /* @__PURE__ */ d({
334
428
  });
335
429
  };
336
430
  }
337
- }), ve = {
431
+ }), Ce = {
338
432
  ref: "visibleRef",
339
433
  class: "responsive-menu__visible"
340
- }, ye = { class: "responsive-menu__more" }, be = /* @__PURE__ */ d({
434
+ }, we = { class: "responsive-menu__more" }, Te = /* @__PURE__ */ d({
341
435
  name: "ResponsiveMenu",
342
436
  __name: "index",
343
437
  props: { data: {} },
@@ -414,7 +508,7 @@ var _e = /* @__PURE__ */ d({
414
508
  })) : void 0
415
509
  }))), N = (e) => {
416
510
  e && c.push(e);
417
- }, F = (e) => {
511
+ }, P = (e) => {
418
512
  let t = e.meta?.title || e.name || "", n = 0;
419
513
  for (let e of t) {
420
514
  let t = e.charCodeAt(0);
@@ -425,11 +519,11 @@ var _e = /* @__PURE__ */ d({
425
519
  }, I = (e) => {
426
520
  if (!d.value.length) return 0;
427
521
  let t = 0;
428
- for (let e of d.value) t += F(e);
522
+ for (let e of d.value) t += P(e);
429
523
  if (t + 15 <= e) return d.value.length;
430
524
  let n = 0, r = 0, i = e - 80 - 15;
431
525
  for (let e of d.value) {
432
- let t = F(e);
526
+ let t = P(e);
433
527
  if (n + t <= i) n += t, r++;
434
528
  else break;
435
529
  }
@@ -443,18 +537,18 @@ var _e = /* @__PURE__ */ d({
443
537
  }
444
538
  let t = I(e);
445
539
  E.value = d.value.slice(0, t), D.value = d.value.slice(t);
446
- }, z = null, B = () => {
447
- z && clearTimeout(z), z = window.setTimeout(() => L(), 100);
540
+ }, R = null, B = () => {
541
+ R && clearTimeout(R), R = window.setTimeout(() => L(), 100);
448
542
  }, V = null;
449
543
  return _(() => {
450
544
  m(() => L()), T.value && (V = new ResizeObserver(() => B()), V.observe(T.value));
451
545
  }), v(() => {
452
- V?.disconnect(), z && clearTimeout(z);
546
+ V?.disconnect(), R && clearTimeout(R);
453
547
  }), A(() => t.data, () => m(() => L()), { deep: !0 }), (e, t) => (y(), o("div", {
454
548
  ref_key: "containerRef",
455
549
  ref: T,
456
550
  class: "responsive-menu"
457
- }, [s("div", ve, [k.value.length > 0 ? (y(), i(O(ee), {
551
+ }, [s("div", Ce, [k.value.length > 0 ? (y(), i(O(te), {
458
552
  key: 0,
459
553
  mode: "horizontal",
460
554
  value: p.value,
@@ -465,14 +559,14 @@ var _e = /* @__PURE__ */ d({
465
559
  "value",
466
560
  "options",
467
561
  "theme-overrides"
468
- ])) : a("", !0)], 512), D.value.length > 0 ? (y(), i(O(R), {
562
+ ])) : a("", !0)], 512), D.value.length > 0 ? (y(), i(O(z), {
469
563
  key: 0,
470
564
  options: M.value,
471
565
  placement: "bottom-end",
472
566
  trigger: "hover",
473
567
  onSelect: N
474
568
  }, {
475
- default: j(() => [s("div", ye, [u(O(P), {
569
+ default: j(() => [s("div", we, [u(O(F), {
476
570
  text: "",
477
571
  class: "responsive-menu__more-btn"
478
572
  }, {
@@ -490,15 +584,15 @@ var _e = /* @__PURE__ */ d({
490
584
  let n = e.__vccOpts || e;
491
585
  for (let [e, r] of t) n[e] = r;
492
586
  return n;
493
- }, $ = /* @__PURE__ */ Q(be, [["__scopeId", "data-v-d329131b"]]), xe = { class: "top-layout-container" }, Se = { class: "navbar-left" }, Ce = { class: "logo-container" }, we = [
587
+ }, $ = /* @__PURE__ */ Q(Te, [["__scopeId", "data-v-d329131b"]]), Ee = { class: "top-layout-container" }, De = { class: "navbar-left" }, Oe = { class: "logo-container" }, ke = [
494
588
  "src",
495
589
  "width",
496
590
  "height"
497
- ], Te = [
591
+ ], Ae = [
498
592
  "src",
499
593
  "width",
500
594
  "height"
501
- ], Ee = { class: "brand-name" }, De = { class: "brand-title" }, Oe = { class: "brand-subtitle" }, ke = { class: "navbar-center" }, Ae = { class: "page-content" }, je = /* @__PURE__ */ d({
595
+ ], je = { class: "brand-name" }, Me = { class: "brand-title" }, Ne = { class: "brand-subtitle" }, Pe = { class: "navbar-center" }, Fe = { class: "page-content" }, Ie = /* @__PURE__ */ d({
502
596
  name: "TopLayout",
503
597
  __name: "index",
504
598
  setup(e) {
@@ -508,10 +602,10 @@ var _e = /* @__PURE__ */ d({
508
602
  };
509
603
  return (e, r) => {
510
604
  let c = w("RouterView");
511
- return y(), o("div", xe, [
605
+ return y(), o("div", Ee, [
512
606
  s("div", { class: h(["top-navbar", [O(f) ? "dark-theme" : "light-theme"]]) }, [
513
- s("div", Se, [C(e.$slots, "logo", {}, () => [
514
- s("div", Ce, [r[0] ||= s("div", { class: "logo-glow" }, null, -1), x.logoType === "video" ? (y(), o("video", {
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", {
515
609
  key: 0,
516
610
  src: x.logoSrc,
517
611
  width: x.logoSize || 36,
@@ -521,17 +615,17 @@ var _e = /* @__PURE__ */ d({
521
615
  muted: "",
522
616
  playsinline: "",
523
617
  class: "logo-video"
524
- }, " 您的浏览器不支持 video 标签。 ", 8, we)) : (y(), o("img", {
618
+ }, " 您的浏览器不支持 video 标签。 ", 8, ke)) : (y(), o("img", {
525
619
  key: 1,
526
620
  src: x.logoSrc,
527
621
  width: x.logoSize || 36,
528
622
  height: x.logoSize || 36,
529
623
  class: "logo-video"
530
- }, null, 8, Te))]),
531
- s("div", Ee, [s("span", De, E(x.name), 1), s("span", Oe, E(x.subtitle), 1)]),
624
+ }, null, 8, Ae))]),
625
+ s("div", je, [s("span", Me, E(x.name), 1), s("span", Ne, E(x.subtitle), 1)]),
532
626
  r[1] ||= s("div", { class: "navbar-divider" }, null, -1)
533
627
  ])]),
534
- s("div", ke, [C(e.$slots, "menu", {}, () => [u($, { data: p.value }, null, 8, ["data"])])]),
628
+ s("div", Pe, [C(e.$slots, "menu", {}, () => [u($, { data: p.value }, null, 8, ["data"])])]),
535
629
  C(e.$slots, "header-extra")
536
630
  ], 2),
537
631
  m.value ? (y(), o("div", {
@@ -539,9 +633,9 @@ var _e = /* @__PURE__ */ d({
539
633
  class: "tags-view-container",
540
634
  style: g({ height: `${_.value}px` })
541
635
  }, [C(e.$slots, "tags-view")], 4)) : a("", !0),
542
- u(O(B), null, {
543
- default: j(() => [u(O(V), { class: "main-content" }, {
544
- default: j(() => [s("div", Ae, [u(c, null, {
636
+ u(O(V), null, {
637
+ default: j(() => [u(O(H), { class: "main-content" }, {
638
+ default: j(() => [s("div", Fe, [u(c, null, {
545
639
  default: j(({ Component: e, route: r }) => [u(n, {
546
640
  name: b.value,
547
641
  mode: "out-in"
@@ -564,59 +658,58 @@ var _e = /* @__PURE__ */ d({
564
658
  });
565
659
  //#endregion
566
660
  //#region src/composables/useMenuSplit.ts
567
- function Me(e) {
568
- let { menus: t, floatingSecondMenu: n = !1 } = e, i = K(), a = q(), o = x(""), s = x(null), c = x(!1), l = r(() => s.value || p.value || null), u = (e) => e.startsWith("/") ? e : `/${e}`, d = (e) => {
569
- if (!e) return !1;
570
- let t = i.path;
571
- if (t === e) return !0;
572
- let n = u(e), r = u(t);
573
- return r === n ? !0 : r.includes(`/${e}`);
574
- }, f = (e) => {
575
- for (let t of e) if (d(t.path) || t.children?.length && f(t.children)) return t;
661
+ function Le(e, t) {
662
+ if (!e) return !1;
663
+ let n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean);
664
+ return n.length === 0 ? r.length === 0 : n.every((e, t) => r[t] === e);
665
+ }
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) => {
668
+ for (let t of e) if (u(t.path) || t.children?.length && d(t.children)) return t;
576
669
  return null;
577
- }, p = r(() => t.value.find((e) => e.path === o.value)), m = r(() => p.value?.children || []), h = (e) => {
670
+ }, f = r(() => t.value.find((e) => e.path === o.value)), p = r(() => f.value?.children || []), m = (e) => {
578
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);
579
- }, g = (e) => {
672
+ }, h = (e) => {
580
673
  e.path && a.push(e.path);
581
- }, v = () => {
582
- let e = t.value, r = f(e);
674
+ }, g = () => {
675
+ let e = t.value, r = d(e);
583
676
  r ? (o.value = r.path || "", D(n) && r.children?.length && (c.value = !0)) : e.length > 0 && !o.value && (o.value = e[0].path || "");
584
677
  };
585
- return A(() => i.path, () => v(), { immediate: !0 }), A(t, (e) => {
586
- e && e.length > 0 && v();
587
- }, { immediate: !0 }), _(() => v()), {
678
+ return A(() => i.path, () => g(), { immediate: !0 }), A(t, (e) => {
679
+ e && e.length > 0 && g();
680
+ }, { immediate: !0 }), _(() => g()), {
588
681
  activeFirstMenu: o,
589
- activeFirstMenuItem: p,
590
- currentSecondMenus: m,
682
+ activeFirstMenuItem: f,
683
+ currentSecondMenus: p,
591
684
  hoveredMenuItem: s,
592
685
  displayMenuItem: l,
593
686
  showSecondMenu: c,
594
- handleFirstMenuClick: h,
595
- handleSecondMenuClick: g,
596
- isMenuItemActive: d
687
+ handleFirstMenuClick: m,
688
+ handleSecondMenuClick: h,
689
+ isMenuItemActive: u
597
690
  };
598
691
  }
599
692
  //#endregion
600
693
  //#region src/components/layouts/MixLayout/index.vue?vue&type=script&setup=true&lang.ts
601
- var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe = [
694
+ var ze = { class: "mix-layout-container" }, Be = { class: "logo-container" }, Ve = [
602
695
  "src",
603
696
  "width",
604
697
  "height"
605
- ], Ie = [
698
+ ], He = [
606
699
  "src",
607
700
  "width",
608
701
  "height"
609
- ], Le = { class: "first-menu-list" }, Re = ["onClick"], ze = { class: "menu-item-content" }, Be = {
702
+ ], Ue = { class: "first-menu-list" }, We = ["onClick"], Ge = { class: "menu-item-content" }, Ke = {
610
703
  key: 1,
611
704
  class: "menu-item-text"
612
- }, Ve = { class: "menu-item-label" }, He = { class: "second-menu-header" }, Ue = { class: "menu-title" }, We = { class: "second-menu-list" }, Ge = ["onClick"], Ke = { class: "menu-item-label" }, qe = { class: "main-layout" }, Je = /* @__PURE__ */ d({
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({
613
706
  name: "MixLayout",
614
707
  __name: "index",
615
708
  setup(c) {
616
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 = {
617
710
  ...X,
618
711
  ...l.brand
619
- }, D = Me({
712
+ }, D = Re({
620
713
  menus: l.menus,
621
714
  floatingSecondMenu: r(() => !0)
622
715
  }), k = l.iconComponent ?? d({
@@ -642,8 +735,8 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
642
735
  });
643
736
  return (r, c) => {
644
737
  let l = w("RouterView");
645
- return y(), o("div", Ne, [
646
- s("div", { class: h(["first-level-menu", [O(g) ? "dark-theme" : "light-theme"]]) }, [s("div", Pe, [C(r.$slots, "logo", {}, () => [c[0] ||= s("div", { class: "logo-glow" }, null, -1), x.logoType === "video" ? (y(), o("video", {
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", {
647
740
  key: 0,
648
741
  src: x.logoSrc,
649
742
  width: x.logoSize || 40,
@@ -653,30 +746,30 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
653
746
  muted: "",
654
747
  playsinline: "",
655
748
  class: "logo-video"
656
- }, " 您的浏览器不支持 video 标签。 ", 8, Fe)) : (y(), o("img", {
749
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ve)) : (y(), o("img", {
657
750
  key: 1,
658
751
  src: x.logoSrc,
659
752
  width: x.logoSize || 40,
660
753
  height: x.logoSize || 40,
661
754
  class: "logo-video"
662
- }, null, 8, Ie))])]), s("div", Le, [(y(!0), o(e, null, S(_.value, (e) => (y(), o("div", {
755
+ }, null, 8, He))])]), s("div", Ue, [(y(!0), o(e, null, S(_.value, (e) => (y(), o("div", {
663
756
  key: e.path,
664
757
  class: h(["first-menu-item", { active: O(D).activeFirstMenu.value === e.path }]),
665
758
  onClick: (t) => O(D).handleFirstMenuClick(e)
666
- }, [s("div", ze, [e.meta?.icon ? (y(), i(T(O(k)), {
759
+ }, [s("div", Ge, [e.meta?.icon ? (y(), i(T(O(k)), {
667
760
  key: 0,
668
761
  name: e.meta.icon,
669
762
  size: 22
670
- }, null, 8, ["name"])) : (y(), o("span", Be, E((e.meta?.title || "")[0]), 1))]), s("span", Ve, E(e.meta?.title), 1)], 10, Re))), 128))])], 2),
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),
671
764
  u(n, { name: "slide-fade" }, {
672
765
  default: j(() => [O(D).showSecondMenu.value ? (y(), o("div", {
673
766
  key: 0,
674
767
  class: h(["second-level-menu-popup", [O(g) ? "dark-theme" : "light-theme"]])
675
- }, [s("div", He, [O(D).displayMenuItem.value?.meta?.icon ? (y(), i(T(O(k)), {
768
+ }, [s("div", Je, [O(D).displayMenuItem.value?.meta?.icon ? (y(), i(T(O(k)), {
676
769
  key: 0,
677
770
  name: O(D).displayMenuItem.value.meta.icon,
678
771
  size: 20
679
- }, null, 8, ["name"])) : a("", !0), s("span", Ue, E(O(D).displayMenuItem.value?.meta?.title), 1)]), s("div", We, [(y(!0), o(e, null, S(O(D).displayMenuItem.value?.children || [], (e) => (y(), o("div", {
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", {
680
773
  key: e.path,
681
774
  class: h(["second-menu-item", { active: O(D).isMenuItemActive(e.path) }]),
682
775
  onClick: (t) => O(D).handleSecondMenuClick(e)
@@ -684,11 +777,11 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
684
777
  key: 0,
685
778
  name: e.meta.icon,
686
779
  size: 16
687
- }, null, 8, ["name"])) : a("", !0), s("span", Ke, E(e.meta?.title), 1)], 10, Ge))), 128))])], 2)) : a("", !0)]),
780
+ }, null, 8, ["name"])) : a("", !0), s("span", Qe, E(e.meta?.title), 1)], 10, Ze))), 128))])], 2)) : a("", !0)]),
688
781
  _: 1
689
782
  }),
690
- s("div", qe, [C(r.$slots, "header"), u(O(B), null, {
691
- default: j(() => [u(O(V), { class: "content-with-header p16px app-content" }, {
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" }, {
692
785
  default: j(() => [u(l, null, {
693
786
  default: j(({ Component: e, route: r }) => [u(n, {
694
787
  name: b.value,
@@ -709,25 +802,25 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
709
802
  ]);
710
803
  };
711
804
  }
712
- }), Ye = { class: "mix-top-layout-container" }, Xe = { class: "logo-container" }, Ze = [
805
+ }), tt = { class: "mix-top-layout-container" }, nt = { class: "logo-container" }, rt = [
713
806
  "src",
714
807
  "width",
715
808
  "height"
716
- ], Qe = [
809
+ ], it = [
717
810
  "src",
718
811
  "width",
719
812
  "height"
720
- ], $e = { class: "first-menu-list" }, et = ["onClick"], tt = { class: "menu-item-content" }, nt = {
813
+ ], at = { class: "first-menu-list" }, ot = ["onClick"], st = { class: "menu-item-content" }, ct = {
721
814
  key: 1,
722
815
  class: "menu-item-text"
723
- }, rt = { class: "menu-item-label" }, it = { class: "main-area" }, at = { class: "navbar-left" }, ot = { class: "brand-name" }, st = { class: "brand-title" }, ct = { class: "brand-subtitle" }, lt = { class: "navbar-center" }, ut = { class: "page-content" }, dt = /* @__PURE__ */ d({
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({
724
817
  name: "MixTopLayout",
725
818
  __name: "index",
726
819
  setup(c) {
727
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 = {
728
821
  ...X,
729
822
  ...l.brand
730
- }, M = Me({
823
+ }, M = Re({
731
824
  menus: l.menus,
732
825
  floatingSecondMenu: r(() => !1)
733
826
  }), N = l.iconComponent ?? d({
@@ -753,7 +846,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
753
846
  });
754
847
  return (r, c) => {
755
848
  let l = w("RouterView");
756
- return y(), o("div", Ye, [s("div", { class: h(["first-level-sidebar", [O(_) ? "dark-theme" : "light-theme"]]) }, [s("div", Xe, [C(r.$slots, "logo", {}, () => [c[0] ||= s("div", { class: "logo-glow" }, null, -1), A.logoType === "video" ? (y(), o("video", {
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", {
757
850
  key: 0,
758
851
  src: A.logoSrc,
759
852
  width: A.logoSize || 40,
@@ -763,24 +856,24 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
763
856
  muted: "",
764
857
  playsinline: "",
765
858
  class: "logo-video"
766
- }, " 您的浏览器不支持 video 标签。 ", 8, Ze)) : (y(), o("img", {
859
+ }, " 您的浏览器不支持 video 标签。 ", 8, rt)) : (y(), o("img", {
767
860
  key: 1,
768
861
  src: A.logoSrc,
769
862
  width: A.logoSize || 40,
770
863
  height: A.logoSize || 40,
771
864
  class: "logo-video"
772
- }, null, 8, Qe))])]), s("div", $e, [(y(!0), o(e, null, S(v.value, (e) => (y(), o("div", {
865
+ }, null, 8, it))])]), s("div", at, [(y(!0), o(e, null, S(v.value, (e) => (y(), o("div", {
773
866
  key: e.path,
774
867
  class: h(["first-menu-item", { active: O(M).activeFirstMenu.value === e.path }]),
775
868
  onClick: (t) => O(M).handleFirstMenuClick(e)
776
- }, [s("div", tt, [e.meta?.icon ? (y(), i(T(O(N)), {
869
+ }, [s("div", st, [e.meta?.icon ? (y(), i(T(O(N)), {
777
870
  key: 0,
778
871
  name: e.meta.icon,
779
872
  size: 22
780
- }, null, 8, ["name"])) : (y(), o("span", nt, E((e.meta?.title || "")[0]), 1))]), s("span", rt, E(e.meta?.title), 1)], 10, et))), 128))])], 2), s("div", it, [
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, [
781
874
  s("div", { class: h(["top-navbar", [O(_) ? "dark-theme" : "light-theme"]]) }, [
782
- s("div", at, [C(r.$slots, "brand", {}, () => [s("div", ot, [s("span", st, E(A.name), 1), s("span", ct, E(A.subtitle), 1)]), c[1] ||= s("div", { class: "navbar-divider" }, null, -1)])]),
783
- s("div", lt, [C(r.$slots, "top-menu", {}, () => [O(M).currentSecondMenus.value.length > 0 ? (y(), i($, {
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($, {
784
877
  key: 0,
785
878
  data: O(M).currentSecondMenus.value
786
879
  }, null, 8, ["data"])) : a("", !0)])]),
@@ -791,9 +884,9 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
791
884
  class: "tags-view-container",
792
885
  style: g({ height: `${x.value}px` })
793
886
  }, [C(r.$slots, "tags-view")], 4)) : a("", !0),
794
- u(O(B), { class: "content-layout" }, {
795
- default: j(() => [u(O(V), { class: "main-content" }, {
796
- default: j(() => [s("div", ut, [u(l, null, {
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, {
797
890
  default: j(({ Component: e, route: r }) => [u(n, {
798
891
  name: k.value,
799
892
  mode: "out-in"
@@ -813,25 +906,25 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
813
906
  ])]);
814
907
  };
815
908
  }
816
- }), ft = { class: "reverse-horizontal-mix-layout-container" }, pt = { class: "navbar-left" }, mt = { class: "logo-container" }, ht = [
909
+ }), vt = { class: "reverse-horizontal-mix-layout-container" }, yt = { class: "navbar-left" }, bt = { class: "logo-container" }, xt = [
817
910
  "src",
818
911
  "width",
819
912
  "height"
820
- ], gt = [
913
+ ], St = [
821
914
  "src",
822
915
  "width",
823
916
  "height"
824
- ], _t = { class: "brand-name" }, vt = { class: "brand-title" }, yt = { class: "brand-subtitle" }, bt = { class: "navbar-center" }, xt = { class: "main-area" }, St = { class: "page-content" }, Ct = { class: "header-icon" }, wt = { class: "header-title" }, Tt = { class: "sidebar-menu-list" }, Et = {
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 = {
825
918
  key: 0,
826
919
  class: "menu-group"
827
- }, Dt = { class: "group-title" }, Ot = ["onClick"], kt = { class: "item-title" }, At = ["onClick"], jt = { class: "item-title" }, Mt = /* @__PURE__ */ d({
920
+ }, Nt = { class: "group-title" }, Pt = ["onClick"], Ft = { class: "item-title" }, It = ["onClick"], Lt = { class: "item-title" }, Rt = /* @__PURE__ */ d({
828
921
  name: "ReverseHorizontalMixLayout",
829
922
  __name: "index",
830
923
  setup(c) {
831
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 = {
832
925
  ...X,
833
926
  ...l.brand
834
- }, N = Me({
927
+ }, N = Re({
835
928
  menus: l.menus,
836
929
  floatingSecondMenu: r(() => !1)
837
930
  }), P = x(!1), F = () => {
@@ -859,10 +952,10 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
859
952
  });
860
953
  return (r, c) => {
861
954
  let l = w("RouterView");
862
- return y(), o("div", ft, [
955
+ return y(), o("div", vt, [
863
956
  s("div", { class: h(["top-navbar", [O(_) ? "dark-theme" : "light-theme"]]) }, [
864
- s("div", pt, [C(r.$slots, "logo", {}, () => [
865
- s("div", mt, [c[0] ||= s("div", { class: "logo-glow" }, null, -1), M.logoType === "video" ? (y(), o("video", {
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", {
866
959
  key: 0,
867
960
  src: M.logoSrc,
868
961
  width: M.logoSize || 36,
@@ -872,17 +965,17 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
872
965
  muted: "",
873
966
  playsinline: "",
874
967
  class: "logo-video"
875
- }, " 您的浏览器不支持 video 标签。 ", 8, ht)) : (y(), o("img", {
968
+ }, " 您的浏览器不支持 video 标签。 ", 8, xt)) : (y(), o("img", {
876
969
  key: 1,
877
970
  src: M.logoSrc,
878
971
  width: M.logoSize || 36,
879
972
  height: M.logoSize || 36,
880
973
  class: "logo-video"
881
- }, null, 8, gt))]),
882
- s("div", _t, [s("span", vt, E(M.name), 1), s("span", yt, E(M.subtitle), 1)]),
974
+ }, null, 8, St))]),
975
+ s("div", Ct, [s("span", wt, E(M.name), 1), s("span", Tt, E(M.subtitle), 1)]),
883
976
  c[1] ||= s("div", { class: "navbar-divider" }, null, -1)
884
977
  ])]),
885
- s("div", bt, [C(r.$slots, "top-menu", {}, () => [u($, { data: v.value }, null, 8, ["data"])])]),
978
+ s("div", Et, [C(r.$slots, "top-menu", {}, () => [u($, { data: v.value }, null, 8, ["data"])])]),
886
979
  C(r.$slots, "header-extra")
887
980
  ], 2),
888
981
  b.value ? (y(), o("div", {
@@ -890,10 +983,10 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
890
983
  class: "tags-view-container",
891
984
  style: g({ height: `${D.value}px` })
892
985
  }, [C(r.$slots, "tags-view")], 4)) : a("", !0),
893
- s("div", xt, [
894
- u(O(B), { class: "content-layout" }, {
895
- default: j(() => [u(O(V), { class: "main-content" }, {
896
- default: j(() => [s("div", St, [u(l, null, {
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, {
897
990
  default: j(({ Component: e, route: r }) => [u(n, {
898
991
  name: A.value,
899
992
  mode: "out-in"
@@ -922,11 +1015,11 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
922
1015
  O(N).currentSecondMenus.value.length > 0 ? (y(), o("div", {
923
1016
  key: 1,
924
1017
  class: h(["right-sidebar-wrapper", { collapsed: P.value }])
925
- }, [s("div", { class: h(["right-sidebar", [O(_) ? "dark-theme" : "light-theme"]]) }, [s("div", { class: h(["sidebar-header", [O(_) ? "dark-theme" : "light-theme"]]) }, [s("div", Ct, [O(N).activeFirstMenuItem.value?.meta?.icon ? (y(), i(T(O(I)), {
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)), {
926
1019
  key: 0,
927
1020
  name: O(N).activeFirstMenuItem.value.meta.icon,
928
1021
  size: 20
929
- }, null, 8, ["name"])) : a("", !0)]), s("span", wt, E(O(N).activeFirstMenuItem.value?.meta?.title || "菜单"), 1)], 2), s("div", Tt, [(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", Et, [s("div", Dt, [t.meta?.icon ? (y(), i(T(O(I)), {
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)), {
930
1023
  key: 0,
931
1024
  name: t.meta.icon,
932
1025
  size: 16
@@ -938,7 +1031,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
938
1031
  key: 0,
939
1032
  name: e.meta.icon,
940
1033
  size: 16
941
- }, null, 8, ["name"])) : a("", !0), s("span", kt, E(e.meta?.title), 1)], 10, Ot))), 128))])) : (y(), o("div", {
1034
+ }, null, 8, ["name"])) : a("", !0), s("span", Ft, E(e.meta?.title), 1)], 10, Pt))), 128))])) : (y(), o("div", {
942
1035
  key: 1,
943
1036
  class: h(["menu-item", { active: O(N).isMenuItemActive(t.path) }]),
944
1037
  onClick: (e) => O(N).handleSecondMenuClick(t)
@@ -946,26 +1039,26 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
946
1039
  key: 0,
947
1040
  name: t.meta.icon,
948
1041
  size: 18
949
- }, null, 8, ["name"])) : a("", !0), s("span", jt, E(t.meta?.title), 1)], 10, At))], 64))), 128))])], 2)], 2)) : a("", !0)
1042
+ }, null, 8, ["name"])) : a("", !0), s("span", Lt, E(t.meta?.title), 1)], 10, It))], 64))), 128))])], 2)], 2)) : a("", !0)
950
1043
  ])
951
1044
  ]);
952
1045
  };
953
1046
  }
954
- }), Nt = { class: "card-layout-container" }, Pt = { class: "navbar-left" }, Ft = { class: "logo-container" }, It = [
1047
+ }), zt = { class: "card-layout-container" }, Bt = { class: "navbar-left" }, Vt = { class: "logo-container" }, Ht = [
955
1048
  "src",
956
1049
  "width",
957
1050
  "height"
958
- ], Lt = [
1051
+ ], Ut = [
959
1052
  "src",
960
1053
  "width",
961
1054
  "height"
962
- ], Rt = { class: "brand-name" }, zt = { class: "brand-title" }, Bt = { class: "brand-subtitle" }, Vt = { class: "drawer-content" }, Ht = { class: "menu-grid" }, Ut = ["onClick"], Wt = {
1055
+ ], Wt = { class: "brand-name" }, Gt = { class: "brand-title" }, Kt = { class: "brand-subtitle" }, qt = { class: "drawer-content" }, Jt = { class: "menu-grid" }, Yt = ["onClick"], Xt = {
963
1056
  key: 0,
964
1057
  class: "category-items"
965
- }, Gt = ["onClick"], Kt = { class: "item-title" }, qt = {
1058
+ }, Zt = ["onClick"], Qt = { class: "item-title" }, $t = {
966
1059
  key: 0,
967
1060
  class: "submenu-items"
968
- }, Jt = { class: "submenu-title" }, Yt = ["onClick"], Xt = { class: "item-title" }, Zt = { class: "main-content-area" }, Qt = { class: "page-content" }, $t = /* @__PURE__ */ Q(/* @__PURE__ */ d({
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({
969
1062
  name: "CardLayout",
970
1063
  __name: "index",
971
1064
  setup(c) {
@@ -980,7 +1073,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
980
1073
  I.value &&= (clearTimeout(I.value), null), F.value = !0;
981
1074
  }, z = (e) => {
982
1075
  e.path && (_.push(e.path), F.value = !1);
983
- }, H = l.iconComponent ?? d({
1076
+ }, B = l.iconComponent ?? d({
984
1077
  name: "LayoutIcon",
985
1078
  props: {
986
1079
  name: String,
@@ -1005,8 +1098,8 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1005
1098
  I.value && clearTimeout(I.value);
1006
1099
  }), (r, c) => {
1007
1100
  let l = w("RouterView");
1008
- return y(), o("div", Nt, [
1009
- s("div", { class: h(["top-navbar", [O(b) ? "dark-theme" : "light-theme"]]) }, [s("div", Pt, [s("div", {
1101
+ return y(), o("div", zt, [
1102
+ s("div", { class: h(["top-navbar", [O(b) ? "dark-theme" : "light-theme"]]) }, [s("div", Bt, [s("div", {
1010
1103
  class: "hover-trigger-area",
1011
1104
  onMouseenter: R,
1012
1105
  onMouseleave: L
@@ -1015,7 +1108,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1015
1108
  s("span"),
1016
1109
  s("span")
1017
1110
  ])], -1)], !0)], 32), C(r.$slots, "logo", {}, () => [
1018
- s("div", Ft, [c[1] ||= s("div", { class: "logo-glow" }, null, -1), P.logoType === "video" ? (y(), o("video", {
1111
+ s("div", Vt, [c[1] ||= s("div", { class: "logo-glow" }, null, -1), P.logoType === "video" ? (y(), o("video", {
1019
1112
  key: 0,
1020
1113
  src: P.logoSrc,
1021
1114
  width: P.logoSize || 36,
@@ -1025,14 +1118,14 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1025
1118
  muted: "",
1026
1119
  playsinline: "",
1027
1120
  class: "logo-video"
1028
- }, " 您的浏览器不支持 video 标签。 ", 8, It)) : (y(), o("img", {
1121
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ht)) : (y(), o("img", {
1029
1122
  key: 1,
1030
1123
  src: P.logoSrc,
1031
1124
  width: P.logoSize || 36,
1032
1125
  height: P.logoSize || 36,
1033
1126
  class: "logo-video"
1034
- }, null, 8, Lt))]),
1035
- s("div", Rt, [s("span", zt, E(P.name), 1), s("span", Bt, E(P.subtitle), 1)]),
1127
+ }, null, 8, Ut))]),
1128
+ s("div", Wt, [s("span", Gt, E(P.name), 1), s("span", Kt, E(P.subtitle), 1)]),
1036
1129
  c[2] ||= s("div", { class: "navbar-divider" }, null, -1)
1037
1130
  ], !0)]), C(r.$slots, "header-extra", {}, void 0, !0)], 2),
1038
1131
  k.value ? (y(), o("div", {
@@ -1049,36 +1142,36 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1049
1142
  s("span"),
1050
1143
  s("span"),
1051
1144
  s("span")
1052
- ]), s("span", null, "功能导航")])], -1), s("div", Vt, [s("div", Ht, [(y(!0), o(e, null, S(D.value, (t) => (y(), o("div", {
1145
+ ]), s("span", null, "功能导航")])], -1), s("div", qt, [s("div", Jt, [(y(!0), o(e, null, S(D.value, (t) => (y(), o("div", {
1053
1146
  key: t.path,
1054
1147
  class: "menu-category"
1055
1148
  }, [s("div", {
1056
1149
  class: "category-header",
1057
1150
  onClick: (e) => z(t)
1058
- }, [t.meta?.icon ? (y(), i(T(O(H)), {
1151
+ }, [t.meta?.icon ? (y(), i(T(O(B)), {
1059
1152
  key: 0,
1060
1153
  name: t.meta.icon,
1061
1154
  size: 18
1062
- }, null, 8, ["name"])) : a("", !0), s("span", null, E(t.meta?.title), 1)], 8, Ut), t.children && t.children.length > 0 ? (y(), o("div", Wt, [(y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
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", {
1063
1156
  key: e.path,
1064
1157
  class: "menu-item",
1065
1158
  onClick: (t) => z(e)
1066
- }, [e.meta?.icon ? (y(), i(T(O(H)), {
1159
+ }, [e.meta?.icon ? (y(), i(T(O(B)), {
1067
1160
  key: 0,
1068
1161
  name: e.meta.icon,
1069
1162
  size: 16
1070
- }, null, 8, ["name"])) : a("", !0), s("span", Kt, E(e.meta?.title), 1)], 8, Gt))), 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", qt, [s("div", Jt, E(t.meta?.title), 1), (y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
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", {
1071
1164
  key: e.path,
1072
1165
  class: "menu-item submenu-item",
1073
1166
  onClick: (t) => z(e)
1074
- }, [e.meta?.icon ? (y(), i(T(O(H)), {
1167
+ }, [e.meta?.icon ? (y(), i(T(O(B)), {
1075
1168
  key: 0,
1076
1169
  name: e.meta.icon,
1077
1170
  size: 14
1078
- }, null, 8, ["name"])) : a("", !0), s("span", Xt, E(e.meta?.title), 1)], 8, Yt))), 128))])) : a("", !0)], 64))), 128))])) : a("", !0)]))), 128))])])], !0)], 34),
1079
- s("div", Zt, [u(O(B), { class: "content-layout" }, {
1080
- default: j(() => [u(O(V), { class: "main-content p16px app-content" }, {
1081
- default: j(() => [s("div", Qt, [u(l, null, {
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, {
1082
1175
  default: j(({ Component: e, route: r }) => [u(n, {
1083
1176
  name: N.value,
1084
1177
  mode: "out-in"
@@ -1098,20 +1191,20 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1098
1191
  ]);
1099
1192
  };
1100
1193
  }
1101
- }), [["__scopeId", "data-v-3e4915c5"]]), en = {
1194
+ }), [["__scopeId", "data-v-3e4915c5"]]), sn = {
1102
1195
  key: 6,
1103
1196
  class: "layout-coming-soon"
1104
- }, tn = /* @__PURE__ */ d({
1197
+ }, cn = /* @__PURE__ */ d({
1105
1198
  name: "C_LayoutContainer",
1106
1199
  __name: "index",
1107
1200
  setup(e) {
1108
- let t = me(), n = Y(), a = r(() => t.layoutMode), l = n.isDark, u = x(!1);
1201
+ let t = ye(), n = Y(), a = r(() => t.layoutMode), l = n.isDark, u = x(!1);
1109
1202
  return b("menuCollapse", {
1110
1203
  isCollapsed: u,
1111
1204
  handleCollapsedChange: (e) => {
1112
1205
  u.value = e;
1113
1206
  }
1114
- }), (e, t) => (y(), o("div", { class: h(["layout-container", O(l) ? "dark-mode" : "light-mode"]) }, [a.value === "side" ? (y(), i(_e, {
1207
+ }), (e, t) => (y(), o("div", { class: h(["layout-container", O(l) ? "dark-mode" : "light-mode"]) }, [a.value === "side" ? (y(), i(Se, {
1115
1208
  key: 0,
1116
1209
  collapsed: u.value,
1117
1210
  "onUpdate:collapsed": t[0] ||= (e) => u.value = e
@@ -1124,7 +1217,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1124
1217
  name: "logo",
1125
1218
  fn: j(() => [C(e.$slots, "logo")]),
1126
1219
  key: "0"
1127
- } : void 0]), 1032, ["collapsed"])) : a.value === "top" ? (y(), i(je, { key: 1 }, c({ _: 2 }, [
1220
+ } : void 0]), 1032, ["collapsed"])) : a.value === "top" ? (y(), i(Ie, { key: 1 }, c({ _: 2 }, [
1128
1221
  e.$slots.logo ? {
1129
1222
  name: "logo",
1130
1223
  fn: j(() => [C(e.$slots, "logo")]),
@@ -1150,7 +1243,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1150
1243
  fn: j(() => [C(e.$slots, "footer")]),
1151
1244
  key: "4"
1152
1245
  } : void 0
1153
- ]), 1024)) : a.value === "mix" ? (y(), i(Je, { key: 2 }, c({
1246
+ ]), 1024)) : a.value === "mix" ? (y(), i(et, { key: 2 }, c({
1154
1247
  header: j(() => [C(e.$slots, "header")]),
1155
1248
  _: 2
1156
1249
  }, [e.$slots.logo ? {
@@ -1161,7 +1254,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1161
1254
  name: "footer",
1162
1255
  fn: j(() => [C(e.$slots, "footer")]),
1163
1256
  key: "1"
1164
- } : void 0]), 1024)) : a.value === "mix-top" ? (y(), i(dt, { key: 3 }, c({ _: 2 }, [
1257
+ } : void 0]), 1024)) : a.value === "mix-top" ? (y(), i(_t, { key: 3 }, c({ _: 2 }, [
1165
1258
  e.$slots.logo ? {
1166
1259
  name: "logo",
1167
1260
  fn: j(() => [C(e.$slots, "logo")]),
@@ -1192,7 +1285,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1192
1285
  fn: j(() => [C(e.$slots, "footer")]),
1193
1286
  key: "5"
1194
1287
  } : void 0
1195
- ]), 1024)) : a.value === "reverse-horizontal-mix" ? (y(), i(Mt, { key: 4 }, c({ _: 2 }, [
1288
+ ]), 1024)) : a.value === "reverse-horizontal-mix" ? (y(), i(Rt, { key: 4 }, c({ _: 2 }, [
1196
1289
  e.$slots.logo ? {
1197
1290
  name: "logo",
1198
1291
  fn: j(() => [C(e.$slots, "logo")]),
@@ -1218,7 +1311,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1218
1311
  fn: j(() => [C(e.$slots, "footer")]),
1219
1312
  key: "4"
1220
1313
  } : void 0
1221
- ]), 1024)) : a.value === "card-layout" ? (y(), i($t, { key: 5 }, c({ _: 2 }, [
1314
+ ]), 1024)) : a.value === "card-layout" ? (y(), i(on, { key: 5 }, c({ _: 2 }, [
1222
1315
  e.$slots["menu-trigger"] ? {
1223
1316
  name: "menu-trigger",
1224
1317
  fn: j(() => [C(e.$slots, "menu-trigger")]),
@@ -1249,9 +1342,9 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1249
1342
  fn: j(() => [C(e.$slots, "footer")]),
1250
1343
  key: "5"
1251
1344
  } : void 0
1252
- ]), 1024)) : (y(), o("div", en, [...t[1] ||= [s("div", { class: "coming-soon-content" }, [s("div", { class: "coming-soon-icon" }, "🚧"), s("div", { class: "coming-soon-title" }, "布局开发中")], -1)]]))], 2));
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));
1253
1346
  }
1254
- }), nn = [
1347
+ }), ln = [
1255
1348
  {
1256
1349
  label: "左侧菜单(默认)",
1257
1350
  value: "side",
@@ -1288,21 +1381,31 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1288
1381
  disabled: !1,
1289
1382
  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 "
1290
1383
  }
1291
- ], rn = { class: "settings-section" }, an = { class: "preset-grid" }, on = ["onClick"], sn = { class: "preset-icon" }, cn = { class: "preset-name" }, ln = { class: "preset-color" }, un = { class: "settings-section" }, dn = { class: "settings-section" }, fn = { class: "color-picker-wrapper" }, pn = { class: "color-value" }, mn = { class: "settings-section" }, hn = { class: "settings-section" }, gn = { class: "flex items-center justify-between mb-2" }, _n = { class: "settings-section" }, vn = { class: "settings-section" }, yn = { class: "layout-grid" }, bn = ["onClick"], xn = { class: "layout-screenshot" }, Sn = {
1384
+ ], un = { class: "settings-section" }, dn = { class: "preset-grid" }, fn = [
1385
+ "aria-pressed",
1386
+ "onClick",
1387
+ "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 = [
1389
+ "tabindex",
1390
+ "aria-disabled",
1391
+ "aria-pressed",
1392
+ "onClick",
1393
+ "onKeydown"
1394
+ ], Dn = { class: "layout-screenshot" }, On = {
1292
1395
  class: "layout-svg",
1293
1396
  viewBox: "0 0 56 48",
1294
1397
  fill: "none",
1295
1398
  xmlns: "http://www.w3.org/2000/svg"
1296
- }, Cn = ["innerHTML"], wn = { class: "layout-label" }, Tn = {
1399
+ }, kn = ["innerHTML"], An = { class: "layout-label" }, jn = {
1297
1400
  key: 0,
1298
1401
  class: "badge-soon"
1299
- }, En = {
1402
+ }, Mn = {
1300
1403
  class: "settings-section menu-expand-section",
1301
1404
  "data-menu-expand-mode": "built-in"
1302
- }, Dn = { class: "settings-section" }, On = { class: "setting-item" }, kn = { class: "setting-item" }, An = { class: "setting-item" }, jn = { class: "setting-item" }, Mn = { class: "settings-section" }, Nn = { class: "slider-item" }, Pn = { class: "slider-label" }, Fn = { class: "slider-value" }, In = { class: "slider-item" }, Ln = { class: "slider-label" }, Rn = { class: "slider-value" }, zn = { class: "settings-section" }, Bn = { class: "settings-section" }, Vn = { class: "action-buttons-grid" }, Hn = { class: "settings-section" }, Un = { class: "action-buttons-grid" }, Wn = { class: "settings-section" }, Gn = { class: "setting-item" }, Kn = { class: "setting-item" }, qn = { class: "settings-section" }, Jn = { class: "setting-item" }, Yn = {
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 = {
1303
1406
  key: 0,
1304
1407
  class: "mt-2"
1305
- }, Xn = { class: "settings-section" }, Zn = { class: "system-info" }, Qn = { class: "info-item" }, $n = { class: "info-value" }, er = { class: "info-item" }, tr = { class: "info-value" }, nr = { class: "info-item" }, rr = { class: "info-value" }, 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 = /* @__PURE__ */ Q(/* @__PURE__ */ d({
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({
1306
1409
  __name: "index",
1307
1410
  props: {
1308
1411
  show: {
@@ -1313,10 +1416,14 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1313
1416
  },
1314
1417
  emits: ["update:show"],
1315
1418
  setup(t) {
1316
- let n = ae(), c = ie(), d = me(), f = k(t, "show"), p = x("appearance"), m = x(!1), _ = x(!1), b = x(!1), C = x("Robot Admin"), w = null, T = (e) => {
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) => {
1317
1420
  w &&= (document.body.removeChild(w), null);
1318
- let t = document.createElement("canvas"), n = t.getContext("2d");
1319
- 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), w = document.createElement("div"), w.style.cssText = `
1421
+ let t = document.createElement("canvas"), r = t.getContext("2d");
1422
+ if (!r) {
1423
+ n.error("当前浏览器无法创建水印画布");
1424
+ return;
1425
+ }
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 = `
1320
1427
  position: fixed;
1321
1428
  top: 0;
1322
1429
  left: 0;
@@ -1340,7 +1447,15 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1340
1447
  }), A(C, (e) => {
1341
1448
  b.value && T(e);
1342
1449
  });
1343
- let N = r(() => {
1450
+ let P = r(() => {
1451
+ if (typeof navigator > "u" || typeof window > "u") return {
1452
+ browser: "Unknown",
1453
+ os: "Unknown",
1454
+ resolution: "Unknown",
1455
+ pixelRatio: "Unknown",
1456
+ language: "Unknown",
1457
+ timezone: "Unknown"
1458
+ };
1344
1459
  let e = navigator.userAgent, t = "Unknown", n = "Unknown";
1345
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"), {
1346
1461
  browser: t,
@@ -1354,15 +1469,21 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1354
1469
  v(() => {
1355
1470
  D();
1356
1471
  });
1357
- let R = (e, t) => {
1472
+ let z = (e, t) => {
1358
1473
  t || (d.layoutMode = e);
1359
- }, B = (e) => d.primaryColor === e.primaryColor, V = (e) => {
1474
+ }, V = (e) => d.primaryColor === e.primaryColor, H = (e) => {
1360
1475
  d.applyPreset(e), n.success(`已应用「${e.name}」主题方案`);
1361
- }, H = () => {
1476
+ }, ee = async (e) => {
1477
+ try {
1478
+ await d.updateThemeMode(e);
1479
+ } catch {
1480
+ n.error("主题模式切换失败");
1481
+ }
1482
+ }, te = () => {
1362
1483
  d.themeMode = J.themeMode, d.primaryColor = J.primaryColor, d.borderRadius = J.borderRadius, d.transitionType = J.transitionType, d.enableTransition = J.enableTransition, n.success("已恢复外观默认设置");
1363
- }, ee = () => {
1364
- 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("已恢复布局默认设置");
1365
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 = () => {
1366
1487
  c.warning({
1367
1488
  title: "确认重置",
1368
1489
  content: "确定要恢复默认配置吗?此操作不可撤销。",
@@ -1372,7 +1493,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1372
1493
  d.resetSettings(), n.success("已恢复默认配置");
1373
1494
  }
1374
1495
  });
1375
- }, q = () => {
1496
+ }, se = () => {
1376
1497
  c.warning({
1377
1498
  title: "确认清除",
1378
1499
  content: "确定要清除浏览器缓存吗?",
@@ -1385,9 +1506,9 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1385
1506
  }), sessionStorage.clear(), n.success("缓存已清除");
1386
1507
  }
1387
1508
  });
1388
- }, oe = () => {
1509
+ }, le = () => {
1389
1510
  location.reload();
1390
- }, ce = () => {
1511
+ }, ue = () => {
1391
1512
  let e = {
1392
1513
  settings: d.settingsState,
1393
1514
  gray: m.value,
@@ -1399,200 +1520,229 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1399
1520
  exportTime: (/* @__PURE__ */ new Date()).toISOString()
1400
1521
  }, t = new Blob([JSON.stringify(e, null, 2)], { type: "application/json" }), r = URL.createObjectURL(t), i = document.createElement("a");
1401
1522
  i.href = r, i.download = `robot-admin-config-${Date.now()}.json`, i.click(), URL.revokeObjectURL(r), n.success("配置已导出");
1402
- }, le = () => {
1523
+ }, de = () => {
1403
1524
  let e = document.createElement("input");
1404
1525
  e.type = "file", e.accept = "application/json", e.onchange = async (e) => {
1405
1526
  let t = e.target.files?.[0];
1406
1527
  if (t) try {
1407
1528
  let e = await t.text(), r = JSON.parse(e);
1408
- r.settings && d.$patch(r.settings), r.gray !== void 0 && (m.value = r.gray), r.colorWeak !== void 0 && (_.value = r.colorWeak), r.watermark && (b.value = r.watermark.enabled, C.value = r.watermark.text), n.success("配置已导入");
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;
1538
+ }
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("配置已导入");
1409
1550
  } catch {
1410
1551
  n.error("配置文件格式错误");
1411
1552
  }
1412
1553
  }, e.click();
1413
1554
  };
1414
- return (t, n) => (y(), i(O(I), {
1555
+ return (t, n) => (y(), i(O(L), {
1415
1556
  show: f.value,
1416
- "onUpdate:show": n[17] ||= (e) => f.value = e,
1557
+ "onUpdate:show": n[16] ||= (e) => f.value = e,
1417
1558
  width: 380,
1418
1559
  placement: "right",
1419
- "trap-focus": !1,
1420
- "block-scroll": !1
1560
+ "trap-focus": !0,
1561
+ "block-scroll": !0
1421
1562
  }, {
1422
- default: j(() => [u(O(L), {
1563
+ default: j(() => [u(O(R), {
1423
1564
  title: "⚙️ 布局配置",
1424
1565
  closable: ""
1425
1566
  }, {
1426
- default: j(() => [u(O(re), {
1567
+ default: j(() => [u(O(ie), {
1427
1568
  value: p.value,
1428
- "onUpdate:value": n[16] ||= (e) => p.value = e,
1569
+ "onUpdate:value": n[15] ||= (e) => p.value = e,
1429
1570
  animated: "",
1430
1571
  class: "settings-tabs"
1431
1572
  }, {
1432
1573
  default: j(() => [
1433
- u(O(ne), {
1574
+ u(O(re), {
1434
1575
  name: "appearance",
1435
1576
  tab: "🎨 外观"
1436
1577
  }, {
1437
1578
  default: j(() => [
1438
- s("div", rn, [s("div", an, [(y(!0), o(e, null, S(O(se), (e) => (y(), o("div", {
1579
+ s("div", un, [s("div", dn, [(y(!0), o(e, null, S(O(ce), (e) => (y(), o("div", {
1439
1580
  key: e.name,
1440
- class: h(["preset-card", { active: B(e) }]),
1441
- onClick: (t) => V(e)
1581
+ class: h(["preset-card", { active: V(e) }]),
1582
+ role: "button",
1583
+ 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"])]
1442
1587
  }, [
1443
- s("div", sn, E(e.icon), 1),
1444
- s("div", cn, E(e.name), 1),
1445
- s("div", ln, [s("span", {
1588
+ s("div", pn, E(e.icon), 1),
1589
+ s("div", mn, E(e.name), 1),
1590
+ s("div", hn, [s("span", {
1446
1591
  class: "color-dot",
1447
1592
  style: g({ backgroundColor: e.primaryColor })
1448
1593
  }, null, 4)])
1449
- ], 10, on))), 128))])]),
1450
- s("div", un, [n[21] ||= s("div", { class: "section-title" }, "主题模式", -1), u(O(W), {
1594
+ ], 42, fn))), 128))])]),
1595
+ s("div", gn, [n[20] ||= s("div", { class: "section-title" }, "主题模式", -1), u(O(W), {
1451
1596
  value: O(d).themeMode,
1452
- "onUpdate:value": n[0] ||= (e) => O(d).themeMode = e,
1453
- class: "mode-group"
1597
+ class: "mode-group",
1598
+ "onUpdate:value": ee
1454
1599
  }, {
1455
1600
  default: j(() => [
1456
1601
  u(O(U), { value: "light" }, {
1457
- default: j(() => [...n[18] ||= [s("span", { class: "i-mdi:white-balance-sunny mr-1" }, null, -1), l(" 浅色 ", -1)]]),
1602
+ default: j(() => [...n[17] ||= [s("span", { class: "i-mdi:white-balance-sunny mr-1" }, null, -1), l(" 浅色 ", -1)]]),
1458
1603
  _: 1
1459
1604
  }),
1460
1605
  u(O(U), { value: "dark" }, {
1461
- default: j(() => [...n[19] ||= [s("span", { class: "i-mdi:moon-waning-crescent mr-1" }, null, -1), l(" 深色 ", -1)]]),
1606
+ default: j(() => [...n[18] ||= [s("span", { class: "i-mdi:moon-waning-crescent mr-1" }, null, -1), l(" 深色 ", -1)]]),
1462
1607
  _: 1
1463
1608
  }),
1464
- u(O(U), { value: "auto" }, {
1465
- default: j(() => [...n[20] ||= [s("span", { class: "i-mdi:theme-light-dark mr-1" }, null, -1), l(" 自动 ", -1)]]),
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)]]),
1466
1611
  _: 1
1467
1612
  })
1468
1613
  ]),
1469
1614
  _: 1
1470
1615
  }, 8, ["value"])]),
1471
- s("div", dn, [n[22] ||= s("div", { class: "section-title" }, "主题色", -1), s("div", fn, [u(O(F), {
1616
+ s("div", _n, [n[21] ||= s("div", { class: "section-title" }, "主题色", -1), s("div", vn, [u(O(I), {
1472
1617
  value: O(d).primaryColor,
1473
- "onUpdate:value": n[1] ||= (e) => O(d).primaryColor = e,
1618
+ "onUpdate:value": n[0] ||= (e) => O(d).primaryColor = e,
1474
1619
  "show-alpha": !1,
1475
- swatches: O(de),
1620
+ swatches: O(fe),
1476
1621
  actions: ["confirm"]
1477
- }, null, 8, ["value", "swatches"]), s("span", pn, E(O(d).primaryColor), 1)])]),
1478
- s("div", mn, [n[26] ||= s("div", { class: "section-title" }, "圆角大小", -1), u(O(W), {
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), {
1479
1624
  value: O(d).borderRadius,
1480
- "onUpdate:value": n[2] ||= (e) => O(d).borderRadius = e,
1625
+ "onUpdate:value": n[1] ||= (e) => O(d).borderRadius = e,
1481
1626
  class: "radius-group"
1482
1627
  }, {
1483
1628
  default: j(() => [
1484
1629
  u(O(U), { value: "small" }, {
1485
- default: j(() => [...n[23] ||= [l("小 (4px)", -1)]]),
1630
+ default: j(() => [...n[22] ||= [l("小 (4px)", -1)]]),
1486
1631
  _: 1
1487
1632
  }),
1488
1633
  u(O(U), { value: "medium" }, {
1489
- default: j(() => [...n[24] ||= [l("中 (6px)", -1)]]),
1634
+ default: j(() => [...n[23] ||= [l("中 (6px)", -1)]]),
1490
1635
  _: 1
1491
1636
  }),
1492
1637
  u(O(U), { value: "large" }, {
1493
- default: j(() => [...n[25] ||= [l("大 (8px)", -1)]]),
1638
+ default: j(() => [...n[24] ||= [l("大 (8px)", -1)]]),
1494
1639
  _: 1
1495
1640
  })
1496
1641
  ]),
1497
1642
  _: 1
1498
1643
  }, 8, ["value"])]),
1499
- s("div", hn, [
1500
- n[32] ||= s("div", { class: "section-title" }, "页面动画", -1),
1501
- s("div", gn, [n[27] ||= s("span", { class: "text-sm" }, "启用动画", -1), u(O(G), {
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), {
1502
1647
  value: O(d).enableTransition,
1503
- "onUpdate:value": n[3] ||= (e) => O(d).enableTransition = e
1648
+ "onUpdate:value": n[2] ||= (e) => O(d).enableTransition = e
1504
1649
  }, null, 8, ["value"])]),
1505
1650
  u(O(W), {
1506
1651
  value: O(d).transitionType,
1507
- "onUpdate:value": n[4] ||= (e) => O(d).transitionType = e,
1652
+ "onUpdate:value": n[3] ||= (e) => O(d).transitionType = e,
1508
1653
  disabled: !O(d).enableTransition,
1509
1654
  class: "transition-group"
1510
1655
  }, {
1511
1656
  default: j(() => [
1512
1657
  u(O(U), { value: "fade" }, {
1513
- default: j(() => [...n[28] ||= [l("淡入", -1)]]),
1658
+ default: j(() => [...n[27] ||= [l("淡入", -1)]]),
1514
1659
  _: 1
1515
1660
  }),
1516
1661
  u(O(U), { value: "slide" }, {
1517
- default: j(() => [...n[29] ||= [l("滑动", -1)]]),
1662
+ default: j(() => [...n[28] ||= [l("滑动", -1)]]),
1518
1663
  _: 1
1519
1664
  }),
1520
1665
  u(O(U), { value: "zoom" }, {
1521
- default: j(() => [...n[30] ||= [l("缩放", -1)]]),
1666
+ default: j(() => [...n[29] ||= [l("缩放", -1)]]),
1522
1667
  _: 1
1523
1668
  }),
1524
1669
  u(O(U), { value: "none" }, {
1525
- default: j(() => [...n[31] ||= [l("无", -1)]]),
1670
+ default: j(() => [...n[30] ||= [l("无", -1)]]),
1526
1671
  _: 1
1527
1672
  })
1528
1673
  ]),
1529
1674
  _: 1
1530
1675
  }, 8, ["value", "disabled"])
1531
1676
  ]),
1532
- s("div", _n, [u(O(P), {
1677
+ s("div", Cn, [u(O(F), {
1533
1678
  block: "",
1534
1679
  secondary: "",
1535
- onClick: H
1680
+ onClick: te
1536
1681
  }, {
1537
- icon: j(() => [...n[33] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1538
- default: j(() => [n[34] ||= l(" 恢复外观默认设置 ", -1)]),
1682
+ icon: j(() => [...n[32] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1683
+ default: j(() => [n[33] ||= l(" 恢复外观默认设置 ", -1)]),
1539
1684
  _: 1
1540
1685
  })])
1541
1686
  ]),
1542
1687
  _: 1
1543
1688
  }),
1544
- u(O(ne), {
1689
+ u(O(re), {
1545
1690
  name: "layout",
1546
1691
  tab: "📐 布局"
1547
1692
  }, {
1548
1693
  default: j(() => [
1549
- s("div", vn, [n[35] ||= s("div", { class: "section-title" }, "布局模式", -1), s("div", yn, [(y(!0), o(e, null, S(O(nn), (e) => (y(), o("div", {
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", {
1550
1695
  key: e.value,
1551
1696
  class: h(["layout-item", {
1552
1697
  active: O(d).layoutMode === e.value,
1553
1698
  disabled: e.disabled
1554
1699
  }]),
1555
- onClick: M((t) => R(e.value, e.disabled), ["stop"])
1556
- }, [s("div", xn, [(y(), o("svg", Sn, [s("g", { innerHTML: e.svg }, null, 8, Cn)]))]), s("div", wn, [l(E(e.label) + " ", 1), e.disabled ? (y(), o("span", Tn, "敬请期待")) : a("", !0)])], 10, bn))), 128))])]),
1557
- s("div", En, [n[38] ||= s("div", { class: "section-title" }, "菜单展开方式", -1), u(O(W), {
1700
+ role: "button",
1701
+ tabindex: e.disabled ? -1 : 0,
1702
+ "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), {
1558
1708
  value: O(d).menuExpandMode,
1559
- "onUpdate:value": n[5] ||= (e) => O(d).menuExpandMode = e,
1709
+ "onUpdate:value": n[4] ||= (e) => O(d).menuExpandMode = e,
1560
1710
  class: "menu-expand-group"
1561
1711
  }, {
1562
1712
  default: j(() => [u(O(U), { value: "inline" }, {
1563
- default: j(() => [...n[36] ||= [l("传统展开", -1)]]),
1713
+ default: j(() => [...n[35] ||= [l("传统展开", -1)]]),
1564
1714
  _: 1
1565
1715
  }), u(O(U), { value: "panel" }, {
1566
- default: j(() => [...n[37] ||= [l("右侧面板", -1)]]),
1716
+ default: j(() => [...n[36] ||= [l("右侧面板", -1)]]),
1567
1717
  _: 1
1568
1718
  })]),
1569
1719
  _: 1
1570
1720
  }, 8, ["value"])]),
1571
- s("div", Dn, [
1572
- n[43] ||= s("div", { class: "section-title" }, "界面元素", -1),
1573
- s("div", On, [n[39] ||= s("span", null, "显示面包屑", -1), u(O(G), {
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), {
1574
1724
  value: O(d).showBreadcrumb,
1575
- "onUpdate:value": n[6] ||= (e) => O(d).showBreadcrumb = e
1725
+ "onUpdate:value": n[5] ||= (e) => O(d).showBreadcrumb = e
1576
1726
  }, null, 8, ["value"])]),
1577
- s("div", kn, [n[40] ||= s("span", null, "显示面包屑图标", -1), u(O(G), {
1727
+ s("div", Fn, [n[39] ||= s("span", null, "显示面包屑图标", -1), u(O(G), {
1578
1728
  value: O(d).showBreadcrumbIcon,
1579
- "onUpdate:value": n[7] ||= (e) => O(d).showBreadcrumbIcon = e,
1729
+ "onUpdate:value": n[6] ||= (e) => O(d).showBreadcrumbIcon = e,
1580
1730
  disabled: !O(d).showBreadcrumb
1581
1731
  }, null, 8, ["value", "disabled"])]),
1582
- s("div", An, [n[41] ||= s("span", null, "显示标签页", -1), u(O(G), {
1732
+ s("div", In, [n[40] ||= s("span", null, "显示标签页", -1), u(O(G), {
1583
1733
  value: O(d).showTagsView,
1584
- "onUpdate:value": n[8] ||= (e) => O(d).showTagsView = e
1734
+ "onUpdate:value": n[7] ||= (e) => O(d).showTagsView = e
1585
1735
  }, null, 8, ["value"])]),
1586
- s("div", jn, [n[42] ||= s("span", null, "显示页脚", -1), u(O(G), {
1736
+ s("div", Ln, [n[41] ||= s("span", null, "显示页脚", -1), u(O(G), {
1587
1737
  value: O(d).showFooter,
1588
- "onUpdate:value": n[9] ||= (e) => O(d).showFooter = e
1738
+ "onUpdate:value": n[8] ||= (e) => O(d).showFooter = e
1589
1739
  }, null, 8, ["value"])])
1590
1740
  ]),
1591
- s("div", Mn, [
1592
- n[46] ||= s("div", { class: "section-title" }, "尺寸调整", -1),
1593
- s("div", Nn, [s("div", Pn, [n[44] ||= s("span", null, "侧边栏宽度", -1), s("span", Fn, E(O(d).sidebarWidth) + "px", 1)]), u(O(te), {
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), {
1594
1744
  value: O(d).sidebarWidth,
1595
- "onUpdate:value": n[10] ||= (e) => O(d).sidebarWidth = e,
1745
+ "onUpdate:value": n[9] ||= (e) => O(d).sidebarWidth = e,
1596
1746
  min: 180,
1597
1747
  max: 280,
1598
1748
  step: 10,
@@ -1602,9 +1752,9 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1602
1752
  280: "280"
1603
1753
  }
1604
1754
  }, null, 8, ["value"])]),
1605
- s("div", In, [s("div", Ln, [n[45] ||= s("span", null, "头部高度", -1), s("span", Rn, E(O(d).headerHeight) + "px", 1)]), u(O(te), {
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), {
1606
1756
  value: O(d).headerHeight,
1607
- "onUpdate:value": n[11] ||= (e) => O(d).headerHeight = e,
1757
+ "onUpdate:value": n[10] ||= (e) => O(d).headerHeight = e,
1608
1758
  min: 48,
1609
1759
  max: 64,
1610
1760
  step: 4,
@@ -1615,98 +1765,98 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1615
1765
  }
1616
1766
  }, null, 8, ["value"])])
1617
1767
  ]),
1618
- s("div", zn, [u(O(P), {
1768
+ s("div", Gn, [u(O(F), {
1619
1769
  block: "",
1620
1770
  secondary: "",
1621
- onClick: ee
1771
+ onClick: K
1622
1772
  }, {
1623
- icon: j(() => [...n[47] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1624
- default: j(() => [n[48] ||= l(" 恢复布局默认设置 ", -1)]),
1773
+ icon: j(() => [...n[46] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1774
+ default: j(() => [n[47] ||= l(" 恢复布局默认设置 ", -1)]),
1625
1775
  _: 1
1626
1776
  })])
1627
1777
  ]),
1628
1778
  _: 1
1629
1779
  }),
1630
- u(O(ne), {
1780
+ u(O(re), {
1631
1781
  name: "features",
1632
1782
  tab: "🔧 功能"
1633
1783
  }, {
1634
1784
  default: j(() => [
1635
- s("div", Bn, [n[53] ||= s("div", { class: "section-title" }, "缓存管理", -1), s("div", Vn, [u(O(P), {
1785
+ s("div", Kn, [n[52] ||= s("div", { class: "section-title" }, "缓存管理", -1), s("div", qn, [u(O(F), {
1636
1786
  secondary: "",
1637
- onClick: q
1787
+ onClick: se
1638
1788
  }, {
1639
- icon: j(() => [...n[49] ||= [s("span", { class: "i-mdi:delete-sweep" }, null, -1)]]),
1640
- default: j(() => [n[50] ||= l(" 清除缓存 ", -1)]),
1789
+ icon: j(() => [...n[48] ||= [s("span", { class: "i-mdi:delete-sweep" }, null, -1)]]),
1790
+ default: j(() => [n[49] ||= l(" 清除缓存 ", -1)]),
1641
1791
  _: 1
1642
- }), u(O(P), {
1792
+ }), u(O(F), {
1643
1793
  secondary: "",
1644
- onClick: oe
1794
+ onClick: le
1645
1795
  }, {
1646
- icon: j(() => [...n[51] ||= [s("span", { class: "i-mdi:refresh" }, null, -1)]]),
1647
- default: j(() => [n[52] ||= l(" 重新加载 ", -1)]),
1796
+ icon: j(() => [...n[50] ||= [s("span", { class: "i-mdi:refresh" }, null, -1)]]),
1797
+ default: j(() => [n[51] ||= l(" 重新加载 ", -1)]),
1648
1798
  _: 1
1649
1799
  })])]),
1650
- s("div", Hn, [
1651
- n[60] ||= s("div", { class: "section-title" }, "配置管理", -1),
1652
- s("div", Un, [u(O(P), {
1800
+ s("div", Jn, [
1801
+ n[59] ||= s("div", { class: "section-title" }, "配置管理", -1),
1802
+ s("div", Yn, [u(O(F), {
1653
1803
  secondary: "",
1654
- onClick: ce
1804
+ onClick: ue
1655
1805
  }, {
1656
- icon: j(() => [...n[54] ||= [s("span", { class: "i-mdi:download" }, null, -1)]]),
1657
- default: j(() => [n[55] ||= l(" 导出配置 ", -1)]),
1806
+ icon: j(() => [...n[53] ||= [s("span", { class: "i-mdi:download" }, null, -1)]]),
1807
+ default: j(() => [n[54] ||= l(" 导出配置 ", -1)]),
1658
1808
  _: 1
1659
- }), u(O(P), {
1809
+ }), u(O(F), {
1660
1810
  secondary: "",
1661
- onClick: le
1811
+ onClick: de
1662
1812
  }, {
1663
- icon: j(() => [...n[56] ||= [s("span", { class: "i-mdi:upload" }, null, -1)]]),
1664
- default: j(() => [n[57] ||= l(" 导入配置 ", -1)]),
1813
+ icon: j(() => [...n[55] ||= [s("span", { class: "i-mdi:upload" }, null, -1)]]),
1814
+ default: j(() => [n[56] ||= l(" 导入配置 ", -1)]),
1665
1815
  _: 1
1666
1816
  })]),
1667
- u(O(P), {
1817
+ u(O(F), {
1668
1818
  block: "",
1669
1819
  type: "error",
1670
1820
  secondary: "",
1671
1821
  class: "mt-2",
1672
- onClick: K
1822
+ onClick: q
1673
1823
  }, {
1674
- icon: j(() => [...n[58] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1675
- default: j(() => [n[59] ||= l(" 重置所有配置 ", -1)]),
1824
+ icon: j(() => [...n[57] ||= [s("span", { class: "i-mdi:restore" }, null, -1)]]),
1825
+ default: j(() => [n[58] ||= l(" 重置所有配置 ", -1)]),
1676
1826
  _: 1
1677
1827
  })
1678
1828
  ]),
1679
- s("div", Wn, [
1680
- n[63] ||= s("div", { class: "section-title" }, "系统模式", -1),
1681
- s("div", Gn, [n[61] ||= s("div", { class: "setting-label" }, [s("span", null, "灰色模式"), s("span", { class: "setting-desc" }, "用于哀悼日场景")], -1), u(O(G), {
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), {
1682
1832
  value: m.value,
1683
- "onUpdate:value": n[12] ||= (e) => m.value = e
1833
+ "onUpdate:value": n[11] ||= (e) => m.value = e
1684
1834
  }, null, 8, ["value"])]),
1685
- s("div", Kn, [n[62] ||= s("div", { class: "setting-label" }, [s("span", null, "色弱模式"), s("span", { class: "setting-desc" }, "提供无障碍访问支持")], -1), u(O(G), {
1835
+ s("div", Qn, [n[61] ||= s("div", { class: "setting-label" }, [s("span", null, "色弱模式"), s("span", { class: "setting-desc" }, "提供无障碍访问支持")], -1), u(O(G), {
1686
1836
  value: _.value,
1687
- "onUpdate:value": n[13] ||= (e) => _.value = e
1837
+ "onUpdate:value": n[12] ||= (e) => _.value = e
1688
1838
  }, null, 8, ["value"])])
1689
1839
  ]),
1690
- s("div", qn, [
1691
- n[65] ||= s("div", { class: "section-title" }, "水印设置", -1),
1692
- s("div", Jn, [n[64] ||= s("span", null, "启用水印", -1), u(O(G), {
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), {
1693
1843
  value: b.value,
1694
- "onUpdate:value": n[14] ||= (e) => b.value = e
1844
+ "onUpdate:value": n[13] ||= (e) => b.value = e
1695
1845
  }, null, 8, ["value"])]),
1696
- b.value ? (y(), o("div", Yn, [u(O(z), {
1846
+ b.value ? (y(), o("div", tr, [u(O(B), {
1697
1847
  value: C.value,
1698
- "onUpdate:value": n[15] ||= (e) => C.value = e,
1848
+ "onUpdate:value": n[14] ||= (e) => C.value = e,
1699
1849
  placeholder: "请输入水印内容",
1700
1850
  size: "small"
1701
1851
  }, null, 8, ["value"])])) : a("", !0)
1702
1852
  ]),
1703
- s("div", Xn, [n[72] ||= s("div", { class: "section-title" }, "系统信息", -1), s("div", Zn, [
1704
- s("div", Qn, [n[66] ||= s("span", { class: "info-label" }, "浏览器", -1), s("span", $n, E(N.value.browser), 1)]),
1705
- s("div", er, [n[67] ||= s("span", { class: "info-label" }, "操作系统", -1), s("span", tr, E(N.value.os), 1)]),
1706
- s("div", nr, [n[68] ||= s("span", { class: "info-label" }, "屏幕分辨率", -1), s("span", rr, E(N.value.resolution), 1)]),
1707
- s("div", ir, [n[69] ||= s("span", { class: "info-label" }, "设备像素比", -1), s("span", ar, E(N.value.pixelRatio), 1)]),
1708
- s("div", or, [n[70] ||= s("span", { class: "info-label" }, "语言", -1), s("span", sr, E(N.value.language), 1)]),
1709
- s("div", cr, [n[71] ||= s("span", { class: "info-label" }, "时区", -1), s("span", lr, E(N.value.timezone), 1)])
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)])
1710
1860
  ])])
1711
1861
  ]),
1712
1862
  _: 1
@@ -1719,21 +1869,21 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1719
1869
  _: 1
1720
1870
  }, 8, ["show"]));
1721
1871
  }
1722
- }), [["__scopeId", "data-v-b57a947e"]]), dr = { class: "brand-logo__icon" }, fr = [
1872
+ }), [["__scopeId", "data-v-99f8c69e"]]), _r = { class: "brand-logo__icon" }, vr = [
1723
1873
  "src",
1724
1874
  "width",
1725
1875
  "height"
1726
- ], pr = [
1876
+ ], yr = [
1727
1877
  "src",
1728
1878
  "width",
1729
1879
  "height"
1730
- ], mr = { class: "brand-logo__name" }, hr = { class: "brand-logo__title" }, gr = {
1880
+ ], br = { class: "brand-logo__name" }, xr = { class: "brand-logo__title" }, Sr = {
1731
1881
  key: 0,
1732
1882
  class: "brand-logo__subtitle"
1733
- }, _r = {
1883
+ }, Cr = {
1734
1884
  key: 0,
1735
1885
  class: "brand-logo__divider"
1736
- }, vr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1886
+ }, wr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1737
1887
  name: "BrandLogo",
1738
1888
  __name: "index",
1739
1889
  props: {
@@ -1760,7 +1910,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1760
1910
  return (n, i) => (y(), o("div", { class: h(["brand-logo", {
1761
1911
  "brand-logo--collapsed": t.collapsed,
1762
1912
  "brand-logo--horizontal": t.variant === "horizontal"
1763
- }]) }, [s("div", dr, [i[0] ||= s("div", { class: "brand-logo__glow" }, null, -1), r.logoType === "video" && r.logoSrc ? (y(), o("video", {
1913
+ }]) }, [s("div", _r, [i[0] ||= s("div", { class: "brand-logo__glow" }, null, -1), r.logoType === "video" && r.logoSrc ? (y(), o("video", {
1764
1914
  key: 0,
1765
1915
  src: r.logoSrc,
1766
1916
  width: t.size,
@@ -1770,19 +1920,19 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1770
1920
  muted: "",
1771
1921
  playsinline: "",
1772
1922
  class: "brand-logo__media"
1773
- }, null, 8, fr)) : r.logoSrc ? (y(), o("img", {
1923
+ }, null, 8, vr)) : r.logoSrc ? (y(), o("img", {
1774
1924
  key: 1,
1775
1925
  src: r.logoSrc,
1776
1926
  width: t.size,
1777
1927
  height: t.size,
1778
1928
  class: "brand-logo__media",
1779
1929
  alt: "Logo"
1780
- }, null, 8, pr)) : a("", !0)]), t.showName && !t.collapsed ? (y(), o(e, { key: 0 }, [s("div", mr, [s("span", hr, E(r.name), 1), r.subtitle ? (y(), o("span", gr, E(r.subtitle), 1)) : a("", !0)]), t.showDivider ? (y(), o("div", _r)) : a("", !0)], 64)) : a("", !0)], 2));
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));
1781
1931
  }
1782
- }), [["__scopeId", "data-v-fd1c2eec"]]), yr = { class: "icon-menu" }, br = ["onClick"], xr = { class: "icon-menu__icon" }, Sr = {
1932
+ }), [["__scopeId", "data-v-fd1c2eec"]]), Tr = { class: "icon-menu" }, Er = ["onClick"], Dr = { class: "icon-menu__icon" }, Or = {
1783
1933
  key: 1,
1784
1934
  class: "icon-menu__fallback"
1785
- }, Cr = { class: "icon-menu__label" }, wr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1935
+ }, kr = { class: "icon-menu__label" }, Ar = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1786
1936
  name: "IconMenu",
1787
1937
  __name: "index",
1788
1938
  props: {
@@ -1792,20 +1942,20 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1792
1942
  emits: ["click"],
1793
1943
  setup(t, { emit: n }) {
1794
1944
  let r = n, a = Y();
1795
- return (n, c) => (y(), o("div", yr, [(y(!0), o(e, null, S(t.menus, (e) => (y(), o("div", {
1945
+ return (n, c) => (y(), o("div", Tr, [(y(!0), o(e, null, S(t.menus, (e) => (y(), o("div", {
1796
1946
  key: e.path,
1797
1947
  class: h(["icon-menu__item", { "icon-menu__item--active": t.active === e.path }]),
1798
1948
  onClick: (t) => r("click", e)
1799
- }, [s("div", xr, [O(a).iconComponent && e.meta?.icon ? (y(), i(T(O(a).iconComponent), {
1949
+ }, [s("div", Dr, [O(a).iconComponent && e.meta?.icon ? (y(), i(T(O(a).iconComponent), {
1800
1950
  key: 0,
1801
1951
  name: e.meta.icon,
1802
1952
  size: 20
1803
- }, null, 8, ["name"])) : (y(), o("span", Sr, E(e.meta?.title?.charAt(0) || "?"), 1))]), s("div", Cr, E(e.meta?.title), 1)], 10, br))), 128))]));
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))]));
1804
1954
  }
1805
- }), [["__scopeId", "data-v-f985d475"]]), Tr = { class: "floating-menu__header" }, Er = { class: "floating-menu__brand" }, Dr = { class: "floating-menu__brand-title" }, Or = { class: "floating-menu__brand-subtitle" }, kr = { class: "floating-menu__list" }, Ar = {
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 = {
1806
1956
  key: 0,
1807
1957
  class: "floating-menu__group"
1808
- }, jr = { class: "floating-menu__group-title" }, Mr = ["onClick"], Nr = { class: "floating-menu__item-text" }, Pr = ["onClick"], Fr = { class: "floating-menu__item-text" }, Ir = /* @__PURE__ */ Q(/* @__PURE__ */ d({
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({
1809
1959
  name: "FloatingMenu",
1810
1960
  __name: "index",
1811
1961
  props: {
@@ -1822,35 +1972,43 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1822
1972
  return (r, d) => (y(), i(n, { name: "slide-fade" }, {
1823
1973
  default: j(() => [t.show && t.menuItem ? (y(), o("div", {
1824
1974
  key: 0,
1825
- class: h(["floating-menu", [O(l).isDark.value ? "dark-theme" : "light-theme"]])
1826
- }, [s("div", Tr, [s("div", Er, [s("span", Dr, E(u.name), 1), s("span", Or, E(u.subtitle), 1)])]), s("div", kr, [(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", Ar, [s("div", jr, [O(l).iconComponent && n.meta?.icon ? (y(), i(T(O(l).iconComponent), {
1975
+ class: h(["floating-menu", [O(l).isDark.value ? "dark-theme" : "light-theme"]]),
1976
+ role: "navigation",
1977
+ "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), {
1827
1979
  key: 0,
1828
1980
  name: n.meta.icon,
1829
1981
  size: 16
1830
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", {
1831
1983
  key: e.path,
1832
1984
  class: h(["floating-menu__item floating-menu__item--sub", { active: t.isActive?.(e.path) }]),
1833
- onClick: (t) => c("click", e)
1985
+ role: "link",
1986
+ tabindex: "0",
1987
+ onClick: (t) => c("click", e),
1988
+ onKeydown: [M((t) => c("click", e), ["enter"]), M(N((t) => c("click", e), ["prevent"]), ["space"])]
1834
1989
  }, [O(l).iconComponent && e.meta?.icon ? (y(), i(T(O(l).iconComponent), {
1835
1990
  key: 0,
1836
1991
  name: e.meta.icon,
1837
1992
  size: 16
1838
- }, null, 8, ["name"])) : a("", !0), s("span", Nr, E(e.meta?.title), 1)], 10, Mr))), 128))])) : (y(), o("div", {
1993
+ }, null, 8, ["name"])) : a("", !0), s("span", zr, E(e.meta?.title), 1)], 42, Rr))), 128))])) : (y(), o("div", {
1839
1994
  key: 1,
1840
1995
  class: h(["floating-menu__item", { active: t.isActive?.(n.path) }]),
1841
- onClick: (e) => c("click", n)
1996
+ role: "link",
1997
+ tabindex: "0",
1998
+ onClick: (e) => c("click", n),
1999
+ onKeydown: [M((e) => c("click", n), ["enter"]), M(N((e) => c("click", n), ["prevent"]), ["space"])]
1842
2000
  }, [O(l).iconComponent && n.meta?.icon ? (y(), i(T(O(l).iconComponent), {
1843
2001
  key: 0,
1844
2002
  name: n.meta.icon,
1845
2003
  size: 18
1846
- }, null, 8, ["name"])) : a("", !0), s("span", Fr, E(n.meta?.title), 1)], 10, Pr))], 64))), 128))])], 2)) : a("", !0)]),
2004
+ }, null, 8, ["name"])) : a("", !0), s("span", Vr, E(n.meta?.title), 1)], 42, Br))], 64))), 128))])], 2)) : a("", !0)]),
1847
2005
  _: 1
1848
2006
  }));
1849
2007
  }
1850
- }), [["__scopeId", "data-v-0588c318"]]), Lr = { class: "side-menu__header" }, Rr = { class: "side-menu__header-icon" }, zr = { class: "side-menu__header-title" }, Br = { class: "side-menu__list" }, Vr = {
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 = {
1851
2009
  key: 0,
1852
2010
  class: "side-menu__group"
1853
- }, Hr = { class: "side-menu__group-label" }, Ur = ["onClick"], Wr = { class: "side-menu__item-text" }, Gr = ["onClick"], Kr = { class: "side-menu__item-text" }, qr = /* @__PURE__ */ Q(/* @__PURE__ */ d({
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({
1854
2012
  name: "SideMenu",
1855
2013
  __name: "index",
1856
2014
  props: {
@@ -1868,11 +2026,11 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1868
2026
  default: j(() => [d.value ? a("", !0) : (y(), o("div", {
1869
2027
  key: 0,
1870
2028
  class: h(["side-menu", [O(l).isDark.value ? "dark-theme" : "light-theme"]])
1871
- }, [s("div", Lr, [s("div", Rr, [O(l).iconComponent && t.activeItem?.meta?.icon ? (y(), i(T(O(l).iconComponent), {
2029
+ }, [s("div", Ur, [s("div", Wr, [O(l).iconComponent && t.activeItem?.meta?.icon ? (y(), i(T(O(l).iconComponent), {
1872
2030
  key: 0,
1873
2031
  name: t.activeItem.meta.icon,
1874
2032
  size: 17
1875
- }, null, 8, ["name"])) : a("", !0)]), s("span", zr, E(t.activeItem?.meta?.title || "菜单"), 1)]), s("div", Br, [(y(!0), o(e, null, S(t.menus, (n) => (y(), o(e, { key: n.path }, [n.children && n.children.length > 0 ? (y(), o("div", Vr, [s("div", Hr, [O(l).iconComponent && n.meta?.icon ? (y(), i(T(O(l).iconComponent), {
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), {
1876
2034
  key: 0,
1877
2035
  name: n.meta.icon,
1878
2036
  size: 14
@@ -1884,7 +2042,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1884
2042
  key: 0,
1885
2043
  name: e.meta.icon,
1886
2044
  size: 15
1887
- }, null, 8, ["name"])) : a("", !0), s("span", Wr, E(e.meta?.title), 1)], 10, Ur))), 128))])) : (y(), o("div", {
2045
+ }, null, 8, ["name"])) : a("", !0), s("span", Xr, E(e.meta?.title), 1)], 10, Yr))), 128))])) : (y(), o("div", {
1888
2046
  key: 1,
1889
2047
  class: h(["side-menu__item", { active: t.isActive?.(n.path) }]),
1890
2048
  onClick: (e) => c("click", n)
@@ -1892,17 +2050,17 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1892
2050
  key: 0,
1893
2051
  name: n.meta.icon,
1894
2052
  size: 16
1895
- }, null, 8, ["name"])) : a("", !0), s("span", Kr, E(n.meta?.title), 1)], 10, Gr))], 64))), 128))])], 2))]),
2053
+ }, null, 8, ["name"])) : a("", !0), s("span", Qr, E(n.meta?.title), 1)], 10, Zr))], 64))), 128))])], 2))]),
1896
2054
  _: 1
1897
2055
  })], 64)) : a("", !0);
1898
2056
  }
1899
- }), [["__scopeId", "data-v-1909f229"]]), Jr = { class: "drawer-menu__content" }, Yr = { class: "drawer-menu__grid" }, Xr = ["onClick"], Zr = {
2057
+ }), [["__scopeId", "data-v-1909f229"]]), ei = ["aria-hidden"], ti = { class: "drawer-menu__content" }, ni = { class: "drawer-menu__grid" }, ri = ["onClick", "onKeydown"], ii = {
1900
2058
  key: 0,
1901
2059
  class: "drawer-menu__items"
1902
- }, Qr = ["onClick"], $r = { class: "drawer-menu__item-text" }, ei = {
2060
+ }, ai = ["onClick", "onKeydown"], oi = { class: "drawer-menu__item-text" }, si = {
1903
2061
  key: 0,
1904
2062
  class: "drawer-menu__sub-items"
1905
- }, ti = { class: "drawer-menu__sub-title" }, ni = ["onClick"], ri = { class: "drawer-menu__item-text" }, ii = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2063
+ }, ci = { class: "drawer-menu__sub-title" }, li = ["onClick", "onKeydown"], ui = { class: "drawer-menu__item-text" }, di = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1906
2064
  name: "DrawerMenu",
1907
2065
  __name: "index",
1908
2066
  props: {
@@ -1910,7 +2068,7 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1910
2068
  show: { type: Boolean }
1911
2069
  },
1912
2070
  setup(t) {
1913
- let n = Y(), r = q(), c = p(ge, {
2071
+ let n = Y(), r = q(), c = p(xe, {
1914
2072
  show: () => {},
1915
2073
  startHide: () => {},
1916
2074
  hide: () => {}
@@ -1919,6 +2077,9 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1919
2077
  };
1920
2078
  return (r, u) => (y(), o("div", {
1921
2079
  class: h(["drawer-menu", [O(n).isDark.value ? "dark-theme" : "light-theme", { visible: t.show }]]),
2080
+ role: "navigation",
2081
+ "aria-label": "功能导航",
2082
+ "aria-hidden": !t.show,
1922
2083
  onMouseenter: u[0] ||= (e) => O(c).show(),
1923
2084
  onMouseleave: u[1] ||= (e) => O(c).startHide()
1924
2085
  }, [u[2] ||= s("div", { class: "drawer-menu__header" }, [s("div", { class: "drawer-menu__title" }, [s("span", { class: "grid-icon" }, [
@@ -1926,40 +2087,49 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1926
2087
  s("span"),
1927
2088
  s("span"),
1928
2089
  s("span")
1929
- ]), s("span", null, "功能导航")])], -1), s("div", Jr, [s("div", Yr, [(y(!0), o(e, null, S(t.menus, (t) => (y(), o("div", {
2090
+ ]), s("span", null, "功能导航")])], -1), s("div", ti, [s("div", ni, [(y(!0), o(e, null, S(t.menus, (t) => (y(), o("div", {
1930
2091
  key: t.path,
1931
2092
  class: "drawer-menu__category"
1932
2093
  }, [s("div", {
1933
2094
  class: "drawer-menu__category-header",
1934
- onClick: (e) => l(t)
2095
+ role: "link",
2096
+ tabindex: "0",
2097
+ onClick: (e) => l(t),
2098
+ onKeydown: [M((e) => l(t), ["enter"]), M(N((e) => l(t), ["prevent"]), ["space"])]
1935
2099
  }, [O(n).iconComponent && t.meta?.icon ? (y(), i(T(O(n).iconComponent), {
1936
2100
  key: 0,
1937
2101
  name: t.meta.icon,
1938
2102
  size: 18
1939
- }, null, 8, ["name"])) : a("", !0), s("span", null, E(t.meta?.title), 1)], 8, Xr), t.children && t.children.length > 0 ? (y(), o("div", Zr, [(y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
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", {
1940
2104
  key: e.path,
1941
2105
  class: "drawer-menu__item",
1942
- onClick: (t) => l(e)
2106
+ role: "link",
2107
+ tabindex: "0",
2108
+ onClick: (t) => l(e),
2109
+ onKeydown: [M((t) => l(e), ["enter"]), M(N((t) => l(e), ["prevent"]), ["space"])]
1943
2110
  }, [O(n).iconComponent && e.meta?.icon ? (y(), i(T(O(n).iconComponent), {
1944
2111
  key: 0,
1945
2112
  name: e.meta.icon,
1946
2113
  size: 16
1947
- }, null, 8, ["name"])) : a("", !0), s("span", $r, E(e.meta?.title), 1)], 8, Qr))), 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", ei, [s("div", ti, E(t.meta?.title), 1), (y(!0), o(e, null, S(t.children, (e) => (y(), o("div", {
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", {
1948
2115
  key: e.path,
1949
2116
  class: "drawer-menu__item drawer-menu__item--sub",
1950
- onClick: (t) => l(e)
2117
+ role: "link",
2118
+ tabindex: "0",
2119
+ onClick: (t) => l(e),
2120
+ onKeydown: [M((t) => l(e), ["enter"]), M(N((t) => l(e), ["prevent"]), ["space"])]
1951
2121
  }, [O(n).iconComponent && e.meta?.icon ? (y(), i(T(O(n).iconComponent), {
1952
2122
  key: 0,
1953
2123
  name: e.meta.icon,
1954
2124
  size: 14
1955
- }, null, 8, ["name"])) : a("", !0), s("span", ri, E(e.meta?.title), 1)], 8, ni))), 128))])) : a("", !0)], 64))), 128))])) : a("", !0)]))), 128))])])], 34));
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));
1956
2126
  }
1957
- }), [["__scopeId", "data-v-b0d3e73b"]]), ai = /* @__PURE__ */ Q(/* @__PURE__ */ d({
2127
+ }), [["__scopeId", "data-v-91d54a20"]]), fi = /* @__PURE__ */ Q(/* @__PURE__ */ d({
1958
2128
  name: "MenuTrigger",
1959
2129
  __name: "index",
1960
2130
  props: { show: { type: Boolean } },
1961
2131
  setup(e) {
1962
- let t = p(ge, {
2132
+ let t = p(xe, {
1963
2133
  show: () => {},
1964
2134
  startHide: () => {},
1965
2135
  hide: () => {}
@@ -1977,11 +2147,11 @@ var Ne = { class: "mix-layout-container" }, Pe = { class: "logo-container" }, Fe
1977
2147
  }), [["__scopeId", "data-v-2c20af78"]]);
1978
2148
  //#endregion
1979
2149
  //#region src/setup.ts
1980
- function oi(e, t = {}) {
1981
- let n = pe(t);
2150
+ function pi(e, t = {}) {
2151
+ let n = ve(t);
1982
2152
  return n().syncCSSVariables(), n;
1983
2153
  }
1984
2154
  //#endregion
1985
- export { le as BORDER_RADIUS_MAP, vr as BrandLogo, de as COLOR_SWATCHES, $t as C_CardLayout, $t as CardLayout, tn as C_LayoutContainer, Je as C_MixLayout, Je as MixLayout, dt as C_MixTopLayout, dt as MixTopLayout, Mt as C_ReverseHorizontalMixLayout, Mt as ReverseHorizontalMixLayout, _e as C_SideLayout, _e as SideLayout, je as C_TopLayout, je as TopLayout, X as DEFAULT_BRAND_CONFIG, J as DEFAULT_SETTINGS, ge as DRAWER_HANDLER_KEY, ii as DrawerMenu, Ir as FloatingMenu, wr as IconMenu, he as LAYOUT_CONTEXT_KEY, ce as LAYOUT_MODES, ai as MenuTrigger, oe as PRESET_COLORS, $ as ResponsiveMenu, ur as SettingsDrawer, qr as SideMenu, se as THEME_PRESETS, ue as TRANSITION_MAP, fe as adjustColor, pe as createSettingsStore, oi as setupLayout, Z as useLayoutCache, Y as useLayoutContext, Me as useMenuSplit, me as useSettingsStore };
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 };
1986
2156
 
1987
2157
  //# sourceMappingURL=index.js.map