mamba-layout 0.1.0 → 0.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.
Files changed (47) hide show
  1. package/dist/components/UserAvatar/src/UserAvatar.vue2.js +4 -4
  2. package/dist/layout/BaseLayout.css +1 -1
  3. package/dist/layout/BaseLayout.vue.js +2 -2
  4. package/dist/layout/BaseLayout.vue2.js +81 -45
  5. package/dist/layout/components/AppSelect.vue2.js +10 -10
  6. package/dist/layout/components/AsideBar.vue2.js +9 -9
  7. package/dist/layout/components/AsideSubMenuItem.vue.js +5 -5
  8. package/dist/layout/components/AsideSubMenus.vue.js +4 -4
  9. package/dist/layout/components/AsideTabMenus.vue.js +4 -4
  10. package/dist/layout/components/AsideUser.vue.js +1 -1
  11. package/dist/layout/components/HeaderBar.vue2.js +1 -1
  12. package/dist/layout/components/HeaderMenuToggle.vue.js +1 -1
  13. package/dist/layout/components/LanguageSelect.vue2.js +32 -33
  14. package/dist/layout/components/LayoutBreadcrumb.css +1 -1
  15. package/dist/layout/components/LayoutBreadcrumb.vue.d.ts +1 -1
  16. package/dist/layout/components/LayoutBreadcrumb.vue2.js +1 -1
  17. package/dist/layout/components/MenuDrawer.vue.js +1 -1
  18. package/dist/layout/components/MenuItemIcon.vue2.js +4 -4
  19. package/dist/layout/components/NavIconBtn.vue2.js +8 -8
  20. package/dist/layout/components/SHeaderRight.css +1 -1
  21. package/dist/layout/components/SHeaderRight.vue.js +2 -2
  22. package/dist/layout/components/SHeaderRight.vue2.js +37 -49
  23. package/dist/layout/components/ThemeToggle.vue2.js +3 -3
  24. package/dist/layout/components/TimezoneSelect.vue2.js +29 -29
  25. package/dist/layout/components/UserInfo.vue.js +2 -2
  26. package/dist/layout/components/UserInfo.vue2.js +1 -1
  27. package/dist/layout/components/UserInfo2.css +1 -1
  28. package/dist/layout/components/mobile/AppSelectMobile.vue.js +19 -19
  29. package/dist/layout/components/mobile/AsideBarMobile.css +1 -1
  30. package/dist/layout/components/mobile/AsideBarMobile.vue.js +3 -3
  31. package/dist/layout/components/mobile/AsideBarMobile.vue2.js +25 -23
  32. package/dist/layout/components/mobile/AsideUserMobile.vue2.js +3 -3
  33. package/dist/layout/components/mobile/AsideUserMobilePopover.vue2.js +2 -2
  34. package/dist/layout/components/mobile/HeaderRightMobile.css +1 -1
  35. package/dist/layout/components/mobile/HeaderRightMobile.vue.js +1 -1
  36. package/dist/layout/components/mobile/HeaderRightMobile.vue2.js +21 -25
  37. package/dist/layout/components/mobile/MobileMenuToggle.css +1 -1
  38. package/dist/layout/components/mobile/MobileMenuToggle.vue.js +1 -1
  39. package/dist/layout/components/mobile/MobileMenuToggle.vue2.js +15 -13
  40. package/dist/layout/hooks/useSetting.d.ts +1 -2
  41. package/dist/layout/hooks/useState.d.ts +98 -514
  42. package/dist/layout/hooks/useState.js +56 -55
  43. package/dist/layout.css +1 -1
  44. package/dist/layout.es.js +43244 -45315
  45. package/dist/layout.global.js +84 -54
  46. package/dist/utils/repoUtils.js +3 -3
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- .header-right[data-v-205feba2]{display:flex;align-items:center;gap:8px;font-size:13px;--nav-icon-btn-size: 30px}.header-right__login[data-v-205feba2]{height:30px;line-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;border-radius:var(--ui-radius-control);color:var(--ui-topnav-foreground);background:linear-gradient(135deg,var(--el-color-primary) 0%,var(--ui-topnav-accent) 100%);box-shadow:0 8px 18px rgba(var(--el-color-primary-rgb),.24);transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.header-right__login[data-v-205feba2]:hover{filter:brightness(1.05)}
1
+ .header-right[data-v-3c5e16a6]{display:flex;align-items:center;gap:8px;font-size:13px;--nav-icon-btn-size: 30px}.header-right__login[data-v-3c5e16a6]{height:30px;line-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;border-radius:var(--ui-radius-control);color:var(--ui-topnav-foreground);background:linear-gradient(135deg,var(--el-color-primary) 0%,var(--ui-topnav-accent) 100%);box-shadow:0 8px 18px rgba(var(--el-color-primary-rgb),.24);transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.header-right__login[data-v-3c5e16a6]:hover{filter:brightness(1.05)}
@@ -1,7 +1,7 @@
1
1
  import o from "./SHeaderRight.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-205feba2"]]);
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-3c5e16a6"]]);
5
5
  export {
6
- f as default
6
+ m as default
7
7
  };
@@ -1,45 +1,34 @@
1
- import { defineComponent as C, computed as a, resolveComponent as L, createElementBlock as h, openBlock as n, createBlock as m, createCommentVNode as P, createVNode as s, withCtx as f, createElementVNode as c, toDisplayString as x, unref as y } from "vue";
2
- import B from "../../locales/index.js";
3
- import { useSetting as S } from "../hooks/useSetting.js";
4
- import { getLayoutLoginPath as D } from "../utils/index.js";
5
- import I from "./LanguageSelect.vue.js";
6
- import N from "./NavIconBtn.vue.js";
7
- import U from "./ThemeToggle.vue.js";
8
- import V from "./UserInfo.vue.js";
9
- const E = { class: "header-right" }, M = ["href"], G = /* @__PURE__ */ C({
1
+ import { defineComponent as _, computed as n, resolveComponent as k, openBlock as a, createElementBlock as c, createBlock as u, withCtx as d, createVNode as r, createElementVNode as l, createCommentVNode as w, toDisplayString as C, unref as L } from "vue";
2
+ import b from "../../locales/index.js";
3
+ import { useSetting as x } from "../hooks/useSetting.js";
4
+ import { getLayoutLoginPath as y } from "../utils/index.js";
5
+ import B from "./LanguageSelect.vue.js";
6
+ import D from "./NavIconBtn.vue.js";
7
+ import N from "./ThemeToggle.vue.js";
8
+ import P from "./UserInfo.vue.js";
9
+ const S = { class: "header-right" }, V = ["href"], q = /* @__PURE__ */ _({
10
10
  __name: "SHeaderRight",
11
- setup(R) {
12
- const { t: p, locale: i } = B.global, o = S(), g = a(() => o.value.hideDoc ?? !1), v = a(() => D(o.value)), r = a(() => o.value.user), _ = a(() => {
13
- var t, e;
14
- return !!((t = r.value) != null && t.id || (e = r.value) != null && e.userId);
15
- }), b = (t) => {
16
- o.value.onLogin && (t.preventDefault(), o.value.onLogin());
17
- }, k = a(() => {
18
- var d, u;
19
- const t = i.value == "en-US" ? "/docs" : "/docs/" + i.value;
20
- let e = "";
21
- const l = [
22
- "03aafe62a76e21c9bb6e6224a62414b3",
23
- "5c3dcb05be31bea98922705eb8fdad1f",
24
- "69762cb59e9d97da2c970b7d4d4816bf",
25
- "70c03df02f4d4888adea4e86dbc630fd"
26
- ];
27
- return (u = (d = r.value) == null ? void 0 : d.roles) != null && u.some((w) => l.includes(w)) ? e = o.value.docOperatorPath || "" : e = o.value.docUserPath || "", t + e;
28
- });
29
- return (t, e) => {
30
- const l = L("el-icon");
31
- return n(), h("div", E, [
32
- g.value ? P("", !0) : (n(), m(N, {
11
+ setup(I) {
12
+ const { t: h } = b.global, e = x(), m = n(() => e.value.hideDoc ?? !1), p = n(() => y(e.value)), i = n(() => e.value.user), g = n(() => {
13
+ var o, t;
14
+ return !!((o = i.value) != null && o.id || (t = i.value) != null && t.userId);
15
+ }), f = (o) => {
16
+ e.value.onLogin && (o.preventDefault(), e.value.onLogin());
17
+ }, s = n(() => e.value.docsPath || "");
18
+ return (o, t) => {
19
+ const v = k("el-icon");
20
+ return a(), c("div", S, [
21
+ !m.value && s.value ? (a(), u(D, {
33
22
  key: 0,
34
23
  tag: "a",
35
24
  class: "whitespace-nowrap",
36
- href: k.value,
25
+ href: s.value,
37
26
  target: "_blank"
38
27
  }, {
39
- default: f(() => [
40
- s(l, null, {
41
- default: f(() => e[0] || (e[0] = [
42
- c("svg", {
28
+ default: d(() => [
29
+ r(v, null, {
30
+ default: d(() => [...t[0] || (t[0] = [
31
+ l("svg", {
43
32
  xmlns: "http://www.w3.org/2000/svg",
44
33
  width: "24",
45
34
  height: "24",
@@ -53,28 +42,27 @@ const E = { class: "header-right" }, M = ["href"], G = /* @__PURE__ */ C({
53
42
  "aria-hidden": "true",
54
43
  class: "lucide lucide-book-open"
55
44
  }, [
56
- c("path", { d: "M12 7v14" }),
57
- c("path", { d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" })
45
+ l("path", { d: "M12 7v14" }),
46
+ l("path", { d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" })
58
47
  ], -1)
59
- ])),
60
- _: 1,
61
- __: [0]
48
+ ])]),
49
+ _: 1
62
50
  })
63
51
  ]),
64
52
  _: 1
65
- }, 8, ["href"])),
66
- s(I),
67
- s(U),
68
- _.value ? (n(), m(V, { key: 1 })) : (n(), h("a", {
53
+ }, 8, ["href"])) : w("", !0),
54
+ r(B),
55
+ r(N),
56
+ g.value ? (a(), u(P, { key: 1 })) : (a(), c("a", {
69
57
  key: 2,
70
58
  class: "header-right__login",
71
- href: v.value,
72
- onClick: b
73
- }, x(y(p)("common.btn.login")), 9, M))
59
+ href: p.value,
60
+ onClick: f
61
+ }, C(L(h)("common.btn.login")), 9, V))
74
62
  ]);
75
63
  };
76
64
  }
77
65
  });
78
66
  export {
79
- G as default
67
+ q as default
80
68
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as a, watchEffect as f, resolveComponent as p, createBlock as o, openBlock as t, unref as e, withCtx as n, createVNode as s } from "vue";
1
+ import { defineComponent as a, watchEffect as f, resolveComponent as p, openBlock as o, createBlock as t, unref as e, withCtx as n, createVNode as s } from "vue";
2
2
  import { Moon as u, Sunny as _ } from "@element-plus/icons-vue";
3
3
  import { useSetting as h } from "../hooks/useSetting.js";
4
4
  import { useTheme as k } from "../hooks/useTheme.js";
@@ -11,11 +11,11 @@ const N = /* @__PURE__ */ a({
11
11
  r.value.theme = c.value;
12
12
  }), (C, v) => {
13
13
  const i = p("el-icon");
14
- return t(), o(g, { onClick: e(l) }, {
14
+ return o(), t(g, { onClick: e(l) }, {
15
15
  default: n(() => [
16
16
  s(i, null, {
17
17
  default: n(() => [
18
- e(m) ? (t(), o(e(_), { key: 1 })) : (t(), o(e(u), { key: 0 }))
18
+ e(m) ? (o(), t(e(_), { key: 1 })) : (o(), t(e(u), { key: 0 }))
19
19
  ]),
20
20
  _: 1
21
21
  })
@@ -1,67 +1,67 @@
1
- import { defineComponent as g, ref as w, computed as r, resolveComponent as v, createBlock as f, openBlock as t, withCtx as n, createElementVNode as i, createElementBlock as c, Fragment as y, renderList as T, normalizeClass as Z, toDisplayString as u, createVNode as l, createCommentVNode as d, unref as b } from "vue";
2
- import { Clock as L, ArrowDown as B } from "@element-plus/icons-vue";
3
- import { useCurrentTimeZone as N, getTimeZoneOptions as V, getTimeZoneLabel as D, setCurrentTimeZone as E } from "../../utils/repoUtils.js";
1
+ import { defineComponent as w, ref as y, computed as c, resolveComponent as f, openBlock as t, createBlock as d, withCtx as o, createElementVNode as i, createElementBlock as r, Fragment as T, renderList as Z, normalizeClass as L, toDisplayString as u, createVNode as n, unref as b, createCommentVNode as h } from "vue";
2
+ import { Clock as B, ArrowDown as N } from "@element-plus/icons-vue";
3
+ import { useCurrentTimeZone as x, getTimeZoneOptions as V, getTimeZoneLabel as D, setCurrentTimeZone as E } from "../../utils/repoUtils.js";
4
4
  import O from "./NavIconBtn.vue.js";
5
5
  const S = {
6
6
  key: 0,
7
7
  class: "timezone-select__current"
8
- }, A = { class: "timezone-select__panel" }, F = ["onClick"], I = { class: "timezone-select__name" }, R = { class: "timezone-select__offset" }, H = /* @__PURE__ */ g({
8
+ }, A = { class: "timezone-select__panel" }, F = ["onClick"], I = { class: "timezone-select__name" }, R = { class: "timezone-select__offset" }, H = /* @__PURE__ */ w({
9
9
  __name: "TimezoneSelect",
10
10
  props: {
11
11
  showLabel: { type: Boolean, default: !1 }
12
12
  },
13
- setup(U) {
14
- const h = N(), s = w(!1), a = r(() => h.value), z = r(() => V()), p = r(() => D(a.value)), C = (o) => {
15
- E(o), s.value = !1;
13
+ setup(l) {
14
+ const z = x(), s = y(!1), a = c(() => z.value), C = c(() => V()), m = c(() => D(a.value)), k = (_) => {
15
+ E(_), s.value = !1;
16
16
  };
17
- return (o, m) => {
18
- const _ = v("el-icon"), k = v("el-popover");
19
- return t(), f(k, {
17
+ return (_, p) => {
18
+ const v = f("el-icon"), g = f("el-popover");
19
+ return t(), d(g, {
20
20
  visible: s.value,
21
- "onUpdate:visible": m[0] || (m[0] = (e) => s.value = e),
21
+ "onUpdate:visible": p[0] || (p[0] = (e) => s.value = e),
22
22
  placement: "bottom",
23
23
  width: 280,
24
24
  trigger: "hover",
25
25
  "popper-class": "top-timezone-popover"
26
26
  }, {
27
- reference: n(() => [
28
- l(O, {
27
+ reference: o(() => [
28
+ n(O, {
29
29
  tag: "div",
30
30
  class: "timezone-select",
31
- "icon-only": !o.showLabel,
32
- title: p.value,
33
- "aria-label": p.value
31
+ "icon-only": !l.showLabel,
32
+ title: m.value,
33
+ "aria-label": m.value
34
34
  }, {
35
- default: n(() => [
36
- l(_, null, {
37
- default: n(() => [
38
- l(b(L))
35
+ default: o(() => [
36
+ n(v, null, {
37
+ default: o(() => [
38
+ n(b(B))
39
39
  ]),
40
40
  _: 1
41
41
  }),
42
- o.showLabel ? (t(), c("span", S, u(a.value), 1)) : d("", !0),
43
- o.showLabel ? (t(), f(_, {
42
+ l.showLabel ? (t(), r("span", S, u(a.value), 1)) : h("", !0),
43
+ l.showLabel ? (t(), d(v, {
44
44
  key: 1,
45
45
  class: "timezone-select__caret"
46
46
  }, {
47
- default: n(() => [
48
- l(b(B))
47
+ default: o(() => [
48
+ n(b(N))
49
49
  ]),
50
50
  _: 1
51
- })) : d("", !0)
51
+ })) : h("", !0)
52
52
  ]),
53
53
  _: 1
54
54
  }, 8, ["icon-only", "title", "aria-label"])
55
55
  ]),
56
- default: n(() => [
56
+ default: o(() => [
57
57
  i("div", A, [
58
- (t(!0), c(y, null, T(z.value, (e) => (t(), c("button", {
58
+ (t(!0), r(T, null, Z(C.value, (e) => (t(), r("button", {
59
59
  key: e.value,
60
60
  type: "button",
61
- class: Z(["timezone-select__option", {
61
+ class: L(["timezone-select__option", {
62
62
  "timezone-select__option--active": e.value === a.value
63
63
  }]),
64
- onClick: ($) => C(e.value)
64
+ onClick: (U) => k(e.value)
65
65
  }, [
66
66
  i("span", I, u(e.value), 1),
67
67
  i("span", R, u(e.offset), 1)
@@ -2,7 +2,7 @@ import o from "./UserInfo.vue2.js";
2
2
  /* empty css */
3
3
  /* empty css */
4
4
  import r from "../../_virtual/_plugin-vue_export-helper.js";
5
- const s = /* @__PURE__ */ r(o, [["__scopeId", "data-v-63bc60f6"]]);
5
+ const f = /* @__PURE__ */ r(o, [["__scopeId", "data-v-ac052463"]]);
6
6
  export {
7
- s as default
7
+ f as default
8
8
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as x, computed as v, resolveComponent as M, createBlock as w, openBlock as r, withCtx as b, createElementVNode as l, createElementBlock as m, createVNode as f, unref as d, createCommentVNode as B, toDisplayString as u, Fragment as h, renderList as y } from "vue";
1
+ import { defineComponent as x, computed as v, resolveComponent as M, openBlock as r, createBlock as w, withCtx as b, createElementVNode as l, createVNode as f, unref as d, toDisplayString as u, createElementBlock as m, createCommentVNode as B, Fragment as h, renderList as y } from "vue";
2
2
  import k from "../../components/UserAvatar/src/UserAvatar.vue.js";
3
3
  import U from "./MenuItemIcon.vue.js";
4
4
  import V from "../../locales/index.js";
@@ -1 +1 @@
1
- .user-info__trigger[data-v-63bc60f6]{display:inline-flex;width:28px;height:28px;overflow:hidden;border-radius:var(--ui-radius-pill);background:var(--ui-avatar-bg, var(--el-color-primary));border:1px solid var(--ui-topnav-border);align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--ui-text-on-brand);cursor:pointer;flex-shrink:0;-webkit-user-select:none;user-select:none;transition:border-color var(--ui-transition-fast),filter var(--ui-transition-fast)}.user-info__trigger[data-v-63bc60f6]:hover{border-color:var(--ui-topnav-foreground);filter:brightness(1.05)}.user-info__panel[data-v-63bc60f6]{display:grid;gap:4px}.user-info__profile[data-v-63bc60f6]{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center;padding:8px 8px 10px}.user-info__profile-avatar[data-v-63bc60f6]{width:44px;height:44px;overflow:hidden;border-radius:var(--ui-radius-pill);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--ui-avatar-bg, var(--el-color-primary));color:var(--ui-text-on-brand);font-size:16px;font-weight:700}.user-info__profile-main[data-v-63bc60f6]{min-width:0}.user-info__display-name[data-v-63bc60f6]{color:var(--ui-text-primary);font-size:14px;font-weight:700;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__username[data-v-63bc60f6]{margin-top:2px;color:var(--ui-text-muted);font-size:12px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__meta[data-v-63bc60f6]{display:grid;gap:2px;padding:8px;margin-bottom:2px;border-radius:var(--ui-radius-control);background:var(--ui-bg-muted)}.user-info__meta-row[data-v-63bc60f6]{display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;align-items:center;min-height:24px;font-size:12px;line-height:18px}.user-info__meta-label[data-v-63bc60f6]{color:var(--ui-text-muted)}.user-info__meta-value[data-v-63bc60f6]{min-width:0;color:var(--ui-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.user-info__item[data-v-63bc60f6]{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.user-info__item[data-v-63bc60f6]:hover{background:var(--ui-bg-muted)}.user-info__item--danger[data-v-63bc60f6]{color:var(--el-color-danger)}.user-info__divider[data-v-63bc60f6]{height:1px;background:var(--ui-border-soft);margin:4px 0}
1
+ .user-info__trigger[data-v-ac052463]{display:inline-flex;width:28px;height:28px;overflow:hidden;border-radius:var(--ui-radius-pill);background:var(--ui-avatar-bg, var(--el-color-primary));border:1px solid var(--ui-topnav-border);align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--ui-text-on-brand);cursor:pointer;flex-shrink:0;-webkit-user-select:none;user-select:none;transition:border-color var(--ui-transition-fast),filter var(--ui-transition-fast)}.user-info__trigger[data-v-ac052463]:hover{border-color:var(--ui-topnav-foreground);filter:brightness(1.05)}.user-info__panel[data-v-ac052463]{display:grid;gap:2px}.user-info__profile[data-v-ac052463]{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center;padding:8px 8px 10px}.user-info__profile-avatar[data-v-ac052463]{width:44px;height:44px;overflow:hidden;border-radius:var(--ui-radius-pill);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--ui-avatar-bg, var(--el-color-primary));color:var(--ui-text-on-brand);font-size:16px;font-weight:700}.user-info__profile-main[data-v-ac052463]{min-width:0}.user-info__display-name[data-v-ac052463]{color:var(--ui-text-primary);font-size:14px;font-weight:700;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__username[data-v-ac052463]{margin-top:2px;color:var(--ui-text-muted);font-size:12px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__meta[data-v-ac052463]{display:grid;gap:2px;padding:8px;margin-bottom:2px;border-radius:var(--ui-radius-control);background:var(--ui-bg-muted)}.user-info__meta-row[data-v-ac052463]{display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;align-items:center;min-height:24px;font-size:12px;line-height:18px}.user-info__meta-label[data-v-ac052463]{color:var(--ui-text-muted)}.user-info__meta-value[data-v-ac052463]{min-width:0;color:var(--ui-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.user-info__item[data-v-ac052463]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);font-size:12px;cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.user-info__item[data-v-ac052463]:hover{background:var(--ui-bg-muted)}.user-info__item--danger[data-v-ac052463]{color:var(--el-color-danger)}.user-info__divider[data-v-ac052463]{height:1px;background:var(--ui-border-soft);margin:4px 0}
@@ -1,57 +1,57 @@
1
- import { defineComponent as C, computed as x, resolveComponent as p, createElementBlock as l, createCommentVNode as A, unref as o, openBlock as e, createVNode as B, withCtx as i, Fragment as c, renderList as f, createBlock as u } from "vue";
1
+ import { defineComponent as C, computed as x, resolveComponent as p, unref as l, openBlock as e, createElementBlock as o, createVNode as A, withCtx as i, Fragment as c, renderList as f, createBlock as u, createCommentVNode as B } from "vue";
2
2
  import { useApp as I } from "../../hooks/useApp.js";
3
3
  import { injectLayoutContext as w } from "../../hooks/useState.js";
4
4
  const L = {
5
5
  key: 0,
6
- class: "w-full px-3"
6
+ class: "min-w-0 flex-1"
7
7
  }, F = /* @__PURE__ */ C({
8
8
  __name: "AppSelectMobile",
9
9
  setup(N) {
10
10
  const { currentAppId: v } = w(), { appList: s, getAppPath: a, findAppById: h } = I(), g = x(() => {
11
- const t = h(v.value);
12
- return t ? a(t) : "";
13
- }), k = (t) => {
14
- t && (location.href = t);
11
+ const n = h(v.value);
12
+ return n ? a(n) : "";
13
+ }), k = (n) => {
14
+ n && (location.href = n);
15
15
  };
16
- return (t, P) => {
16
+ return (n, P) => {
17
17
  var d;
18
18
  const _ = p("el-option"), y = p("el-option-group"), b = p("el-select");
19
- return (d = o(s)) != null && d.length ? (e(), l("div", L, [
20
- B(b, {
19
+ return (d = l(s)) != null && d.length ? (e(), o("div", L, [
20
+ A(b, {
21
21
  "model-value": g.value,
22
22
  class: "w-full",
23
23
  onChange: k
24
24
  }, {
25
25
  default: i(() => [
26
- (e(!0), l(c, null, f(o(s), (n) => {
26
+ (e(!0), o(c, null, f(l(s), (t) => {
27
27
  var m;
28
- return e(), l(c, {
29
- key: n.appId
28
+ return e(), o(c, {
29
+ key: t.appId
30
30
  }, [
31
- (m = n.children) != null && m.length ? (e(), u(y, {
31
+ (m = t.children) != null && m.length ? (e(), u(y, {
32
32
  key: 0,
33
- label: n.name
33
+ label: t.name
34
34
  }, {
35
35
  default: i(() => [
36
- (e(!0), l(c, null, f(n.children, (r) => (e(), u(_, {
36
+ (e(!0), o(c, null, f(t.children, (r) => (e(), u(_, {
37
37
  key: r.appId,
38
38
  label: r.name,
39
- value: o(a)(r),
39
+ value: l(a)(r),
40
40
  style: { "padding-left": "30px" }
41
41
  }, null, 8, ["label", "value"]))), 128))
42
42
  ]),
43
43
  _: 2
44
44
  }, 1032, ["label"])) : (e(), u(_, {
45
45
  key: 1,
46
- label: n.name,
47
- value: o(a)(n)
46
+ label: t.name,
47
+ value: l(a)(t)
48
48
  }, null, 8, ["label", "value"]))
49
49
  ], 64);
50
50
  }), 128))
51
51
  ]),
52
52
  _: 1
53
53
  }, 8, ["model-value"])
54
- ])) : A("", !0);
54
+ ])) : B("", !0);
55
55
  };
56
56
  }
57
57
  });
@@ -1 +1 @@
1
- .aside-bar-mobile[data-v-dede8d1e]{border-right:1px solid var(--ui-sidebar-border);background:var(--ui-sidebar-bg);color:var(--ui-sidebar-foreground);box-shadow:var(--ui-shadow-pop)}.aside-bar-mobile__head[data-v-dede8d1e]{border-bottom:1px solid var(--ui-sidebar-border)}.aside-bar-mobile__close[data-v-dede8d1e]{color:var(--ui-text-muted)}
1
+ .aside-bar-mobile[data-v-ffd10c8b]{width:min(86vw,320px);max-width:calc(100vw - 32px);height:100vh;height:100dvh;z-index:240;border-right:1px solid var(--ui-sidebar-border);background:var(--ui-sidebar-bg);color:var(--ui-sidebar-foreground);box-shadow:var(--ui-shadow-pop);will-change:transform}.aside-bar-mobile__head[data-v-ffd10c8b]{min-height:var(--layout-mobile-header-height, 56px);padding:10px 12px;border-bottom:1px solid var(--ui-sidebar-border);flex-shrink:0}.aside-bar-mobile__close[data-v-ffd10c8b]{width:36px;height:36px;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:1px solid var(--ui-sidebar-border);border-radius:var(--ui-radius-control);background:var(--ui-sidebar-accent);color:var(--ui-text-muted);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.aside-bar-mobile__close[data-v-ffd10c8b]:hover{background:var(--ui-sidebar-hover-bg);color:var(--ui-sidebar-foreground)}.aside-bar-mobile[data-v-ffd10c8b] .el-scrollbar{flex:1 1 auto;min-height:0}
@@ -1,7 +1,7 @@
1
1
  import o from "./AsideBarMobile.vue2.js";
2
2
  /* empty css */
3
- import e from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const a = /* @__PURE__ */ e(o, [["__scopeId", "data-v-dede8d1e"]]);
3
+ import r from "../../../_virtual/_plugin-vue_export-helper.js";
4
+ const e = /* @__PURE__ */ r(o, [["__scopeId", "data-v-ffd10c8b"]]);
5
5
  export {
6
- a as default
6
+ e as default
7
7
  };
@@ -1,47 +1,49 @@
1
- import { defineComponent as d, resolveComponent as s, createElementBlock as _, createCommentVNode as f, unref as o, openBlock as p, normalizeClass as u, createElementVNode as l, createVNode as e, renderSlot as b, withCtx as i } from "vue";
1
+ import { defineComponent as d, resolveComponent as r, unref as o, openBlock as _, createElementBlock as f, normalizeClass as p, createElementVNode as t, createVNode as e, withCtx as a, renderSlot as u, createCommentVNode as b } from "vue";
2
2
  import { Fold as x } from "@element-plus/icons-vue";
3
3
  import { injectLayoutContext as h } from "../../hooks/useState.js";
4
- import v from "../AsideSubMenus.vue.js";
5
- import C from "./AppSelectMobile.vue.js";
6
- import g from "./AsideUserMobile.vue.js";
7
- const k = { class: "aside-bar-mobile__head flex justify-between items-center pt-4 pb-4 px-4" }, w = { class: "p-3" }, A = /* @__PURE__ */ d({
4
+ import C from "../AsideSubMenus.vue.js";
5
+ import v from "./AppSelectMobile.vue.js";
6
+ import k from "./AsideUserMobile.vue.js";
7
+ const y = { class: "aside-bar-mobile__head flex items-center gap-3" }, S = { class: "p-3" }, M = /* @__PURE__ */ d({
8
8
  __name: "AsideBarMobile",
9
9
  setup($) {
10
- const { menus: n, sideOpen: t } = h(), a = () => void (t.value = !t.value);
11
- return (r, y) => {
12
- const m = s("el-icon"), c = s("el-scrollbar");
13
- return o(n).length && !r.$route.meta.hideSidebar ? (p(), _("div", {
10
+ const { menus: l, sideOpen: n } = h(), i = () => void (n.value = !1);
11
+ return (s, B) => {
12
+ const m = r("el-icon"), c = r("el-scrollbar");
13
+ return o(l).length && !s.$route.meta.hideSidebar ? (_(), f("div", {
14
14
  key: 0,
15
- class: u(["aside-bar-mobile flex flex-col h-full min-h-0 w-1/2 min-w-70 fixed top-0 left-0 z-200 transition-all", [o(t) ? "translate-x-[0px]" : "translate-x-[-100%]"]])
15
+ class: p(["aside-bar-mobile fixed inset-y-0 left-0 z-200 flex min-h-0 flex-col transition-transform", [o(n) ? "translate-x-[0px]" : "translate-x-[-100%]"]])
16
16
  }, [
17
- l("div", k, [
18
- l("div", {
19
- class: "aside-bar-mobile__close text-lg cursor-pointer p-2 leading-4",
20
- onClick: a
17
+ t("div", y, [
18
+ t("button", {
19
+ type: "button",
20
+ class: "aside-bar-mobile__close",
21
+ "aria-label": "Close menu",
22
+ onClick: i
21
23
  }, [
22
24
  e(m, null, {
23
- default: i(() => [
25
+ default: a(() => [
24
26
  e(o(x))
25
27
  ]),
26
28
  _: 1
27
29
  })
28
30
  ]),
29
- e(C)
31
+ e(v)
30
32
  ]),
31
33
  e(c, { ref: "leftScrollRef" }, {
32
- default: i(() => [
33
- l("div", w, [
34
- e(v, { menus: o(n) }, null, 8, ["menus"])
34
+ default: a(() => [
35
+ t("div", S, [
36
+ e(C, { menus: o(l) }, null, 8, ["menus"])
35
37
  ])
36
38
  ]),
37
39
  _: 1
38
40
  }, 512),
39
- b(r.$slots, "sidebar-foot", {}, void 0, !0),
40
- e(g)
41
- ], 2)) : f("", !0);
41
+ u(s.$slots, "sidebar-foot", {}, void 0, !0),
42
+ e(k)
43
+ ], 2)) : b("", !0);
42
44
  };
43
45
  }
44
46
  });
45
47
  export {
46
- A as default
48
+ M as default
47
49
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as v, computed as n, resolveComponent as f, createBlock as g, createElementBlock as b, openBlock as u, withCtx as r, createElementVNode as o, toDisplayString as y, createVNode as t, unref as c } from "vue";
1
+ import { defineComponent as v, computed as n, resolveComponent as f, openBlock as u, createBlock as g, withCtx as r, createElementVNode as o, toDisplayString as b, createVNode as t, unref as c, createElementBlock as y } from "vue";
2
2
  import { ArrowRight as d } from "@element-plus/icons-vue";
3
3
  import { useSetting as h } from "../../hooks/useSetting.js";
4
4
  import { redirectToLayoutLogin as k } from "../../utils/index.js";
@@ -18,7 +18,7 @@ const C = { class: "aside-user-mobile" }, L = { class: "flex-1" }, A = { class:
18
18
  e[0] || (e[0] = o("div", { class: "aside-user-mobile__icon text-lg" }, [
19
19
  o("i", { class: "metisicon-yonghu1" })
20
20
  ], -1)),
21
- o("div", L, y(_.value), 1),
21
+ o("div", L, b(_.value), 1),
22
22
  o("div", A, [
23
23
  t(a, null, {
24
24
  default: r(() => [
@@ -30,7 +30,7 @@ const C = { class: "aside-user-mobile" }, L = { class: "flex-1" }, A = { class:
30
30
  ])
31
31
  ]),
32
32
  _: 1
33
- })) : (u(), b("div", {
33
+ })) : (u(), y("div", {
34
34
  key: 1,
35
35
  class: "aside-user-mobile",
36
36
  onClick: p
@@ -1,4 +1,4 @@
1
- import { defineComponent as a, computed as c, resolveComponent as v, createBlock as d, openBlock as f, withCtx as n, createElementVNode as o, createVNode as _, toDisplayString as i, unref as s, renderSlot as g } from "vue";
1
+ import { defineComponent as a, computed as c, resolveComponent as v, openBlock as d, createBlock as f, withCtx as n, createElementVNode as o, toDisplayString as i, unref as s, createVNode as _, renderSlot as g } from "vue";
2
2
  import b from "../../../locales/index.js";
3
3
  import { useSetting as C } from "../../hooks/useSetting.js";
4
4
  import { getLayoutUserCenterPath as L, redirectToLayoutLogin as y } from "../../utils/index.js";
@@ -14,7 +14,7 @@ const k = { class: "mobile-user-popover" }, P = ["href"], V = /* @__PURE__ */ a(
14
14
  };
15
15
  return (r, e) => {
16
16
  const m = v("el-popover");
17
- return f(), d(m, {
17
+ return d(), f(m, {
18
18
  width: 220,
19
19
  trigger: "click",
20
20
  "popper-class": "top-userinfo-popover"
@@ -1 +1 @@
1
- .header-right-mobile[data-v-03748150]{--nav-icon-btn-size: 40px;display:flex;align-items:center;gap:10px;padding-right:4px}.header-right-mobile__action[data-v-03748150]{--nav-icon-btn-color: var(--ui-topnav-foreground);--nav-icon-btn-bg: var(--ui-topnav-surface);--nav-icon-btn-border-color: var(--ui-topnav-border);--nav-icon-btn-hover-bg: var(--ui-topnav-hover);--nav-icon-btn-hover-color: var(--ui-topnav-foreground);--nav-icon-btn-hover-border-color: var(--ui-topnav-border)}
1
+ .header-right-mobile[data-v-48792b0a]{--nav-icon-btn-size: 40px;display:flex;align-items:center;gap:8px;padding-right:0;min-width:0}.header-right-mobile[data-v-48792b0a] .nav-icon-btn{--nav-icon-btn-size: 40px;--nav-icon-btn-color: var(--ui-topnav-foreground);--nav-icon-btn-bg: var(--ui-topnav-surface);--nav-icon-btn-border-color: var(--ui-topnav-border);--nav-icon-btn-hover-bg: var(--ui-topnav-hover);--nav-icon-btn-hover-color: var(--ui-topnav-foreground);--nav-icon-btn-hover-border-color: var(--ui-topnav-border)}.header-right-mobile__action[data-v-48792b0a]{--nav-icon-btn-color: var(--ui-topnav-foreground);--nav-icon-btn-bg: var(--ui-topnav-surface);--nav-icon-btn-border-color: var(--ui-topnav-border);--nav-icon-btn-hover-bg: var(--ui-topnav-hover);--nav-icon-btn-hover-color: var(--ui-topnav-foreground);--nav-icon-btn-hover-border-color: var(--ui-topnav-border)}@media(max-width:374px){.header-right-mobile[data-v-48792b0a]{--nav-icon-btn-size: 36px;gap:6px}.header-right-mobile[data-v-48792b0a] .nav-icon-btn{--nav-icon-btn-size: 36px}}
@@ -1,7 +1,7 @@
1
1
  import o from "./HeaderRightMobile.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const i = /* @__PURE__ */ t(o, [["__scopeId", "data-v-03748150"]]);
4
+ const i = /* @__PURE__ */ t(o, [["__scopeId", "data-v-48792b0a"]]);
5
5
  export {
6
6
  i as default
7
7
  };
@@ -1,33 +1,30 @@
1
- import { defineComponent as u, computed as d, createElementBlock as _, openBlock as r, createVNode as i, createBlock as l, withCtx as n, createElementVNode as s } from "vue";
2
- import { useSetting as p } from "../../hooks/useSetting.js";
3
- import { redirectToLayoutLogin as f } from "../../utils/index.js";
1
+ import { defineComponent as u, computed as d, openBlock as r, createElementBlock as p, createVNode as n, createBlock as l, withCtx as i, createElementVNode as s } from "vue";
2
+ import { useSetting as g } from "../../hooks/useSetting.js";
3
+ import { redirectToLayoutLogin as _ } from "../../utils/index.js";
4
4
  import a from "../NavIconBtn.vue.js";
5
- import g from "../ThemeToggle.vue.js";
6
- import h from "../TimezoneSelect.vue.js";
7
- import v from "./AsideUserMobilePopover.vue.js";
8
- const k = { class: "header-right-mobile" }, E = /* @__PURE__ */ u({
5
+ import f from "../ThemeToggle.vue.js";
6
+ import h from "./AsideUserMobilePopover.vue.js";
7
+ const v = { class: "header-right-mobile" }, N = /* @__PURE__ */ u({
9
8
  __name: "HeaderRightMobile",
10
- setup(b) {
11
- const t = p(), m = d(
9
+ setup(k) {
10
+ const t = g(), m = d(
12
11
  () => {
13
12
  var o, e;
14
13
  return !!((o = t.value.user) != null && o.id || (e = t.value.user) != null && e.userId);
15
14
  }
16
15
  ), c = () => {
17
16
  var o, e;
18
- (e = (o = t.value).onLogin) != null && e.call(o) || f(t.value);
17
+ (e = (o = t.value).onLogin) != null && e.call(o) || _(t.value);
19
18
  };
20
- return (o, e) => (r(), _("div", k, [
21
- i(h),
22
- i(g),
23
- m.value ? (r(), l(v, { key: 0 }, {
24
- reference: n(() => [
25
- i(a, { class: "header-right-mobile__action" }, {
26
- default: n(() => e[0] || (e[0] = [
19
+ return (o, e) => (r(), p("div", v, [
20
+ n(f),
21
+ m.value ? (r(), l(h, { key: 0 }, {
22
+ reference: i(() => [
23
+ n(a, { class: "header-right-mobile__action" }, {
24
+ default: i(() => [...e[0] || (e[0] = [
27
25
  s("i", { class: "metisicon-yonghu1" }, null, -1)
28
- ])),
29
- _: 1,
30
- __: [0]
26
+ ])]),
27
+ _: 1
31
28
  })
32
29
  ]),
33
30
  _: 1
@@ -36,15 +33,14 @@ const k = { class: "header-right-mobile" }, E = /* @__PURE__ */ u({
36
33
  class: "header-right-mobile__action",
37
34
  onClick: c
38
35
  }, {
39
- default: n(() => e[1] || (e[1] = [
36
+ default: i(() => [...e[1] || (e[1] = [
40
37
  s("i", { class: "metisicon-yonghu1" }, null, -1)
41
- ])),
42
- _: 1,
43
- __: [1]
38
+ ])]),
39
+ _: 1
44
40
  }))
45
41
  ]));
46
42
  }
47
43
  });
48
44
  export {
49
- E as default
45
+ N as default
50
46
  };
@@ -1 +1 @@
1
- .mobile-menu-toggle[data-v-3aac408b]{width:52px;height:52px;display:inline-flex;align-items:center;justify-content:center;border:0;border-right:1px solid var(--ui-topnav-border);background:var(--ui-topnav-accent);color:var(--ui-topnav-foreground);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.mobile-menu-toggle[data-v-3aac408b]:hover{background:var(--ui-topnav-hover)}.mobile-menu-toggle__icon[data-v-3aac408b]{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;font-size:18px}
1
+ .mobile-menu-toggle[data-v-c14b8f72]{width:40px;height:40px;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:1px solid var(--ui-topnav-border);border-radius:var(--ui-radius-control);background:var(--ui-topnav-surface);color:var(--ui-topnav-foreground);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.mobile-menu-toggle[data-v-c14b8f72]:hover{background:var(--ui-topnav-hover)}.mobile-menu-toggle[data-v-c14b8f72]:focus-visible{outline:2px solid var(--ui-topnav-foreground);outline-offset:2px}.mobile-menu-toggle__icon[data-v-c14b8f72]{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;font-size:18px}
@@ -1,7 +1,7 @@
1
1
  import o from "./MobileMenuToggle.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-3aac408b"]]);
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-c14b8f72"]]);
5
5
  export {
6
6
  m as default
7
7
  };