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