@robot-admin/layout 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1635 @@
1
+ import { A as e, C as t, F as n, L as r, M as i, O as a, P as o, T as s, c, f as l, g as u, j as d, n as f, t as p } from "./vue-BRQ1Fg0b.js";
2
+ import { Fragment as m, KeepAlive as h, Transition as g, computed as _, createBlock as v, createCommentVNode as y, createElementBlock as b, createElementVNode as x, createSlots as S, createTextVNode as C, createVNode as w, defineComponent as T, h as E, inject as D, isRef as O, mergeModels as k, normalizeClass as A, normalizeStyle as j, onUnmounted as M, openBlock as N, provide as P, ref as F, renderList as I, renderSlot as L, resolveComponent as ee, resolveDynamicComponent as R, toDisplayString as z, unref as B, useModel as te, watch as ne, withCtx as V, withKeys as H, withModifiers as U } from "vue";
3
+ import { NButton as W, NColorPicker as re, NDrawer as ie, NDrawerContent as ae, NDropdown as oe, NInput as se, NLayout as G, NLayoutContent as K, NLayoutSider as ce, NMenu as le, NRadioButton as q, NRadioGroup as J, NSlider as ue, NSwitch as Y, NTabPane as X, NTabs as de, useDialog as fe, useMessage as pe } from "naive-ui";
4
+ import { useRoute as me, useRouter as he } from "vue-router";
5
+ //#endregion
6
+ //#region src/components/LayoutRouterView/index.vue
7
+ var Z = /* @__PURE__ */ T({
8
+ name: "LayoutRouterView",
9
+ __name: "index",
10
+ setup(t) {
11
+ let n = r(), { cachedViews: i, maxCacheCount: a } = e();
12
+ return (e, t) => {
13
+ let r = ee("RouterView");
14
+ return N(), v(r, null, {
15
+ default: V(({ Component: e, route: t }) => [w(g, {
16
+ name: B(n).transitionName.value,
17
+ mode: "out-in"
18
+ }, {
19
+ default: V(() => [(N(), v(h, {
20
+ include: B(i),
21
+ max: B(a)
22
+ }, [(N(), v(R(e), { key: t.path }))], 1032, ["include", "max"]))]),
23
+ _: 2
24
+ }, 1032, ["name"])]),
25
+ _: 1
26
+ });
27
+ };
28
+ }
29
+ }), ge = /* @__PURE__ */ T({
30
+ name: "C_SideLayout",
31
+ __name: "index",
32
+ props: { collapsed: {
33
+ type: Boolean,
34
+ default: !1
35
+ } },
36
+ emits: ["update:collapsed"],
37
+ setup(e, { expose: t, emit: n }) {
38
+ let i = e, a = n, o = r(), s = F(i.collapsed);
39
+ ne(() => i.collapsed, (e) => {
40
+ s.value = e;
41
+ });
42
+ let c = _(() => s.value), l = (e) => {
43
+ s.value = e, a("update:collapsed", e);
44
+ };
45
+ return t({
46
+ collapsed: c,
47
+ toggleCollapse: () => {
48
+ let e = !s.value;
49
+ s.value = e, a("update:collapsed", e);
50
+ }
51
+ }), (e, t) => (N(), v(B(G), { "has-sider": "" }, {
52
+ default: V(() => [w(B(ce), {
53
+ bordered: "",
54
+ "collapse-mode": "width",
55
+ "collapsed-width": B(o).sidebarCollapsedWidth.value,
56
+ width: B(o).sidebarWidth.value,
57
+ "native-scrollbar": !1,
58
+ collapsed: c.value,
59
+ "onUpdate:collapsed": l,
60
+ class: A([
61
+ "layout-sider",
62
+ "no-horizontal-scroll",
63
+ B(o).isDark.value ? "dark-theme" : "light-theme"
64
+ ])
65
+ }, {
66
+ default: V(() => [L(e.$slots, "logo"), L(e.$slots, "menu", { collapsed: c.value })]),
67
+ _: 3
68
+ }, 8, [
69
+ "collapsed-width",
70
+ "width",
71
+ "collapsed",
72
+ "class"
73
+ ]), w(B(G), null, {
74
+ default: V(() => [
75
+ L(e.$slots, "header"),
76
+ w(B(K), { class: "content-with-header p16px app-content" }, {
77
+ default: V(() => [w(Z)]),
78
+ _: 1
79
+ }),
80
+ L(e.$slots, "footer")
81
+ ]),
82
+ _: 3
83
+ })]),
84
+ _: 3
85
+ }));
86
+ }
87
+ }), _e = { class: "responsive-menu__visible" }, ve = { class: "responsive-menu__more" }, ye = /* @__PURE__ */ T({
88
+ name: "ResponsiveMenu",
89
+ __name: "index",
90
+ props: { data: {} },
91
+ setup(e) {
92
+ let t = e, n = me(), i = he(), o = r(), s = _(() => n.path), { containerRef: c, visibleItems: l, hiddenItems: u } = a({ data: () => t.data || [] }), d = (e) => {
93
+ c.value = e instanceof HTMLElement ? e : void 0;
94
+ }, f = o.isDark, p = {
95
+ itemTextColor: "rgba(51, 65, 85, 0.85)",
96
+ itemTextColorHover: "rgba(30, 64, 175, 0.95)",
97
+ itemTextColorActive: "rgba(30, 64, 175, 1)",
98
+ itemTextColorActiveHover: "rgba(30, 64, 175, 1)",
99
+ itemTextColorChildActive: "rgba(30, 64, 175, 1)",
100
+ itemIconColor: "rgba(51, 65, 85, 0.7)",
101
+ itemIconColorHover: "rgba(30, 64, 175, 0.85)",
102
+ itemIconColorActive: "rgba(30, 64, 175, 1)",
103
+ itemIconColorActiveHover: "rgba(30, 64, 175, 1)",
104
+ itemIconColorChildActive: "rgba(30, 64, 175, 1)",
105
+ itemColorHover: "rgba(30, 64, 175, 0.06)",
106
+ itemColorActive: "rgba(30, 64, 175, 0.1)",
107
+ itemColorActiveHover: "rgba(30, 64, 175, 0.12)",
108
+ itemColorActiveCollapsed: "rgba(30, 64, 175, 0.1)",
109
+ arrowColor: "rgba(51, 65, 85, 0.6)",
110
+ arrowColorHover: "rgba(30, 64, 175, 0.8)",
111
+ arrowColorActive: "rgba(30, 64, 175, 1)",
112
+ arrowColorChildActive: "rgba(30, 64, 175, 1)",
113
+ itemHeight: "42px",
114
+ itemPadding: "0 18px",
115
+ itemBorderRadius: "10px",
116
+ groupTextColor: "rgba(51, 65, 85, 0.65)"
117
+ }, m = {
118
+ itemTextColor: "rgba(226, 232, 240, 0.85)",
119
+ itemTextColorHover: "rgba(255, 255, 255, 0.95)",
120
+ itemTextColorActive: "rgba(147, 197, 253, 1)",
121
+ itemTextColorActiveHover: "rgba(147, 197, 253, 1)",
122
+ itemTextColorChildActive: "rgba(147, 197, 253, 1)",
123
+ itemIconColor: "rgba(226, 232, 240, 0.7)",
124
+ itemIconColorHover: "rgba(255, 255, 255, 0.85)",
125
+ itemIconColorActive: "rgba(147, 197, 253, 1)",
126
+ itemIconColorActiveHover: "rgba(147, 197, 253, 1)",
127
+ itemIconColorChildActive: "rgba(147, 197, 253, 1)",
128
+ itemColorHover: "rgba(59, 130, 246, 0.1)",
129
+ itemColorActive: "rgba(59, 130, 246, 0.15)",
130
+ itemColorActiveHover: "rgba(59, 130, 246, 0.18)",
131
+ itemColorActiveCollapsed: "rgba(59, 130, 246, 0.15)",
132
+ arrowColor: "rgba(226, 232, 240, 0.5)",
133
+ arrowColorHover: "rgba(255, 255, 255, 0.7)",
134
+ arrowColorActive: "rgba(147, 197, 253, 1)",
135
+ arrowColorChildActive: "rgba(147, 197, 253, 1)",
136
+ itemHeight: "42px",
137
+ itemPadding: "0 18px",
138
+ itemBorderRadius: "10px",
139
+ groupTextColor: "rgba(226, 232, 240, 0.6)"
140
+ }, h = _(() => f.value ? m : p), g = (e, t = 18) => o.iconComponent ? () => E(o.iconComponent, {
141
+ name: e,
142
+ size: t
143
+ }) : () => E("i", {
144
+ class: e,
145
+ style: {
146
+ fontSize: `${t}px`,
147
+ display: "inline-flex",
148
+ alignItems: "center"
149
+ }
150
+ }), S = (e) => e.meta?.icon ?? (typeof e.icon == "string" ? e.icon : void 0), C = (e) => {
151
+ let t = S(e);
152
+ return {
153
+ key: e.path || e.key || "",
154
+ label: e.meta?.title || e.label || e.name || "",
155
+ icon: t ? g(t, 18) : void 0,
156
+ children: e.children?.length ? e.children.map(C) : void 0
157
+ };
158
+ }, T = _(() => l.value.map(C)), D = _(() => u.value.map((e) => {
159
+ let t = S(e);
160
+ return {
161
+ key: e.path || e.key || "",
162
+ label: e.meta?.title || e.label || e.name || "",
163
+ icon: t ? g(t, 16) : void 0,
164
+ children: e.children?.length ? e.children.map((e) => {
165
+ let t = S(e);
166
+ return {
167
+ key: e.path || e.key || "",
168
+ label: e.meta?.title || e.label || e.name || "",
169
+ icon: t ? g(t, 16) : void 0
170
+ };
171
+ }) : void 0
172
+ };
173
+ })), O = (e) => {
174
+ e && i.push(e);
175
+ };
176
+ return (e, t) => (N(), b("div", {
177
+ ref: d,
178
+ class: "responsive-menu"
179
+ }, [x("div", _e, [T.value.length > 0 ? (N(), v(B(le), {
180
+ key: 0,
181
+ mode: "horizontal",
182
+ value: s.value,
183
+ options: T.value,
184
+ "theme-overrides": h.value,
185
+ "onUpdate:value": O
186
+ }, null, 8, [
187
+ "value",
188
+ "options",
189
+ "theme-overrides"
190
+ ])) : y("", !0)]), B(u).length > 0 ? (N(), v(B(oe), {
191
+ key: 0,
192
+ options: D.value,
193
+ placement: "bottom-end",
194
+ trigger: "hover",
195
+ onSelect: O
196
+ }, {
197
+ default: V(() => [x("div", ve, [w(B(W), {
198
+ text: "",
199
+ class: "responsive-menu__more-btn"
200
+ }, {
201
+ default: V(() => [...t[0] ||= [x("span", { class: "dots-icon" }, [
202
+ x("span"),
203
+ x("span"),
204
+ x("span")
205
+ ], -1)]]),
206
+ _: 1
207
+ })])]),
208
+ _: 1
209
+ }, 8, ["options"])) : y("", !0)], 512));
210
+ }
211
+ }), Q = (e, t) => {
212
+ let n = e.__vccOpts || e;
213
+ for (let [e, r] of t) n[e] = r;
214
+ return n;
215
+ }, $ = /* @__PURE__ */ Q(ye, [["__scopeId", "data-v-e1abe4de"]]), be = { class: "top-layout-container" }, xe = { class: "navbar-left" }, Se = { class: "logo-container" }, Ce = [
216
+ "src",
217
+ "width",
218
+ "height"
219
+ ], we = [
220
+ "src",
221
+ "width",
222
+ "height",
223
+ "alt"
224
+ ], Te = { class: "brand-name" }, Ee = { class: "brand-title" }, De = { class: "brand-subtitle" }, Oe = { class: "navbar-center" }, ke = { class: "page-content" }, Ae = /* @__PURE__ */ T({
225
+ name: "C_TopLayout",
226
+ __name: "index",
227
+ setup(e) {
228
+ let t = r(), n = t.isDark, i = _(() => t.menus.value), a = _(() => t.showTagsView.value), o = _(() => t.tagsViewHeight.value), s = _(() => t.showFooter.value), c = {
229
+ ...d,
230
+ ...t.brand
231
+ };
232
+ return (e, t) => (N(), b("div", be, [
233
+ x("div", { class: A(["top-navbar", [B(n) ? "dark-theme" : "light-theme"]]) }, [
234
+ x("div", xe, [L(e.$slots, "logo", {}, () => [
235
+ x("div", Se, [t[0] ||= x("div", { class: "logo-glow" }, null, -1), c.logoType === "video" && c.logoSrc ? (N(), b("video", {
236
+ key: 0,
237
+ src: c.logoSrc,
238
+ width: c.logoSize || 36,
239
+ height: c.logoSize || 36,
240
+ autoplay: "",
241
+ loop: "",
242
+ muted: "",
243
+ playsinline: "",
244
+ class: "logo-video"
245
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ce)) : c.logoSrc ? (N(), b("img", {
246
+ key: 1,
247
+ src: c.logoSrc,
248
+ width: c.logoSize || 36,
249
+ height: c.logoSize || 36,
250
+ class: "logo-video",
251
+ alt: c.name || "Logo"
252
+ }, null, 8, we)) : y("", !0)]),
253
+ x("div", Te, [x("span", Ee, z(c.name), 1), x("span", De, z(c.subtitle), 1)]),
254
+ t[1] ||= x("div", { class: "navbar-divider" }, null, -1)
255
+ ])]),
256
+ x("div", Oe, [L(e.$slots, "menu", {}, () => [w($, { data: i.value }, null, 8, ["data"])])]),
257
+ L(e.$slots, "header-extra")
258
+ ], 2),
259
+ a.value ? (N(), b("div", {
260
+ key: 0,
261
+ class: "tags-view-container",
262
+ style: j({ height: `${o.value}px` })
263
+ }, [L(e.$slots, "tags-view")], 4)) : y("", !0),
264
+ w(B(G), null, {
265
+ default: V(() => [w(B(K), { class: "main-content" }, {
266
+ default: V(() => [x("div", ke, [w(Z)])]),
267
+ _: 1
268
+ }), s.value ? L(e.$slots, "footer", {}, void 0, void 0, 0) : y("", !0)]),
269
+ _: 3
270
+ })
271
+ ]));
272
+ }
273
+ }), je = { class: "mix-layout-container" }, Me = { class: "logo-container" }, Ne = [
274
+ "src",
275
+ "width",
276
+ "height"
277
+ ], Pe = [
278
+ "src",
279
+ "width",
280
+ "height",
281
+ "alt"
282
+ ], Fe = { class: "first-menu-list" }, Ie = [
283
+ "tabindex",
284
+ "aria-disabled",
285
+ "onClick",
286
+ "onKeydown"
287
+ ], Le = { class: "menu-item-content" }, Re = {
288
+ key: 1,
289
+ class: "menu-item-text"
290
+ }, ze = { class: "menu-item-label" }, Be = { class: "second-menu-header" }, Ve = { class: "menu-title" }, He = { class: "second-menu-list" }, Ue = [
291
+ "tabindex",
292
+ "aria-disabled",
293
+ "onClick",
294
+ "onKeydown"
295
+ ], We = { class: "menu-item-label" }, Ge = { class: "main-layout" }, Ke = /* @__PURE__ */ T({
296
+ name: "C_MixLayout",
297
+ __name: "index",
298
+ setup(e) {
299
+ let n = r(), i = n.isDark, a = _(() => n.menus.value), o = _(() => n.showFooter.value), c = {
300
+ ...d,
301
+ ...n.brand
302
+ }, l = s({
303
+ menus: n.menus,
304
+ floatingSecondMenu: _(() => !0)
305
+ }), u = t();
306
+ return (e, t) => (N(), b("div", je, [
307
+ x("div", { class: A(["first-level-menu", [B(i) ? "dark-theme" : "light-theme"]]) }, [x("div", Me, [L(e.$slots, "logo", {}, () => [t[0] ||= x("div", { class: "logo-glow" }, null, -1), c.logoType === "video" && c.logoSrc ? (N(), b("video", {
308
+ key: 0,
309
+ src: c.logoSrc,
310
+ width: c.logoSize || 40,
311
+ height: c.logoSize || 40,
312
+ autoplay: "",
313
+ loop: "",
314
+ muted: "",
315
+ playsinline: "",
316
+ class: "logo-video"
317
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ne)) : c.logoSrc ? (N(), b("img", {
318
+ key: 1,
319
+ src: c.logoSrc,
320
+ width: c.logoSize || 40,
321
+ height: c.logoSize || 40,
322
+ class: "logo-video",
323
+ alt: c.name || "Logo"
324
+ }, null, 8, Pe)) : y("", !0)])]), x("div", Fe, [(N(!0), b(m, null, I(a.value, (e) => (N(), b("div", {
325
+ key: e.path,
326
+ class: A(["first-menu-item", { active: B(l).activeFirstMenu.value === e.path }]),
327
+ role: "button",
328
+ tabindex: e.disabled ? -1 : 0,
329
+ "aria-disabled": e.disabled || void 0,
330
+ onClick: (t) => B(l).handleFirstMenuClick(e),
331
+ onKeydown: [H((t) => B(l).handleFirstMenuClick(e), ["enter"]), H(U((t) => B(l).handleFirstMenuClick(e), ["prevent"]), ["space"])]
332
+ }, [x("div", Le, [e.meta?.icon ? (N(), v(R(B(u)), {
333
+ key: 0,
334
+ name: e.meta.icon,
335
+ size: 22
336
+ }, null, 8, ["name"])) : (N(), b("span", Re, z((e.meta?.title || "")[0]), 1))]), x("span", ze, z(e.meta?.title), 1)], 42, Ie))), 128))])], 2),
337
+ w(g, { name: "slide-fade" }, {
338
+ default: V(() => [B(l).showSecondMenu.value ? (N(), b("div", {
339
+ key: 0,
340
+ class: A(["second-level-menu-popup", [B(i) ? "dark-theme" : "light-theme"]])
341
+ }, [x("div", Be, [B(l).displayMenuItem.value?.meta?.icon ? (N(), v(R(B(u)), {
342
+ key: 0,
343
+ name: B(l).displayMenuItem.value.meta.icon,
344
+ size: 20
345
+ }, null, 8, ["name"])) : y("", !0), x("span", Ve, z(B(l).displayMenuItem.value?.meta?.title), 1)]), x("div", He, [(N(!0), b(m, null, I(B(l).displayMenuItem.value?.children || [], (e) => (N(), b("div", {
346
+ key: e.path,
347
+ class: A(["second-menu-item", { active: B(l).isMenuItemActive(e.path) }]),
348
+ role: "link",
349
+ tabindex: e.disabled ? -1 : 0,
350
+ "aria-disabled": e.disabled || void 0,
351
+ onClick: (t) => B(l).handleSecondMenuClick(e),
352
+ onKeydown: [H((t) => B(l).handleSecondMenuClick(e), ["enter"]), H(U((t) => B(l).handleSecondMenuClick(e), ["prevent"]), ["space"])]
353
+ }, [e.meta?.icon ? (N(), v(R(B(u)), {
354
+ key: 0,
355
+ name: e.meta.icon,
356
+ size: 16
357
+ }, null, 8, ["name"])) : y("", !0), x("span", We, z(e.meta?.title), 1)], 42, Ue))), 128))])], 2)) : y("", !0)]),
358
+ _: 1
359
+ }),
360
+ x("div", Ge, [L(e.$slots, "header"), w(B(G), null, {
361
+ default: V(() => [w(B(K), { class: "content-with-header p16px app-content" }, {
362
+ default: V(() => [w(Z)]),
363
+ _: 1
364
+ }), o.value ? L(e.$slots, "footer", {}, void 0, void 0, 0) : y("", !0)]),
365
+ _: 3
366
+ })])
367
+ ]));
368
+ }
369
+ }), qe = { class: "mix-top-layout-container" }, Je = { class: "logo-container" }, Ye = [
370
+ "src",
371
+ "width",
372
+ "height"
373
+ ], Xe = [
374
+ "src",
375
+ "width",
376
+ "height",
377
+ "alt"
378
+ ], Ze = { class: "first-menu-list" }, Qe = [
379
+ "tabindex",
380
+ "aria-disabled",
381
+ "aria-current",
382
+ "onClick",
383
+ "onKeydown"
384
+ ], $e = { class: "menu-item-content" }, et = {
385
+ key: 1,
386
+ class: "menu-item-text"
387
+ }, tt = { class: "menu-item-label" }, nt = { class: "main-area" }, rt = { class: "navbar-left" }, it = { class: "brand-name" }, at = { class: "brand-title" }, ot = { class: "brand-subtitle" }, st = { class: "navbar-center" }, ct = { class: "page-content" }, lt = /* @__PURE__ */ T({
388
+ name: "C_MixTopLayout",
389
+ __name: "index",
390
+ setup(e) {
391
+ let n = r(), i = n.isDark, a = _(() => n.menus.value), o = _(() => n.showTagsView.value), c = _(() => n.tagsViewHeight.value), l = _(() => n.showFooter.value), u = {
392
+ ...d,
393
+ ...n.brand
394
+ }, f = s({
395
+ menus: n.menus,
396
+ floatingSecondMenu: _(() => !1)
397
+ }), p = t();
398
+ return (e, t) => (N(), b("div", qe, [x("div", { class: A(["first-level-sidebar", [B(i) ? "dark-theme" : "light-theme"]]) }, [x("div", Je, [L(e.$slots, "logo", {}, () => [t[0] ||= x("div", { class: "logo-glow" }, null, -1), u.logoType === "video" && u.logoSrc ? (N(), b("video", {
399
+ key: 0,
400
+ src: u.logoSrc,
401
+ width: u.logoSize || 40,
402
+ height: u.logoSize || 40,
403
+ autoplay: "",
404
+ loop: "",
405
+ muted: "",
406
+ playsinline: "",
407
+ class: "logo-video"
408
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ye)) : u.logoSrc ? (N(), b("img", {
409
+ key: 1,
410
+ src: u.logoSrc,
411
+ width: u.logoSize || 40,
412
+ height: u.logoSize || 40,
413
+ class: "logo-video",
414
+ alt: u.name || "Logo"
415
+ }, null, 8, Xe)) : y("", !0)])]), x("div", Ze, [(N(!0), b(m, null, I(a.value, (e) => (N(), b("div", {
416
+ key: e.path,
417
+ class: A(["first-menu-item", { active: B(f).activeFirstMenu.value === e.path }]),
418
+ role: "button",
419
+ tabindex: e.disabled ? -1 : 0,
420
+ "aria-disabled": e.disabled || void 0,
421
+ "aria-current": B(f).activeFirstMenu.value === e.path ? "page" : void 0,
422
+ onClick: (t) => B(f).handleFirstMenuClick(e),
423
+ onKeydown: [H((t) => B(f).handleFirstMenuClick(e), ["enter"]), H(U((t) => B(f).handleFirstMenuClick(e), ["prevent"]), ["space"])]
424
+ }, [x("div", $e, [e.meta?.icon ? (N(), v(R(B(p)), {
425
+ key: 0,
426
+ name: e.meta.icon,
427
+ size: 22
428
+ }, null, 8, ["name"])) : (N(), b("span", et, z((e.meta?.title || "")[0]), 1))]), x("span", tt, z(e.meta?.title), 1)], 42, Qe))), 128))])], 2), x("div", nt, [
429
+ x("div", { class: A(["top-navbar", [B(i) ? "dark-theme" : "light-theme"]]) }, [
430
+ x("div", rt, [L(e.$slots, "brand", {}, () => [x("div", it, [x("span", at, z(u.name), 1), x("span", ot, z(u.subtitle), 1)]), t[1] ||= x("div", { class: "navbar-divider" }, null, -1)])]),
431
+ x("div", st, [L(e.$slots, "top-menu", {}, () => [B(f).currentSecondMenus.value.length > 0 ? (N(), v($, {
432
+ key: 0,
433
+ data: B(f).currentSecondMenus.value
434
+ }, null, 8, ["data"])) : y("", !0)])]),
435
+ L(e.$slots, "header-extra")
436
+ ], 2),
437
+ o.value ? (N(), b("div", {
438
+ key: 0,
439
+ class: "tags-view-container",
440
+ style: j({ height: `${c.value}px` })
441
+ }, [L(e.$slots, "tags-view")], 4)) : y("", !0),
442
+ w(B(G), { class: "content-layout" }, {
443
+ default: V(() => [w(B(K), { class: "main-content" }, {
444
+ default: V(() => [x("div", ct, [w(Z)])]),
445
+ _: 1
446
+ }), l.value ? L(e.$slots, "footer", {}, void 0, void 0, 0) : y("", !0)]),
447
+ _: 3
448
+ })
449
+ ])]));
450
+ }
451
+ }), ut = { class: "reverse-horizontal-mix-layout-container" }, dt = { class: "navbar-left" }, ft = { class: "logo-container" }, pt = [
452
+ "src",
453
+ "width",
454
+ "height"
455
+ ], mt = [
456
+ "src",
457
+ "width",
458
+ "height",
459
+ "alt"
460
+ ], ht = { class: "brand-name" }, gt = { class: "brand-title" }, _t = { class: "brand-subtitle" }, vt = { class: "navbar-center" }, yt = { class: "main-area" }, bt = { class: "page-content" }, xt = ["aria-expanded", "onKeydown"], St = { class: "header-icon" }, Ct = { class: "header-title" }, wt = { class: "sidebar-menu-list" }, Tt = {
461
+ key: 0,
462
+ class: "menu-group"
463
+ }, Et = { class: "group-title" }, Dt = [
464
+ "tabindex",
465
+ "aria-disabled",
466
+ "aria-current",
467
+ "onClick",
468
+ "onKeydown"
469
+ ], Ot = { class: "item-title" }, kt = [
470
+ "tabindex",
471
+ "aria-disabled",
472
+ "aria-current",
473
+ "onClick",
474
+ "onKeydown"
475
+ ], At = { class: "item-title" }, jt = /* @__PURE__ */ T({
476
+ name: "C_ReverseHorizontalMixLayout",
477
+ __name: "index",
478
+ setup(e) {
479
+ let n = r(), i = n.isDark, a = _(() => n.menus.value), o = _(() => n.showTagsView.value), c = _(() => n.tagsViewHeight.value), l = _(() => n.showFooter.value), u = {
480
+ ...d,
481
+ ...n.brand
482
+ }, f = s({
483
+ menus: n.menus,
484
+ floatingSecondMenu: _(() => !1)
485
+ }), p = F(!1), h = () => {
486
+ p.value = !p.value;
487
+ }, g = t();
488
+ return (e, t) => (N(), b("div", ut, [
489
+ x("div", { class: A(["top-navbar", [B(i) ? "dark-theme" : "light-theme"]]) }, [
490
+ x("div", dt, [L(e.$slots, "logo", {}, () => [
491
+ x("div", ft, [t[0] ||= x("div", { class: "logo-glow" }, null, -1), u.logoType === "video" && u.logoSrc ? (N(), b("video", {
492
+ key: 0,
493
+ src: u.logoSrc,
494
+ width: u.logoSize || 36,
495
+ height: u.logoSize || 36,
496
+ autoplay: "",
497
+ loop: "",
498
+ muted: "",
499
+ playsinline: "",
500
+ class: "logo-video"
501
+ }, " 您的浏览器不支持 video 标签。 ", 8, pt)) : u.logoSrc ? (N(), b("img", {
502
+ key: 1,
503
+ src: u.logoSrc,
504
+ width: u.logoSize || 36,
505
+ height: u.logoSize || 36,
506
+ class: "logo-video",
507
+ alt: u.name || "Logo"
508
+ }, null, 8, mt)) : y("", !0)]),
509
+ x("div", ht, [x("span", gt, z(u.name), 1), x("span", _t, z(u.subtitle), 1)]),
510
+ t[1] ||= x("div", { class: "navbar-divider" }, null, -1)
511
+ ])]),
512
+ x("div", vt, [L(e.$slots, "top-menu", {}, () => [w($, { data: a.value }, null, 8, ["data"])])]),
513
+ L(e.$slots, "header-extra")
514
+ ], 2),
515
+ o.value ? (N(), b("div", {
516
+ key: 0,
517
+ class: "tags-view-container",
518
+ style: j({ height: `${c.value}px` })
519
+ }, [L(e.$slots, "tags-view")], 4)) : y("", !0),
520
+ x("div", yt, [
521
+ w(B(G), { class: "content-layout" }, {
522
+ default: V(() => [w(B(K), { class: "main-content" }, {
523
+ default: V(() => [x("div", bt, [w(Z)])]),
524
+ _: 1
525
+ }), l.value ? L(e.$slots, "footer", {}, void 0, void 0, 0) : y("", !0)]),
526
+ _: 3
527
+ }),
528
+ B(f).currentSecondMenus.value.length > 0 ? (N(), b("div", {
529
+ key: 0,
530
+ class: A(["sidebar-toggle", [B(i) ? "dark-theme" : "light-theme", { active: !p.value }]]),
531
+ onClick: h,
532
+ role: "button",
533
+ tabindex: "0",
534
+ "aria-expanded": !p.value,
535
+ onKeydown: [H(h, ["enter"]), H(U(h, ["prevent"]), ["space"])]
536
+ }, [x("span", { class: A([
537
+ "collapse-arrow",
538
+ "toggle-icon",
539
+ p.value ? "collapsed" : "expanded"
540
+ ]) }, [...t[2] ||= [x("span", { class: "arrow-line" }, null, -1), x("span", { class: "arrow-line" }, null, -1)]], 2)], 42, xt)) : y("", !0),
541
+ B(f).currentSecondMenus.value.length > 0 ? (N(), b("div", {
542
+ key: 1,
543
+ class: A(["right-sidebar-wrapper", { collapsed: p.value }])
544
+ }, [x("div", { class: A(["right-sidebar", [B(i) ? "dark-theme" : "light-theme"]]) }, [x("div", { class: A(["sidebar-header", [B(i) ? "dark-theme" : "light-theme"]]) }, [x("div", St, [B(f).activeFirstMenuItem.value?.meta?.icon ? (N(), v(R(B(g)), {
545
+ key: 0,
546
+ name: B(f).activeFirstMenuItem.value.meta.icon,
547
+ size: 20
548
+ }, null, 8, ["name"])) : y("", !0)]), x("span", Ct, z(B(f).activeFirstMenuItem.value?.meta?.title || "菜单"), 1)], 2), x("div", wt, [(N(!0), b(m, null, I(B(f).currentSecondMenus.value, (e) => (N(), b(m, { key: e.path }, [e.children && e.children.length > 0 ? (N(), b("div", Tt, [x("div", Et, [e.meta?.icon ? (N(), v(R(B(g)), {
549
+ key: 0,
550
+ name: e.meta.icon,
551
+ size: 16
552
+ }, null, 8, ["name"])) : y("", !0), x("span", null, z(e.meta?.title), 1)]), (N(!0), b(m, null, I(e.children, (e) => (N(), b("div", {
553
+ key: e.path,
554
+ class: A(["menu-item sub-item", { active: B(f).isMenuItemActive(e.path) }]),
555
+ role: "button",
556
+ tabindex: e.disabled ? -1 : 0,
557
+ "aria-disabled": e.disabled || void 0,
558
+ "aria-current": B(f).isMenuItemActive(e.path) ? "page" : void 0,
559
+ onClick: (t) => B(f).handleSecondMenuClick(e),
560
+ onKeydown: [H((t) => B(f).handleSecondMenuClick(e), ["enter"]), H(U((t) => B(f).handleSecondMenuClick(e), ["prevent"]), ["space"])]
561
+ }, [e.meta?.icon ? (N(), v(R(B(g)), {
562
+ key: 0,
563
+ name: e.meta.icon,
564
+ size: 16
565
+ }, null, 8, ["name"])) : y("", !0), x("span", Ot, z(e.meta?.title), 1)], 42, Dt))), 128))])) : (N(), b("div", {
566
+ key: 1,
567
+ class: A(["menu-item", { active: B(f).isMenuItemActive(e.path) }]),
568
+ role: "button",
569
+ tabindex: e.disabled ? -1 : 0,
570
+ "aria-disabled": e.disabled || void 0,
571
+ "aria-current": B(f).isMenuItemActive(e.path) ? "page" : void 0,
572
+ onClick: (t) => B(f).handleSecondMenuClick(e),
573
+ onKeydown: [H((t) => B(f).handleSecondMenuClick(e), ["enter"]), H(U((t) => B(f).handleSecondMenuClick(e), ["prevent"]), ["space"])]
574
+ }, [e.meta?.icon ? (N(), v(R(B(g)), {
575
+ key: 0,
576
+ name: e.meta.icon,
577
+ size: 18
578
+ }, null, 8, ["name"])) : y("", !0), x("span", At, z(e.meta?.title), 1)], 42, kt))], 64))), 128))])], 2)], 2)) : y("", !0)
579
+ ])
580
+ ]));
581
+ }
582
+ }), Mt = { class: "card-layout-container" }, Nt = { class: "navbar-left" }, Pt = { class: "logo-container" }, Ft = [
583
+ "src",
584
+ "width",
585
+ "height"
586
+ ], It = [
587
+ "src",
588
+ "width",
589
+ "height",
590
+ "alt"
591
+ ], Lt = { class: "brand-name" }, Rt = { class: "brand-title" }, zt = { class: "brand-subtitle" }, Bt = { class: "drawer-content" }, Vt = { class: "menu-grid" }, Ht = [
592
+ "tabindex",
593
+ "aria-disabled",
594
+ "onClick",
595
+ "onKeydown"
596
+ ], Ut = {
597
+ key: 0,
598
+ class: "category-items"
599
+ }, Wt = [
600
+ "tabindex",
601
+ "aria-disabled",
602
+ "onClick",
603
+ "onKeydown"
604
+ ], Gt = { class: "item-title" }, Kt = {
605
+ key: 0,
606
+ class: "submenu-items"
607
+ }, qt = { class: "submenu-title" }, Jt = [
608
+ "tabindex",
609
+ "aria-disabled",
610
+ "onClick",
611
+ "onKeydown"
612
+ ], Yt = { class: "item-title" }, Xt = { class: "main-content-area" }, Zt = { class: "page-content" }, Qt = /* @__PURE__ */ Q(/* @__PURE__ */ T({
613
+ name: "C_CardLayout",
614
+ __name: "index",
615
+ setup(e) {
616
+ let n = r(), i = he(), a = n.isDark, o = _(() => n.menus.value), s = _(() => n.showTagsView.value), c = _(() => n.tagsViewHeight.value), l = _(() => n.showFooter.value), u = {
617
+ ...d,
618
+ ...n.brand
619
+ }, f = F(!1), p = F(null), h = () => {
620
+ p.value && clearTimeout(p.value), p.value = setTimeout(() => {
621
+ f.value = !1;
622
+ }, 300);
623
+ }, g = () => {
624
+ p.value &&= (clearTimeout(p.value), null), f.value = !0;
625
+ }, S = (e) => {
626
+ !e.disabled && e.path && (i.push(e.path), f.value = !1);
627
+ }, C = t();
628
+ return M(() => {
629
+ p.value && clearTimeout(p.value);
630
+ }), (e, t) => (N(), b("div", Mt, [
631
+ x("div", { class: A(["top-navbar", [B(a) ? "dark-theme" : "light-theme"]]) }, [x("div", Nt, [x("div", {
632
+ class: "hover-trigger-area",
633
+ onMouseenter: g,
634
+ onMouseleave: h
635
+ }, [L(e.$slots, "menu-trigger", {}, () => [t[0] ||= x("div", { class: "menu-indicator" }, [x("span", { class: "hamburger-icon" }, [
636
+ x("span"),
637
+ x("span"),
638
+ x("span")
639
+ ])], -1)], !0)], 32), L(e.$slots, "logo", {}, () => [
640
+ x("div", Pt, [t[1] ||= x("div", { class: "logo-glow" }, null, -1), u.logoType === "video" && u.logoSrc ? (N(), b("video", {
641
+ key: 0,
642
+ src: u.logoSrc,
643
+ width: u.logoSize || 36,
644
+ height: u.logoSize || 36,
645
+ autoplay: "",
646
+ loop: "",
647
+ muted: "",
648
+ playsinline: "",
649
+ class: "logo-video"
650
+ }, " 您的浏览器不支持 video 标签。 ", 8, Ft)) : u.logoSrc ? (N(), b("img", {
651
+ key: 1,
652
+ src: u.logoSrc,
653
+ width: u.logoSize || 36,
654
+ height: u.logoSize || 36,
655
+ class: "logo-video",
656
+ alt: u.name || "Logo"
657
+ }, null, 8, It)) : y("", !0)]),
658
+ x("div", Lt, [x("span", Rt, z(u.name), 1), x("span", zt, z(u.subtitle), 1)]),
659
+ t[2] ||= x("div", { class: "navbar-divider" }, null, -1)
660
+ ], !0)]), L(e.$slots, "header-extra", {}, void 0, !0)], 2),
661
+ s.value ? (N(), b("div", {
662
+ key: 0,
663
+ class: "tags-view-container",
664
+ style: j({ height: `${c.value}px` })
665
+ }, [L(e.$slots, "tags-view", {}, void 0, !0)], 4)) : y("", !0),
666
+ x("div", {
667
+ class: A(["drawer-menu", [B(a) ? "dark-theme" : "light-theme", { visible: f.value }]]),
668
+ onMouseenter: g,
669
+ onMouseleave: h
670
+ }, [L(e.$slots, "drawer-menu", {}, () => [t[3] ||= x("div", { class: "drawer-header" }, [x("div", { class: "drawer-title" }, [x("span", { class: "grid-icon" }, [
671
+ x("span"),
672
+ x("span"),
673
+ x("span"),
674
+ x("span")
675
+ ]), x("span", null, "功能导航")])], -1), x("div", Bt, [x("div", Vt, [(N(!0), b(m, null, I(o.value, (e) => (N(), b("div", {
676
+ key: e.path,
677
+ class: "menu-category"
678
+ }, [x("div", {
679
+ class: "category-header",
680
+ role: "link",
681
+ tabindex: e.disabled ? -1 : 0,
682
+ "aria-disabled": e.disabled || void 0,
683
+ onClick: (t) => S(e),
684
+ onKeydown: [H((t) => S(e), ["enter"]), H(U((t) => S(e), ["prevent"]), ["space"])]
685
+ }, [e.meta?.icon ? (N(), v(R(B(C)), {
686
+ key: 0,
687
+ name: e.meta.icon,
688
+ size: 18
689
+ }, null, 8, ["name"])) : y("", !0), x("span", null, z(e.meta?.title), 1)], 40, Ht), e.children && e.children.length > 0 ? (N(), b("div", Ut, [(N(!0), b(m, null, I(e.children, (e) => (N(), b("div", {
690
+ key: e.path,
691
+ class: "menu-item",
692
+ role: "link",
693
+ tabindex: e.disabled ? -1 : 0,
694
+ "aria-disabled": e.disabled || void 0,
695
+ onClick: (t) => S(e),
696
+ onKeydown: [H((t) => S(e), ["enter"]), H(U((t) => S(e), ["prevent"]), ["space"])]
697
+ }, [e.meta?.icon ? (N(), v(R(B(C)), {
698
+ key: 0,
699
+ name: e.meta.icon,
700
+ size: 16
701
+ }, null, 8, ["name"])) : y("", !0), x("span", Gt, z(e.meta?.title), 1)], 40, Wt))), 128)), (N(!0), b(m, null, I(e.children, (e) => (N(), b(m, { key: "sub-" + e.path }, [e.children && e.children.length > 0 ? (N(), b("div", Kt, [x("div", qt, z(e.meta?.title), 1), (N(!0), b(m, null, I(e.children, (e) => (N(), b("div", {
702
+ key: e.path,
703
+ class: "menu-item submenu-item",
704
+ role: "link",
705
+ tabindex: e.disabled ? -1 : 0,
706
+ "aria-disabled": e.disabled || void 0,
707
+ onClick: (t) => S(e),
708
+ onKeydown: [H((t) => S(e), ["enter"]), H(U((t) => S(e), ["prevent"]), ["space"])]
709
+ }, [e.meta?.icon ? (N(), v(R(B(C)), {
710
+ key: 0,
711
+ name: e.meta.icon,
712
+ size: 14
713
+ }, null, 8, ["name"])) : y("", !0), x("span", Yt, z(e.meta?.title), 1)], 40, Jt))), 128))])) : y("", !0)], 64))), 128))])) : y("", !0)]))), 128))])])], !0)], 34),
714
+ x("div", Xt, [w(B(G), { class: "content-layout" }, {
715
+ default: V(() => [w(B(K), { class: "main-content p16px app-content" }, {
716
+ default: V(() => [x("div", Zt, [w(Z)])]),
717
+ _: 1
718
+ }), l.value ? L(e.$slots, "footer", {}, void 0, !0, 0) : y("", !0)]),
719
+ _: 3
720
+ })])
721
+ ]));
722
+ }
723
+ }), [["__scopeId", "data-v-e4257b69"]]), $t = {
724
+ key: 6,
725
+ class: "layout-coming-soon"
726
+ }, en = /* @__PURE__ */ T({
727
+ name: "C_LayoutContainer",
728
+ __name: "index",
729
+ setup(e) {
730
+ let t = r(), i = t.layoutMode, a = t.isDark, o = F(!1), s = _({
731
+ get: () => t.collapsed?.value ?? o.value,
732
+ set: (e) => {
733
+ t.collapsed ? t.collapsed.value = e : o.value = e;
734
+ }
735
+ }), c = {
736
+ isCollapsed: s,
737
+ handleCollapsedChange: (e) => {
738
+ s.value = e;
739
+ }
740
+ };
741
+ return P(n, c), P("menuCollapse", c), (e, t) => (N(), b("div", {
742
+ "data-ra-layout": "",
743
+ class: A(["layout-container", B(a) ? "dark-mode" : "light-mode"])
744
+ }, [B(i) === "side" ? (N(), v(ge, {
745
+ key: 0,
746
+ collapsed: s.value,
747
+ "onUpdate:collapsed": t[0] ||= (e) => s.value = e
748
+ }, S({
749
+ menu: V(() => [L(e.$slots, "menu", { collapsed: s.value })]),
750
+ header: V(() => [L(e.$slots, "header")]),
751
+ footer: V(() => [L(e.$slots, "footer")]),
752
+ _: 2
753
+ }, [e.$slots.logo ? {
754
+ name: "logo",
755
+ fn: V(() => [L(e.$slots, "logo")]),
756
+ key: "0"
757
+ } : void 0]), 1032, ["collapsed"])) : B(i) === "top" ? (N(), v(Ae, { key: 1 }, S({ _: 2 }, [
758
+ e.$slots.logo ? {
759
+ name: "logo",
760
+ fn: V(() => [L(e.$slots, "logo")]),
761
+ key: "0"
762
+ } : void 0,
763
+ e.$slots["top-menu"] ? {
764
+ name: "menu",
765
+ fn: V(() => [L(e.$slots, "top-menu")]),
766
+ key: "1"
767
+ } : void 0,
768
+ e.$slots["header-extra"] ? {
769
+ name: "header-extra",
770
+ fn: V(() => [L(e.$slots, "header-extra")]),
771
+ key: "2"
772
+ } : void 0,
773
+ e.$slots["tags-view"] ? {
774
+ name: "tags-view",
775
+ fn: V(() => [L(e.$slots, "tags-view")]),
776
+ key: "3"
777
+ } : void 0,
778
+ e.$slots.footer ? {
779
+ name: "footer",
780
+ fn: V(() => [L(e.$slots, "footer")]),
781
+ key: "4"
782
+ } : void 0
783
+ ]), 1024)) : B(i) === "mix" ? (N(), v(Ke, { key: 2 }, S({
784
+ header: V(() => [L(e.$slots, "header")]),
785
+ _: 2
786
+ }, [e.$slots.logo ? {
787
+ name: "logo",
788
+ fn: V(() => [L(e.$slots, "logo")]),
789
+ key: "0"
790
+ } : void 0, e.$slots.footer ? {
791
+ name: "footer",
792
+ fn: V(() => [L(e.$slots, "footer")]),
793
+ key: "1"
794
+ } : void 0]), 1024)) : B(i) === "mix-top" ? (N(), v(lt, { key: 3 }, S({ _: 2 }, [
795
+ e.$slots.logo ? {
796
+ name: "logo",
797
+ fn: V(() => [L(e.$slots, "logo")]),
798
+ key: "0"
799
+ } : void 0,
800
+ e.$slots.brand ? {
801
+ name: "brand",
802
+ fn: V(() => [L(e.$slots, "brand")]),
803
+ key: "1"
804
+ } : void 0,
805
+ e.$slots["top-menu"] ? {
806
+ name: "top-menu",
807
+ fn: V(() => [L(e.$slots, "top-menu")]),
808
+ key: "2"
809
+ } : void 0,
810
+ e.$slots["header-extra"] ? {
811
+ name: "header-extra",
812
+ fn: V(() => [L(e.$slots, "header-extra")]),
813
+ key: "3"
814
+ } : void 0,
815
+ e.$slots["tags-view"] ? {
816
+ name: "tags-view",
817
+ fn: V(() => [L(e.$slots, "tags-view")]),
818
+ key: "4"
819
+ } : void 0,
820
+ e.$slots.footer ? {
821
+ name: "footer",
822
+ fn: V(() => [L(e.$slots, "footer")]),
823
+ key: "5"
824
+ } : void 0
825
+ ]), 1024)) : B(i) === "reverse-horizontal-mix" ? (N(), v(jt, { key: 4 }, S({ _: 2 }, [
826
+ e.$slots.logo ? {
827
+ name: "logo",
828
+ fn: V(() => [L(e.$slots, "logo")]),
829
+ key: "0"
830
+ } : void 0,
831
+ e.$slots["top-menu"] ? {
832
+ name: "top-menu",
833
+ fn: V(() => [L(e.$slots, "top-menu")]),
834
+ key: "1"
835
+ } : void 0,
836
+ e.$slots["header-extra"] ? {
837
+ name: "header-extra",
838
+ fn: V(() => [L(e.$slots, "header-extra")]),
839
+ key: "2"
840
+ } : void 0,
841
+ e.$slots["tags-view"] ? {
842
+ name: "tags-view",
843
+ fn: V(() => [L(e.$slots, "tags-view")]),
844
+ key: "3"
845
+ } : void 0,
846
+ e.$slots.footer ? {
847
+ name: "footer",
848
+ fn: V(() => [L(e.$slots, "footer")]),
849
+ key: "4"
850
+ } : void 0
851
+ ]), 1024)) : B(i) === "card-layout" ? (N(), v(Qt, { key: 5 }, S({ _: 2 }, [
852
+ e.$slots["menu-trigger"] ? {
853
+ name: "menu-trigger",
854
+ fn: V(() => [L(e.$slots, "menu-trigger")]),
855
+ key: "0"
856
+ } : void 0,
857
+ e.$slots.logo ? {
858
+ name: "logo",
859
+ fn: V(() => [L(e.$slots, "logo")]),
860
+ key: "1"
861
+ } : void 0,
862
+ e.$slots["header-extra"] ? {
863
+ name: "header-extra",
864
+ fn: V(() => [L(e.$slots, "header-extra")]),
865
+ key: "2"
866
+ } : void 0,
867
+ e.$slots["tags-view"] ? {
868
+ name: "tags-view",
869
+ fn: V(() => [L(e.$slots, "tags-view")]),
870
+ key: "3"
871
+ } : void 0,
872
+ e.$slots["drawer-menu"] ? {
873
+ name: "drawer-menu",
874
+ fn: V(() => [L(e.$slots, "drawer-menu")]),
875
+ key: "4"
876
+ } : void 0,
877
+ e.$slots.footer ? {
878
+ name: "footer",
879
+ fn: V(() => [L(e.$slots, "footer")]),
880
+ key: "5"
881
+ } : void 0
882
+ ]), 1024)) : (N(), b("div", $t, [...t[1] ||= [x("div", { class: "coming-soon-content" }, [x("div", { class: "coming-soon-icon" }, "🚧"), x("div", { class: "coming-soon-title" }, "布局开发中")], -1)]]))], 2));
883
+ }
884
+ }), tn = [
885
+ {
886
+ label: "左侧菜单(默认)",
887
+ value: "side",
888
+ disabled: !1,
889
+ svg: "\n <rect x=\"0\" y=\"0\" width=\"16\" height=\"48\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.9\"/>\n <rect x=\"18\" y=\"0\" width=\"38\" height=\"10\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.7\"/>\n <rect x=\"18\" y=\"12\" width=\"38\" height=\"34\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.4\"/>\n "
890
+ },
891
+ {
892
+ label: "顶部菜单(清爽)",
893
+ value: "top",
894
+ disabled: !1,
895
+ svg: "\n <rect x=\"0\" y=\"0\" width=\"56\" height=\"10\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.9\"/>\n <rect x=\"0\" y=\"12\" width=\"56\" height=\"8\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.7\"/>\n <rect x=\"0\" y=\"22\" width=\"56\" height=\"24\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.4\"/>\n "
896
+ },
897
+ {
898
+ label: "左侧混合(灵巧)",
899
+ value: "mix",
900
+ disabled: !1,
901
+ svg: "\n <rect x=\"0\" y=\"0\" width=\"8\" height=\"48\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.9\"/>\n <rect x=\"10\" y=\"0\" width=\"14\" height=\"48\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.7\"/>\n <rect x=\"26\" y=\"0\" width=\"30\" height=\"10\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.6\"/>\n <rect x=\"26\" y=\"12\" width=\"30\" height=\"34\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.4\"/>\n "
902
+ },
903
+ {
904
+ label: "顶部混合(侧优)",
905
+ value: "mix-top",
906
+ disabled: !1,
907
+ svg: "\n <rect x=\"0\" y=\"0\" width=\"8\" height=\"48\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.9\"/>\n <rect x=\"10\" y=\"0\" width=\"46\" height=\"10\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.7\"/>\n <rect x=\"10\" y=\"12\" width=\"46\" height=\"34\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.4\"/>\n "
908
+ },
909
+ {
910
+ label: "反转混合(另类)",
911
+ value: "reverse-horizontal-mix",
912
+ disabled: !1,
913
+ svg: "\n <rect x=\"0\" y=\"0\" width=\"56\" height=\"10\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.9\"/>\n <rect x=\"44\" y=\"12\" width=\"12\" height=\"34\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.7\"/>\n <rect x=\"0\" y=\"12\" width=\"42\" height=\"34\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.4\"/>\n "
914
+ },
915
+ {
916
+ label: "卡片网格(新颖)",
917
+ value: "card-layout",
918
+ disabled: !1,
919
+ 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 "
920
+ }
921
+ ], nn = { class: "settings-section" }, rn = { class: "preset-grid" }, an = [
922
+ "aria-pressed",
923
+ "onClick",
924
+ "onKeydown"
925
+ ], on = { class: "preset-icon" }, sn = { class: "preset-name" }, cn = { class: "preset-color" }, ln = { class: "settings-section" }, un = { class: "settings-section" }, dn = { class: "color-picker-wrapper" }, fn = { class: "color-value" }, pn = { class: "settings-section" }, mn = { class: "settings-section" }, hn = { class: "flex items-center justify-between mb-2" }, gn = { class: "settings-section" }, _n = { class: "settings-section" }, vn = { class: "layout-grid" }, yn = [
926
+ "tabindex",
927
+ "aria-disabled",
928
+ "aria-pressed",
929
+ "onClick",
930
+ "onKeydown"
931
+ ], bn = { class: "layout-screenshot" }, xn = {
932
+ class: "layout-svg",
933
+ viewBox: "0 0 56 48",
934
+ fill: "none",
935
+ xmlns: "http://www.w3.org/2000/svg"
936
+ }, Sn = ["innerHTML"], Cn = { class: "layout-label" }, wn = {
937
+ key: 0,
938
+ class: "badge-soon"
939
+ }, Tn = {
940
+ class: "settings-section menu-expand-section",
941
+ "data-menu-expand-mode": "built-in"
942
+ }, En = { class: "settings-section" }, Dn = { class: "setting-item" }, On = { class: "setting-item" }, kn = { class: "setting-item" }, An = { class: "setting-item" }, jn = { class: "settings-section" }, Mn = { class: "slider-item" }, Nn = { class: "slider-label" }, Pn = { class: "slider-value" }, Fn = { class: "slider-item" }, In = { class: "slider-label" }, Ln = { class: "slider-value" }, Rn = { class: "settings-section" }, zn = { class: "settings-section" }, Bn = { class: "action-buttons-grid" }, Vn = { class: "settings-section" }, Hn = { class: "action-buttons-grid" }, Un = { class: "settings-section" }, Wn = { class: "setting-item" }, Gn = { class: "setting-item" }, Kn = { class: "settings-section" }, qn = { class: "setting-item" }, Jn = {
943
+ key: 0,
944
+ class: "mt-2"
945
+ }, Yn = { class: "settings-section" }, Xn = { class: "system-info" }, Zn = { class: "info-item" }, Qn = { class: "info-value" }, $n = { class: "info-item" }, er = { class: "info-value" }, tr = { class: "info-item" }, nr = { class: "info-value" }, rr = { class: "info-item" }, ir = { class: "info-value" }, ar = { class: "info-item" }, or = { class: "info-value" }, sr = { class: "info-item" }, cr = { class: "info-value" }, lr = /* @__PURE__ */ Q(/* @__PURE__ */ T({
946
+ __name: "index",
947
+ props: /* @__PURE__ */ k({
948
+ width: { default: 380 },
949
+ store: {},
950
+ actions: {},
951
+ maxImportBytes: { default: 1024 * 1024 }
952
+ }, {
953
+ show: {
954
+ type: Boolean,
955
+ default: !1
956
+ },
957
+ showModifiers: {}
958
+ }),
959
+ emits: ["update:show"],
960
+ setup(e) {
961
+ let t = e, n = pe(), r = fe(), i = D(o, null), a = t.store ?? i ?? c(), s = te(e, "show"), d = F("appearance"), h = f({
962
+ store: a,
963
+ actions: t.actions,
964
+ maxImportBytes: t.maxImportBytes,
965
+ onVisualEffectError: (e) => n.error(e)
966
+ }), { colorWeakMode: g, grayMode: _, systemInfo: S, watermarkEnabled: T, watermarkText: E } = h, k = (e, t) => {
967
+ t || (a.layoutMode = e);
968
+ }, M = (e) => a.primaryColor === e.primaryColor, P = (e) => {
969
+ h.applyPreset(e), n.success(`已应用「${e.name}」主题方案`);
970
+ }, ee = async (e) => {
971
+ try {
972
+ await h.updateThemeMode(e);
973
+ } catch {
974
+ n.error("主题模式切换失败");
975
+ }
976
+ }, R = async () => {
977
+ try {
978
+ await h.resetAppearance(), n.success("已恢复外观默认设置");
979
+ } catch {
980
+ n.error("恢复外观默认设置失败");
981
+ }
982
+ }, ne = () => {
983
+ h.resetLayout(), n.success("已恢复布局默认设置");
984
+ }, oe = () => {
985
+ r.warning({
986
+ title: "确认重置",
987
+ content: "确定要恢复默认配置吗?此操作不可撤销。",
988
+ positiveText: "确认",
989
+ negativeText: "取消",
990
+ onPositiveClick: async () => {
991
+ try {
992
+ await h.resetAll(), n.success("已恢复默认配置");
993
+ } catch {
994
+ n.error("恢复默认配置失败");
995
+ }
996
+ }
997
+ });
998
+ }, G = () => {
999
+ r.warning({
1000
+ title: "确认清除",
1001
+ content: "确定要清除浏览器缓存吗?",
1002
+ positiveText: "确认",
1003
+ negativeText: "取消",
1004
+ onPositiveClick: async () => {
1005
+ try {
1006
+ await h.clearCache(), n.success("缓存已清除");
1007
+ } catch (e) {
1008
+ if (e instanceof p) {
1009
+ n.warning("宿主应用未配置可安全清理的缓存");
1010
+ return;
1011
+ }
1012
+ n.error("缓存清除失败");
1013
+ }
1014
+ }
1015
+ });
1016
+ }, K = () => {
1017
+ h.reloadPage();
1018
+ }, ce = () => {
1019
+ h.downloadConfig() ? n.success("配置已导出") : n.error("当前环境不支持配置导出");
1020
+ }, le = () => {
1021
+ if (typeof document > "u") return;
1022
+ let e = document.createElement("input");
1023
+ e.type = "file", e.accept = "application/json", e.onchange = async (e) => {
1024
+ let t = e.target.files?.[0];
1025
+ if (t) try {
1026
+ await h.importFile(t), n.success("配置已导入");
1027
+ } catch {
1028
+ n.error("配置文件格式错误");
1029
+ }
1030
+ }, e.click();
1031
+ };
1032
+ return (t, n) => (N(), v(B(ie), {
1033
+ show: s.value,
1034
+ "onUpdate:show": n[16] ||= (e) => s.value = e,
1035
+ width: e.width,
1036
+ placement: "right",
1037
+ "trap-focus": !0,
1038
+ "block-scroll": !0
1039
+ }, {
1040
+ default: V(() => [w(B(ae), {
1041
+ title: "⚙️ 布局配置",
1042
+ closable: ""
1043
+ }, {
1044
+ default: V(() => [w(B(de), {
1045
+ value: d.value,
1046
+ "onUpdate:value": n[15] ||= (e) => d.value = e,
1047
+ animated: "",
1048
+ class: "settings-tabs"
1049
+ }, {
1050
+ default: V(() => [
1051
+ w(B(X), {
1052
+ name: "appearance",
1053
+ tab: "🎨 外观"
1054
+ }, {
1055
+ default: V(() => [
1056
+ L(t.$slots, "appearance-prepend", { settings: B(a) }, void 0, !0),
1057
+ x("div", nn, [x("div", rn, [(N(!0), b(m, null, I(B(u), (e) => (N(), b("div", {
1058
+ key: e.name,
1059
+ class: A(["preset-card", { active: M(e) }]),
1060
+ role: "button",
1061
+ tabindex: "0",
1062
+ "aria-pressed": M(e),
1063
+ onClick: (t) => P(e),
1064
+ onKeydown: [H((t) => P(e), ["enter"]), H(U((t) => P(e), ["prevent"]), ["space"])]
1065
+ }, [
1066
+ x("div", on, z(e.icon), 1),
1067
+ x("div", sn, z(e.name), 1),
1068
+ x("div", cn, [x("span", {
1069
+ class: "color-dot",
1070
+ style: j({ backgroundColor: e.primaryColor })
1071
+ }, null, 4)])
1072
+ ], 42, an))), 128))])]),
1073
+ x("div", ln, [n[20] ||= x("div", { class: "section-title" }, "主题模式", -1), w(B(J), {
1074
+ value: B(a).themeMode,
1075
+ class: "mode-group",
1076
+ "onUpdate:value": ee
1077
+ }, {
1078
+ default: V(() => [
1079
+ w(B(q), { value: "light" }, {
1080
+ default: V(() => [...n[17] ||= [x("span", { class: "i-mdi:white-balance-sunny mr-1" }, null, -1), C(" 浅色 ", -1)]]),
1081
+ _: 1
1082
+ }),
1083
+ w(B(q), { value: "dark" }, {
1084
+ default: V(() => [...n[18] ||= [x("span", { class: "i-mdi:moon-waning-crescent mr-1" }, null, -1), C(" 深色 ", -1)]]),
1085
+ _: 1
1086
+ }),
1087
+ w(B(q), { value: "system" }, {
1088
+ default: V(() => [...n[19] ||= [x("span", { class: "i-mdi:theme-light-dark mr-1" }, null, -1), C(" 自动 ", -1)]]),
1089
+ _: 1
1090
+ })
1091
+ ]),
1092
+ _: 1
1093
+ }, 8, ["value"])]),
1094
+ x("div", un, [n[21] ||= x("div", { class: "section-title" }, "主题色", -1), x("div", dn, [w(B(re), {
1095
+ value: B(a).primaryColor,
1096
+ "onUpdate:value": n[0] ||= (e) => B(a).primaryColor = e,
1097
+ "show-alpha": !1,
1098
+ swatches: B(l),
1099
+ actions: ["confirm"]
1100
+ }, null, 8, ["value", "swatches"]), x("span", fn, z(B(a).primaryColor), 1)])]),
1101
+ x("div", pn, [n[25] ||= x("div", { class: "section-title" }, "圆角大小", -1), w(B(J), {
1102
+ value: B(a).borderRadius,
1103
+ "onUpdate:value": n[1] ||= (e) => B(a).borderRadius = e,
1104
+ class: "radius-group"
1105
+ }, {
1106
+ default: V(() => [
1107
+ w(B(q), { value: "small" }, {
1108
+ default: V(() => [...n[22] ||= [C("小 (4px)", -1)]]),
1109
+ _: 1
1110
+ }),
1111
+ w(B(q), { value: "medium" }, {
1112
+ default: V(() => [...n[23] ||= [C("中 (6px)", -1)]]),
1113
+ _: 1
1114
+ }),
1115
+ w(B(q), { value: "large" }, {
1116
+ default: V(() => [...n[24] ||= [C("大 (8px)", -1)]]),
1117
+ _: 1
1118
+ })
1119
+ ]),
1120
+ _: 1
1121
+ }, 8, ["value"])]),
1122
+ x("div", mn, [
1123
+ n[31] ||= x("div", { class: "section-title" }, "页面动画", -1),
1124
+ x("div", hn, [n[26] ||= x("span", { class: "text-sm" }, "启用动画", -1), w(B(Y), {
1125
+ value: B(a).enableTransition,
1126
+ "onUpdate:value": n[2] ||= (e) => B(a).enableTransition = e
1127
+ }, null, 8, ["value"])]),
1128
+ w(B(J), {
1129
+ value: B(a).transitionType,
1130
+ "onUpdate:value": n[3] ||= (e) => B(a).transitionType = e,
1131
+ disabled: !B(a).enableTransition,
1132
+ class: "transition-group"
1133
+ }, {
1134
+ default: V(() => [
1135
+ w(B(q), { value: "fade" }, {
1136
+ default: V(() => [...n[27] ||= [C("淡入", -1)]]),
1137
+ _: 1
1138
+ }),
1139
+ w(B(q), { value: "slide" }, {
1140
+ default: V(() => [...n[28] ||= [C("滑动", -1)]]),
1141
+ _: 1
1142
+ }),
1143
+ w(B(q), { value: "zoom" }, {
1144
+ default: V(() => [...n[29] ||= [C("缩放", -1)]]),
1145
+ _: 1
1146
+ }),
1147
+ w(B(q), { value: "none" }, {
1148
+ default: V(() => [...n[30] ||= [C("无", -1)]]),
1149
+ _: 1
1150
+ })
1151
+ ]),
1152
+ _: 1
1153
+ }, 8, ["value", "disabled"])
1154
+ ]),
1155
+ x("div", gn, [w(B(W), {
1156
+ block: "",
1157
+ secondary: "",
1158
+ onClick: R
1159
+ }, {
1160
+ icon: V(() => [...n[32] ||= [x("span", { class: "i-mdi:restore" }, null, -1)]]),
1161
+ default: V(() => [n[33] ||= C(" 恢复外观默认设置 ", -1)]),
1162
+ _: 1
1163
+ })]),
1164
+ L(t.$slots, "appearance-append", { settings: B(a) }, void 0, !0)
1165
+ ]),
1166
+ _: 3
1167
+ }),
1168
+ w(B(X), {
1169
+ name: "layout",
1170
+ tab: "📐 布局"
1171
+ }, {
1172
+ default: V(() => [
1173
+ L(t.$slots, "layout-prepend", { settings: B(a) }, void 0, !0),
1174
+ x("div", _n, [n[34] ||= x("div", { class: "section-title" }, "布局模式", -1), x("div", vn, [(N(!0), b(m, null, I(B(tn), (e) => (N(), b("div", {
1175
+ key: e.value,
1176
+ class: A(["layout-item", {
1177
+ active: B(a).layoutMode === e.value,
1178
+ disabled: e.disabled
1179
+ }]),
1180
+ role: "button",
1181
+ tabindex: e.disabled ? -1 : 0,
1182
+ "aria-disabled": e.disabled,
1183
+ "aria-pressed": B(a).layoutMode === e.value,
1184
+ onClick: U((t) => k(e.value, e.disabled), ["stop"]),
1185
+ onKeydown: [H(U((t) => k(e.value, e.disabled), ["stop"]), ["enter"]), H(U((t) => k(e.value, e.disabled), ["stop", "prevent"]), ["space"])]
1186
+ }, [x("div", bn, [(N(), b("svg", xn, [x("g", { innerHTML: e.svg }, null, 8, Sn)]))]), x("div", Cn, [C(z(e.label) + " ", 1), e.disabled ? (N(), b("span", wn, "敬请期待")) : y("", !0)])], 42, yn))), 128))])]),
1187
+ L(t.$slots, "layout-after-mode", { settings: B(a) }, void 0, !0),
1188
+ x("div", Tn, [n[37] ||= x("div", { class: "section-title" }, "菜单展开方式", -1), w(B(J), {
1189
+ value: B(a).menuExpandMode,
1190
+ "onUpdate:value": n[4] ||= (e) => B(a).menuExpandMode = e,
1191
+ class: "menu-expand-group"
1192
+ }, {
1193
+ default: V(() => [w(B(q), { value: "inline" }, {
1194
+ default: V(() => [...n[35] ||= [C("传统展开", -1)]]),
1195
+ _: 1
1196
+ }), w(B(q), { value: "panel" }, {
1197
+ default: V(() => [...n[36] ||= [C("右侧面板", -1)]]),
1198
+ _: 1
1199
+ })]),
1200
+ _: 1
1201
+ }, 8, ["value"])]),
1202
+ x("div", En, [
1203
+ n[42] ||= x("div", { class: "section-title" }, "界面元素", -1),
1204
+ x("div", Dn, [n[38] ||= x("span", null, "显示面包屑", -1), w(B(Y), {
1205
+ value: B(a).showBreadcrumb,
1206
+ "onUpdate:value": n[5] ||= (e) => B(a).showBreadcrumb = e
1207
+ }, null, 8, ["value"])]),
1208
+ x("div", On, [n[39] ||= x("span", null, "显示面包屑图标", -1), w(B(Y), {
1209
+ value: B(a).showBreadcrumbIcon,
1210
+ "onUpdate:value": n[6] ||= (e) => B(a).showBreadcrumbIcon = e,
1211
+ disabled: !B(a).showBreadcrumb
1212
+ }, null, 8, ["value", "disabled"])]),
1213
+ x("div", kn, [n[40] ||= x("span", null, "显示标签页", -1), w(B(Y), {
1214
+ value: B(a).showTagsView,
1215
+ "onUpdate:value": n[7] ||= (e) => B(a).showTagsView = e
1216
+ }, null, 8, ["value"])]),
1217
+ x("div", An, [n[41] ||= x("span", null, "显示页脚", -1), w(B(Y), {
1218
+ value: B(a).showFooter,
1219
+ "onUpdate:value": n[8] ||= (e) => B(a).showFooter = e
1220
+ }, null, 8, ["value"])])
1221
+ ]),
1222
+ x("div", jn, [
1223
+ n[45] ||= x("div", { class: "section-title" }, "尺寸调整", -1),
1224
+ x("div", Mn, [x("div", Nn, [n[43] ||= x("span", null, "侧边栏宽度", -1), x("span", Pn, z(B(a).sidebarWidth) + "px", 1)]), w(B(ue), {
1225
+ value: B(a).sidebarWidth,
1226
+ "onUpdate:value": n[9] ||= (e) => B(a).sidebarWidth = e,
1227
+ min: 180,
1228
+ max: 280,
1229
+ step: 10,
1230
+ marks: {
1231
+ 180: "180",
1232
+ 220: "220",
1233
+ 280: "280"
1234
+ }
1235
+ }, null, 8, ["value"])]),
1236
+ x("div", Fn, [x("div", In, [n[44] ||= x("span", null, "头部高度", -1), x("span", Ln, z(B(a).headerHeight) + "px", 1)]), w(B(ue), {
1237
+ value: B(a).headerHeight,
1238
+ "onUpdate:value": n[10] ||= (e) => B(a).headerHeight = e,
1239
+ min: 48,
1240
+ max: 64,
1241
+ step: 4,
1242
+ marks: {
1243
+ 48: "48",
1244
+ 56: "56",
1245
+ 64: "64"
1246
+ }
1247
+ }, null, 8, ["value"])])
1248
+ ]),
1249
+ x("div", Rn, [w(B(W), {
1250
+ block: "",
1251
+ secondary: "",
1252
+ onClick: ne
1253
+ }, {
1254
+ icon: V(() => [...n[46] ||= [x("span", { class: "i-mdi:restore" }, null, -1)]]),
1255
+ default: V(() => [n[47] ||= C(" 恢复布局默认设置 ", -1)]),
1256
+ _: 1
1257
+ })]),
1258
+ L(t.$slots, "layout-append", { settings: B(a) }, void 0, !0)
1259
+ ]),
1260
+ _: 3
1261
+ }),
1262
+ w(B(X), {
1263
+ name: "features",
1264
+ tab: "🔧 功能"
1265
+ }, {
1266
+ default: V(() => [
1267
+ L(t.$slots, "features-prepend", { settings: B(a) }, void 0, !0),
1268
+ x("div", zn, [n[52] ||= x("div", { class: "section-title" }, "缓存管理", -1), x("div", Bn, [w(B(W), {
1269
+ secondary: "",
1270
+ onClick: G
1271
+ }, {
1272
+ icon: V(() => [...n[48] ||= [x("span", { class: "i-mdi:delete-sweep" }, null, -1)]]),
1273
+ default: V(() => [n[49] ||= C(" 清除缓存 ", -1)]),
1274
+ _: 1
1275
+ }), w(B(W), {
1276
+ secondary: "",
1277
+ onClick: K
1278
+ }, {
1279
+ icon: V(() => [...n[50] ||= [x("span", { class: "i-mdi:refresh" }, null, -1)]]),
1280
+ default: V(() => [n[51] ||= C(" 重新加载 ", -1)]),
1281
+ _: 1
1282
+ })])]),
1283
+ x("div", Vn, [
1284
+ n[59] ||= x("div", { class: "section-title" }, "配置管理", -1),
1285
+ x("div", Hn, [w(B(W), {
1286
+ secondary: "",
1287
+ onClick: ce
1288
+ }, {
1289
+ icon: V(() => [...n[53] ||= [x("span", { class: "i-mdi:download" }, null, -1)]]),
1290
+ default: V(() => [n[54] ||= C(" 导出配置 ", -1)]),
1291
+ _: 1
1292
+ }), w(B(W), {
1293
+ secondary: "",
1294
+ onClick: le
1295
+ }, {
1296
+ icon: V(() => [...n[55] ||= [x("span", { class: "i-mdi:upload" }, null, -1)]]),
1297
+ default: V(() => [n[56] ||= C(" 导入配置 ", -1)]),
1298
+ _: 1
1299
+ })]),
1300
+ w(B(W), {
1301
+ block: "",
1302
+ type: "error",
1303
+ secondary: "",
1304
+ class: "mt-2",
1305
+ onClick: oe
1306
+ }, {
1307
+ icon: V(() => [...n[57] ||= [x("span", { class: "i-mdi:restore" }, null, -1)]]),
1308
+ default: V(() => [n[58] ||= C(" 重置所有配置 ", -1)]),
1309
+ _: 1
1310
+ })
1311
+ ]),
1312
+ x("div", Un, [
1313
+ n[62] ||= x("div", { class: "section-title" }, "系统模式", -1),
1314
+ x("div", Wn, [n[60] ||= x("div", { class: "setting-label" }, [x("span", null, "灰色模式"), x("span", { class: "setting-desc" }, "用于哀悼日场景")], -1), w(B(Y), {
1315
+ value: B(_),
1316
+ "onUpdate:value": n[11] ||= (e) => O(_) ? _.value = e : null
1317
+ }, null, 8, ["value"])]),
1318
+ x("div", Gn, [n[61] ||= x("div", { class: "setting-label" }, [x("span", null, "色弱模式"), x("span", { class: "setting-desc" }, "提供无障碍访问支持")], -1), w(B(Y), {
1319
+ value: B(g),
1320
+ "onUpdate:value": n[12] ||= (e) => O(g) ? g.value = e : null
1321
+ }, null, 8, ["value"])])
1322
+ ]),
1323
+ x("div", Kn, [
1324
+ n[64] ||= x("div", { class: "section-title" }, "水印设置", -1),
1325
+ x("div", qn, [n[63] ||= x("span", null, "启用水印", -1), w(B(Y), {
1326
+ value: B(T),
1327
+ "onUpdate:value": n[13] ||= (e) => O(T) ? T.value = e : null
1328
+ }, null, 8, ["value"])]),
1329
+ B(T) ? (N(), b("div", Jn, [w(B(se), {
1330
+ value: B(E),
1331
+ "onUpdate:value": n[14] ||= (e) => O(E) ? E.value = e : null,
1332
+ placeholder: "请输入水印内容",
1333
+ size: "small"
1334
+ }, null, 8, ["value"])])) : y("", !0)
1335
+ ]),
1336
+ x("div", Yn, [n[71] ||= x("div", { class: "section-title" }, "系统信息", -1), x("div", Xn, [
1337
+ x("div", Zn, [n[65] ||= x("span", { class: "info-label" }, "浏览器", -1), x("span", Qn, z(B(S).browser), 1)]),
1338
+ x("div", $n, [n[66] ||= x("span", { class: "info-label" }, "操作系统", -1), x("span", er, z(B(S).os), 1)]),
1339
+ x("div", tr, [n[67] ||= x("span", { class: "info-label" }, "屏幕分辨率", -1), x("span", nr, z(B(S).resolution), 1)]),
1340
+ x("div", rr, [n[68] ||= x("span", { class: "info-label" }, "设备像素比", -1), x("span", ir, z(B(S).pixelRatio), 1)]),
1341
+ x("div", ar, [n[69] ||= x("span", { class: "info-label" }, "语言", -1), x("span", or, z(B(S).language), 1)]),
1342
+ x("div", sr, [n[70] ||= x("span", { class: "info-label" }, "时区", -1), x("span", cr, z(B(S).timezone), 1)])
1343
+ ])]),
1344
+ L(t.$slots, "features-append", { settings: B(a) }, void 0, !0)
1345
+ ]),
1346
+ _: 3
1347
+ })
1348
+ ]),
1349
+ _: 3
1350
+ }, 8, ["value"])]),
1351
+ _: 3
1352
+ })]),
1353
+ _: 3
1354
+ }, 8, ["show", "width"]));
1355
+ }
1356
+ }), [["__scopeId", "data-v-3701cd4c"]]), ur = { class: "brand-logo__icon" }, dr = [
1357
+ "src",
1358
+ "width",
1359
+ "height"
1360
+ ], fr = [
1361
+ "src",
1362
+ "width",
1363
+ "height"
1364
+ ], pr = { class: "brand-logo__name" }, mr = { class: "brand-logo__title" }, hr = {
1365
+ key: 0,
1366
+ class: "brand-logo__subtitle"
1367
+ }, gr = {
1368
+ key: 0,
1369
+ class: "brand-logo__divider"
1370
+ }, _r = /* @__PURE__ */ Q(/* @__PURE__ */ T({
1371
+ name: "BrandLogo",
1372
+ __name: "index",
1373
+ props: {
1374
+ showName: {
1375
+ type: Boolean,
1376
+ default: !1
1377
+ },
1378
+ showDivider: {
1379
+ type: Boolean,
1380
+ default: !1
1381
+ },
1382
+ size: { default: 36 },
1383
+ collapsed: {
1384
+ type: Boolean,
1385
+ default: !1
1386
+ },
1387
+ variant: { default: "horizontal" }
1388
+ },
1389
+ setup(e) {
1390
+ let t = r(), n = {
1391
+ ...d,
1392
+ ...t.brand
1393
+ };
1394
+ return (t, r) => (N(), b("div", { class: A(["brand-logo", {
1395
+ "brand-logo--collapsed": e.collapsed,
1396
+ "brand-logo--horizontal": e.variant === "horizontal"
1397
+ }]) }, [x("div", ur, [r[0] ||= x("div", { class: "brand-logo__glow" }, null, -1), n.logoType === "video" && n.logoSrc ? (N(), b("video", {
1398
+ key: 0,
1399
+ src: n.logoSrc,
1400
+ width: e.size,
1401
+ height: e.size,
1402
+ autoplay: "",
1403
+ loop: "",
1404
+ muted: "",
1405
+ playsinline: "",
1406
+ class: "brand-logo__media"
1407
+ }, null, 8, dr)) : n.logoSrc ? (N(), b("img", {
1408
+ key: 1,
1409
+ src: n.logoSrc,
1410
+ width: e.size,
1411
+ height: e.size,
1412
+ class: "brand-logo__media",
1413
+ alt: "Logo"
1414
+ }, null, 8, fr)) : y("", !0)]), e.showName && !e.collapsed ? (N(), b(m, { key: 0 }, [x("div", pr, [x("span", mr, z(n.name), 1), n.subtitle ? (N(), b("span", hr, z(n.subtitle), 1)) : y("", !0)]), e.showDivider ? (N(), b("div", gr)) : y("", !0)], 64)) : y("", !0)], 2));
1415
+ }
1416
+ }), [["__scopeId", "data-v-fd1c2eec"]]), vr = { class: "icon-menu" }, yr = ["onClick"], br = { class: "icon-menu__icon" }, xr = {
1417
+ key: 1,
1418
+ class: "icon-menu__fallback"
1419
+ }, Sr = { class: "icon-menu__label" }, Cr = /* @__PURE__ */ Q(/* @__PURE__ */ T({
1420
+ name: "IconMenu",
1421
+ __name: "index",
1422
+ props: {
1423
+ menus: {},
1424
+ active: {}
1425
+ },
1426
+ emits: ["click"],
1427
+ setup(e, { emit: t }) {
1428
+ let n = t, i = r();
1429
+ return (t, r) => (N(), b("div", vr, [(N(!0), b(m, null, I(e.menus, (t) => (N(), b("div", {
1430
+ key: t.path,
1431
+ class: A(["icon-menu__item", { "icon-menu__item--active": e.active === t.path }]),
1432
+ onClick: (e) => n("click", t)
1433
+ }, [x("div", br, [B(i).iconComponent && t.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1434
+ key: 0,
1435
+ name: t.meta.icon,
1436
+ size: 20
1437
+ }, null, 8, ["name"])) : (N(), b("span", xr, z(t.meta?.title?.charAt(0) || "?"), 1))]), x("div", Sr, z(t.meta?.title), 1)], 10, yr))), 128))]));
1438
+ }
1439
+ }), [["__scopeId", "data-v-f985d475"]]), wr = { class: "floating-menu__header" }, Tr = { class: "floating-menu__brand" }, Er = { class: "floating-menu__brand-title" }, Dr = { class: "floating-menu__brand-subtitle" }, Or = { class: "floating-menu__list" }, kr = {
1440
+ key: 0,
1441
+ class: "floating-menu__group"
1442
+ }, Ar = { class: "floating-menu__group-title" }, jr = ["onClick", "onKeydown"], Mr = { class: "floating-menu__item-text" }, Nr = ["onClick", "onKeydown"], Pr = { class: "floating-menu__item-text" }, Fr = /* @__PURE__ */ Q(/* @__PURE__ */ T({
1443
+ name: "FloatingMenu",
1444
+ __name: "index",
1445
+ props: {
1446
+ show: { type: Boolean },
1447
+ menuItem: {},
1448
+ isActive: { type: Function }
1449
+ },
1450
+ emits: ["click"],
1451
+ setup(e, { emit: t }) {
1452
+ let n = t, i = r(), a = {
1453
+ ...d,
1454
+ ...i.brand
1455
+ };
1456
+ return (t, r) => (N(), v(g, { name: "slide-fade" }, {
1457
+ default: V(() => [e.show && e.menuItem ? (N(), b("div", {
1458
+ key: 0,
1459
+ class: A(["floating-menu", [B(i).isDark.value ? "dark-theme" : "light-theme"]]),
1460
+ role: "navigation",
1461
+ "aria-label": "二级功能导航"
1462
+ }, [x("div", wr, [x("div", Tr, [x("span", Er, z(a.name), 1), x("span", Dr, z(a.subtitle), 1)])]), x("div", Or, [(N(!0), b(m, null, I(e.menuItem.children, (t) => (N(), b(m, { key: t.path }, [t.children && t.children.length > 0 ? (N(), b("div", kr, [x("div", Ar, [B(i).iconComponent && t.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1463
+ key: 0,
1464
+ name: t.meta.icon,
1465
+ size: 16
1466
+ }, null, 8, ["name"])) : y("", !0), x("span", null, z(t.meta?.title), 1)]), (N(!0), b(m, null, I(t.children, (t) => (N(), b("div", {
1467
+ key: t.path,
1468
+ class: A(["floating-menu__item floating-menu__item--sub", { active: e.isActive?.(t.path) }]),
1469
+ role: "link",
1470
+ tabindex: "0",
1471
+ onClick: (e) => n("click", t),
1472
+ onKeydown: [H((e) => n("click", t), ["enter"]), H(U((e) => n("click", t), ["prevent"]), ["space"])]
1473
+ }, [B(i).iconComponent && t.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1474
+ key: 0,
1475
+ name: t.meta.icon,
1476
+ size: 16
1477
+ }, null, 8, ["name"])) : y("", !0), x("span", Mr, z(t.meta?.title), 1)], 42, jr))), 128))])) : (N(), b("div", {
1478
+ key: 1,
1479
+ class: A(["floating-menu__item", { active: e.isActive?.(t.path) }]),
1480
+ role: "link",
1481
+ tabindex: "0",
1482
+ onClick: (e) => n("click", t),
1483
+ onKeydown: [H((e) => n("click", t), ["enter"]), H(U((e) => n("click", t), ["prevent"]), ["space"])]
1484
+ }, [B(i).iconComponent && t.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1485
+ key: 0,
1486
+ name: t.meta.icon,
1487
+ size: 18
1488
+ }, null, 8, ["name"])) : y("", !0), x("span", Pr, z(t.meta?.title), 1)], 42, Nr))], 64))), 128))])], 2)) : y("", !0)]),
1489
+ _: 1
1490
+ }));
1491
+ }
1492
+ }), [["__scopeId", "data-v-44a1db17"]]), Ir = { class: "side-menu__header" }, Lr = { class: "side-menu__header-icon" }, Rr = { class: "side-menu__header-title" }, zr = { class: "side-menu__list" }, Br = {
1493
+ key: 0,
1494
+ class: "side-menu__group"
1495
+ }, Vr = { class: "side-menu__group-label" }, Hr = ["onClick"], Ur = { class: "side-menu__item-text" }, Wr = ["onClick"], Gr = { class: "side-menu__item-text" }, Kr = /* @__PURE__ */ Q(/* @__PURE__ */ T({
1496
+ name: "SideMenu",
1497
+ __name: "index",
1498
+ props: {
1499
+ menus: {},
1500
+ activeItem: {},
1501
+ isActive: { type: Function }
1502
+ },
1503
+ emits: ["click"],
1504
+ setup(e, { emit: t }) {
1505
+ let n = t, i = r(), a = F(!1);
1506
+ return (t, r) => e.menus.length > 0 ? (N(), b(m, { key: 0 }, [x("div", {
1507
+ class: A(["side-menu-toggle", [B(i).isDark.value ? "dark-theme" : "light-theme", { active: !a.value }]]),
1508
+ onClick: r[0] ||= (e) => a.value = !a.value
1509
+ }, [x("i", { class: A(["toggle-icon", a.value ? "i-ri:side-bar-line" : "i-ri:arrow-right-s-line"]) }, null, 2)], 2), w(g, { name: "glass-slide" }, {
1510
+ default: V(() => [a.value ? y("", !0) : (N(), b("div", {
1511
+ key: 0,
1512
+ class: A(["side-menu", [B(i).isDark.value ? "dark-theme" : "light-theme"]])
1513
+ }, [x("div", Ir, [x("div", Lr, [B(i).iconComponent && e.activeItem?.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1514
+ key: 0,
1515
+ name: e.activeItem.meta.icon,
1516
+ size: 17
1517
+ }, null, 8, ["name"])) : y("", !0)]), x("span", Rr, z(e.activeItem?.meta?.title || "菜单"), 1)]), x("div", zr, [(N(!0), b(m, null, I(e.menus, (t) => (N(), b(m, { key: t.path }, [t.children && t.children.length > 0 ? (N(), b("div", Br, [x("div", Vr, [B(i).iconComponent && t.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1518
+ key: 0,
1519
+ name: t.meta.icon,
1520
+ size: 14
1521
+ }, null, 8, ["name"])) : y("", !0), x("span", null, z(t.meta?.title), 1)]), (N(!0), b(m, null, I(t.children, (t) => (N(), b("div", {
1522
+ key: t.path,
1523
+ class: A(["side-menu__item", { active: e.isActive?.(t.path) }]),
1524
+ onClick: (e) => n("click", t)
1525
+ }, [B(i).iconComponent && t.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1526
+ key: 0,
1527
+ name: t.meta.icon,
1528
+ size: 15
1529
+ }, null, 8, ["name"])) : y("", !0), x("span", Ur, z(t.meta?.title), 1)], 10, Hr))), 128))])) : (N(), b("div", {
1530
+ key: 1,
1531
+ class: A(["side-menu__item", { active: e.isActive?.(t.path) }]),
1532
+ onClick: (e) => n("click", t)
1533
+ }, [B(i).iconComponent && t.meta?.icon ? (N(), v(R(B(i).iconComponent), {
1534
+ key: 0,
1535
+ name: t.meta.icon,
1536
+ size: 16
1537
+ }, null, 8, ["name"])) : y("", !0), x("span", Gr, z(t.meta?.title), 1)], 10, Wr))], 64))), 128))])], 2))]),
1538
+ _: 1
1539
+ })], 64)) : y("", !0);
1540
+ }
1541
+ }), [["__scopeId", "data-v-4862c878"]]), qr = ["aria-hidden"], Jr = { class: "drawer-menu__content" }, Yr = { class: "drawer-menu__grid" }, Xr = ["onClick", "onKeydown"], Zr = {
1542
+ key: 0,
1543
+ class: "drawer-menu__items"
1544
+ }, Qr = ["onClick", "onKeydown"], $r = { class: "drawer-menu__item-text" }, ei = {
1545
+ key: 0,
1546
+ class: "drawer-menu__sub-items"
1547
+ }, ti = { class: "drawer-menu__sub-title" }, ni = ["onClick", "onKeydown"], ri = { class: "drawer-menu__item-text" }, ii = /* @__PURE__ */ Q(/* @__PURE__ */ T({
1548
+ name: "DrawerMenu",
1549
+ __name: "index",
1550
+ props: {
1551
+ menus: {},
1552
+ show: { type: Boolean }
1553
+ },
1554
+ setup(e) {
1555
+ let t = r(), n = he(), a = D(i, {
1556
+ show: () => {},
1557
+ startHide: () => {},
1558
+ hide: () => {}
1559
+ }), o = (e) => {
1560
+ e.path && (n.push(e.path), a.hide());
1561
+ };
1562
+ return (n, r) => (N(), b("div", {
1563
+ class: A(["drawer-menu", [B(t).isDark.value ? "dark-theme" : "light-theme", { visible: e.show }]]),
1564
+ role: "navigation",
1565
+ "aria-label": "功能导航",
1566
+ "aria-hidden": !e.show,
1567
+ onMouseenter: r[0] ||= (e) => B(a).show(),
1568
+ onMouseleave: r[1] ||= (e) => B(a).startHide()
1569
+ }, [r[2] ||= x("div", { class: "drawer-menu__header" }, [x("div", { class: "drawer-menu__title" }, [x("span", { class: "grid-icon" }, [
1570
+ x("span"),
1571
+ x("span"),
1572
+ x("span"),
1573
+ x("span")
1574
+ ]), x("span", null, "功能导航")])], -1), x("div", Jr, [x("div", Yr, [(N(!0), b(m, null, I(e.menus, (e) => (N(), b("div", {
1575
+ key: e.path,
1576
+ class: "drawer-menu__category"
1577
+ }, [x("div", {
1578
+ class: "drawer-menu__category-header",
1579
+ role: "link",
1580
+ tabindex: "0",
1581
+ onClick: (t) => o(e),
1582
+ onKeydown: [H((t) => o(e), ["enter"]), H(U((t) => o(e), ["prevent"]), ["space"])]
1583
+ }, [B(t).iconComponent && e.meta?.icon ? (N(), v(R(B(t).iconComponent), {
1584
+ key: 0,
1585
+ name: e.meta.icon,
1586
+ size: 18
1587
+ }, null, 8, ["name"])) : y("", !0), x("span", null, z(e.meta?.title), 1)], 40, Xr), e.children && e.children.length > 0 ? (N(), b("div", Zr, [(N(!0), b(m, null, I(e.children, (e) => (N(), b("div", {
1588
+ key: e.path,
1589
+ class: "drawer-menu__item",
1590
+ role: "link",
1591
+ tabindex: "0",
1592
+ onClick: (t) => o(e),
1593
+ onKeydown: [H((t) => o(e), ["enter"]), H(U((t) => o(e), ["prevent"]), ["space"])]
1594
+ }, [B(t).iconComponent && e.meta?.icon ? (N(), v(R(B(t).iconComponent), {
1595
+ key: 0,
1596
+ name: e.meta.icon,
1597
+ size: 16
1598
+ }, null, 8, ["name"])) : y("", !0), x("span", $r, z(e.meta?.title), 1)], 40, Qr))), 128)), (N(!0), b(m, null, I(e.children, (e) => (N(), b(m, { key: e.path }, [e.children && e.children.length > 0 ? (N(), b("div", ei, [x("div", ti, z(e.meta?.title), 1), (N(!0), b(m, null, I(e.children, (e) => (N(), b("div", {
1599
+ key: e.path,
1600
+ class: "drawer-menu__item drawer-menu__item--sub",
1601
+ role: "link",
1602
+ tabindex: "0",
1603
+ onClick: (t) => o(e),
1604
+ onKeydown: [H((t) => o(e), ["enter"]), H(U((t) => o(e), ["prevent"]), ["space"])]
1605
+ }, [B(t).iconComponent && e.meta?.icon ? (N(), v(R(B(t).iconComponent), {
1606
+ key: 0,
1607
+ name: e.meta.icon,
1608
+ size: 14
1609
+ }, null, 8, ["name"])) : y("", !0), x("span", ri, z(e.meta?.title), 1)], 40, ni))), 128))])) : y("", !0)], 64))), 128))])) : y("", !0)]))), 128))])])], 42, qr));
1610
+ }
1611
+ }), [["__scopeId", "data-v-cf56db54"]]), ai = /* @__PURE__ */ Q(/* @__PURE__ */ T({
1612
+ name: "MenuTrigger",
1613
+ __name: "index",
1614
+ props: { show: { type: Boolean } },
1615
+ setup(e) {
1616
+ let t = D(i, {
1617
+ show: () => {},
1618
+ startHide: () => {},
1619
+ hide: () => {}
1620
+ });
1621
+ return (e, n) => (N(), b("div", {
1622
+ class: "menu-trigger",
1623
+ onMouseenter: n[0] ||= (e) => B(t).show(),
1624
+ onMouseleave: n[1] ||= (e) => B(t).startHide()
1625
+ }, [...n[2] ||= [x("div", { class: "menu-trigger__indicator" }, [x("span", { class: "hamburger-icon" }, [
1626
+ x("span"),
1627
+ x("span"),
1628
+ x("span")
1629
+ ])], -1)]], 32));
1630
+ }
1631
+ }), [["__scopeId", "data-v-ae2e009f"]]), oi = ge, si = Ae, ci = Ke, li = lt, ui = jt, di = Qt, fi = oi, pi = si, mi = ci, hi = li, gi = ui, _i = di;
1632
+ //#endregion
1633
+ export { Cr as _, oi as a, en as b, mi as c, fi as d, pi as f, Fr as g, Kr as h, ui as i, hi as l, ii as m, ci as n, si as o, ai as p, li as r, _i as s, di as t, gi as u, _r as v, $ as x, lr as y };
1634
+
1635
+ //# sourceMappingURL=naive-Bd8pxcrF.js.map