@robot-admin/layout 2.1.0 → 2.3.0

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