mamba-layout 0.8.0 → 0.10.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 (101) hide show
  1. package/dist/index.css +1 -0
  2. package/dist/index.js.js +2562 -0
  3. package/dist/layout/components/index.d.ts +2 -0
  4. package/package.json +1 -1
  5. package/dist/_virtual/_plugin-vue_export-helper.js +0 -9
  6. package/dist/assets/logo.png.js +0 -4
  7. package/dist/components/UserAvatar/index.js +0 -5
  8. package/dist/components/UserAvatar/src/UserAvatar.css +0 -1
  9. package/dist/components/UserAvatar/src/UserAvatar.vue.js +0 -7
  10. package/dist/components/UserAvatar/src/UserAvatar.vue2.js +0 -61
  11. package/dist/components/index.js +0 -10
  12. package/dist/index.js +0 -27
  13. package/dist/layout/BaseLayout.css +0 -1
  14. package/dist/layout/BaseLayout.vue.js +0 -7
  15. package/dist/layout/BaseLayout.vue2.js +0 -111
  16. package/dist/layout/components/AppSelect.css +0 -1
  17. package/dist/layout/components/AppSelect.vue.js +0 -7
  18. package/dist/layout/components/AppSelect.vue2.js +0 -69
  19. package/dist/layout/components/AsideBar.css +0 -1
  20. package/dist/layout/components/AsideBar.vue.js +0 -7
  21. package/dist/layout/components/AsideBar.vue2.js +0 -49
  22. package/dist/layout/components/AsideSubMenuItem.vue.js +0 -84
  23. package/dist/layout/components/AsideSubMenuItem.vue2.js +0 -4
  24. package/dist/layout/components/AsideSubMenus.vue.js +0 -36
  25. package/dist/layout/components/AsideSubMenus.vue2.js +0 -4
  26. package/dist/layout/components/HeaderBar.css +0 -1
  27. package/dist/layout/components/HeaderBar.vue.js +0 -7
  28. package/dist/layout/components/HeaderBar.vue2.js +0 -55
  29. package/dist/layout/components/LanguageSelect.css +0 -1
  30. package/dist/layout/components/LanguageSelect.vue.js +0 -8
  31. package/dist/layout/components/LanguageSelect.vue2.js +0 -100
  32. package/dist/layout/components/LanguageSelect2.css +0 -1
  33. package/dist/layout/components/LayoutBreadcrumb.css +0 -1
  34. package/dist/layout/components/LayoutBreadcrumb.vue.js +0 -7
  35. package/dist/layout/components/LayoutBreadcrumb.vue2.js +0 -189
  36. package/dist/layout/components/MenuItemIcon.css +0 -1
  37. package/dist/layout/components/MenuItemIcon.vue.js +0 -7
  38. package/dist/layout/components/MenuItemIcon.vue2.js +0 -23
  39. package/dist/layout/components/NavIconBtn.css +0 -1
  40. package/dist/layout/components/NavIconBtn.vue.js +0 -7
  41. package/dist/layout/components/NavIconBtn.vue2.js +0 -23
  42. package/dist/layout/components/SHeaderRight.css +0 -1
  43. package/dist/layout/components/SHeaderRight.vue.js +0 -7
  44. package/dist/layout/components/SHeaderRight.vue2.js +0 -68
  45. package/dist/layout/components/ThemeToggle.css +0 -1
  46. package/dist/layout/components/ThemeToggle.vue.js +0 -7
  47. package/dist/layout/components/ThemeToggle.vue2.js +0 -30
  48. package/dist/layout/components/TimezoneSelect.css +0 -1
  49. package/dist/layout/components/TimezoneSelect.vue.js +0 -8
  50. package/dist/layout/components/TimezoneSelect.vue2.js +0 -78
  51. package/dist/layout/components/TimezoneSelect2.css +0 -1
  52. package/dist/layout/components/UserInfo.css +0 -1
  53. package/dist/layout/components/UserInfo.vue.js +0 -8
  54. package/dist/layout/components/UserInfo.vue2.js +0 -111
  55. package/dist/layout/components/UserInfo2.css +0 -1
  56. package/dist/layout/components/index.js +0 -8
  57. package/dist/layout/components/mobile/AppSelectMobile.vue.js +0 -60
  58. package/dist/layout/components/mobile/AppSelectMobile.vue2.js +0 -4
  59. package/dist/layout/components/mobile/AsideBarMobile.css +0 -1
  60. package/dist/layout/components/mobile/AsideBarMobile.vue.js +0 -7
  61. package/dist/layout/components/mobile/AsideBarMobile.vue2.js +0 -49
  62. package/dist/layout/components/mobile/AsideUserMobile.css +0 -1
  63. package/dist/layout/components/mobile/AsideUserMobile.vue.js +0 -7
  64. package/dist/layout/components/mobile/AsideUserMobile.vue2.js +0 -56
  65. package/dist/layout/components/mobile/AsideUserMobilePopover.css +0 -1
  66. package/dist/layout/components/mobile/AsideUserMobilePopover.vue.js +0 -7
  67. package/dist/layout/components/mobile/AsideUserMobilePopover.vue2.js +0 -52
  68. package/dist/layout/components/mobile/HeaderRightMobile.css +0 -1
  69. package/dist/layout/components/mobile/HeaderRightMobile.vue.js +0 -7
  70. package/dist/layout/components/mobile/HeaderRightMobile.vue2.js +0 -46
  71. package/dist/layout/components/mobile/MobileMenuToggle.css +0 -1
  72. package/dist/layout/components/mobile/MobileMenuToggle.vue.js +0 -7
  73. package/dist/layout/components/mobile/MobileMenuToggle.vue2.js +0 -33
  74. package/dist/layout/hooks/index.js +0 -13
  75. package/dist/layout/hooks/useApp.js +0 -20
  76. package/dist/layout/hooks/useSetting.js +0 -26
  77. package/dist/layout/hooks/useState.js +0 -100
  78. package/dist/layout/hooks/useTheme.js +0 -37
  79. package/dist/layout/utils/index.js +0 -54
  80. package/dist/locales/en/account.js +0 -12
  81. package/dist/locales/en/admin.js +0 -209
  82. package/dist/locales/en/common.js +0 -42
  83. package/dist/locales/en/components.js +0 -39
  84. package/dist/locales/en/constant.js +0 -153
  85. package/dist/locales/en/filterBox.js +0 -13
  86. package/dist/locales/en/index.js +0 -22
  87. package/dist/locales/en/instanceForm.js +0 -19
  88. package/dist/locales/en/password.js +0 -20
  89. package/dist/locales/index.js +0 -12
  90. package/dist/locales/messages.js +0 -9
  91. package/dist/locales/zh-cn/account.js +0 -12
  92. package/dist/locales/zh-cn/admin.js +0 -207
  93. package/dist/locales/zh-cn/common.js +0 -42
  94. package/dist/locales/zh-cn/components.js +0 -39
  95. package/dist/locales/zh-cn/constant.js +0 -153
  96. package/dist/locales/zh-cn/filterBox.js +0 -13
  97. package/dist/locales/zh-cn/index.js +0 -22
  98. package/dist/locales/zh-cn/instanceForm.js +0 -19
  99. package/dist/locales/zh-cn/password.js +0 -20
  100. package/dist/utils/createContext.js +0 -14
  101. package/dist/utils/repoUtils.js +0 -160
@@ -1,55 +0,0 @@
1
- import { defineComponent as m, computed as u, resolveComponent as p, openBlock as e, createElementBlock as d, createElementVNode as a, unref as o, createBlock as i, createCommentVNode as r, createVNode as h, renderSlot as f } from "vue";
2
- import { useSetting as g } from "../hooks/useSetting.js";
3
- import { injectLayoutContext as v } from "../hooks/useState.js";
4
- import b from "./AppSelect.vue.js";
5
- import k from "./mobile/HeaderRightMobile.vue.js";
6
- import y from "./mobile/MobileMenuToggle.vue.js";
7
- import B from "./SHeaderRight.vue.js";
8
- const C = {
9
- "header-bar": "",
10
- class: "header-bar sticky top-0 z-200"
11
- }, M = { class: "header-bar__left" }, S = { class: "header-bar__logo-wrap" }, H = {
12
- href: "/",
13
- target: "_self",
14
- rel: "noopener",
15
- class: "header-bar__logo-link"
16
- }, N = {
17
- key: 1,
18
- class: "header-bar__divider"
19
- }, V = { class: "header-bar__right" }, L = /* @__PURE__ */ m({
20
- __name: "HeaderBar",
21
- setup(x) {
22
- const l = g(), { isMobile: t } = v(), c = u(
23
- () => {
24
- var s, n;
25
- return !!((s = l.value.user) != null && s.id || (n = l.value.user) != null && n.userId);
26
- }
27
- );
28
- return (s, n) => {
29
- const _ = p("el-image");
30
- return e(), d("div", C, [
31
- a("div", M, [
32
- o(t) ? (e(), i(y, { key: 0 })) : r("", !0),
33
- a("div", S, [
34
- a("a", H, [
35
- h(_, {
36
- src: o(l).logo,
37
- class: "h-7"
38
- }, null, 8, ["src"])
39
- ])
40
- ]),
41
- c.value && !o(t) ? (e(), d("div", N)) : r("", !0),
42
- c.value && !o(t) ? (e(), i(b, { key: 2 })) : r("", !0)
43
- ]),
44
- a("div", V, [
45
- f(s.$slots, "default", {}, void 0, !0),
46
- o(t) ? r("", !0) : (e(), i(B, { key: 0 })),
47
- o(t) ? (e(), i(k, { key: 1 })) : r("", !0)
48
- ])
49
- ]);
50
- };
51
- }
52
- });
53
- export {
54
- L as default
55
- };
@@ -1 +0,0 @@
1
- .top-language-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}
@@ -1,8 +0,0 @@
1
- import o from "./LanguageSelect.vue2.js";
2
- /* empty css */
3
- /* empty css */
4
- import t from "../../_virtual/_plugin-vue_export-helper.js";
5
- const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-48306ad1"]]);
6
- export {
7
- p as default
8
- };
@@ -1,100 +0,0 @@
1
- import { defineComponent as k, computed as C, resolveComponent as m, openBlock as o, createBlock as _, withCtx as l, createElementVNode as t, createElementBlock as c, Fragment as y, renderList as L, unref as s, normalizeClass as x, toDisplayString as v, createVNode as i, renderSlot as B, createCommentVNode as f } from "vue";
2
- import { ArrowDown as N } from "@element-plus/icons-vue";
3
- import S from "../../locales/index.js";
4
- import { Storage as V } from "../../utils/repoUtils.js";
5
- import { messages as u } from "../../locales/messages.js";
6
- import j from "./NavIconBtn.vue.js";
7
- const D = {
8
- key: 0,
9
- class: "language-select__current"
10
- }, E = { class: "language-select__panel" }, M = ["onClick"], G = /* @__PURE__ */ k({
11
- __name: "LanguageSelect",
12
- props: {
13
- showLabel: { type: Boolean, default: !1 }
14
- },
15
- setup(n) {
16
- const { locale: g } = S.global, r = C(
17
- () => u[g.value].name
18
- ), h = Object.keys(u).map((e) => ({
19
- label: u[e].name,
20
- value: e
21
- })), w = (e) => {
22
- V.set("locale", e), location.reload();
23
- };
24
- return (e, p) => {
25
- const d = m("el-icon"), b = m("el-popover");
26
- return o(), _(b, {
27
- placement: "bottom",
28
- width: 180,
29
- trigger: "hover",
30
- "popper-class": "top-language-popover"
31
- }, {
32
- reference: l(() => [
33
- i(j, {
34
- "langselect-toggle": "",
35
- tag: "div",
36
- class: "language-select",
37
- "icon-only": !n.showLabel,
38
- title: r.value,
39
- "aria-label": r.value
40
- }, {
41
- default: l(() => [
42
- B(e.$slots, "prefix", {}, void 0, !0),
43
- i(d, null, {
44
- default: l(() => [...p[0] || (p[0] = [
45
- t("svg", {
46
- xmlns: "http://www.w3.org/2000/svg",
47
- width: "24",
48
- height: "24",
49
- viewBox: "0 0 24 24",
50
- fill: "none",
51
- stroke: "currentColor",
52
- "stroke-width": "2",
53
- "stroke-linecap": "round",
54
- "stroke-linejoin": "round",
55
- "data-lucide": "globe",
56
- "aria-hidden": "true",
57
- class: "lucide lucide-globe"
58
- }, [
59
- t("circle", {
60
- cx: "12",
61
- cy: "12",
62
- r: "10"
63
- }),
64
- t("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }),
65
- t("path", { d: "M2 12h20" })
66
- ], -1)
67
- ])]),
68
- _: 1
69
- }),
70
- n.showLabel ? (o(), c("span", D, v(r.value), 1)) : f("", !0),
71
- n.showLabel ? (o(), _(d, {
72
- key: 1,
73
- class: "language-select__caret"
74
- }, {
75
- default: l(() => [
76
- i(s(N))
77
- ]),
78
- _: 1
79
- })) : f("", !0)
80
- ]),
81
- _: 3
82
- }, 8, ["icon-only", "title", "aria-label"])
83
- ]),
84
- default: l(() => [
85
- t("div", E, [
86
- (o(!0), c(y, null, L(s(h), (a) => (o(), c("div", {
87
- key: a.value,
88
- class: x(["language-select__option", { "language-select__option--active": a.value === s(g) }]),
89
- onClick: ($) => w(a.value)
90
- }, v(a.label), 11, M))), 128))
91
- ])
92
- ]),
93
- _: 3
94
- });
95
- };
96
- }
97
- });
98
- export {
99
- G as default
100
- };
@@ -1 +0,0 @@
1
- .language-select[data-v-48306ad1]{flex-shrink:0}.language-select__current[data-v-48306ad1]{font-size:14px;font-weight:600;line-height:1}.language-select__caret[data-v-48306ad1]{font-size:12px}.language-select__panel[data-v-48306ad1]{display:grid;gap:4px}.language-select__option[data-v-48306ad1]{padding:10px 12px;border-radius:var(--ui-radius-control);cursor:pointer;color:var(--ui-text-primary);transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.language-select__option[data-v-48306ad1]:hover{background:var(--ui-bg-muted)}.language-select__option--active[data-v-48306ad1]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}
@@ -1 +0,0 @@
1
- .layout-breadcrumb[data-v-21c4b2fb]{display:flex;min-width:0;align-items:center;gap:6px;color:var(--ui-text-placeholder);line-height:1.4}.layout-breadcrumb__back[data-v-21c4b2fb]{display:inline-flex;width:24px;height:24px;flex:0 0 auto;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--ui-radius-sm);padding:0;background:transparent;color:var(--ui-text-placeholder);cursor:pointer;font:inherit;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast)}.layout-breadcrumb__back[data-v-21c4b2fb]:hover{background:var(--ui-bg-muted);color:var(--ui-text-muted)}.layout-breadcrumb__back[data-v-21c4b2fb]:focus-visible{outline:2px solid var(--ui-ring);outline-offset:2px}.layout-breadcrumb__separator[data-v-21c4b2fb]{flex:0 0 auto;color:var(--ui-text-disabled);font-size:11px}.layout-breadcrumb__link[data-v-21c4b2fb],.layout-breadcrumb__current[data-v-21c4b2fb]{display:inline-block;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layout-breadcrumb__link[data-v-21c4b2fb]{border:0;padding:0;background:transparent;color:var(--ui-text-placeholder);cursor:pointer;font:inherit;transition:color var(--ui-transition-fast)}.layout-breadcrumb__link[data-v-21c4b2fb]:hover{color:var(--ui-text-muted)}.layout-breadcrumb__link[data-v-21c4b2fb]:focus-visible{outline:2px solid var(--ui-ring);outline-offset:2px;border-radius:var(--ui-radius-sm)}.layout-breadcrumb__current[data-v-21c4b2fb]{color:var(--ui-text-muted);font-weight:500}@media(max-width:768px){.layout-breadcrumb__link[data-v-21c4b2fb],.layout-breadcrumb__current[data-v-21c4b2fb]{max-width:44vw}}
@@ -1,7 +0,0 @@
1
- import o from "./LayoutBreadcrumb.vue2.js";
2
- /* empty css */
3
- import r from "../../_virtual/_plugin-vue_export-helper.js";
4
- const c = /* @__PURE__ */ r(o, [["__scopeId", "data-v-21c4b2fb"]]);
5
- export {
6
- c as default
7
- };
@@ -1,189 +0,0 @@
1
- import { defineComponent as I, computed as U, resolveComponent as W, openBlock as c, createElementBlock as u, createVNode as w, withCtx as z, unref as M, createCommentVNode as _, Fragment as X, renderList as Y, createBlock as Z, toDisplayString as B } from "vue";
2
- import { ArrowLeft as tt, ArrowRight as et } from "@element-plus/icons-vue";
3
- import { useRoute as nt, useRouter as rt } from "vue-router";
4
- import { replaceName as at, tname as ot } from "../../utils/repoUtils.js";
5
- import { useSetting as st } from "../hooks/useSetting.js";
6
- import { injectLayoutContext as lt } from "../hooks/useState.js";
7
- const ct = {
8
- key: 0,
9
- class: "layout-breadcrumb text-xs",
10
- "aria-label": "Breadcrumb"
11
- }, ut = ["aria-label", "title"], it = {
12
- key: 1,
13
- class: "flex min-w-0 items-center gap-1"
14
- }, ht = ["href"], pt = ["onClick"], dt = {
15
- key: 3,
16
- class: "layout-breadcrumb__current"
17
- }, vt = /* @__PURE__ */ I({
18
- __name: "LayoutBreadcrumb",
19
- props: {
20
- items: { default: void 0 },
21
- currentTitle: { default: "" },
22
- parentPath: { default: "" },
23
- preserveQueryKeys: { default: () => [] },
24
- showCurrent: { type: Boolean, default: !0 },
25
- showBack: { type: Boolean, default: !0 },
26
- backTo: { default: void 0 },
27
- backLabel: { default: "返回" }
28
- },
29
- setup(N) {
30
- const o = N, s = nt(), g = rt(), j = st(), m = lt(null), h = U(() => {
31
- var R, $, A, S, E, x;
32
- if ((R = o.items) != null && R.length)
33
- return o.items.filter((b) => b.title);
34
- const t = k(s.path), e = k(
35
- (($ = s.meta) == null ? void 0 : $.parent) || ((A = s.meta) == null ? void 0 : A.parentPath) || s.path
36
- ), n = V(), r = (E = (S = m == null ? void 0 : m.currentEndRoute) == null ? void 0 : S.value) == null ? void 0 : E.paths, a = L(r || []);
37
- let l = a.length ? a : y(n, e);
38
- const P = k(
39
- o.parentPath || ((x = s.meta) == null ? void 0 : x.parentPath) || ""
40
- );
41
- if (!l.length && P && (l = y(n, P)), !l.length) {
42
- const b = P || O(t, n);
43
- l = b ? y(n, b) : [];
44
- }
45
- const d = l.map(q).filter((b) => b.title), i = d[d.length - 1], f = K();
46
- return o.showCurrent && f && p(i == null ? void 0 : i.path) !== p(t) ? d.push({
47
- title: f,
48
- path: t,
49
- disabled: !0
50
- }) : f && i && p(i.path) === p(t) && (i.title = f, i.disabled = !0), !d.length && f && d.push({
51
- title: f,
52
- path: t,
53
- disabled: !0
54
- }), d;
55
- }), V = () => {
56
- const t = [], e = /* @__PURE__ */ new Set();
57
- return (j.value.menus || []).forEach((n) => {
58
- var a;
59
- const r = n.path || n.name || JSON.stringify(((a = n.meta) == null ? void 0 : a.translations) || {});
60
- !r || e.has(r) || (e.add(r), t.push(n));
61
- }), t;
62
- }, L = (t) => t.filter((e) => {
63
- var n;
64
- return e && ((n = e.meta) == null ? void 0 : n.visible) !== "0";
65
- }), q = (t) => {
66
- var e;
67
- return {
68
- title: F(t),
69
- path: t.path,
70
- disabled: ((e = t.meta) == null ? void 0 : e.visible) === "0",
71
- children: t.children
72
- };
73
- }, F = (t) => {
74
- var n;
75
- return ((n = t == null ? void 0 : t.meta) != null && n.translations ? at(ot(t.meta.translations, "name", t.name)) : "") || (t == null ? void 0 : t.title) || (t == null ? void 0 : t.name) || "";
76
- }, K = () => {
77
- var t;
78
- return o.currentTitle ? o.currentTitle : typeof ((t = s.meta) == null ? void 0 : t.title) == "string" ? s.meta.title : String(s.params.id || s.params.tenantId || "");
79
- }, y = (t, e, n = []) => {
80
- if (!e) return [];
81
- for (const r of t) {
82
- const a = [...n, r];
83
- if (Q(r.path, e))
84
- return L(a);
85
- const l = y(r.children || [], e, a);
86
- if (l.length) return l;
87
- }
88
- return [];
89
- }, O = (t, e) => {
90
- const n = t.split("/").filter(Boolean);
91
- for (let r = n.length - 1; r > 0; r -= 1) {
92
- const a = `/${n.slice(0, r).join("/")}`;
93
- if (y(e, a).length) return a;
94
- }
95
- return "";
96
- }, Q = (t = "", e = "") => {
97
- const n = p(t), r = p(e);
98
- if (!n || !r) return !1;
99
- if (n === r) return !0;
100
- const a = n.replace(/\/:(\w+)/g, "/([^/]+)");
101
- return new RegExp(`^${a}$`, "i").test(r);
102
- }, k = (t = "") => t ? t.split("?")[0].split("#")[0] : "", p = (t = "") => (k(t).replace(/\/+$/, "") || "/").toLowerCase(), v = (t) => /^https?:\/\//.test(t.path || ""), D = (t) => {
103
- var e;
104
- return !!((e = t.children) != null && e.some((n) => !n.disabled));
105
- }, T = (t, e) => t.disabled || e === h.value.length - 1 || !t.path ? !1 : v(t) || !D(t), J = (t) => {
106
- const e = t.to || C(t);
107
- e && g.push(e);
108
- }, G = () => {
109
- var e;
110
- if (o.backTo) {
111
- g.push(o.backTo);
112
- return;
113
- }
114
- if ((e = g.options.history.state) != null && e.back && window.history.length > 1) {
115
- g.back();
116
- return;
117
- }
118
- const t = H();
119
- t && g.push(t);
120
- }, H = () => {
121
- var n, r;
122
- const t = o.parentPath || ((n = s.meta) == null ? void 0 : n.parentPath) || ((r = s.meta) == null ? void 0 : r.parent) || "";
123
- if (t)
124
- return C({ path: t });
125
- const e = h.value[h.value.length - 2];
126
- if (e != null && e.to) return e.to;
127
- if (e != null && e.path && !v(e))
128
- return C(e);
129
- }, C = (t) => {
130
- if (!t.path) return;
131
- const e = o.preserveQueryKeys.reduce((n, r) => {
132
- const a = s.query[r];
133
- return typeof a == "string" && (n[r] = a), Array.isArray(a) && (n[r] = a.filter(
134
- (l) => typeof l == "string"
135
- )), n;
136
- }, {});
137
- return Object.keys(e).length ? { path: t.path, query: e } : { path: t.path };
138
- };
139
- return (t, e) => {
140
- const n = W("el-icon");
141
- return o.showBack || h.value.length ? (c(), u("nav", ct, [
142
- o.showBack ? (c(), u("button", {
143
- key: 0,
144
- class: "layout-breadcrumb__back",
145
- type: "button",
146
- "aria-label": o.backLabel,
147
- title: o.backLabel,
148
- onClick: G
149
- }, [
150
- w(n, null, {
151
- default: z(() => [
152
- w(M(tt))
153
- ]),
154
- _: 1
155
- })
156
- ], 8, ut)) : _("", !0),
157
- h.value.length ? (c(), u("ol", it, [
158
- (c(!0), u(X, null, Y(h.value, (r, a) => (c(), u("li", {
159
- key: `${r.path || r.title}-${a}`,
160
- class: "flex min-w-0 items-center gap-1"
161
- }, [
162
- a > 0 ? (c(), Z(n, {
163
- key: 0,
164
- class: "layout-breadcrumb__separator"
165
- }, {
166
- default: z(() => [
167
- w(M(et))
168
- ]),
169
- _: 1
170
- })) : _("", !0),
171
- v(r) && T(r, a) ? (c(), u("a", {
172
- key: 1,
173
- class: "layout-breadcrumb__link",
174
- href: r.path
175
- }, B(r.title), 9, ht)) : T(r, a) ? (c(), u("button", {
176
- key: 2,
177
- class: "layout-breadcrumb__link",
178
- type: "button",
179
- onClick: (l) => J(r)
180
- }, B(r.title), 9, pt)) : (c(), u("span", dt, B(r.title), 1))
181
- ]))), 128))
182
- ])) : _("", !0)
183
- ])) : _("", !0);
184
- };
185
- }
186
- });
187
- export {
188
- vt as default
189
- };
@@ -1 +0,0 @@
1
- .menu-item-icon[data-v-ed060390]{display:inline-flex;align-items:center;justify-content:center;color:currentColor}.menu-item-icon__svg[data-v-ed060390]{display:inline-flex}.menu-item-icon__svg[data-v-ed060390] svg{width:1em;height:1em;display:block;fill:currentColor}
@@ -1,7 +0,0 @@
1
- import o from "./MenuItemIcon.vue2.js";
2
- /* empty css */
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-ed060390"]]);
5
- export {
6
- p as default
7
- };
@@ -1,23 +0,0 @@
1
- import { defineComponent as g, computed as o, openBlock as n, createElementBlock as t, normalizeClass as v } from "vue";
2
- const f = { class: "menu-item-icon" }, S = ["innerHTML"], I = /* @__PURE__ */ g({
3
- __name: "MenuItemIcon",
4
- props: {
5
- icon: { default: "metisicon-yingyong" }
6
- },
7
- setup(i) {
8
- const a = i, s = o(() => a.icon || "metisicon-yingyong"), r = /^\s*<svg[\s>]/i, l = /\son[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi, _ = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, p = /\s(?:href|xlink:href)\s*=\s*("\s*javascript:[^"]*"|'\s*javascript:[^']*')/gi, c = (e) => !!e && r.test(e), u = (e) => !e || !c(e) ? "" : e.replace(_, "").replace(l, "").replace(p, ""), m = o(() => u(s.value));
9
- return (e, E) => (n(), t("div", f, [
10
- c(s.value) ? (n(), t("span", {
11
- key: 0,
12
- class: "menu-item-icon__svg",
13
- innerHTML: m.value
14
- }, null, 8, S)) : (n(), t("i", {
15
- key: 1,
16
- class: v(s.value)
17
- }, null, 2))
18
- ]));
19
- }
20
- });
21
- export {
22
- I as default
23
- };
@@ -1 +0,0 @@
1
- .nav-icon-btn[data-v-824bbddc]{--nav-icon-btn-size: 30px;--nav-icon-btn-padding-x: 12px;--nav-icon-btn-color: var(--ui-topnav-muted);--nav-icon-btn-bg: transparent;--nav-icon-btn-border-color: transparent;--nav-icon-btn-hover-bg: rgba(0, 0, 0, .1);--nav-icon-btn-hover-border-color: var(--nav-icon-btn-border-color);--nav-icon-btn-focus-ring: var(--ui-topnav-foreground);min-width:var(--nav-icon-btn-size);height:var(--nav-icon-btn-size);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 var(--nav-icon-btn-padding-x);border:1px solid var(--nav-icon-btn-border-color);border-radius:var(--ui-radius-control);background:var(--nav-icon-btn-bg);color:var(--nav-icon-btn-color);font-size:16px;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;box-sizing:border-box;flex-shrink:0;-webkit-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.nav-icon-btn[data-v-824bbddc]:hover{background:var(--nav-icon-btn-hover-bg);color:var(--nav-icon-btn-hover-color);border-color:var(--nav-icon-btn-hover-border-color)}.nav-icon-btn[data-v-824bbddc]:focus-visible{outline:2px solid var(--nav-icon-btn-focus-ring);outline-offset:2px}.nav-icon-btn[data-v-824bbddc]:disabled{opacity:.6;cursor:not-allowed}.nav-icon-btn--icon-only[data-v-824bbddc]{width:var(--nav-icon-btn-size);padding:0}
@@ -1,7 +0,0 @@
1
- import o from "./NavIconBtn.vue2.js";
2
- /* empty css */
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-824bbddc"]]);
5
- export {
6
- m as default
7
- };
@@ -1,23 +0,0 @@
1
- import { defineComponent as n, openBlock as o, createBlock as a, resolveDynamicComponent as l, normalizeClass as c, withCtx as u, renderSlot as i } from "vue";
2
- const d = /* @__PURE__ */ n({
3
- __name: "NavIconBtn",
4
- props: {
5
- tag: { default: "button" },
6
- type: { default: "button" },
7
- iconOnly: { type: Boolean, default: !0 }
8
- },
9
- setup(t) {
10
- return (e, r) => (o(), a(l(t.tag), {
11
- type: t.tag === "button" ? t.type : void 0,
12
- class: c(["nav-icon-btn", { "nav-icon-btn--icon-only": t.iconOnly }])
13
- }, {
14
- default: u(() => [
15
- i(e.$slots, "default", {}, void 0, !0)
16
- ]),
17
- _: 3
18
- }, 8, ["type", "class"]));
19
- }
20
- });
21
- export {
22
- d as default
23
- };
@@ -1 +0,0 @@
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 +0,0 @@
1
- import o from "./SHeaderRight.vue2.js";
2
- /* empty css */
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-3c5e16a6"]]);
5
- export {
6
- m as default
7
- };
@@ -1,68 +0,0 @@
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
- __name: "SHeaderRight",
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, {
22
- key: 0,
23
- tag: "a",
24
- class: "whitespace-nowrap",
25
- href: s.value,
26
- target: "_blank"
27
- }, {
28
- default: d(() => [
29
- r(v, null, {
30
- default: d(() => [...t[0] || (t[0] = [
31
- l("svg", {
32
- xmlns: "http://www.w3.org/2000/svg",
33
- width: "24",
34
- height: "24",
35
- viewBox: "0 0 24 24",
36
- fill: "none",
37
- stroke: "currentColor",
38
- "stroke-width": "2",
39
- "stroke-linecap": "round",
40
- "stroke-linejoin": "round",
41
- "data-lucide": "book-open",
42
- "aria-hidden": "true",
43
- class: "lucide lucide-book-open"
44
- }, [
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" })
47
- ], -1)
48
- ])]),
49
- _: 1
50
- })
51
- ]),
52
- _: 1
53
- }, 8, ["href"])) : w("", !0),
54
- r(B),
55
- r(N),
56
- g.value ? (a(), u(P, { key: 1 })) : (a(), c("a", {
57
- key: 2,
58
- class: "header-right__login",
59
- href: p.value,
60
- onClick: f
61
- }, C(L(h)("common.btn.login")), 9, V))
62
- ]);
63
- };
64
- }
65
- });
66
- export {
67
- q as default
68
- };
@@ -1 +0,0 @@
1
- .theme-toggle__label[data-v-e6ea60b7]{font-size:12px;line-height:1}
@@ -1,7 +0,0 @@
1
- import o from "./ThemeToggle.vue2.js";
2
- /* empty css */
3
- import e from "../../_virtual/_plugin-vue_export-helper.js";
4
- const a = /* @__PURE__ */ e(o, [["__scopeId", "data-v-e6ea60b7"]]);
5
- export {
6
- a as default
7
- };
@@ -1,30 +0,0 @@
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
- import { Moon as u, Sunny as _ } from "@element-plus/icons-vue";
3
- import { useSetting as h } from "../hooks/useSetting.js";
4
- import { useTheme as k } from "../hooks/useTheme.js";
5
- import g from "./NavIconBtn.vue.js";
6
- const N = /* @__PURE__ */ a({
7
- __name: "ThemeToggle",
8
- setup(d) {
9
- const r = h(), { theme: c, isDark: m, toggleTheme: l } = k();
10
- return f(() => {
11
- r.value.theme = c.value;
12
- }), (C, v) => {
13
- const i = p("el-icon");
14
- return o(), t(g, { onClick: e(l) }, {
15
- default: n(() => [
16
- s(i, null, {
17
- default: n(() => [
18
- e(m) ? (o(), t(e(_), { key: 1 })) : (o(), t(e(u), { key: 0 }))
19
- ]),
20
- _: 1
21
- })
22
- ]),
23
- _: 1
24
- }, 8, ["onClick"]);
25
- };
26
- }
27
- });
28
- export {
29
- N as default
30
- };
@@ -1 +0,0 @@
1
- .top-timezone-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}
@@ -1,8 +0,0 @@
1
- import o from "./TimezoneSelect.vue2.js";
2
- /* empty css */
3
- /* empty css */
4
- import t from "../../_virtual/_plugin-vue_export-helper.js";
5
- const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-e62f5f2d"]]);
6
- export {
7
- p as default
8
- };