@choubo/kerthus-web-admin-shell 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.
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { inject as le, defineComponent as k, h as O, computed as I, reactive as oe, onUnmounted as Q, watch as U, openBlock as a, createBlock as P, unref as y, normalizeClass as N, withCtx as j, createElementBlock as o, Fragment as x, renderList as M, toDisplayString as d, createCommentVNode as p, ref as S, createElementVNode as s, createVNode as $, onMounted as Y, withKeys as J, createTextVNode as z, provide as ve, toRef as pe, renderSlot as B, Teleport as ge, withModifiers as H, withDirectives as K, vModelText as V, nextTick as se, normalizeStyle as ie, resolveDynamicComponent as he, createSlots as fe } from "vue";
2
- import { Menu as Z, Switch as ye, Select as ke, InputNumber as _e, Drawer as we } from "ant-design-vue";
3
- import { Icon as w, Dropdown as re } from "@choubo/kerthus-web-vue-ui";
4
- import { useFrontendRuntime as q } from "@choubo/kerthus-web-vue-runtime";
5
- const ne = {
1
+ import { inject as Ae, defineComponent as P, h as le, computed as E, reactive as Te, onUnmounted as ne, watch as Z, openBlock as t, createBlock as z, unref as f, normalizeClass as U, withCtx as re, createElementBlock as l, Fragment as F, renderList as K, toDisplayString as m, createCommentVNode as b, ref as M, createElementVNode as r, createVNode as x, onMounted as ie, withKeys as be, createTextVNode as Q, provide as Qe, toRef as Xe, renderSlot as T, Teleport as Pe, withModifiers as ee, withDirectives as Y, vModelText as J, nextTick as Be, normalizeStyle as he, createSlots as Ge, toRaw as Ye, resolveDynamicComponent as Je } from "vue";
2
+ import { Menu as we, Switch as Ze, Select as et, InputNumber as tt, Drawer as at } from "ant-design-vue";
3
+ import { Icon as L, Dropdown as Fe } from "@choubo/kerthus-web-vue-ui";
4
+ import { useFrontendRuntime as te, applyAdminAppearance as nt } from "@choubo/kerthus-web-vue-runtime";
5
+ const Me = {
6
6
  "en-US": {
7
7
  navigation: "Navigation",
8
8
  closeNavigation: "Close navigation",
@@ -62,10 +62,10 @@ const ne = {
62
62
  reject: "拒绝"
63
63
  }
64
64
  };
65
- function Wn(e, c) {
66
- return (e === "zh-CN" ? ne["zh-CN"] : ne["en-US"])[c];
65
+ function mo(e, d) {
66
+ return (e === "zh-CN" ? Me["zh-CN"] : Me["en-US"])[d];
67
67
  }
68
- const On = {
68
+ const vo = {
69
69
  "en-US": {
70
70
  layout: {
71
71
  footer: {
@@ -431,65 +431,65 @@ const On = {
431
431
  }
432
432
  }
433
433
  }
434
- }, de = Symbol("admin-menu");
435
- function Hn(e) {
434
+ }, Ee = Symbol("admin-menu");
435
+ function go(e) {
436
436
  return {
437
- install(c) {
438
- c.provide(de, e);
437
+ install(d) {
438
+ d.provide(Ee, e);
439
439
  }
440
440
  };
441
441
  }
442
- function ce() {
443
- const e = le(de);
442
+ function Se() {
443
+ const e = Ae(Ee);
444
444
  if (!e)
445
445
  throw new Error("Admin menu port is not installed");
446
446
  return e;
447
447
  }
448
- function ee(e, c) {
449
- for (const t of e) {
450
- if (t.path === c)
451
- return [t.path];
452
- const i = ee(t.children ?? [], c);
453
- if (i.length)
454
- return [t.path, ...i];
448
+ function ue(e, d) {
449
+ for (const a of e) {
450
+ if (a.path === d)
451
+ return [a.path];
452
+ const o = ue(a.children ?? [], d);
453
+ if (o.length)
454
+ return [a.path, ...o];
455
455
  }
456
456
  return [];
457
457
  }
458
- const ue = k({
458
+ const Ie = P({
459
459
  name: "AdminMenuNode",
460
460
  props: {
461
461
  item: { type: Object, required: !0 }
462
462
  },
463
463
  setup(e) {
464
- const { ports: c } = q();
464
+ const { ports: d } = te();
465
465
  return () => {
466
- var r, n;
467
- const t = e.item;
468
- if ((r = t.meta) != null && r.hideMenu)
466
+ var u, i;
467
+ const a = e.item;
468
+ if ((u = a.meta) != null && u.hideMenu)
469
469
  return null;
470
- const i = () => {
471
- var u, b;
472
- return O("span", { class: "dsea-basic-menu-item-content" }, [
473
- t.icon ? O(w, { icon: t.icon, size: 18, class: "dsea-basic-menu-item-content-wrapper__icon" }) : null,
474
- c.locale.translate(t.name),
475
- (u = t.tag) != null && u.content || (b = t.tag) != null && b.dot ? O("span", {
476
- class: ["dsea-simple-menu-tag", `dsea-simple-menu-tag--${t.tag.type ?? "error"}`, {
477
- "dsea-simple-menu-tag--dot": t.tag.dot
470
+ const o = () => {
471
+ var n, c;
472
+ return le("span", { class: "dsea-basic-menu-item-content" }, [
473
+ a.icon ? le(L, { icon: a.icon, size: 18, class: "dsea-basic-menu-item-content-wrapper__icon" }) : null,
474
+ d.locale.translate(a.name),
475
+ (n = a.tag) != null && n.content || (c = a.tag) != null && c.dot ? le("span", {
476
+ class: ["dsea-simple-menu-tag", `dsea-simple-menu-tag--${a.tag.type ?? "error"}`, {
477
+ "dsea-simple-menu-tag--dot": a.tag.dot
478
478
  }]
479
- }, t.tag.dot ? "" : t.tag.content) : null
479
+ }, a.tag.dot ? "" : a.tag.content) : null
480
480
  ]);
481
- }, l = (n = t.meta) != null && n.hideChildrenInMenu ? [] : t.children ?? [];
482
- return l.length ? O(Z.SubMenu, {
483
- key: t.path,
481
+ }, s = (i = a.meta) != null && i.hideChildrenInMenu ? [] : a.children ?? [];
482
+ return s.length ? le(we.SubMenu, {
483
+ key: a.path,
484
484
  popupClassName: "app-top-menu-popup",
485
- disabled: t.disabled
485
+ disabled: a.disabled
486
486
  }, {
487
- title: i,
488
- default: () => l.map((u) => O(ue, { key: u.path, item: u }))
489
- }) : O(Z.Item, { key: t.path, disabled: t.disabled }, { default: i });
487
+ title: o,
488
+ default: () => s.map((n) => le(Ie, { key: n.path, item: n }))
489
+ }) : le(we.Item, { key: a.path, disabled: a.disabled }, { default: o });
490
490
  };
491
491
  }
492
- }), te = /* @__PURE__ */ k({
492
+ }), oe = /* @__PURE__ */ P({
493
493
  __name: "BasicMenu",
494
494
  props: {
495
495
  items: { default: () => [] },
@@ -501,96 +501,98 @@ const ue = k({
501
501
  isHorizontal: { type: Boolean },
502
502
  accordion: { type: Boolean, default: !0 },
503
503
  collapse: { type: Boolean },
504
+ split: { type: Boolean },
505
+ topMenuAlign: {},
504
506
  beforeClickFn: {}
505
507
  },
506
508
  emits: ["menuClick"],
507
- setup(e, { emit: c }) {
508
- const t = e, i = c, l = ce(), r = I(() => t.collapse ?? l.settings.collapsed.value), n = oe({
509
+ setup(e, { emit: d }) {
510
+ const a = e, o = d, s = Se(), u = E(() => a.collapse ?? s.settings.collapsed.value), i = E(() => a.split ?? s.settings.split.value), n = Te({
509
511
  defaultSelectedKeys: [],
510
512
  selectedKeys: [],
511
513
  openKeys: [],
512
514
  collapsedOpenKeys: []
513
- }), u = I(() => r.value && !l.settings.mixSidebar.value ? n.collapsedOpenKeys : n.openKeys), b = I(() => {
514
- const T = t.type === "top" && t.mode === "horizontal" || t.isHorizontal && l.settings.split.value;
515
+ }), c = E(() => u.value && !s.settings.mixSidebar.value ? n.collapsedOpenKeys : n.openKeys), y = E(() => {
516
+ const $ = a.type === "top" && a.mode === "horizontal" || a.isHorizontal && i.value;
515
517
  return [
516
518
  "dsea-basic-menu",
517
- `justify-${t.isHorizontal && l.settings.split.value ? "start" : l.settings.topMenuAlign.value}`,
519
+ `justify-${a.isHorizontal && i.value ? "start" : a.topMenuAlign ?? s.settings.topMenuAlign.value}`,
518
520
  {
519
- "dsea-basic-menu__second": !t.isHorizontal && l.settings.split.value,
520
- "dsea-basic-menu__sidebar-hor": T
521
+ "dsea-basic-menu__second": !a.isHorizontal && i.value,
522
+ "dsea-basic-menu__sidebar-hor": $
521
523
  }
522
524
  ];
523
525
  });
524
- let g = !1, v = 0;
525
- async function m(T) {
526
- var C, E;
527
- if (T.name === l.redirectRouteName)
526
+ let h = !1, p = 0;
527
+ async function N($) {
528
+ var B, V;
529
+ if (s.redirectRouteName && $.name === s.redirectRouteName)
528
530
  return;
529
- if (g) {
530
- g = !1;
531
+ if (h) {
532
+ h = !1;
531
533
  return;
532
534
  }
533
- const f = ((C = T.meta) == null ? void 0 : C.currentActiveMenu) || T.path, h = ++v, _ = ee(t.items, f);
534
- if (t.isHorizontal && l.settings.split.value) {
535
- const R = await ((E = l.getCurrentParentPath) == null ? void 0 : E.call(l, f));
536
- if (h !== v)
535
+ const v = ((B = $.meta) == null ? void 0 : B.currentActiveMenu) || $.path, k = ++p, C = ue(a.items, v);
536
+ if (a.isHorizontal && i.value) {
537
+ const G = await ((V = s.getCurrentParentPath) == null ? void 0 : V.call(s, v));
538
+ if (k !== p)
537
539
  return;
538
- n.selectedKeys = [R || _[0] || f];
540
+ n.selectedKeys = [G || C[0] || v];
539
541
  } else
540
- n.selectedKeys = _.length ? _ : [f];
541
- L(f);
542
+ n.selectedKeys = C.length ? C : [v];
543
+ A(v);
542
544
  }
543
- function L(T) {
544
- if (t.mode === "horizontal")
545
+ function A($) {
546
+ if (a.mode === "horizontal")
545
547
  return;
546
- const f = ee(t.items, T);
547
- n.openKeys = t.accordion ? f : [.../* @__PURE__ */ new Set([...n.openKeys, ...f])];
548
+ const v = ue(a.items, $);
549
+ n.openKeys = a.accordion ? v : [.../* @__PURE__ */ new Set([...n.openKeys, ...v])];
548
550
  }
549
- function F(T) {
550
- const f = T.map(String);
551
- if (t.mode === "horizontal" || !t.accordion || l.settings.mixSidebar.value) {
552
- n.openKeys = f;
551
+ function O($) {
552
+ const v = $.map(String);
553
+ if (a.mode === "horizontal" || !a.accordion || s.settings.mixSidebar.value) {
554
+ n.openKeys = v;
553
555
  return;
554
556
  }
555
- if (r.value) {
556
- n.collapsedOpenKeys = f;
557
+ if (u.value) {
558
+ n.collapsedOpenKeys = v;
557
559
  return;
558
560
  }
559
- const h = t.items.filter((C) => {
560
- var E;
561
- return (E = C.children) == null ? void 0 : E.length;
562
- }).map((C) => C.path), _ = f.find((C) => !n.openKeys.includes(C));
563
- n.openKeys = _ && h.includes(_) ? [_] : f;
564
- }
565
- async function D(T) {
566
- const f = String(T.key);
567
- t.beforeClickFn && !await t.beforeClickFn(f) || (i("menuClick", f), g = !0, n.selectedKeys = [f]);
568
- }
569
- const W = l.onRouteChange(m);
570
- return Q(W), U(() => t.items, () => m(l.currentRoute.value)), m(l.currentRoute.value), (T, f) => (a(), P(y(Z), {
561
+ const k = a.items.filter((B) => {
562
+ var V;
563
+ return (V = B.children) == null ? void 0 : V.length;
564
+ }).map((B) => B.path), C = v.find((B) => !n.openKeys.includes(B));
565
+ n.openKeys = C && k.includes(C) ? [C] : v;
566
+ }
567
+ async function D($) {
568
+ const v = String($.key);
569
+ a.beforeClickFn && !await a.beforeClickFn(v) || (o("menuClick", v), h = !0, n.selectedKeys = [v]);
570
+ }
571
+ const j = s.onRouteChange(N);
572
+ return ne(j), Z(() => a.items, () => N(s.currentRoute.value)), N(s.currentRoute.value), ($, v) => (t(), z(f(we), {
571
573
  selectedKeys: n.selectedKeys,
572
574
  defaultSelectedKeys: n.defaultSelectedKeys,
573
575
  mode: e.mode,
574
- openKeys: u.value,
576
+ openKeys: c.value,
575
577
  inlineIndent: e.inlineIndent,
576
578
  theme: e.theme,
577
- inlineCollapsed: e.mode === "inline" && !e.mixSider && r.value,
578
- class: N(b.value),
579
+ inlineCollapsed: e.mode === "inline" && !e.mixSider && u.value,
580
+ class: U(y.value),
579
581
  subMenuOpenDelay: 0.2,
580
- onOpenChange: F,
582
+ onOpenChange: O,
581
583
  onClick: D
582
584
  }, {
583
- default: j(() => [
584
- (a(!0), o(x, null, M(e.items, (h) => (a(), P(y(ue), {
585
- key: h.path,
586
- item: h
585
+ default: re(() => [
586
+ (t(!0), l(F, null, K(e.items, (k) => (t(), z(f(Ie), {
587
+ key: k.path,
588
+ item: k
587
589
  }, null, 8, ["item"]))), 128))
588
590
  ]),
589
591
  _: 1
590
592
  }, 8, ["selectedKeys", "defaultSelectedKeys", "mode", "openKeys", "inlineIndent", "theme", "inlineCollapsed", "class"]));
591
593
  }
592
594
  });
593
- const jn = /* @__PURE__ */ k({
595
+ const bo = /* @__PURE__ */ P({
594
596
  __name: "SimpleMenu",
595
597
  props: {
596
598
  items: { default: () => [] },
@@ -603,12 +605,12 @@ const jn = /* @__PURE__ */ k({
603
605
  beforeClickFn: {}
604
606
  },
605
607
  emits: ["menuClick"],
606
- setup(e, { emit: c }) {
607
- const t = e, i = c;
608
- async function l(r) {
609
- return /^https?:\/\//i.test(r) ? (window.open(r, "_blank", "noopener,noreferrer"), !1) : t.beforeClickFn ? t.beforeClickFn(r) : !0;
608
+ setup(e, { emit: d }) {
609
+ const a = e, o = d;
610
+ async function s(u) {
611
+ return /^https?:\/\//i.test(u) ? (window.open(u, "_blank", "noopener,noreferrer"), !1) : a.beforeClickFn ? a.beforeClickFn(u) : !0;
610
612
  }
611
- return (r, n) => (a(), P(te, {
613
+ return (u, i) => (t(), z(oe, {
612
614
  class: "dsea-simple-menu",
613
615
  items: e.items,
614
616
  mode: "inline",
@@ -616,11 +618,11 @@ const jn = /* @__PURE__ */ k({
616
618
  collapse: e.collapse,
617
619
  mixSider: e.mixSider,
618
620
  accordion: e.accordion,
619
- beforeClickFn: l,
620
- onMenuClick: n[0] || (n[0] = (u) => i("menuClick", u))
621
+ beforeClickFn: s,
622
+ onMenuClick: i[0] || (i[0] = (n) => o("menuClick", n))
621
623
  }, null, 8, ["items", "theme", "collapse", "mixSider", "accordion"]));
622
624
  }
623
- }), Qn = /* @__PURE__ */ k({
625
+ }), ho = /* @__PURE__ */ P({
624
626
  __name: "SimpleMenuTag",
625
627
  props: {
626
628
  item: {},
@@ -628,18 +630,18 @@ const jn = /* @__PURE__ */ k({
628
630
  collapseParent: { type: Boolean, default: !1 }
629
631
  },
630
632
  setup(e) {
631
- return (c, t) => {
632
- var i, l;
633
- return (i = e.item.tag) != null && i.content || (l = e.item.tag) != null && l.dot ? (a(), o("span", {
633
+ return (d, a) => {
634
+ var o, s;
635
+ return (o = e.item.tag) != null && o.content || (s = e.item.tag) != null && s.dot ? (t(), l("span", {
634
636
  key: 0,
635
- class: N(["dsea-simple-menu-tag", [`dsea-simple-menu-tag--${e.item.tag.type ?? "error"}`, {
637
+ class: U(["dsea-simple-menu-tag", [`dsea-simple-menu-tag--${e.item.tag.type ?? "error"}`, {
636
638
  "dsea-simple-menu-tag--dot": e.dot || e.item.tag.dot,
637
639
  "dsea-simple-menu-tag--collapse": e.collapseParent
638
640
  }]])
639
- }, d(e.dot || e.item.tag.dot || e.collapseParent ? "" : e.item.tag.content), 3)) : p("", !0);
641
+ }, m(e.dot || e.item.tag.dot || e.collapseParent ? "" : e.item.tag.content), 3)) : b("", !0);
640
642
  };
641
643
  }
642
- }), $e = ["src", "alt"], Le = /* @__PURE__ */ k({
644
+ }), lt = ["src", "alt"], ot = /* @__PURE__ */ P({
643
645
  __name: "AppLogo",
644
646
  props: {
645
647
  theme: {},
@@ -648,35 +650,35 @@ const jn = /* @__PURE__ */ k({
648
650
  collapsedShowTitle: { type: Boolean }
649
651
  },
650
652
  setup(e) {
651
- const { ports: c } = q(), t = I(() => c.appConfig.getTitle()), i = I(() => {
652
- var r, n;
653
- return (n = (r = c.appConfig).getLogo) == null ? void 0 : n.call(r);
653
+ const { ports: d } = te(), a = E(() => d.appConfig.getTitle()), o = E(() => {
654
+ var u, i;
655
+ return (i = (u = d.appConfig).getLogo) == null ? void 0 : i.call(u);
654
656
  });
655
- function l() {
656
- c.navigation.go(c.navigation.getHome());
657
+ function s() {
658
+ d.navigation.go(d.navigation.getHome());
657
659
  }
658
- return (r, n) => (a(), o("div", {
659
- class: N(["dsea-app-logo anticon", [e.theme, { "collapsed-show-title": e.collapsedShowTitle }]]),
660
- onClick: l
660
+ return (u, i) => (t(), l("div", {
661
+ class: U(["dsea-app-logo anticon", [e.theme, { "collapsed-show-title": e.collapsedShowTitle }]]),
662
+ onClick: s
661
663
  }, [
662
- i.value ? (a(), o("img", {
664
+ o.value ? (t(), l("img", {
663
665
  key: 0,
664
- src: i.value,
665
- alt: t.value
666
- }, null, 8, $e)) : p("", !0),
667
- e.showTitle ? (a(), o("div", {
666
+ src: o.value,
667
+ alt: a.value
668
+ }, null, 8, lt)) : b("", !0),
669
+ e.showTitle ? (t(), l("div", {
668
670
  key: 1,
669
- class: N(["dsea-app-logo__title ml-2 truncate md:opacity-100", { "xs:opacity-0": !e.alwaysShowTitle }])
670
- }, d(t.value), 3)) : p("", !0)
671
+ class: U(["dsea-app-logo__title ml-2 truncate md:opacity-100", { "xs:opacity-0": !e.alwaysShowTitle }])
672
+ }, m(a.value), 3)) : b("", !0)
671
673
  ], 2));
672
674
  }
673
675
  });
674
- const A = (e, c) => {
675
- const t = e.__vccOpts || e;
676
- for (const [i, l] of c)
677
- t[i] = l;
678
- return t;
679
- }, Ce = /* @__PURE__ */ A(Le, [["__scopeId", "data-v-f9695ead"]]), Se = { class: "dsea-app-locale-picker" }, xe = { key: 0 }, Gn = /* @__PURE__ */ k({
676
+ const W = (e, d) => {
677
+ const a = e.__vccOpts || e;
678
+ for (const [o, s] of d)
679
+ a[o] = s;
680
+ return a;
681
+ }, ve = /* @__PURE__ */ W(ot, [["__scopeId", "data-v-f9695ead"]]), it = { class: "dsea-app-locale-picker" }, st = { key: 0 }, rt = /* @__PURE__ */ P({
680
682
  __name: "AppLocalePicker",
681
683
  props: {
682
684
  locales: {},
@@ -685,114 +687,115 @@ const A = (e, c) => {
685
687
  reload: { type: Boolean }
686
688
  },
687
689
  setup(e) {
688
- const c = e, { ports: t } = q(), i = S(c.locale ?? t.locale.getLocale()), l = I(() => {
689
- var n;
690
- return ((n = c.locales.find((u) => u.event === i.value)) == null ? void 0 : n.text) ?? "";
690
+ const d = e, { ports: a } = te(), o = M(d.locale ?? a.locale.getLocale()), s = E(() => {
691
+ var i;
692
+ return ((i = d.locales.find((n) => n.event === o.value)) == null ? void 0 : i.text) ?? "";
691
693
  });
692
- U(() => c.locale, (n) => {
693
- n && (i.value = n);
694
+ Z(() => d.locale, (i) => {
695
+ i && (o.value = i);
694
696
  });
695
- async function r(n) {
696
- n.event !== i.value && (await t.locale.setLocale(n.event), i.value = n.event, c.reload && location.reload());
697
+ async function u(i) {
698
+ i.event !== o.value && (await a.locale.setLocale(i.event), o.value = i.event, d.reload && location.reload());
697
699
  }
698
- return (n, u) => (a(), P(y(re), {
700
+ return (i, n) => (t(), z(f(Fe), {
699
701
  placement: "bottom",
700
702
  trigger: ["click"],
701
703
  dropMenuList: e.locales,
702
- selectedKeys: [i.value],
704
+ selectedKeys: [o.value],
703
705
  overlayClassName: "app-locale-picker-overlay",
704
- onMenuEvent: r
706
+ onMenuEvent: u
705
707
  }, {
706
- default: j(() => [
707
- s("span", Se, [
708
- $(y(w), { icon: "ion:language" }),
709
- e.showText ? (a(), o("span", xe, d(l.value), 1)) : p("", !0)
708
+ default: re(() => [
709
+ r("span", it, [
710
+ x(f(L), { icon: "ion:language" }),
711
+ e.showText ? (t(), l("span", st, m(s.value), 1)) : b("", !0)
710
712
  ])
711
713
  ]),
712
714
  _: 1
713
715
  }, 8, ["dropMenuList", "selectedKeys"]));
714
716
  }
715
717
  });
716
- const Ae = ["aria-label"], Me = /* @__PURE__ */ k({
718
+ const ut = ["aria-label"], dt = /* @__PURE__ */ P({
717
719
  __name: "AppDarkModeToggle",
718
720
  props: {
719
721
  darkMode: { type: Boolean },
720
722
  visible: { type: Boolean, default: !0 }
721
723
  },
722
724
  emits: ["update:darkMode"],
723
- setup(e, { emit: c }) {
724
- const t = c;
725
- return (i, l) => e.visible ? (a(), o("button", {
725
+ setup(e, { emit: d }) {
726
+ const a = d;
727
+ return (o, s) => e.visible ? (t(), l("button", {
726
728
  key: 0,
727
729
  type: "button",
728
- class: N(["dsea-dark-switch", { "dsea-dark-switch--dark": e.darkMode }]),
730
+ class: U(["dsea-dark-switch", { "dsea-dark-switch--dark": e.darkMode }]),
729
731
  "aria-label": e.darkMode ? "Switch to light mode" : "Switch to dark mode",
730
- onClick: l[0] || (l[0] = (r) => t("update:darkMode", !e.darkMode))
732
+ onClick: s[0] || (s[0] = (u) => a("update:darkMode", !e.darkMode))
731
733
  }, [
732
- l[1] || (l[1] = s("span", { class: "dsea-dark-switch-inner" }, null, -1)),
733
- $(y(w), {
734
+ s[1] || (s[1] = r("span", { class: "dsea-dark-switch-inner" }, null, -1)),
735
+ x(f(L), {
734
736
  icon: "lucide:sun",
735
737
  size: 14
736
738
  }),
737
- $(y(w), {
739
+ x(f(L), {
738
740
  icon: "lucide:moon",
739
741
  size: 14
740
742
  })
741
- ], 10, Ae)) : p("", !0);
743
+ ], 10, ut)) : b("", !0);
742
744
  }
743
745
  });
744
- const Xn = /* @__PURE__ */ A(Me, [["__scopeId", "data-v-bc7f2cad"]]), Te = ["aria-label", "title", "aria-pressed"], Be = /* @__PURE__ */ k({
746
+ const po = /* @__PURE__ */ W(dt, [["__scopeId", "data-v-bc7f2cad"]]), ct = ["aria-label", "title", "aria-pressed"], mt = /* @__PURE__ */ P({
745
747
  __name: "AdminFullscreenButton",
746
748
  props: {
747
749
  enterLabel: { default: "Enter fullscreen" },
748
750
  exitLabel: { default: "Exit fullscreen" }
749
751
  },
750
752
  setup(e) {
751
- const c = S(!1);
752
- function t() {
753
- c.value = !!document.fullscreenElement;
753
+ const d = M(!1);
754
+ function a() {
755
+ d.value = !!document.fullscreenElement;
754
756
  }
755
- async function i() {
756
- document.fullscreenElement ? await document.exitFullscreen() : await document.documentElement.requestFullscreen(), t();
757
+ async function o() {
758
+ document.fullscreenElement ? await document.exitFullscreen() : await document.documentElement.requestFullscreen(), a();
757
759
  }
758
- return Y(() => {
759
- t(), document.addEventListener("fullscreenchange", t);
760
- }), Q(() => document.removeEventListener("fullscreenchange", t)), (l, r) => (a(), o("button", {
760
+ return ie(() => {
761
+ a(), document.addEventListener("fullscreenchange", a);
762
+ }), ne(() => document.removeEventListener("fullscreenchange", a)), (s, u) => (t(), l("button", {
761
763
  type: "button",
762
764
  class: "dsea-icon-command",
763
- "aria-label": c.value ? e.exitLabel : e.enterLabel,
764
- title: c.value ? e.exitLabel : e.enterLabel,
765
- "aria-pressed": c.value,
766
- onClick: i
765
+ "aria-label": d.value ? e.exitLabel : e.enterLabel,
766
+ title: d.value ? e.exitLabel : e.enterLabel,
767
+ "aria-pressed": d.value,
768
+ onClick: o
767
769
  }, [
768
- $(y(w), {
769
- icon: c.value ? "lucide:minimize" : "lucide:maximize",
770
+ x(f(L), {
771
+ icon: d.value ? "lucide:minimize" : "lucide:maximize",
770
772
  size: 18
771
773
  }, null, 8, ["icon"])
772
- ], 8, Te));
774
+ ], 8, ct));
773
775
  }
774
776
  });
775
- const Yn = /* @__PURE__ */ A(Be, [["__scopeId", "data-v-1787f599"]]);
776
- function X(e) {
777
+ const vt = /* @__PURE__ */ W(mt, [["__scopeId", "data-v-1787f599"]]);
778
+ new TextEncoder().encode("kerthus-web-shared-auth-v2-key!!");
779
+ function ge(e) {
777
780
  if (typeof e != "string")
778
781
  return "";
779
- const c = e.trim();
780
- if (!/^https?:\/\/[^/]/i.test(c) || /^https?:\/\/[^/?#]*@/i.test(c) || /[\s\\\u0000-\u001f\u007f]/.test(c))
782
+ const d = e.trim();
783
+ if (!/^https?:\/\/[^/]/i.test(d) || /^https?:\/\/[^/?#]*@/i.test(d) || /[\s\\\u0000-\u001f\u007f]/.test(d))
781
784
  return "";
782
785
  try {
783
- const t = new URL(c);
784
- return !["http:", "https:"].includes(t.protocol) || !t.hostname || t.username || t.password ? "" : c;
786
+ const a = new URL(d);
787
+ return !["http:", "https:"].includes(a.protocol) || !a.hostname || a.username || a.password ? "" : d;
785
788
  } catch {
786
789
  return "";
787
790
  }
788
791
  }
789
- const Pe = ["aria-label", "title"], Ie = { class: "dsea-app-switcher__panel" }, Ee = {
792
+ const gt = ["aria-label", "title"], bt = { class: "dsea-app-switcher__panel" }, ht = {
790
793
  key: 0,
791
794
  role: "status"
792
- }, Fe = {
795
+ }, pt = {
793
796
  key: 1,
794
797
  role: "alert"
795
- }, Ne = { key: 2 }, ze = { key: 3 }, De = ["href"], Ke = ["src"], Ve = { key: 0 }, Re = ["title"], Ue = ["disabled", "aria-current", "onClick"], qe = ["src"], We = { key: 0 }, Oe = /* @__PURE__ */ k({
798
+ }, ft = { key: 2 }, yt = { key: 3 }, kt = ["href"], wt = ["src"], St = { key: 0 }, _t = ["title"], $t = ["disabled", "aria-current", "onClick"], Ct = ["src"], xt = { key: 0 }, Lt = /* @__PURE__ */ P({
796
799
  __name: "AdminAppSwitcher",
797
800
  props: {
798
801
  apps: {},
@@ -806,120 +809,120 @@ const Pe = ["aria-label", "title"], Ie = { class: "dsea-app-switcher__panel" },
806
809
  confirmSwitch: {}
807
810
  },
808
811
  emits: ["open", "switch", "error"],
809
- setup(e, { emit: c }) {
810
- const t = e, i = c, l = S(), r = S();
811
- function n() {
812
- l.value && (l.value.open = !1);
813
- }
814
- function u(g) {
815
- g.target.open && i("open");
816
- }
817
- async function b(g) {
818
- var v;
819
- if (!(r.value || g.id === t.currentId)) {
820
- r.value = g.id;
812
+ setup(e, { emit: d }) {
813
+ const a = e, o = d, s = M(), u = M();
814
+ function i() {
815
+ s.value && (s.value.open = !1);
816
+ }
817
+ function n(y) {
818
+ y.target.open && o("open");
819
+ }
820
+ async function c(y) {
821
+ var h;
822
+ if (!(u.value || y.id === a.currentId)) {
823
+ u.value = y.id;
821
824
  try {
822
- if (await ((v = t.confirmSwitch) == null ? void 0 : v.call(t, g)) === !1)
825
+ if (await ((h = a.confirmSwitch) == null ? void 0 : h.call(a, y)) === !1)
823
826
  return;
824
- i("switch", g), n();
825
- } catch (m) {
826
- i("error", m);
827
+ o("switch", y), i();
828
+ } catch (p) {
829
+ o("error", p);
827
830
  } finally {
828
- r.value = void 0;
831
+ u.value = void 0;
829
832
  }
830
833
  }
831
834
  }
832
- return (g, v) => (a(), o("details", {
835
+ return (y, h) => (t(), l("details", {
833
836
  ref_key: "menu",
834
- ref: l,
837
+ ref: s,
835
838
  class: "dsea-app-switcher",
836
- onToggle: u,
837
- onKeydown: J(n, ["esc"])
839
+ onToggle: n,
840
+ onKeydown: be(i, ["esc"])
838
841
  }, [
839
- s("summary", {
842
+ r("summary", {
840
843
  "aria-label": e.label,
841
844
  title: e.label
842
845
  }, [
843
- $(y(w), {
846
+ x(f(L), {
844
847
  icon: "lucide:layout-grid",
845
848
  size: 18
846
849
  })
847
- ], 8, Pe),
848
- s("div", Ie, [
849
- e.loading ? (a(), o("p", Ee, d(e.loadingLabel), 1)) : e.error ? (a(), o("p", Fe, d(e.error), 1)) : e.apps.length ? (a(), o("ul", ze, [
850
- (a(!0), o(x, null, M(e.apps, (m) => (a(), o("li", {
851
- key: m.id
850
+ ], 8, gt),
851
+ r("div", bt, [
852
+ e.loading ? (t(), l("p", ht, m(e.loadingLabel), 1)) : e.error ? (t(), l("p", pt, m(e.error), 1)) : e.apps.length ? (t(), l("ul", yt, [
853
+ (t(!0), l(F, null, K(e.apps, (p) => (t(), l("li", {
854
+ key: p.id
852
855
  }, [
853
- m.url && y(X)(m.url) ? (a(), o("a", {
856
+ p.url && f(ge)(p.url) ? (t(), l("a", {
854
857
  key: 0,
855
- href: y(X)(m.url),
858
+ href: f(ge)(p.url),
856
859
  target: "_blank",
857
860
  rel: "noopener noreferrer",
858
861
  referrerpolicy: "no-referrer",
859
- onClick: n
862
+ onClick: i
860
863
  }, [
861
- m.icon ? (a(), o("img", {
864
+ p.icon ? (t(), l("img", {
862
865
  key: 0,
863
- src: m.icon,
866
+ src: p.icon,
864
867
  alt: ""
865
- }, null, 8, Ke)) : p("", !0),
866
- s("span", null, [
867
- z(d(m.name), 1),
868
- m.description ? (a(), o("small", Ve, d(m.description), 1)) : p("", !0)
868
+ }, null, 8, wt)) : b("", !0),
869
+ r("span", null, [
870
+ Q(m(p.name), 1),
871
+ p.description ? (t(), l("small", St, m(p.description), 1)) : b("", !0)
869
872
  ]),
870
- $(y(w), {
873
+ x(f(L), {
871
874
  icon: "lucide:external-link",
872
875
  size: 14
873
876
  })
874
- ], 8, De)) : m.url ? (a(), o("button", {
877
+ ], 8, kt)) : p.url ? (t(), l("button", {
875
878
  key: 1,
876
879
  type: "button",
877
880
  disabled: "",
878
881
  title: e.invalidUrlLabel
879
882
  }, [
880
- s("span", null, [
881
- z(d(m.name), 1),
882
- s("small", null, d(e.invalidUrlLabel), 1)
883
+ r("span", null, [
884
+ Q(m(p.name), 1),
885
+ r("small", null, m(e.invalidUrlLabel), 1)
883
886
  ])
884
- ], 8, Re)) : (a(), o("button", {
887
+ ], 8, _t)) : (t(), l("button", {
885
888
  key: 2,
886
889
  type: "button",
887
- disabled: m.id === e.currentId || r.value === m.id,
888
- "aria-current": m.id === e.currentId ? "page" : void 0,
889
- onClick: (L) => b(m)
890
+ disabled: p.id === e.currentId || u.value === p.id,
891
+ "aria-current": p.id === e.currentId ? "page" : void 0,
892
+ onClick: (N) => c(p)
890
893
  }, [
891
- m.icon ? (a(), o("img", {
894
+ p.icon ? (t(), l("img", {
892
895
  key: 0,
893
- src: m.icon,
896
+ src: p.icon,
894
897
  alt: ""
895
- }, null, 8, qe)) : p("", !0),
896
- s("span", null, [
897
- z(d(m.name), 1),
898
- m.description ? (a(), o("small", We, d(m.description), 1)) : p("", !0)
898
+ }, null, 8, Ct)) : b("", !0),
899
+ r("span", null, [
900
+ Q(m(p.name), 1),
901
+ p.description ? (t(), l("small", xt, m(p.description), 1)) : b("", !0)
899
902
  ]),
900
- m.id === e.currentId ? (a(), P(y(w), {
903
+ p.id === e.currentId ? (t(), z(f(L), {
901
904
  key: 1,
902
905
  icon: "lucide:check",
903
906
  size: 16
904
- })) : p("", !0)
905
- ], 8, Ue))
907
+ })) : b("", !0)
908
+ ], 8, $t))
906
909
  ]))), 128))
907
- ])) : (a(), o("p", Ne, d(e.emptyLabel), 1))
910
+ ])) : (t(), l("p", ft, m(e.emptyLabel), 1))
908
911
  ])
909
912
  ], 544));
910
913
  }
911
914
  });
912
- const Jn = /* @__PURE__ */ A(Oe, [["__scopeId", "data-v-29d987c2"]]), me = Symbol("app-provider");
913
- function be(e) {
914
- return ve(me, e), e;
915
+ const Mt = /* @__PURE__ */ W(Lt, [["__scopeId", "data-v-29d987c2"]]), Ne = Symbol("app-provider");
916
+ function ze(e) {
917
+ return Qe(Ne, e), e;
915
918
  }
916
- function Zn() {
917
- const e = le(me);
919
+ function fo() {
920
+ const e = Ae(Ne);
918
921
  if (!e)
919
922
  throw new Error("AppProvider is missing");
920
923
  return e;
921
924
  }
922
- const el = /* @__PURE__ */ k({
925
+ const yo = /* @__PURE__ */ P({
923
926
  __name: "AppProvider",
924
927
  props: {
925
928
  prefixCls: { default: "dsea" },
@@ -927,163 +930,166 @@ const el = /* @__PURE__ */ k({
927
930
  onMobileChange: {}
928
931
  },
929
932
  setup(e) {
930
- const c = e, t = S(!1);
931
- be({ prefixCls: pe(c, "prefixCls"), isMobile: t });
932
- function i() {
933
- var r;
934
- const l = window.innerWidth < c.mobileBreakpoint;
935
- l !== t.value && (t.value = l, (r = c.onMobileChange) == null || r.call(c, l));
933
+ const d = e, a = M(!1);
934
+ ze({ prefixCls: Xe(d, "prefixCls"), isMobile: a });
935
+ function o() {
936
+ var u;
937
+ const s = window.innerWidth < d.mobileBreakpoint;
938
+ s !== a.value && (a.value = s, (u = d.onMobileChange) == null || u.call(d, s));
936
939
  }
937
- return Y(() => {
938
- i(), window.addEventListener("resize", i);
939
- }), Q(() => window.removeEventListener("resize", i)), (l, r) => B(l.$slots, "default");
940
+ return ie(() => {
941
+ o(), window.addEventListener("resize", o);
942
+ }), ne(() => window.removeEventListener("resize", o)), (s, u) => T(s.$slots, "default");
940
943
  }
941
- }), He = ["aria-label"], je = ["aria-label"], Qe = { class: "dsea-app-search-input-row" }, Ge = ["placeholder", "aria-label"], Xe = ["aria-label"], Ye = ["data-index", "aria-selected", "onMouseenter", "onClick"], Je = {
944
+ }), At = ["aria-label"], Tt = ["aria-label"], Pt = { class: "dsea-app-search-input-row" }, Bt = ["placeholder", "aria-label"], Ft = ["aria-label"], Et = ["data-index", "aria-selected", "onMouseenter", "onClick"], It = {
942
945
  key: 1,
943
946
  class: "dsea-app-search-empty"
944
- }, Ze = /* @__PURE__ */ k({
947
+ }, Nt = /* @__PURE__ */ P({
945
948
  __name: "AppSearch",
949
+ props: {
950
+ menuItems: {}
951
+ },
946
952
  setup(e) {
947
- const { ports: c } = q(), t = ce(), i = (f) => c.locale.translate(f), l = S(!1), r = S(""), n = S([]), u = S(0), b = S(), g = S();
948
- function v(f, h = "") {
949
- return f.flatMap((_) => {
950
- var G, ae;
951
- if ((G = _.meta) != null && G.hideMenu)
953
+ const d = e, { ports: a } = te(), o = Se(), s = (v) => a.locale.translate(v), u = M(!1), i = M(""), n = M([]), c = M(0), y = M(), h = M();
954
+ function p(v, k = "") {
955
+ return v.flatMap((C) => {
956
+ var de, ce;
957
+ if ((de = C.meta) != null && de.hideMenu)
952
958
  return [];
953
- const C = i(_.name), E = h ? `${h} > ${C}` : C, R = (ae = _.meta) != null && ae.hideChildrenInMenu ? [] : _.children ?? [];
954
- return R.length ? v(R, E) : [{ label: E, path: _.path, icon: _.icon }];
959
+ const B = s(C.name), V = k ? `${k} > ${B}` : B, G = (ce = C.meta) != null && ce.hideChildrenInMenu ? [] : C.children ?? [];
960
+ return G.length ? p(G, V) : [{ label: V, path: C.path, icon: C.icon }];
955
961
  });
956
962
  }
957
- function m(f, h) {
958
- const _ = f.toLocaleLowerCase();
959
- let C = 0;
960
- for (const E of h.toLocaleLowerCase()) {
961
- if (C = _.indexOf(E, C), C < 0)
963
+ function N(v, k) {
964
+ const C = v.toLocaleLowerCase();
965
+ let B = 0;
966
+ for (const V of k.toLocaleLowerCase()) {
967
+ if (B = C.indexOf(V, B), B < 0)
962
968
  return !1;
963
- C += 1;
969
+ B += 1;
964
970
  }
965
971
  return !0;
966
972
  }
967
- const L = I(() => {
968
- const f = r.value.trim();
969
- return f ? v(n.value).filter((h) => m(h.label, f)) : [];
973
+ const A = E(() => {
974
+ const v = i.value.trim();
975
+ return v ? p(n.value).filter((k) => N(k.label, v)) : [];
970
976
  });
971
- U(L, () => {
972
- u.value = 0;
977
+ Z(A, () => {
978
+ c.value = 0;
973
979
  });
974
- async function F() {
975
- var f, h;
976
- l.value = !0, n.value = await ((f = t.getItems) == null ? void 0 : f.call(t)) ?? [], l.value && (await se(), (h = b.value) == null || h.focus());
980
+ async function O() {
981
+ var v, k;
982
+ u.value = !0, n.value = d.menuItems ?? await ((v = o.getItems) == null ? void 0 : v.call(o)) ?? [], u.value && (await Be(), (k = y.value) == null || k.focus());
977
983
  }
978
984
  function D() {
979
- l.value = !1, r.value = "";
985
+ u.value = !1, i.value = "";
980
986
  }
981
- function W(f) {
982
- D(), c.navigation.go(f.path);
987
+ function j(v) {
988
+ D(), a.navigation.go(v.path);
983
989
  }
984
- function T(f) {
985
- var h, _;
986
- if (l.value)
987
- if (f.key === "Escape")
990
+ function $(v) {
991
+ var k, C;
992
+ if (u.value)
993
+ if (v.key === "Escape")
988
994
  D();
989
- else if (f.key === "ArrowDown" || f.key === "ArrowUp") {
990
- if (f.preventDefault(), !L.value.length)
995
+ else if (v.key === "ArrowDown" || v.key === "ArrowUp") {
996
+ if (v.preventDefault(), !A.value.length)
991
997
  return;
992
- const C = f.key === "ArrowDown" ? 1 : -1;
993
- u.value = (u.value + C + L.value.length) % L.value.length, (_ = (h = g.value) == null ? void 0 : h.querySelector(`[data-index="${u.value}"]`)) == null || _.scrollIntoView({ block: "nearest" });
998
+ const B = v.key === "ArrowDown" ? 1 : -1;
999
+ c.value = (c.value + B + A.value.length) % A.value.length, (C = (k = h.value) == null ? void 0 : k.querySelector(`[data-index="${c.value}"]`)) == null || C.scrollIntoView({ block: "nearest" });
994
1000
  } else
995
- f.key === "Enter" && L.value[u.value] && (f.preventDefault(), W(L.value[u.value]));
1001
+ v.key === "Enter" && A.value[c.value] && (v.preventDefault(), j(A.value[c.value]));
996
1002
  }
997
- return Y(() => window.addEventListener("keydown", T)), Q(() => window.removeEventListener("keydown", T)), (f, h) => (a(), o(x, null, [
998
- s("button", {
1003
+ return ie(() => window.addEventListener("keydown", $)), ne(() => window.removeEventListener("keydown", $)), (v, k) => (t(), l(F, null, [
1004
+ r("button", {
999
1005
  type: "button",
1000
1006
  class: "dsea-app-search-trigger",
1001
- "aria-label": i("common.searchText"),
1002
- onClick: F
1007
+ "aria-label": s("common.searchText"),
1008
+ onClick: O
1003
1009
  }, [
1004
- $(y(w), {
1010
+ x(f(L), {
1005
1011
  icon: "ant-design:search-outlined",
1006
1012
  size: 18
1007
1013
  })
1008
- ], 8, He),
1009
- (a(), P(ge, { to: "body" }, [
1010
- l.value ? (a(), o("div", {
1014
+ ], 8, At),
1015
+ (t(), z(Pe, { to: "body" }, [
1016
+ u.value ? (t(), l("div", {
1011
1017
  key: 0,
1012
1018
  class: "dsea-app-search-backdrop",
1013
- onClick: H(D, ["self"])
1019
+ onClick: ee(D, ["self"])
1014
1020
  }, [
1015
- s("section", {
1021
+ r("section", {
1016
1022
  class: "dsea-app-search-modal",
1017
1023
  role: "dialog",
1018
1024
  "aria-modal": "true",
1019
- "aria-label": i("common.searchText")
1025
+ "aria-label": s("common.searchText")
1020
1026
  }, [
1021
- s("div", Qe, [
1022
- $(y(w), {
1027
+ r("div", Pt, [
1028
+ x(f(L), {
1023
1029
  icon: "ant-design:search-outlined",
1024
1030
  size: 18
1025
1031
  }),
1026
- K(s("input", {
1032
+ Y(r("input", {
1027
1033
  ref_key: "inputEl",
1028
- ref: b,
1029
- "onUpdate:modelValue": h[0] || (h[0] = (_) => r.value = _),
1034
+ ref: y,
1035
+ "onUpdate:modelValue": k[0] || (k[0] = (C) => i.value = C),
1030
1036
  type: "search",
1031
- placeholder: i("common.searchText"),
1032
- "aria-label": i("common.searchText")
1033
- }, null, 8, Ge), [
1034
- [V, r.value]
1037
+ placeholder: s("common.searchText"),
1038
+ "aria-label": s("common.searchText")
1039
+ }, null, 8, Bt), [
1040
+ [J, i.value]
1035
1041
  ]),
1036
- s("button", {
1042
+ r("button", {
1037
1043
  type: "button",
1038
1044
  class: "dsea-app-search-close",
1039
- "aria-label": i("common.cancelText"),
1045
+ "aria-label": s("common.cancelText"),
1040
1046
  onClick: D
1041
1047
  }, [
1042
- $(y(w), {
1048
+ x(f(L), {
1043
1049
  icon: "lucide:x",
1044
1050
  size: 18
1045
1051
  })
1046
- ], 8, Xe)
1052
+ ], 8, Ft)
1047
1053
  ]),
1048
- L.value.length ? (a(), o("ul", {
1054
+ A.value.length ? (t(), l("ul", {
1049
1055
  key: 0,
1050
1056
  ref_key: "resultList",
1051
- ref: g,
1057
+ ref: h,
1052
1058
  class: "dsea-app-search-results",
1053
1059
  role: "listbox"
1054
1060
  }, [
1055
- (a(!0), o(x, null, M(L.value, (_, C) => (a(), o("li", {
1056
- key: _.path,
1057
- "data-index": C,
1061
+ (t(!0), l(F, null, K(A.value, (C, B) => (t(), l("li", {
1062
+ key: C.path,
1063
+ "data-index": B,
1058
1064
  role: "option",
1059
- "aria-selected": C === u.value,
1060
- class: N({ active: C === u.value }),
1061
- onMouseenter: (E) => u.value = C,
1062
- onClick: (E) => W(_)
1065
+ "aria-selected": B === c.value,
1066
+ class: U({ active: B === c.value }),
1067
+ onMouseenter: (V) => c.value = B,
1068
+ onClick: (V) => j(C)
1063
1069
  }, [
1064
- _.icon ? (a(), P(y(w), {
1070
+ C.icon ? (t(), z(f(L), {
1065
1071
  key: 0,
1066
- icon: _.icon,
1072
+ icon: C.icon,
1067
1073
  size: 18
1068
- }, null, 8, ["icon"])) : p("", !0),
1069
- s("span", null, d(_.label), 1),
1070
- C === u.value ? (a(), P(y(w), {
1074
+ }, null, 8, ["icon"])) : b("", !0),
1075
+ r("span", null, m(C.label), 1),
1076
+ B === c.value ? (t(), z(f(L), {
1071
1077
  key: 1,
1072
1078
  icon: "ant-design:enter-outlined",
1073
1079
  size: 16
1074
- })) : p("", !0)
1075
- ], 42, Ye))), 128))
1076
- ], 512)) : r.value.trim() ? (a(), o("div", Je, d(i("component.app.searchNotData")), 1)) : p("", !0)
1077
- ], 8, je)
1078
- ])) : p("", !0)
1080
+ })) : b("", !0)
1081
+ ], 42, Et))), 128))
1082
+ ], 512)) : i.value.trim() ? (t(), l("div", It, m(s("component.app.searchNotData")), 1)) : b("", !0)
1083
+ ], 8, Tt)
1084
+ ])) : b("", !0)
1079
1085
  ]))
1080
1086
  ], 64));
1081
1087
  }
1082
1088
  });
1083
- const tl = /* @__PURE__ */ A(Ze, [["__scopeId", "data-v-2b474f9e"]]), et = ["aria-label"], tt = ["src", "alt"], at = {
1089
+ const zt = /* @__PURE__ */ W(Nt, [["__scopeId", "data-v-9d504bc3"]]), Dt = ["aria-label"], Rt = ["src", "alt"], Kt = {
1084
1090
  key: 1,
1085
1091
  class: "dsea-user-menu__initial"
1086
- }, nt = { class: "dsea-user-menu__name" }, lt = { role: "menu" }, ot = ["onClick"], st = /* @__PURE__ */ k({
1092
+ }, Wt = { class: "dsea-user-menu__name" }, Ot = { role: "menu" }, Vt = ["onClick"], Ut = /* @__PURE__ */ P({
1087
1093
  __name: "AdminUserMenu",
1088
1094
  props: {
1089
1095
  name: {},
@@ -1092,64 +1098,64 @@ const tl = /* @__PURE__ */ A(Ze, [["__scopeId", "data-v-2b474f9e"]]), et = ["ari
1092
1098
  items: {}
1093
1099
  },
1094
1100
  emits: ["select"],
1095
- setup(e, { emit: c }) {
1096
- const t = c, i = S();
1097
- function l(n) {
1098
- n.currentTarget.open = !1;
1101
+ setup(e, { emit: d }) {
1102
+ const a = d, o = M();
1103
+ function s(i) {
1104
+ i.currentTarget.open = !1;
1099
1105
  }
1100
- function r(n) {
1101
- t("select", n), i.value && (i.value.open = !1);
1106
+ function u(i) {
1107
+ a("select", i), o.value && (o.value.open = !1);
1102
1108
  }
1103
- return (n, u) => (a(), o("details", {
1109
+ return (i, n) => (t(), l("details", {
1104
1110
  ref_key: "menu",
1105
- ref: i,
1111
+ ref: o,
1106
1112
  class: "dsea-user-menu",
1107
- onKeydown: J(l, ["esc"])
1113
+ onKeydown: be(s, ["esc"])
1108
1114
  }, [
1109
- s("summary", { "aria-label": e.label }, [
1110
- e.avatar ? (a(), o("img", {
1115
+ r("summary", { "aria-label": e.label }, [
1116
+ e.avatar ? (t(), l("img", {
1111
1117
  key: 0,
1112
1118
  src: e.avatar,
1113
1119
  alt: e.name
1114
- }, null, 8, tt)) : (a(), o("span", at, d(e.name.slice(0, 1).toUpperCase()), 1)),
1115
- s("span", nt, d(e.name), 1),
1116
- $(y(w), {
1120
+ }, null, 8, Rt)) : (t(), l("span", Kt, m(e.name.slice(0, 1).toUpperCase()), 1)),
1121
+ r("span", Wt, m(e.name), 1),
1122
+ x(f(L), {
1117
1123
  icon: "lucide:chevron-down",
1118
1124
  size: 14
1119
1125
  })
1120
- ], 8, et),
1121
- s("ul", lt, [
1122
- (a(!0), o(x, null, M(e.items, (b) => (a(), o("li", {
1123
- key: b.key,
1126
+ ], 8, Dt),
1127
+ r("ul", Ot, [
1128
+ (t(!0), l(F, null, K(e.items, (c) => (t(), l("li", {
1129
+ key: c.key,
1124
1130
  role: "none"
1125
1131
  }, [
1126
- s("button", {
1132
+ r("button", {
1127
1133
  type: "button",
1128
1134
  role: "menuitem",
1129
- onClick: (g) => r(b.key)
1135
+ onClick: (y) => u(c.key)
1130
1136
  }, [
1131
- b.icon ? (a(), P(y(w), {
1137
+ c.icon ? (t(), z(f(L), {
1132
1138
  key: 0,
1133
- icon: b.icon,
1139
+ icon: c.icon,
1134
1140
  size: 16
1135
- }, null, 8, ["icon"])) : p("", !0),
1136
- z(" " + d(b.label), 1)
1137
- ], 8, ot)
1141
+ }, null, 8, ["icon"])) : b("", !0),
1142
+ Q(" " + m(c.label), 1)
1143
+ ], 8, Vt)
1138
1144
  ]))), 128))
1139
1145
  ])
1140
1146
  ], 544));
1141
1147
  }
1142
1148
  });
1143
- const al = /* @__PURE__ */ A(st, [["__scopeId", "data-v-d193d9f3"]]), it = ["aria-label"], rt = {
1149
+ const qt = /* @__PURE__ */ W(Ut, [["__scopeId", "data-v-d193d9f3"]]), Ht = ["aria-label"], jt = {
1144
1150
  key: 0,
1145
1151
  class: "dsea-notifications__count"
1146
- }, dt = ["aria-label"], ct = {
1152
+ }, Qt = ["aria-label"], Xt = {
1147
1153
  class: "dsea-notifications__tabs",
1148
1154
  role: "tablist"
1149
- }, ut = ["aria-selected", "onClick"], mt = { key: 0 }, bt = ["onClick"], vt = { key: 0 }, pt = { key: 1 }, gt = {
1155
+ }, Gt = ["aria-selected", "onClick"], Yt = { key: 0 }, Jt = ["onClick"], Zt = { key: 0 }, ea = { key: 1 }, ta = {
1150
1156
  key: 1,
1151
1157
  class: "dsea-notifications__empty"
1152
- }, ht = /* @__PURE__ */ k({
1158
+ }, aa = /* @__PURE__ */ P({
1153
1159
  __name: "AdminNotificationCenter",
1154
1160
  props: {
1155
1161
  items: {},
@@ -1159,80 +1165,80 @@ const al = /* @__PURE__ */ A(st, [["__scopeId", "data-v-d193d9f3"]]), it = ["ari
1159
1165
  markAllLabel: { default: "Mark all as read" }
1160
1166
  },
1161
1167
  emits: ["open", "markAllRead"],
1162
- setup(e, { emit: c }) {
1163
- var b;
1164
- const t = e, i = c, l = S(((b = t.categories[0]) == null ? void 0 : b.key) ?? "");
1165
- U(() => t.categories, (g) => {
1166
- var v;
1167
- g.some((m) => m.key === l.value) || (l.value = ((v = g[0]) == null ? void 0 : v.key) ?? "");
1168
+ setup(e, { emit: d }) {
1169
+ var c;
1170
+ const a = e, o = d, s = M(((c = a.categories[0]) == null ? void 0 : c.key) ?? "");
1171
+ Z(() => a.categories, (y) => {
1172
+ var h;
1173
+ y.some((p) => p.key === s.value) || (s.value = ((h = y[0]) == null ? void 0 : h.key) ?? "");
1168
1174
  });
1169
- const r = I(() => t.items.filter((g) => !g.read).length), n = I(() => t.items.filter((g) => g.category === l.value));
1170
- function u(g) {
1171
- g.currentTarget.open = !1;
1175
+ const u = E(() => a.items.filter((y) => !y.read).length), i = E(() => a.items.filter((y) => y.category === s.value));
1176
+ function n(y) {
1177
+ y.currentTarget.open = !1;
1172
1178
  }
1173
- return (g, v) => (a(), o("details", {
1179
+ return (y, h) => (t(), l("details", {
1174
1180
  class: "dsea-notifications",
1175
- onKeydown: J(u, ["esc"])
1181
+ onKeydown: be(n, ["esc"])
1176
1182
  }, [
1177
- s("summary", { "aria-label": e.label }, [
1178
- $(y(w), {
1183
+ r("summary", { "aria-label": e.label }, [
1184
+ x(f(L), {
1179
1185
  icon: "lucide:bell",
1180
1186
  size: 18
1181
1187
  }),
1182
- r.value ? (a(), o("span", rt, d(r.value > 99 ? "99+" : r.value), 1)) : p("", !0)
1183
- ], 8, it),
1184
- s("section", {
1188
+ u.value ? (t(), l("span", jt, m(u.value > 99 ? "99+" : u.value), 1)) : b("", !0)
1189
+ ], 8, Ht),
1190
+ r("section", {
1185
1191
  class: "dsea-notifications__panel",
1186
1192
  "aria-label": e.label
1187
1193
  }, [
1188
- s("header", null, d(e.label), 1),
1189
- s("div", ct, [
1190
- (a(!0), o(x, null, M(e.categories, (m) => (a(), o("button", {
1191
- key: m.key,
1194
+ r("header", null, m(e.label), 1),
1195
+ r("div", Xt, [
1196
+ (t(!0), l(F, null, K(e.categories, (p) => (t(), l("button", {
1197
+ key: p.key,
1192
1198
  type: "button",
1193
1199
  role: "tab",
1194
- "aria-selected": l.value === m.key,
1195
- onClick: (L) => l.value = m.key
1196
- }, d(m.label), 9, ut))), 128))
1200
+ "aria-selected": s.value === p.key,
1201
+ onClick: (N) => s.value = p.key
1202
+ }, m(p.label), 9, Gt))), 128))
1197
1203
  ]),
1198
- n.value.length ? (a(), o("ul", mt, [
1199
- (a(!0), o(x, null, M(n.value, (m) => (a(), o("li", {
1200
- key: m.id,
1201
- class: N({ "is-read": m.read })
1204
+ i.value.length ? (t(), l("ul", Yt, [
1205
+ (t(!0), l(F, null, K(i.value, (p) => (t(), l("li", {
1206
+ key: p.id,
1207
+ class: U({ "is-read": p.read })
1202
1208
  }, [
1203
- s("button", {
1209
+ r("button", {
1204
1210
  type: "button",
1205
- onClick: (L) => i("open", m)
1211
+ onClick: (N) => o("open", p)
1206
1212
  }, [
1207
- s("strong", null, d(m.title), 1),
1208
- m.description ? (a(), o("span", vt, d(m.description), 1)) : p("", !0),
1209
- m.time ? (a(), o("small", pt, d(m.time), 1)) : p("", !0)
1210
- ], 8, bt)
1213
+ r("strong", null, m(p.title), 1),
1214
+ p.description ? (t(), l("span", Zt, m(p.description), 1)) : b("", !0),
1215
+ p.time ? (t(), l("small", ea, m(p.time), 1)) : b("", !0)
1216
+ ], 8, Jt)
1211
1217
  ], 2))), 128))
1212
- ])) : (a(), o("p", gt, d(e.emptyLabel), 1)),
1213
- r.value ? (a(), o("button", {
1218
+ ])) : (t(), l("p", ta, m(e.emptyLabel), 1)),
1219
+ u.value ? (t(), l("button", {
1214
1220
  key: 2,
1215
1221
  type: "button",
1216
1222
  class: "dsea-notifications__mark",
1217
- onClick: v[0] || (v[0] = (m) => i("markAllRead"))
1218
- }, d(e.markAllLabel), 1)) : p("", !0)
1219
- ], 8, dt)
1223
+ onClick: h[0] || (h[0] = (p) => o("markAllRead"))
1224
+ }, m(e.markAllLabel), 1)) : b("", !0)
1225
+ ], 8, Qt)
1220
1226
  ], 32));
1221
1227
  }
1222
1228
  });
1223
- const nl = /* @__PURE__ */ A(ht, [["__scopeId", "data-v-c5c5a82f"]]), ft = ["aria-hidden", "inert"], yt = { class: "dsea-admin-layout__brand" }, kt = ["aria-label"], _t = {
1229
+ const na = /* @__PURE__ */ W(aa, [["__scopeId", "data-v-c5c5a82f"]]), la = ["aria-hidden", "inert"], oa = { class: "dsea-admin-layout__brand" }, ia = ["aria-label"], sa = {
1224
1230
  key: 0,
1225
1231
  class: "dsea-admin-layout__sidebar-footer"
1226
- }, wt = ["aria-label", "aria-valuenow", "aria-valuemin", "aria-valuemax"], $t = ["aria-label"], Lt = { class: "dsea-admin-layout__main" }, Ct = {
1232
+ }, ra = ["aria-label", "aria-valuenow", "aria-valuemin", "aria-valuemax"], ua = ["aria-label"], da = { class: "dsea-admin-layout__main" }, ca = {
1227
1233
  key: 0,
1228
1234
  class: "dsea-admin-layout__header"
1229
- }, St = ["aria-label", "aria-expanded"], xt = ["aria-label"], At = { class: "dsea-admin-layout__header-actions" }, Mt = {
1235
+ }, ma = ["aria-label", "aria-expanded"], va = ["aria-label"], ga = { class: "dsea-admin-layout__header-actions" }, ba = {
1230
1236
  key: 1,
1231
1237
  class: "dsea-admin-layout__tabs"
1232
- }, Tt = { class: "dsea-admin-layout__content" }, Bt = {
1238
+ }, ha = { class: "dsea-admin-layout__content" }, pa = {
1233
1239
  key: 2,
1234
1240
  class: "dsea-admin-layout__footer"
1235
- }, ll = /* @__PURE__ */ k({
1241
+ }, ko = /* @__PURE__ */ P({
1236
1242
  __name: "AdminLayout",
1237
1243
  props: {
1238
1244
  menus: { default: () => [] },
@@ -1256,86 +1262,86 @@ const nl = /* @__PURE__ */ A(ht, [["__scopeId", "data-v-c5c5a82f"]]), ft = ["ari
1256
1262
  resizeLabel: { default: "Resize sidebar" }
1257
1263
  },
1258
1264
  emits: ["update:collapsed", "menuClick", "update:sidebarWidth"],
1259
- setup(e, { emit: c }) {
1260
- const t = e, i = c, { ports: l } = q(), r = S(!1), n = S(!1), u = I(() => t.showSidebar && t.mode !== "top" && !t.fullContent);
1261
- let b;
1262
- function g(h) {
1263
- return Math.min(t.maxSidebarWidth, Math.max(t.minSidebarWidth, h));
1264
- }
1265
- function v(h) {
1266
- if (h.button !== 0)
1265
+ setup(e, { emit: d }) {
1266
+ const a = e, o = d, { ports: s } = te(), u = M(!1), i = M(!1), n = E(() => a.showSidebar && a.mode !== "top" && !a.fullContent);
1267
+ let c;
1268
+ function y(v) {
1269
+ return Math.min(a.maxSidebarWidth, Math.max(a.minSidebarWidth, v));
1270
+ }
1271
+ function h(v) {
1272
+ if (v.button !== 0)
1267
1273
  return;
1268
- b == null || b();
1269
- const _ = h.clientX, C = t.sidebarWidth, E = (G) => i("update:sidebarWidth", g(C + G.clientX - _)), R = () => b == null ? void 0 : b();
1270
- window.addEventListener("pointermove", E), window.addEventListener("pointerup", R), window.addEventListener("pointercancel", R), b = () => {
1271
- window.removeEventListener("pointermove", E), window.removeEventListener("pointerup", R), window.removeEventListener("pointercancel", R), b = void 0;
1274
+ c == null || c();
1275
+ const k = v.clientX, C = a.sidebarWidth, B = (G) => o("update:sidebarWidth", y(C + G.clientX - k)), V = () => c == null ? void 0 : c();
1276
+ window.addEventListener("pointermove", B), window.addEventListener("pointerup", V), window.addEventListener("pointercancel", V), c = () => {
1277
+ window.removeEventListener("pointermove", B), window.removeEventListener("pointerup", V), window.removeEventListener("pointercancel", V), c = void 0;
1272
1278
  };
1273
1279
  }
1274
- function m(h) {
1275
- h.key !== "ArrowLeft" && h.key !== "ArrowRight" || (h.preventDefault(), i("update:sidebarWidth", g(t.sidebarWidth + (h.key === "ArrowRight" ? 10 : -10))));
1280
+ function p(v) {
1281
+ v.key !== "ArrowLeft" && v.key !== "ArrowRight" || (v.preventDefault(), o("update:sidebarWidth", y(a.sidebarWidth + (v.key === "ArrowRight" ? 10 : -10))));
1276
1282
  }
1277
- be({ prefixCls: S("dsea"), isMobile: r });
1278
- const L = I(() => ({
1279
- "--dsea-sidebar-width": `${t.sidebarWidth}px`,
1280
- "--dsea-collapsed-width": `${t.collapsedWidth}px`,
1281
- "--dsea-header-height": `${t.headerHeight}px`
1283
+ ze({ prefixCls: M("dsea"), isMobile: u });
1284
+ const N = E(() => ({
1285
+ "--dsea-sidebar-width": `${a.sidebarWidth}px`,
1286
+ "--dsea-collapsed-width": `${a.collapsedWidth}px`,
1287
+ "--dsea-header-height": `${a.headerHeight}px`
1282
1288
  }));
1283
- function F() {
1284
- const h = window.innerWidth < t.mobileBreakpoint;
1285
- h !== r.value && (r.value = h, n.value = !1);
1289
+ function A() {
1290
+ const v = window.innerWidth < a.mobileBreakpoint;
1291
+ v !== u.value && (u.value = v, i.value = !1);
1292
+ }
1293
+ function O() {
1294
+ i.value = !1;
1286
1295
  }
1287
1296
  function D() {
1288
- n.value = !1;
1289
- }
1290
- function W() {
1291
- r.value ? n.value = !n.value : i("update:collapsed", !t.collapsed);
1292
- }
1293
- function T(h) {
1294
- i("menuClick", h), D(), l.navigation.go(h);
1295
- }
1296
- function f(h) {
1297
- h.key === "Escape" && n.value && D();
1298
- }
1299
- return U(() => t.mobileBreakpoint, F), U(() => t.fullContent, () => {
1300
- n.value = !1;
1301
- }), Y(() => {
1302
- F(), window.addEventListener("resize", F), window.addEventListener("keydown", f);
1303
- }), Q(() => {
1304
- b == null || b(), window.removeEventListener("resize", F), window.removeEventListener("keydown", f);
1305
- }), (h, _) => (a(), o("div", {
1306
- class: N(["dsea-admin-layout", { "dsea-admin-layout--mobile": r.value, "dsea-admin-layout--collapsed": e.collapsed, "dsea-admin-layout--no-sidebar": !u.value }]),
1307
- style: ie(L.value)
1297
+ u.value ? i.value = !i.value : o("update:collapsed", !a.collapsed);
1298
+ }
1299
+ function j(v) {
1300
+ o("menuClick", v), O(), s.navigation.go(v);
1301
+ }
1302
+ function $(v) {
1303
+ v.key === "Escape" && i.value && O();
1304
+ }
1305
+ return Z(() => a.mobileBreakpoint, A), Z(() => a.fullContent, () => {
1306
+ i.value = !1;
1307
+ }), ie(() => {
1308
+ A(), window.addEventListener("resize", A), window.addEventListener("keydown", $);
1309
+ }), ne(() => {
1310
+ c == null || c(), window.removeEventListener("resize", A), window.removeEventListener("keydown", $);
1311
+ }), (v, k) => (t(), l("div", {
1312
+ class: U(["dsea-admin-layout", { "dsea-admin-layout--mobile": u.value, "dsea-admin-layout--collapsed": e.collapsed, "dsea-admin-layout--no-sidebar": !n.value }]),
1313
+ style: he(N.value)
1308
1314
  }, [
1309
- u.value ? (a(), o("aside", {
1315
+ n.value ? (t(), l("aside", {
1310
1316
  key: 0,
1311
- class: N(["dsea-admin-layout__sidebar", { "dsea-admin-layout__sidebar--open": n.value }]),
1312
- "aria-hidden": r.value && !n.value,
1313
- inert: r.value && !n.value
1317
+ class: U(["dsea-admin-layout__sidebar", { "dsea-admin-layout__sidebar--open": i.value }]),
1318
+ "aria-hidden": u.value && !i.value,
1319
+ inert: u.value && !i.value
1314
1320
  }, [
1315
- s("div", yt, [
1316
- B(h.$slots, "brand", {}, () => [
1317
- $(Ce, {
1318
- "show-title": !e.collapsed || r.value
1321
+ r("div", oa, [
1322
+ T(v.$slots, "brand", {}, () => [
1323
+ x(ve, {
1324
+ "show-title": !e.collapsed || u.value
1319
1325
  }, null, 8, ["show-title"])
1320
1326
  ])
1321
1327
  ]),
1322
- s("nav", {
1328
+ r("nav", {
1323
1329
  class: "dsea-admin-layout__navigation",
1324
1330
  "aria-label": e.navigationLabel
1325
1331
  }, [
1326
- B(h.$slots, "navigation", {}, () => [
1327
- $(te, {
1332
+ T(v.$slots, "navigation", {}, () => [
1333
+ x(oe, {
1328
1334
  items: e.menus,
1329
- collapse: e.collapsed && !r.value,
1335
+ collapse: e.collapsed && !u.value,
1330
1336
  theme: e.menuTheme,
1331
- onMenuClick: T
1337
+ onMenuClick: j
1332
1338
  }, null, 8, ["items", "collapse", "theme"])
1333
1339
  ])
1334
- ], 8, kt),
1335
- h.$slots.sidebarFooter ? (a(), o("div", _t, [
1336
- B(h.$slots, "sidebarFooter")
1337
- ])) : p("", !0),
1338
- e.resizableSidebar && !r.value && !e.collapsed ? (a(), o("div", {
1340
+ ], 8, ia),
1341
+ v.$slots.sidebarFooter ? (t(), l("div", sa, [
1342
+ T(v.$slots, "sidebarFooter")
1343
+ ])) : b("", !0),
1344
+ e.resizableSidebar && !u.value && !e.collapsed ? (t(), l("div", {
1339
1345
  key: 1,
1340
1346
  class: "dsea-admin-layout__resize",
1341
1347
  role: "separator",
@@ -1345,104 +1351,1140 @@ const nl = /* @__PURE__ */ A(ht, [["__scopeId", "data-v-c5c5a82f"]]), ft = ["ari
1345
1351
  "aria-valuenow": e.sidebarWidth,
1346
1352
  "aria-valuemin": e.minSidebarWidth,
1347
1353
  "aria-valuemax": e.maxSidebarWidth,
1348
- onPointerdown: v,
1349
- onKeydown: m
1350
- }, null, 40, wt)) : p("", !0)
1351
- ], 10, ft)) : p("", !0),
1352
- u.value && r.value && n.value ? (a(), o("button", {
1354
+ onPointerdown: h,
1355
+ onKeydown: p
1356
+ }, null, 40, ra)) : b("", !0)
1357
+ ], 10, la)) : b("", !0),
1358
+ n.value && u.value && i.value ? (t(), l("button", {
1353
1359
  key: 1,
1354
1360
  type: "button",
1355
1361
  class: "dsea-admin-layout__scrim",
1356
1362
  "aria-label": e.closeNavigationLabel,
1357
- onClick: D
1358
- }, null, 8, $t)) : p("", !0),
1359
- s("div", Lt, [
1360
- e.fullContent ? p("", !0) : (a(), o("header", Ct, [
1361
- u.value ? (a(), o("button", {
1363
+ onClick: O
1364
+ }, null, 8, ua)) : b("", !0),
1365
+ r("div", da, [
1366
+ e.fullContent ? b("", !0) : (t(), l("header", ca, [
1367
+ n.value ? (t(), l("button", {
1362
1368
  key: 0,
1363
1369
  type: "button",
1364
1370
  class: "dsea-admin-layout__toggle",
1365
1371
  "aria-label": e.navigationLabel,
1366
- "aria-expanded": r.value ? n.value : !e.collapsed,
1367
- onClick: W
1372
+ "aria-expanded": u.value ? i.value : !e.collapsed,
1373
+ onClick: D
1368
1374
  }, [
1369
- $(y(w), {
1370
- icon: r.value && n.value ? "lucide:x" : "lucide:menu",
1375
+ x(f(L), {
1376
+ icon: u.value && i.value ? "lucide:x" : "lucide:menu",
1371
1377
  size: 20
1372
1378
  }, null, 8, ["icon"])
1373
- ], 8, St)) : p("", !0),
1374
- B(h.$slots, "header"),
1375
- e.mode !== "sidebar" ? (a(), o("nav", {
1379
+ ], 8, ma)) : b("", !0),
1380
+ T(v.$slots, "header"),
1381
+ e.mode !== "sidebar" ? (t(), l("nav", {
1376
1382
  key: 1,
1377
1383
  class: "dsea-admin-layout__top-navigation",
1378
1384
  "aria-label": e.topNavigationLabel
1379
1385
  }, [
1380
- B(h.$slots, "topNavigation", {}, () => [
1381
- $(te, {
1386
+ T(v.$slots, "topNavigation", {}, () => [
1387
+ x(oe, {
1382
1388
  items: e.mode === "top" ? e.menus : e.topMenus,
1383
1389
  mode: "horizontal",
1384
1390
  type: "top",
1385
1391
  theme: e.topMenuTheme,
1386
- onMenuClick: T
1392
+ onMenuClick: j
1387
1393
  }, null, 8, ["items", "theme"])
1388
1394
  ])
1389
- ], 8, xt)) : p("", !0),
1390
- s("div", At, [
1391
- B(h.$slots, "headerActions")
1395
+ ], 8, va)) : b("", !0),
1396
+ r("div", ga, [
1397
+ T(v.$slots, "headerActions")
1392
1398
  ])
1393
1399
  ])),
1394
- !e.fullContent && h.$slots.tabs ? (a(), o("div", Mt, [
1395
- B(h.$slots, "tabs")
1396
- ])) : p("", !0),
1397
- s("main", Tt, [
1398
- B(h.$slots, "default")
1400
+ !e.fullContent && v.$slots.tabs ? (t(), l("div", ba, [
1401
+ T(v.$slots, "tabs")
1402
+ ])) : b("", !0),
1403
+ r("main", ha, [
1404
+ T(v.$slots, "default")
1399
1405
  ]),
1400
- !e.fullContent && h.$slots.footer ? (a(), o("footer", Bt, [
1401
- B(h.$slots, "footer")
1402
- ])) : p("", !0)
1406
+ !e.fullContent && v.$slots.footer ? (t(), l("footer", pa, [
1407
+ T(v.$slots, "footer")
1408
+ ])) : b("", !0)
1403
1409
  ])
1404
1410
  ], 6));
1405
1411
  }
1406
1412
  });
1407
- const Pt = ["aria-label"], It = {
1413
+ const fa = ["aria-label"], ya = {
1408
1414
  key: 0,
1409
1415
  class: "dsea-breadcrumb__separator",
1410
1416
  "aria-hidden": "true"
1411
- }, Et = ["onClick"], Ft = ["aria-current"], Nt = /* @__PURE__ */ k({
1417
+ }, ka = ["onClick"], wa = ["aria-current"], Sa = /* @__PURE__ */ P({
1412
1418
  __name: "AdminBreadcrumb",
1413
1419
  props: {
1414
1420
  items: {},
1415
1421
  label: {}
1416
1422
  },
1417
1423
  setup(e) {
1418
- const { ports: c } = q();
1419
- function t(i) {
1420
- c.navigation.go(i);
1424
+ const { ports: d } = te();
1425
+ function a(o) {
1426
+ d.navigation.go(o);
1421
1427
  }
1422
- return (i, l) => e.items.length ? (a(), o("nav", {
1428
+ return (o, s) => e.items.length ? (t(), l("nav", {
1423
1429
  key: 0,
1424
1430
  class: "dsea-breadcrumb",
1425
1431
  "aria-label": e.label
1426
1432
  }, [
1427
- s("ol", null, [
1428
- (a(!0), o(x, null, M(e.items, (r, n) => (a(), o("li", {
1429
- key: r.path || n
1433
+ r("ol", null, [
1434
+ (t(!0), l(F, null, K(e.items, (u, i) => (t(), l("li", {
1435
+ key: u.path || i
1430
1436
  }, [
1431
- n ? (a(), o("span", It, "/")) : p("", !0),
1432
- r.path && n < e.items.length - 1 ? (a(), o("button", {
1437
+ i ? (t(), l("span", ya, "/")) : b("", !0),
1438
+ u.path && i < e.items.length - 1 ? (t(), l("button", {
1433
1439
  key: 1,
1434
1440
  type: "button",
1435
- onClick: (u) => t(r.path)
1436
- }, d(r.title), 9, Et)) : (a(), o("span", {
1441
+ onClick: (n) => a(u.path)
1442
+ }, m(u.title), 9, ka)) : (t(), l("span", {
1437
1443
  key: 2,
1438
- "aria-current": n === e.items.length - 1 ? "page" : void 0
1439
- }, d(r.title), 9, Ft))
1444
+ "aria-current": i === e.items.length - 1 ? "page" : void 0
1445
+ }, m(u.title), 9, wa))
1440
1446
  ]))), 128))
1441
1447
  ])
1442
- ], 8, Pt)) : p("", !0);
1448
+ ], 8, fa)) : b("", !0);
1449
+ }
1450
+ });
1451
+ const _a = /* @__PURE__ */ W(Sa, [["__scopeId", "data-v-49bfd66c"]]), $a = { class: "dsea-admin-tabs" }, Ca = {
1452
+ class: "dsea-admin-tabs__list",
1453
+ role: "tablist"
1454
+ }, xa = ["draggable", "onDragstart", "onDrop", "onContextmenu"], La = ["aria-selected", "onClick"], Ma = ["aria-label", "onClick"], Aa = {
1455
+ key: 0,
1456
+ class: "dsea-admin-tabs__tools"
1457
+ }, Ta = ["aria-label"], Pa = ["aria-label"], Ba = ["aria-label"], Fa = ["onClick"], Ea = /* @__PURE__ */ P({
1458
+ __name: "AdminTabs",
1459
+ props: {
1460
+ tabs: {},
1461
+ activeKey: {},
1462
+ labels: {},
1463
+ navigateOnSelect: { type: Boolean, default: !0 },
1464
+ showRedo: { type: Boolean, default: !0 },
1465
+ showQuick: { type: Boolean, default: !0 },
1466
+ showFold: { type: Boolean, default: !1 },
1467
+ canDrag: { type: Boolean, default: !1 }
1468
+ },
1469
+ emits: ["select", "close", "refresh", "closeAction", "fold", "reorder"],
1470
+ setup(e, { emit: d }) {
1471
+ const a = e, o = d, { ports: s } = te(), u = M(""), i = M(null), n = E(() => [
1472
+ { event: "left", text: a.labels.closeLeft },
1473
+ { event: "right", text: a.labels.closeRight },
1474
+ { event: "others", text: a.labels.closeOthers },
1475
+ { event: "all", text: a.labels.closeAll }
1476
+ ]);
1477
+ function c($) {
1478
+ i.value = null, o("select", $), a.navigateOnSelect && s.navigation.go($);
1479
+ }
1480
+ function y($) {
1481
+ o("close", $);
1482
+ }
1483
+ function h($) {
1484
+ $ && o("closeAction", $.event, a.activeKey);
1485
+ }
1486
+ function p($) {
1487
+ a.canDrag && $.dataTransfer && ($.dataTransfer.dropEffect = "move");
1488
+ }
1489
+ function N($) {
1490
+ if (!a.canDrag || !u.value || u.value === $)
1491
+ return;
1492
+ const v = a.tabs.map((B) => B.key), k = v.indexOf(u.value), C = v.indexOf($);
1493
+ k < 0 || C < 0 || (v.splice(C, 0, v.splice(k, 1)[0]), o("reorder", v), u.value = "");
1494
+ }
1495
+ function A($, v) {
1496
+ i.value = {
1497
+ key: $,
1498
+ x: Math.max(0, Math.min(v.clientX, window.innerWidth - 180)),
1499
+ y: Math.max(0, Math.min(v.clientY, window.innerHeight - 180))
1500
+ };
1501
+ }
1502
+ function O($) {
1503
+ i.value && (o("closeAction", $, i.value.key), i.value = null);
1504
+ }
1505
+ function D($) {
1506
+ var v, k;
1507
+ (k = (v = $.target) == null ? void 0 : v.closest) != null && k.call(v, ".dsea-admin-tabs__context") || (i.value = null);
1508
+ }
1509
+ function j($) {
1510
+ $.key === "Escape" && (i.value = null);
1511
+ }
1512
+ return ie(() => {
1513
+ window.addEventListener("pointerdown", D), window.addEventListener("keydown", j), window.addEventListener("resize", D), window.addEventListener("scroll", D, !0);
1514
+ }), ne(() => {
1515
+ window.removeEventListener("pointerdown", D), window.removeEventListener("keydown", j), window.removeEventListener("resize", D), window.removeEventListener("scroll", D, !0);
1516
+ }), ($, v) => (t(), l(F, null, [
1517
+ r("div", $a, [
1518
+ r("div", Ca, [
1519
+ (t(!0), l(F, null, K(e.tabs, (k) => (t(), l("div", {
1520
+ key: k.key,
1521
+ class: U(["dsea-admin-tabs__item", { "dsea-admin-tabs__item--active": k.key === e.activeKey }]),
1522
+ draggable: e.canDrag,
1523
+ onDragstart: (C) => u.value = k.key,
1524
+ onDragend: v[0] || (v[0] = (C) => u.value = ""),
1525
+ onDragover: ee(p, ["prevent"]),
1526
+ onDrop: ee((C) => N(k.key), ["prevent"]),
1527
+ onContextmenu: ee((C) => A(k.key, C), ["prevent"])
1528
+ }, [
1529
+ r("button", {
1530
+ type: "button",
1531
+ role: "tab",
1532
+ "aria-selected": k.key === e.activeKey,
1533
+ class: "dsea-admin-tabs__select",
1534
+ onClick: (C) => c(k.key)
1535
+ }, [
1536
+ k.icon ? (t(), z(f(L), {
1537
+ key: 0,
1538
+ icon: k.icon,
1539
+ size: 14
1540
+ }, null, 8, ["icon"])) : b("", !0),
1541
+ r("span", null, m(k.label), 1)
1542
+ ], 8, La),
1543
+ k.affix ? b("", !0) : (t(), l("button", {
1544
+ key: 0,
1545
+ type: "button",
1546
+ class: "dsea-admin-tabs__close",
1547
+ "aria-label": `${e.labels.close}: ${k.label}`,
1548
+ onClick: (C) => y(k.key)
1549
+ }, [
1550
+ x(f(L), {
1551
+ icon: "lucide:x",
1552
+ size: 14
1553
+ })
1554
+ ], 8, Ma))
1555
+ ], 42, xa))), 128))
1556
+ ]),
1557
+ e.tabs.length ? (t(), l("div", Aa, [
1558
+ e.showRedo ? (t(), l("button", {
1559
+ key: 0,
1560
+ type: "button",
1561
+ "aria-label": e.labels.refresh,
1562
+ onClick: v[1] || (v[1] = (k) => o("refresh", e.activeKey))
1563
+ }, [
1564
+ x(f(L), {
1565
+ icon: "lucide:refresh-cw",
1566
+ size: 16
1567
+ })
1568
+ ], 8, Ta)) : b("", !0),
1569
+ e.showQuick ? (t(), z(f(Fe), {
1570
+ key: 1,
1571
+ "drop-menu-list": n.value,
1572
+ trigger: ["click"],
1573
+ onMenuEvent: h
1574
+ }, {
1575
+ default: re(() => [
1576
+ r("button", {
1577
+ type: "button",
1578
+ "aria-label": e.labels.actions
1579
+ }, [
1580
+ x(f(L), {
1581
+ icon: "lucide:chevron-down",
1582
+ size: 16
1583
+ })
1584
+ ], 8, Pa)
1585
+ ]),
1586
+ _: 1
1587
+ }, 8, ["drop-menu-list"])) : b("", !0),
1588
+ e.showFold ? (t(), l("button", {
1589
+ key: 2,
1590
+ type: "button",
1591
+ "aria-label": e.labels.fold || "Toggle full content",
1592
+ onClick: v[2] || (v[2] = (k) => o("fold"))
1593
+ }, [
1594
+ x(f(L), {
1595
+ icon: "lucide:maximize",
1596
+ size: 16
1597
+ })
1598
+ ], 8, Ba)) : b("", !0)
1599
+ ])) : b("", !0)
1600
+ ]),
1601
+ (t(), z(Pe, { to: "body" }, [
1602
+ i.value ? (t(), l("div", {
1603
+ key: 0,
1604
+ class: "dsea-admin-tabs__context",
1605
+ role: "menu",
1606
+ style: he({ left: `${i.value.x}px`, top: `${i.value.y}px` })
1607
+ }, [
1608
+ (t(!0), l(F, null, K(n.value, (k) => (t(), l("button", {
1609
+ key: k.event,
1610
+ type: "button",
1611
+ role: "menuitem",
1612
+ onClick: (C) => O(k.event)
1613
+ }, m(k.text), 9, Fa))), 128))
1614
+ ], 4)) : b("", !0)
1615
+ ]))
1616
+ ], 64));
1617
+ }
1618
+ });
1619
+ const Ia = { class: "dsea-settings-panel" }, Na = ["for"], za = { key: 1 }, Da = ["aria-label"], Ra = ["aria-label", "aria-pressed", "disabled", "onClick"], Ka = ["aria-label"], Wa = ["aria-pressed", "disabled", "onClick"], Oa = /* @__PURE__ */ P({
1620
+ __name: "SettingsPanel",
1621
+ props: {
1622
+ sections: {}
1623
+ },
1624
+ emits: ["change"],
1625
+ setup(e, { emit: d }) {
1626
+ const a = d;
1627
+ function o(n, c) {
1628
+ a("change", n, c);
1629
+ }
1630
+ function s(n, c) {
1631
+ typeof c == "boolean" && o(n, c);
1632
+ }
1633
+ function u(n, c) {
1634
+ (typeof c == "string" || typeof c == "number") && o(n, c);
1635
+ }
1636
+ function i(n, c) {
1637
+ typeof c == "number" && Number.isFinite(c) && o(n, c);
1638
+ }
1639
+ return (n, c) => (t(), l("div", Ia, [
1640
+ (t(!0), l(F, null, K(e.sections, (y) => (t(), l("section", {
1641
+ key: y.title,
1642
+ class: "dsea-settings-panel__section"
1643
+ }, [
1644
+ r("h3", null, m(y.title), 1),
1645
+ (t(!0), l(F, null, K(y.items, (h) => (t(), l("div", {
1646
+ key: h.key,
1647
+ class: U(["dsea-settings-panel__row", { "dsea-settings-panel__row--stacked": h.type === "color" || h.type === "mode" }])
1648
+ }, [
1649
+ h.type === "switch" || h.type === "select" || h.type === "number" ? (t(), l("label", {
1650
+ key: 0,
1651
+ for: h.key
1652
+ }, m(h.label), 9, Na)) : (t(), l("span", za, m(h.label), 1)),
1653
+ h.type === "switch" ? (t(), z(f(Ze), {
1654
+ key: 2,
1655
+ id: h.key,
1656
+ checked: h.value,
1657
+ disabled: h.disabled,
1658
+ onChange: (p) => s(h.key, p)
1659
+ }, null, 8, ["id", "checked", "disabled", "onChange"])) : h.type === "select" ? (t(), z(f(et), {
1660
+ key: 3,
1661
+ id: h.key,
1662
+ value: h.value,
1663
+ options: h.options,
1664
+ disabled: h.disabled,
1665
+ class: "dsea-settings-panel__select",
1666
+ onChange: (p) => u(h.key, p)
1667
+ }, null, 8, ["id", "value", "options", "disabled", "onChange"])) : h.type === "number" ? (t(), z(f(tt), {
1668
+ key: 4,
1669
+ id: h.key,
1670
+ value: h.value,
1671
+ min: h.min,
1672
+ max: h.max,
1673
+ step: h.step,
1674
+ disabled: h.disabled,
1675
+ class: "dsea-settings-panel__number",
1676
+ onChange: (p) => i(h.key, p)
1677
+ }, null, 8, ["id", "value", "min", "max", "step", "disabled", "onChange"])) : h.type === "color" ? (t(), l("div", {
1678
+ key: 5,
1679
+ class: "dsea-settings-panel__colors",
1680
+ role: "group",
1681
+ "aria-label": h.label
1682
+ }, [
1683
+ (t(!0), l(F, null, K(h.colors, (p) => (t(), l("button", {
1684
+ key: p,
1685
+ type: "button",
1686
+ class: U(["dsea-settings-panel__swatch", { "dsea-settings-panel__swatch--active": h.value === p }]),
1687
+ style: he({ backgroundColor: p }),
1688
+ "aria-label": p,
1689
+ "aria-pressed": h.value === p,
1690
+ disabled: h.disabled,
1691
+ onClick: (N) => o(h.key, p)
1692
+ }, [
1693
+ h.value === p ? (t(), z(f(L), {
1694
+ key: 0,
1695
+ icon: "lucide:check",
1696
+ size: 14
1697
+ })) : b("", !0)
1698
+ ], 14, Ra))), 128))
1699
+ ], 8, Da)) : h.type === "mode" ? (t(), l("div", {
1700
+ key: 6,
1701
+ class: "dsea-settings-panel__modes",
1702
+ role: "group",
1703
+ "aria-label": h.label
1704
+ }, [
1705
+ (t(!0), l(F, null, K(h.options, (p) => (t(), l("button", {
1706
+ key: p.value,
1707
+ type: "button",
1708
+ class: U({ active: h.value === p.value }),
1709
+ "aria-pressed": h.value === p.value,
1710
+ disabled: h.disabled,
1711
+ onClick: (N) => o(h.key, p.value)
1712
+ }, [
1713
+ p.icon ? (t(), z(f(L), {
1714
+ key: 0,
1715
+ icon: p.icon,
1716
+ size: 16
1717
+ }, null, 8, ["icon"])) : b("", !0),
1718
+ Q(" " + m(p.label), 1)
1719
+ ], 10, Wa))), 128))
1720
+ ], 8, Ka)) : b("", !0)
1721
+ ], 2))), 128))
1722
+ ]))), 128))
1723
+ ]));
1724
+ }
1725
+ });
1726
+ const Va = /* @__PURE__ */ P({
1727
+ __name: "AdminSettingsDrawer",
1728
+ props: {
1729
+ open: { type: Boolean },
1730
+ title: {},
1731
+ sections: {},
1732
+ width: { default: 340 },
1733
+ resetLabel: {}
1734
+ },
1735
+ emits: ["update:open", "change", "reset"],
1736
+ setup(e, { emit: d }) {
1737
+ const a = d;
1738
+ return (o, s) => (t(), z(f(at), {
1739
+ visible: e.open,
1740
+ title: e.title,
1741
+ placement: "right",
1742
+ width: e.width,
1743
+ onClose: s[2] || (s[2] = (u) => a("update:open", !1))
1744
+ }, Ge({
1745
+ default: re(() => [
1746
+ x(Oa, {
1747
+ sections: e.sections,
1748
+ onChange: s[0] || (s[0] = (u, i) => a("change", u, i))
1749
+ }, null, 8, ["sections"])
1750
+ ]),
1751
+ _: 2
1752
+ }, [
1753
+ o.$slots.footer || e.resetLabel ? {
1754
+ name: "footer",
1755
+ fn: re(() => [
1756
+ T(o.$slots, "footer", {}, () => [
1757
+ r("button", {
1758
+ type: "button",
1759
+ class: "dsea-settings-drawer__reset",
1760
+ onClick: s[1] || (s[1] = (u) => a("reset"))
1761
+ }, m(e.resetLabel), 1)
1762
+ ])
1763
+ ]),
1764
+ key: "0"
1765
+ } : void 0
1766
+ ]), 1032, ["visible", "title", "width"]));
1443
1767
  }
1444
1768
  });
1445
- const ol = /* @__PURE__ */ A(Nt, [["__scopeId", "data-v-49bfd66c"]]), zt = { class: "dsea-iframe-view" }, Dt = ["src", "title", "loading", "referrerpolicy"], Kt = /* @__PURE__ */ k({
1769
+ const ae = {
1770
+ darkMode: "light",
1771
+ themeColor: "#0960bd",
1772
+ grayMode: !1,
1773
+ colorWeak: !1,
1774
+ fullContent: !1,
1775
+ contentMode: "full",
1776
+ showLogo: !0,
1777
+ showFooter: !1,
1778
+ showBreadCrumb: !0,
1779
+ showBreadCrumbIcon: !0,
1780
+ showSettingButton: !0,
1781
+ headerSetting: {
1782
+ show: !0,
1783
+ fixed: !0,
1784
+ theme: "light",
1785
+ bgColor: "#ffffff",
1786
+ showSearch: !0,
1787
+ showNotice: !0,
1788
+ showFullScreen: !0
1789
+ },
1790
+ menuSetting: {
1791
+ type: "mix",
1792
+ mode: "inline",
1793
+ show: !0,
1794
+ hidden: !1,
1795
+ fixed: !0,
1796
+ collapsed: !1,
1797
+ collapsedShowTitle: !1,
1798
+ menuWidth: 240,
1799
+ bgColor: "#212121",
1800
+ theme: "dark",
1801
+ split: !0,
1802
+ topMenuAlign: "center",
1803
+ trigger: "FOOTER",
1804
+ accordion: !0,
1805
+ canDrag: !1,
1806
+ mixSideTrigger: "click",
1807
+ mixSideFixed: !1,
1808
+ closeMixSidebarOnChange: !1
1809
+ },
1810
+ multiTabsSetting: {
1811
+ show: !0,
1812
+ canDrag: !0,
1813
+ showQuick: !0,
1814
+ showRedo: !0,
1815
+ showFold: !0
1816
+ }
1817
+ }, Ua = ["sidebar", "top-menu", "mix", "mix-sidebar"], ye = /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i;
1818
+ function ke(e = {}) {
1819
+ const d = {
1820
+ ...ae,
1821
+ ...e,
1822
+ headerSetting: { ...ae.headerSetting, ...e.headerSetting },
1823
+ menuSetting: { ...ae.menuSetting, ...e.menuSetting },
1824
+ multiTabsSetting: { ...ae.multiTabsSetting, ...e.multiTabsSetting }
1825
+ };
1826
+ return Ua.includes(d.menuSetting.type) || (d.menuSetting.type = "mix"), d.menuSetting.type === "top-menu" ? d.menuSetting.mode = "horizontal" : d.menuSetting.mode = "inline", Number.isFinite(d.menuSetting.menuWidth) || (d.menuSetting.menuWidth = 240), d.menuSetting.menuWidth = Math.max(160, Math.min(420, d.menuSetting.menuWidth)), ye.test(d.themeColor) || (d.themeColor = ae.themeColor), ye.test(d.headerSetting.bgColor) || (d.headerSetting.bgColor = ae.headerSetting.bgColor), ye.test(d.menuSetting.bgColor) || (d.menuSetting.bgColor = ae.menuSetting.bgColor), d;
1827
+ }
1828
+ function qa(e, d = "admin-shell:classic-layout", a = {}) {
1829
+ const o = e == null ? void 0 : e.read(d), s = M(ke({
1830
+ ...a,
1831
+ ...o,
1832
+ headerSetting: { ...a.headerSetting, ...o == null ? void 0 : o.headerSetting },
1833
+ menuSetting: { ...a.menuSetting, ...o == null ? void 0 : o.menuSetting },
1834
+ multiTabsSetting: { ...a.multiTabsSetting, ...o == null ? void 0 : o.multiTabsSetting }
1835
+ }));
1836
+ function u(n) {
1837
+ return s.value = ke({
1838
+ ...s.value,
1839
+ ...n,
1840
+ headerSetting: { ...s.value.headerSetting, ...n.headerSetting },
1841
+ menuSetting: { ...s.value.menuSetting, ...n.menuSetting },
1842
+ multiTabsSetting: { ...s.value.multiTabsSetting, ...n.multiTabsSetting }
1843
+ }), e == null || e.write(d, Ye(s.value)), s.value;
1844
+ }
1845
+ function i() {
1846
+ return s.value = ke(a), e == null || e.remove(d), s.value;
1847
+ }
1848
+ return { settings: s, patch: u, reset: i };
1849
+ }
1850
+ function De(e) {
1851
+ var d;
1852
+ if (!(e.disabled || (d = e.meta) != null && d.hideMenu)) {
1853
+ for (const a of e.children ?? []) {
1854
+ const o = De(a);
1855
+ if (o)
1856
+ return o;
1857
+ }
1858
+ return e.path && !/[:*]/.test(e.path) ? e.path : void 0;
1859
+ }
1860
+ }
1861
+ function Ha(e, d, a) {
1862
+ var y;
1863
+ const o = e.filter((h) => {
1864
+ var p;
1865
+ return !((p = h.meta) != null && p.hideMenu);
1866
+ }), s = ue(o, d)[0] ?? ((y = o[0]) == null ? void 0 : y.path), u = o.find((h) => h.path === s), i = a.type === "mix" && a.split, n = a.type === "top-menu" || i ? o.map((h) => ({ ...h, children: [] })) : [], c = i ? (u == null ? void 0 : u.children) ?? [] : o;
1867
+ return { rootPath: s, root: u, top: n, sidebar: c, split: i };
1868
+ }
1869
+ const ja = {
1870
+ key: 0,
1871
+ class: "dsea-classic-layout__header"
1872
+ }, Qa = { class: "dsea-classic-layout__header-left" }, Xa = {
1873
+ key: 0,
1874
+ class: "dsea-classic-layout__header-brand"
1875
+ }, Ga = ["aria-label", "aria-expanded"], Ya = ["aria-label"], Ja = { class: "dsea-classic-layout__header-actions" }, Za = ["aria-label", "title"], en = { class: "dsea-classic-layout__body" }, tn = ["aria-hidden", "inert"], an = { class: "dsea-classic-layout__rail" }, nn = {
1876
+ key: 0,
1877
+ class: "dsea-classic-layout__sidebar-brand"
1878
+ }, ln = ["title", "onClick", "onMouseenter"], on = { key: 1 }, sn = ["aria-label"], rn = { class: "dsea-classic-layout__mix-panel-header" }, un = ["aria-label", "aria-pressed"], dn = {
1879
+ key: 0,
1880
+ class: "dsea-classic-layout__sidebar-brand"
1881
+ }, cn = ["aria-label"], mn = ["aria-label"], vn = ["aria-label", "aria-valuenow"], gn = ["aria-label"], bn = { class: "dsea-classic-layout__workspace" }, hn = {
1882
+ key: 0,
1883
+ class: "dsea-classic-layout__tabs"
1884
+ }, pn = {
1885
+ key: 1,
1886
+ class: "dsea-classic-layout__footer"
1887
+ }, fn = ["aria-label", "title"], yn = { class: "dsea-classic-layout__content dsea-classic-layout__content--full" }, wo = /* @__PURE__ */ P({
1888
+ __name: "ClassicAdminLayout",
1889
+ props: {
1890
+ menus: {},
1891
+ tabs: { default: () => [] },
1892
+ activeTab: { default: "" },
1893
+ breadcrumbs: { default: () => [] },
1894
+ headerPorts: {},
1895
+ initialSettings: { default: () => ({}) },
1896
+ settingsCache: {},
1897
+ settingsKey: { default: "admin-shell:classic-layout" },
1898
+ mobileBreakpoint: { default: 992 },
1899
+ tabLabels: { default: () => ({
1900
+ refresh: "Refresh",
1901
+ actions: "Tab actions",
1902
+ close: "Close",
1903
+ closeLeft: "Close left",
1904
+ closeRight: "Close right",
1905
+ closeOthers: "Close others",
1906
+ closeAll: "Close all"
1907
+ }) }
1908
+ },
1909
+ emits: ["settingsChange", "menuClick", "tabSelect", "tabClose", "tabRefresh", "tabCloseAction", "tabReorder"],
1910
+ setup(e, { emit: d }) {
1911
+ var xe;
1912
+ const a = e, o = d, { ports: s } = te(), u = Se(), i = qa(a.settingsCache ?? s.cache, a.settingsKey, a.initialSettings), n = i.settings, c = M(!1), y = M(!1), h = M(!1), p = M(((xe = u.currentRoute.value.meta) == null ? void 0 : xe.currentActiveMenu) || u.currentRoute.value.path), N = M(""), A = M(n.value.menuSetting.mixSideFixed), O = E(() => n.value.menuSetting.type), D = E(() => Ha(a.menus, p.value, n.value.menuSetting)), j = E(() => a.menus.find((g) => g.path === N.value)), $ = E(() => {
1913
+ var g;
1914
+ return ((g = j.value) == null ? void 0 : g.children) ?? [];
1915
+ }), v = E(() => c.value ? a.menus : D.value.sidebar), k = E(() => n.value.menuSetting.show && !n.value.menuSetting.hidden && (c.value || O.value !== "top-menu" && (O.value !== "mix" || !D.value.split || D.value.sidebar.length > 0))), C = E(() => n.value.headerSetting.show && !n.value.fullContent), B = E(() => [
1916
+ `dsea-classic-layout--${O.value}`,
1917
+ {
1918
+ "is-mobile": c.value,
1919
+ "is-collapsed": n.value.menuSetting.collapsed,
1920
+ "is-full-content": n.value.fullContent,
1921
+ "has-fixed-header": n.value.headerSetting.fixed,
1922
+ "has-sidebar": k.value,
1923
+ "has-header": C.value,
1924
+ "has-pinned-mix": O.value === "mix-sidebar" && n.value.menuSetting.mixSideFixed && A.value
1925
+ }
1926
+ ]), V = E(() => ({
1927
+ "--classic-header-height": C.value ? "48px" : "0px",
1928
+ "--classic-menu-width": `${n.value.menuSetting.menuWidth}px`,
1929
+ "--classic-side-width": `${n.value.menuSetting.collapsed ? n.value.menuSetting.collapsedShowTitle ? 80 : 48 : n.value.menuSetting.menuWidth}px`,
1930
+ "--classic-rail-width": `${n.value.menuSetting.collapsed ? 48 : 80}px`,
1931
+ "--classic-header-bg": n.value.headerSetting.bgColor,
1932
+ "--classic-sider-bg": n.value.menuSetting.bgColor,
1933
+ "--classic-primary": n.value.themeColor
1934
+ }));
1935
+ function G(g) {
1936
+ return s.locale.translate(g);
1937
+ }
1938
+ function de(g, w) {
1939
+ const S = ue(g, w);
1940
+ function _(I, R) {
1941
+ for (const q of I) {
1942
+ if (q.path === R)
1943
+ return q;
1944
+ const Le = _(q.children ?? [], R);
1945
+ if (Le)
1946
+ return Le;
1947
+ }
1948
+ }
1949
+ return S.map((I) => {
1950
+ const R = _(g, I);
1951
+ return { title: G((R == null ? void 0 : R.name) ?? I), path: I };
1952
+ });
1953
+ }
1954
+ const ce = E(() => a.breadcrumbs.length ? a.breadcrumbs : de(a.menus, p.value)), H = E(() => s.locale.getLocale().toLowerCase().startsWith("zh") ? {
1955
+ navigation: "侧边导航",
1956
+ topNavigation: "顶部导航",
1957
+ toggleNavigation: "折叠导航",
1958
+ closeNavigation: "关闭导航",
1959
+ resizeNavigation: "调整导航宽度",
1960
+ pinNavigation: "固定菜单",
1961
+ breadcrumb: "面包屑",
1962
+ settings: "偏好设置",
1963
+ reset: "恢复默认",
1964
+ restoreLayout: "退出全屏内容"
1965
+ } : {
1966
+ navigation: "Navigation",
1967
+ topNavigation: "Top navigation",
1968
+ toggleNavigation: "Toggle navigation",
1969
+ closeNavigation: "Close navigation",
1970
+ resizeNavigation: "Resize navigation",
1971
+ pinNavigation: "Pin menu",
1972
+ breadcrumb: "Breadcrumb",
1973
+ settings: "Settings",
1974
+ reset: "Reset defaults",
1975
+ restoreLayout: "Restore layout"
1976
+ }), Re = E(() => {
1977
+ const g = n.value, w = s.locale.getLocale().toLowerCase().startsWith("zh"), S = (_, I) => w ? _ : I;
1978
+ return [
1979
+ { title: S("布局", "Layout"), items: [
1980
+ {
1981
+ key: "menuSetting.type",
1982
+ type: "mode",
1983
+ label: S("导航布局", "Navigation layout"),
1984
+ value: g.menuSetting.type,
1985
+ options: [
1986
+ { value: "sidebar", label: S("左侧", "Sidebar"), icon: "lucide:panel-left" },
1987
+ { value: "mix", label: S("混合", "Mixed"), icon: "lucide:panels-top-left" },
1988
+ { value: "mix-sidebar", label: S("双栏", "Rail"), icon: "lucide:panel-left-dashed" },
1989
+ { value: "top-menu", label: S("顶部", "Top"), icon: "lucide:panel-top" }
1990
+ ]
1991
+ },
1992
+ {
1993
+ key: "menuSetting.split",
1994
+ type: "switch",
1995
+ label: S("分割菜单", "Split menu"),
1996
+ value: g.menuSetting.split,
1997
+ disabled: g.menuSetting.type !== "mix"
1998
+ },
1999
+ { key: "menuSetting.collapsed", type: "switch", label: S("折叠侧栏", "Collapse sidebar"), value: g.menuSetting.collapsed },
2000
+ { key: "menuSetting.fixed", type: "switch", label: S("固定侧栏", "Fixed sidebar"), value: g.menuSetting.fixed },
2001
+ {
2002
+ key: "menuSetting.menuWidth",
2003
+ type: "number",
2004
+ label: S("侧栏宽度", "Sidebar width"),
2005
+ value: g.menuSetting.menuWidth,
2006
+ min: 160,
2007
+ max: 420,
2008
+ step: 8
2009
+ },
2010
+ {
2011
+ key: "menuSetting.topMenuAlign",
2012
+ type: "select",
2013
+ label: S("顶部菜单对齐", "Top menu alignment"),
2014
+ value: g.menuSetting.topMenuAlign,
2015
+ options: [
2016
+ { value: "start", label: S("左", "Start") },
2017
+ { value: "center", label: S("中", "Center") },
2018
+ { value: "end", label: S("右", "End") }
2019
+ ]
2020
+ },
2021
+ {
2022
+ key: "menuSetting.mixSideFixed",
2023
+ type: "switch",
2024
+ label: S("固定双栏菜单", "Pin rail menu"),
2025
+ value: g.menuSetting.mixSideFixed,
2026
+ disabled: g.menuSetting.type !== "mix-sidebar"
2027
+ },
2028
+ {
2029
+ key: "menuSetting.mixSideTrigger",
2030
+ type: "select",
2031
+ label: S("双栏触发", "Rail trigger"),
2032
+ value: g.menuSetting.mixSideTrigger,
2033
+ options: [{ value: "click", label: S("点击", "Click") }, { value: "hover", label: S("悬停", "Hover") }],
2034
+ disabled: g.menuSetting.type !== "mix-sidebar"
2035
+ }
2036
+ ] },
2037
+ { title: S("外观", "Appearance"), items: [
2038
+ {
2039
+ key: "themeColor",
2040
+ type: "color",
2041
+ label: S("主题色", "Primary color"),
2042
+ value: g.themeColor,
2043
+ colors: ["#0960bd", "#0084f4", "#009688", "#536dfe", "#ff5c93", "#ee4f12", "#0096c7", "#9c27b0", "#ff9800"]
2044
+ },
2045
+ {
2046
+ key: "headerSetting.bgColor",
2047
+ type: "color",
2048
+ label: S("顶栏颜色", "Header color"),
2049
+ value: g.headerSetting.bgColor,
2050
+ colors: ["#ffffff", "#151515", "#009688", "#5172dc", "#018ffb", "#409eff", "#e74c3c", "#24292e", "#394664", "#001529"]
2051
+ },
2052
+ {
2053
+ key: "menuSetting.bgColor",
2054
+ type: "color",
2055
+ label: S("侧栏颜色", "Sidebar color"),
2056
+ value: g.menuSetting.bgColor,
2057
+ colors: ["#001529", "#212121", "#273352", "#ffffff", "#191b24", "#304156", "#28333e", "#344058"]
2058
+ },
2059
+ { key: "darkMode", type: "switch", label: S("深色模式", "Dark mode"), value: g.darkMode === "dark" },
2060
+ { key: "grayMode", type: "switch", label: S("灰度模式", "Grayscale"), value: g.grayMode },
2061
+ { key: "colorWeak", type: "switch", label: S("色弱模式", "Color assist"), value: g.colorWeak }
2062
+ ] },
2063
+ { title: S("界面", "Interface"), items: [
2064
+ { key: "headerSetting.show", type: "switch", label: S("显示顶栏", "Show header"), value: g.headerSetting.show },
2065
+ { key: "headerSetting.fixed", type: "switch", label: S("固定顶栏", "Fixed header"), value: g.headerSetting.fixed },
2066
+ { key: "headerSetting.showSearch", type: "switch", label: S("菜单搜索", "Menu search"), value: g.headerSetting.showSearch },
2067
+ { key: "multiTabsSetting.show", type: "switch", label: S("显示标签页", "Show tabs"), value: g.multiTabsSetting.show },
2068
+ { key: "multiTabsSetting.showQuick", type: "switch", label: S("标签快捷操作", "Tab actions"), value: g.multiTabsSetting.showQuick },
2069
+ { key: "multiTabsSetting.showRedo", type: "switch", label: S("标签刷新", "Tab refresh"), value: g.multiTabsSetting.showRedo },
2070
+ { key: "multiTabsSetting.showFold", type: "switch", label: S("内容全屏", "Content fullscreen"), value: g.multiTabsSetting.showFold },
2071
+ { key: "showBreadCrumb", type: "switch", label: S("面包屑", "Breadcrumb"), value: g.showBreadCrumb },
2072
+ { key: "showFooter", type: "switch", label: S("页脚", "Footer"), value: g.showFooter },
2073
+ {
2074
+ key: "contentMode",
2075
+ type: "select",
2076
+ label: S("内容宽度", "Content width"),
2077
+ value: g.contentMode,
2078
+ options: [{ value: "full", label: S("流式", "Fluid") }, { value: "fixed", label: S("固定", "Fixed") }]
2079
+ }
2080
+ ] }
2081
+ ];
2082
+ });
2083
+ function se(g, w) {
2084
+ if (g === "darkMode") {
2085
+ o("settingsChange", i.patch({ darkMode: w ? "dark" : "light" }));
2086
+ return;
2087
+ }
2088
+ const [S, _] = g.split(".");
2089
+ if (S === "menuSetting" || S === "headerSetting" || S === "multiTabsSetting") {
2090
+ const I = { [S]: { [_]: w } };
2091
+ g === "menuSetting.bgColor" && (I.menuSetting.theme = w === "#ffffff" ? "light" : "dark"), g === "headerSetting.bgColor" && (I.headerSetting.theme = w === "#ffffff" ? "light" : "dark"), o("settingsChange", i.patch(I));
2092
+ } else
2093
+ o("settingsChange", i.patch({ [g]: w }));
2094
+ g === "menuSetting.mixSideFixed" && (A.value = !!w);
2095
+ }
2096
+ function Ke() {
2097
+ o("settingsChange", i.reset());
2098
+ }
2099
+ function pe() {
2100
+ c.value ? y.value = !y.value : se("menuSetting.collapsed", !n.value.menuSetting.collapsed);
2101
+ }
2102
+ function _e() {
2103
+ o("settingsChange", i.patch({ fullContent: !n.value.fullContent }));
2104
+ }
2105
+ function me(g) {
2106
+ o("menuClick", g), y.value = !1, n.value.menuSetting.closeMixSidebarOnChange && !n.value.menuSetting.mixSideFixed && (A.value = !1), s.navigation.go(g);
2107
+ }
2108
+ function We(g) {
2109
+ const w = a.menus.find((_) => _.path === g), S = w ? De(w) : g;
2110
+ S && me(S);
2111
+ }
2112
+ function Oe(g) {
2113
+ var w;
2114
+ if (!((w = g.children) != null && w.length))
2115
+ return me(g.path);
2116
+ N.value === g.path && !n.value.menuSetting.mixSideFixed ? A.value = !A.value : A.value = !0, N.value = g.path;
2117
+ }
2118
+ function Ve(g) {
2119
+ var w;
2120
+ n.value.menuSetting.mixSideTrigger === "hover" && ((w = g.children) != null && w.length) && (N.value = g.path, A.value = !0);
2121
+ }
2122
+ function Ue(g, w) {
2123
+ o("tabCloseAction", g, w);
2124
+ }
2125
+ function fe() {
2126
+ c.value = window.innerWidth < a.mobileBreakpoint, y.value = !1;
2127
+ }
2128
+ function $e(g) {
2129
+ g.key === "Escape" && (y.value = !1, n.value.menuSetting.mixSideFixed || (A.value = !1));
2130
+ }
2131
+ let X;
2132
+ function qe(g) {
2133
+ if (g.button !== 0)
2134
+ return;
2135
+ X == null || X();
2136
+ const w = g.clientX, S = n.value.menuSetting.menuWidth, _ = (R) => se("menuSetting.menuWidth", S + R.clientX - w), I = () => X == null ? void 0 : X();
2137
+ window.addEventListener("pointermove", _), window.addEventListener("pointerup", I), window.addEventListener("pointercancel", I), X = () => {
2138
+ window.removeEventListener("pointermove", _), window.removeEventListener("pointerup", I), window.removeEventListener("pointercancel", I), X = void 0;
2139
+ };
2140
+ }
2141
+ function He(g) {
2142
+ g.key !== "ArrowLeft" && g.key !== "ArrowRight" || (g.preventDefault(), se("menuSetting.menuWidth", n.value.menuSetting.menuWidth + (g.key === "ArrowRight" ? 10 : -10)));
2143
+ }
2144
+ function Ce() {
2145
+ typeof document < "u" && nt({
2146
+ theme: n.value.darkMode,
2147
+ grayMode: n.value.grayMode,
2148
+ colorWeak: n.value.colorWeak,
2149
+ primaryColor: n.value.themeColor
2150
+ }, document.documentElement);
2151
+ }
2152
+ Z(n, Ce, { deep: !0 }), Z(D, (g) => {
2153
+ g.rootPath && (N.value = g.rootPath);
2154
+ }, { immediate: !0 });
2155
+ const je = u.onRouteChange((g) => {
2156
+ var w;
2157
+ p.value = ((w = g.meta) == null ? void 0 : w.currentActiveMenu) || g.path, n.value.menuSetting.closeMixSidebarOnChange && !n.value.menuSetting.mixSideFixed && (A.value = !1);
2158
+ });
2159
+ return ie(() => {
2160
+ fe(), Ce(), window.addEventListener("resize", fe), window.addEventListener("keydown", $e);
2161
+ }), ne(() => {
2162
+ je(), X == null || X(), window.removeEventListener("resize", fe), window.removeEventListener("keydown", $e);
2163
+ }), (g, w) => {
2164
+ var S;
2165
+ return t(), l("div", {
2166
+ class: U(["dsea-classic-layout", B.value]),
2167
+ style: he(V.value)
2168
+ }, [
2169
+ f(n).fullContent ? (t(), l(F, { key: 1 }, [
2170
+ r("button", {
2171
+ type: "button",
2172
+ class: "dsea-classic-layout__restore",
2173
+ "aria-label": H.value.restoreLayout,
2174
+ title: H.value.restoreLayout,
2175
+ onClick: _e
2176
+ }, [
2177
+ x(f(L), {
2178
+ icon: "lucide:minimize",
2179
+ size: 18
2180
+ })
2181
+ ], 8, fn),
2182
+ r("main", yn, [
2183
+ T(g.$slots, "default")
2184
+ ])
2185
+ ], 64)) : (t(), l(F, { key: 0 }, [
2186
+ f(n).headerSetting.show ? (t(), l("header", ja, [
2187
+ r("div", Qa, [
2188
+ f(n).showLogo && (O.value !== "sidebar" || c.value) ? (t(), l("div", Xa, [
2189
+ T(g.$slots, "brand", {}, () => [
2190
+ x(ve)
2191
+ ])
2192
+ ])) : b("", !0),
2193
+ c.value || f(n).menuSetting.trigger === "HEADER" && k.value ? (t(), l("button", {
2194
+ key: 1,
2195
+ type: "button",
2196
+ class: "dsea-classic-layout__icon-button",
2197
+ "aria-label": H.value.toggleNavigation,
2198
+ "aria-expanded": c.value ? y.value : !f(n).menuSetting.collapsed,
2199
+ onClick: pe
2200
+ }, [
2201
+ x(f(L), {
2202
+ icon: c.value && y.value ? "lucide:x" : "lucide:menu",
2203
+ size: 19
2204
+ }, null, 8, ["icon"])
2205
+ ], 8, Ga)) : b("", !0),
2206
+ !c.value && f(n).showBreadCrumb && !D.value.split && O.value !== "top-menu" ? (t(), z(_a, {
2207
+ key: 2,
2208
+ items: ce.value,
2209
+ label: H.value.breadcrumb
2210
+ }, null, 8, ["items", "label"])) : b("", !0)
2211
+ ]),
2212
+ !c.value && D.value.top.length ? (t(), l("nav", {
2213
+ key: 0,
2214
+ class: "dsea-classic-layout__top-menu",
2215
+ "aria-label": H.value.topNavigation
2216
+ }, [
2217
+ x(oe, {
2218
+ items: D.value.top,
2219
+ mode: "horizontal",
2220
+ type: "top",
2221
+ "is-horizontal": "",
2222
+ theme: f(n).headerSetting.theme,
2223
+ split: D.value.split,
2224
+ "top-menu-align": f(n).menuSetting.topMenuAlign,
2225
+ onMenuClick: We
2226
+ }, null, 8, ["items", "theme", "split", "top-menu-align"])
2227
+ ], 8, Ya)) : b("", !0),
2228
+ r("div", Ja, [
2229
+ T(g.$slots, "search", {}, () => [
2230
+ f(n).headerSetting.showSearch && !c.value ? (t(), z(zt, {
2231
+ key: 0,
2232
+ "menu-items": e.menus
2233
+ }, null, 8, ["menu-items"])) : b("", !0)
2234
+ ]),
2235
+ T(g.$slots, "apps", {}, () => {
2236
+ var _;
2237
+ return [
2238
+ (_ = e.headerPorts) != null && _.apps && !c.value ? (t(), z(Mt, {
2239
+ key: 0,
2240
+ apps: e.headerPorts.apps.apps,
2241
+ "current-id": e.headerPorts.apps.currentId,
2242
+ loading: e.headerPorts.apps.loading,
2243
+ "confirm-switch": e.headerPorts.apps.confirmSwitch,
2244
+ onOpen: w[0] || (w[0] = (I) => {
2245
+ var R, q;
2246
+ return (q = (R = e.headerPorts.apps).onOpen) == null ? void 0 : q.call(R);
2247
+ }),
2248
+ onSwitch: w[1] || (w[1] = (I) => {
2249
+ var R, q;
2250
+ return (q = (R = e.headerPorts.apps).onSwitch) == null ? void 0 : q.call(R, I);
2251
+ })
2252
+ }, null, 8, ["apps", "current-id", "loading", "confirm-switch"])) : b("", !0)
2253
+ ];
2254
+ }),
2255
+ T(g.$slots, "notifications", {}, () => {
2256
+ var _;
2257
+ return [
2258
+ (_ = e.headerPorts) != null && _.notifications && f(n).headerSetting.showNotice && !c.value ? (t(), z(na, {
2259
+ key: 0,
2260
+ items: e.headerPorts.notifications.items,
2261
+ categories: e.headerPorts.notifications.categories,
2262
+ onOpen: w[2] || (w[2] = (I) => {
2263
+ var R, q;
2264
+ return (q = (R = e.headerPorts.notifications).onOpen) == null ? void 0 : q.call(R, I);
2265
+ }),
2266
+ onMarkAllRead: w[3] || (w[3] = (I) => {
2267
+ var R, q;
2268
+ return (q = (R = e.headerPorts.notifications).onMarkAllRead) == null ? void 0 : q.call(R);
2269
+ })
2270
+ }, null, 8, ["items", "categories"])) : b("", !0)
2271
+ ];
2272
+ }),
2273
+ T(g.$slots, "fullscreen", {}, () => [
2274
+ f(n).headerSetting.showFullScreen && !c.value ? (t(), z(vt, { key: 0 })) : b("", !0)
2275
+ ]),
2276
+ T(g.$slots, "locale", {}, () => {
2277
+ var _, I;
2278
+ return [
2279
+ (I = (_ = e.headerPorts) == null ? void 0 : _.locales) != null && I.length ? (t(), z(rt, {
2280
+ key: 0,
2281
+ locales: e.headerPorts.locales,
2282
+ "show-text": !1
2283
+ }, null, 8, ["locales"])) : b("", !0)
2284
+ ];
2285
+ }),
2286
+ T(g.$slots, "help"),
2287
+ T(g.$slots, "user", {}, () => {
2288
+ var _;
2289
+ return [
2290
+ (_ = e.headerPorts) != null && _.user ? (t(), z(qt, {
2291
+ key: 0,
2292
+ name: e.headerPorts.user.name,
2293
+ avatar: e.headerPorts.user.avatar,
2294
+ items: e.headerPorts.user.items,
2295
+ onSelect: w[4] || (w[4] = (I) => {
2296
+ var R, q;
2297
+ return (q = (R = e.headerPorts.user).onSelect) == null ? void 0 : q.call(R, I);
2298
+ })
2299
+ }, null, 8, ["name", "avatar", "items"])) : b("", !0)
2300
+ ];
2301
+ }),
2302
+ T(g.$slots, "headerActions"),
2303
+ f(n).showSettingButton ? (t(), l("button", {
2304
+ key: 0,
2305
+ type: "button",
2306
+ class: "dsea-classic-layout__icon-button",
2307
+ "aria-label": H.value.settings,
2308
+ title: H.value.settings,
2309
+ onClick: w[5] || (w[5] = (_) => h.value = !0)
2310
+ }, [
2311
+ x(f(L), {
2312
+ icon: "lucide:settings",
2313
+ size: 18
2314
+ })
2315
+ ], 8, Za)) : b("", !0)
2316
+ ])
2317
+ ])) : b("", !0),
2318
+ r("div", en, [
2319
+ k.value ? (t(), l("aside", {
2320
+ key: 0,
2321
+ class: U(["dsea-classic-layout__sidebar", { "is-open": y.value, "is-fixed": f(n).menuSetting.fixed }]),
2322
+ "aria-hidden": c.value && !y.value,
2323
+ inert: c.value && !y.value
2324
+ }, [
2325
+ O.value === "mix-sidebar" && !c.value ? (t(), l(F, { key: 0 }, [
2326
+ r("div", an, [
2327
+ f(n).showLogo ? (t(), l("div", nn, [
2328
+ T(g.$slots, "brand", {}, () => [
2329
+ x(ve, { "show-title": !1 })
2330
+ ])
2331
+ ])) : b("", !0),
2332
+ (t(!0), l(F, null, K(e.menus, (_) => (t(), l("button", {
2333
+ key: _.path,
2334
+ type: "button",
2335
+ class: U(["dsea-classic-layout__module", { "is-active": _.path === N.value }]),
2336
+ title: _.name,
2337
+ onClick: (I) => Oe(_),
2338
+ onMouseenter: (I) => Ve(_)
2339
+ }, [
2340
+ _.icon ? (t(), z(f(L), {
2341
+ key: 0,
2342
+ icon: _.icon,
2343
+ size: f(n).menuSetting.collapsed ? 16 : 20
2344
+ }, null, 8, ["icon", "size"])) : b("", !0),
2345
+ f(n).menuSetting.collapsed ? b("", !0) : (t(), l("span", on, m(G(_.name)), 1))
2346
+ ], 42, ln))), 128)),
2347
+ r("button", {
2348
+ type: "button",
2349
+ class: "dsea-classic-layout__rail-trigger",
2350
+ "aria-label": H.value.toggleNavigation,
2351
+ onClick: pe
2352
+ }, [
2353
+ x(f(L), {
2354
+ icon: f(n).menuSetting.collapsed ? "lucide:panel-left-open" : "lucide:panel-left-close",
2355
+ size: 16
2356
+ }, null, 8, ["icon"])
2357
+ ], 8, sn)
2358
+ ]),
2359
+ A.value && $.value.length ? (t(), l("div", {
2360
+ key: 0,
2361
+ class: U(["dsea-classic-layout__mix-panel", { "is-floating": !f(n).menuSetting.mixSideFixed }])
2362
+ }, [
2363
+ r("div", rn, [
2364
+ r("span", null, m(G(((S = j.value) == null ? void 0 : S.name) || "")), 1),
2365
+ r("button", {
2366
+ type: "button",
2367
+ "aria-label": H.value.pinNavigation,
2368
+ "aria-pressed": f(n).menuSetting.mixSideFixed,
2369
+ onClick: w[6] || (w[6] = (_) => se("menuSetting.mixSideFixed", !f(n).menuSetting.mixSideFixed))
2370
+ }, [
2371
+ x(f(L), {
2372
+ icon: f(n).menuSetting.mixSideFixed ? "lucide:pin-off" : "lucide:pin",
2373
+ size: 16
2374
+ }, null, 8, ["icon"])
2375
+ ], 8, un)
2376
+ ]),
2377
+ x(oe, {
2378
+ items: $.value,
2379
+ theme: f(n).menuSetting.theme,
2380
+ accordion: f(n).menuSetting.accordion,
2381
+ split: !1,
2382
+ onMenuClick: me
2383
+ }, null, 8, ["items", "theme", "accordion"])
2384
+ ], 2)) : b("", !0)
2385
+ ], 64)) : (t(), l(F, { key: 1 }, [
2386
+ f(n).showLogo && (O.value === "sidebar" || c.value) ? (t(), l("div", dn, [
2387
+ T(g.$slots, "brand", {}, () => [
2388
+ x(ve, {
2389
+ "show-title": !f(n).menuSetting.collapsed || c.value
2390
+ }, null, 8, ["show-title"])
2391
+ ])
2392
+ ])) : b("", !0),
2393
+ r("nav", {
2394
+ class: "dsea-classic-layout__side-menu",
2395
+ "aria-label": H.value.navigation
2396
+ }, [
2397
+ T(g.$slots, "navigation", { items: v.value }, () => [
2398
+ x(oe, {
2399
+ items: v.value,
2400
+ collapse: f(n).menuSetting.collapsed && !c.value,
2401
+ theme: f(n).menuSetting.theme,
2402
+ accordion: f(n).menuSetting.accordion,
2403
+ split: D.value.split,
2404
+ onMenuClick: me
2405
+ }, null, 8, ["items", "collapse", "theme", "accordion", "split"])
2406
+ ])
2407
+ ], 8, cn),
2408
+ f(n).menuSetting.trigger === "FOOTER" && !c.value ? (t(), l("button", {
2409
+ key: 1,
2410
+ type: "button",
2411
+ class: "dsea-classic-layout__sidebar-trigger",
2412
+ "aria-label": H.value.toggleNavigation,
2413
+ onClick: pe
2414
+ }, [
2415
+ x(f(L), {
2416
+ icon: f(n).menuSetting.collapsed ? "lucide:panel-left-open" : "lucide:panel-left-close",
2417
+ size: 16
2418
+ }, null, 8, ["icon"])
2419
+ ], 8, mn)) : b("", !0)
2420
+ ], 64)),
2421
+ f(n).menuSetting.canDrag && !c.value && !f(n).menuSetting.collapsed && O.value !== "mix-sidebar" ? (t(), l("div", {
2422
+ key: 2,
2423
+ class: "dsea-classic-layout__resize",
2424
+ role: "separator",
2425
+ tabindex: "0",
2426
+ "aria-orientation": "vertical",
2427
+ "aria-label": H.value.resizeNavigation,
2428
+ "aria-valuenow": f(n).menuSetting.menuWidth,
2429
+ "aria-valuemin": "160",
2430
+ "aria-valuemax": "420",
2431
+ onPointerdown: qe,
2432
+ onKeydown: He
2433
+ }, null, 40, vn)) : b("", !0)
2434
+ ], 10, tn)) : b("", !0),
2435
+ c.value && y.value && k.value ? (t(), l("button", {
2436
+ key: 1,
2437
+ type: "button",
2438
+ class: "dsea-classic-layout__scrim",
2439
+ "aria-label": H.value.closeNavigation,
2440
+ onClick: w[7] || (w[7] = (_) => y.value = !1)
2441
+ }, null, 8, gn)) : b("", !0),
2442
+ r("div", bn, [
2443
+ f(n).multiTabsSetting.show ? (t(), l("div", hn, [
2444
+ T(g.$slots, "tabs", {}, () => [
2445
+ x(Ea, {
2446
+ tabs: e.tabs,
2447
+ "active-key": e.activeTab,
2448
+ labels: e.tabLabels,
2449
+ "show-quick": f(n).multiTabsSetting.showQuick,
2450
+ "show-redo": f(n).multiTabsSetting.showRedo,
2451
+ "show-fold": f(n).multiTabsSetting.showFold,
2452
+ "can-drag": f(n).multiTabsSetting.canDrag,
2453
+ onSelect: w[8] || (w[8] = (_) => o("tabSelect", _)),
2454
+ onClose: w[9] || (w[9] = (_) => o("tabClose", _)),
2455
+ onRefresh: w[10] || (w[10] = (_) => o("tabRefresh", _)),
2456
+ onCloseAction: Ue,
2457
+ onReorder: w[11] || (w[11] = (_) => o("tabReorder", _)),
2458
+ onFold: _e
2459
+ }, null, 8, ["tabs", "active-key", "labels", "show-quick", "show-redo", "show-fold", "can-drag"])
2460
+ ])
2461
+ ])) : b("", !0),
2462
+ r("main", {
2463
+ class: U(["dsea-classic-layout__content", { "is-fixed": f(n).contentMode === "fixed" }])
2464
+ }, [
2465
+ T(g.$slots, "default")
2466
+ ], 2),
2467
+ f(n).showFooter && g.$slots.footer ? (t(), l("footer", pn, [
2468
+ T(g.$slots, "footer")
2469
+ ])) : b("", !0)
2470
+ ])
2471
+ ])
2472
+ ], 64)),
2473
+ f(n).showSettingButton ? (t(), z(Va, {
2474
+ key: 2,
2475
+ open: h.value,
2476
+ "onUpdate:open": w[12] || (w[12] = (_) => h.value = _),
2477
+ title: H.value.settings,
2478
+ sections: Re.value,
2479
+ "reset-label": H.value.reset,
2480
+ onChange: se,
2481
+ onReset: Ke
2482
+ }, null, 8, ["open", "title", "sections", "reset-label"])) : b("", !0)
2483
+ ], 6);
2484
+ };
2485
+ }
2486
+ });
2487
+ const kn = { class: "dsea-iframe-view" }, wn = ["src", "title", "loading", "referrerpolicy"], Sn = /* @__PURE__ */ P({
1446
2488
  __name: "AdminIframeView",
1447
2489
  props: {
1448
2490
  src: {},
@@ -1451,35 +2493,35 @@ const ol = /* @__PURE__ */ A(Nt, [["__scopeId", "data-v-49bfd66c"]]), zt = { cla
1451
2493
  referrerPolicy: { default: "strict-origin-when-cross-origin" }
1452
2494
  },
1453
2495
  emits: ["load"],
1454
- setup(e, { emit: c }) {
1455
- const t = e, i = c, l = I(() => {
1456
- var n;
1457
- const r = ((n = t.src) == null ? void 0 : n.trim()) ?? "";
1458
- return X(r) || (r.startsWith("/") && !r.startsWith("//") && !/[\\\s\u0000-\u001f]/.test(r) ? r : "");
2496
+ setup(e, { emit: d }) {
2497
+ const a = e, o = d, s = E(() => {
2498
+ var i;
2499
+ const u = ((i = a.src) == null ? void 0 : i.trim()) ?? "";
2500
+ return ge(u) || (u.startsWith("/") && !u.startsWith("//") && !/[\\\s\u0000-\u001f]/.test(u) ? u : "");
1459
2501
  });
1460
- return (r, n) => (a(), o("div", zt, [
1461
- l.value ? (a(), o("iframe", {
1462
- key: l.value,
1463
- src: l.value,
2502
+ return (u, i) => (t(), l("div", kn, [
2503
+ s.value ? (t(), l("iframe", {
2504
+ key: s.value,
2505
+ src: s.value,
1464
2506
  title: e.title,
1465
2507
  loading: e.loading,
1466
2508
  referrerpolicy: e.referrerPolicy,
1467
- onLoad: n[0] || (n[0] = (u) => i("load"))
1468
- }, null, 40, Dt)) : B(r.$slots, "invalid", {}, void 0, !0, 1)
2509
+ onLoad: i[0] || (i[0] = (n) => o("load"))
2510
+ }, null, 40, wn)) : T(u.$slots, "invalid", {}, void 0, !0, 1)
1469
2511
  ]));
1470
2512
  }
1471
2513
  });
1472
- const sl = /* @__PURE__ */ A(Kt, [["__scopeId", "data-v-b964cc57"]]), Vt = { class: "dsea-login-view" }, Rt = { class: "dsea-login-view__identity" }, Ut = {
2514
+ const So = /* @__PURE__ */ W(Sn, [["__scopeId", "data-v-b964cc57"]]), _n = { class: "dsea-login-view" }, $n = { class: "dsea-login-view__identity" }, Cn = {
1473
2515
  key: 0,
1474
2516
  class: "dsea-login-view__subtitle"
1475
- }, qt = ["for"], Wt = ["id", "disabled"], Ot = ["for"], Ht = ["id", "disabled"], jt = {
2517
+ }, xn = ["for"], Ln = ["id", "disabled"], Mn = ["for"], An = ["id", "disabled"], Tn = {
1476
2518
  key: 1,
1477
2519
  class: "dsea-login-view__error",
1478
2520
  role: "alert"
1479
- }, Qt = ["disabled"], Gt = {
2521
+ }, Pn = ["disabled"], Bn = {
1480
2522
  key: 2,
1481
2523
  class: "dsea-login-view__footer"
1482
- }, Xt = /* @__PURE__ */ k({
2524
+ }, Fn = /* @__PURE__ */ P({
1483
2525
  __name: "AdminLoginView",
1484
2526
  props: {
1485
2527
  title: {},
@@ -1493,71 +2535,71 @@ const sl = /* @__PURE__ */ A(Kt, [["__scopeId", "data-v-b964cc57"]]), Vt = { cla
1493
2535
  formId: { default: "admin-login" }
1494
2536
  },
1495
2537
  emits: ["submit"],
1496
- setup(e, { emit: c }) {
1497
- const t = c, i = S(""), l = S("");
1498
- function r() {
1499
- t("submit", { username: i.value, password: l.value });
2538
+ setup(e, { emit: d }) {
2539
+ const a = d, o = M(""), s = M("");
2540
+ function u() {
2541
+ a("submit", { username: o.value, password: s.value });
1500
2542
  }
1501
- return (n, u) => (a(), o("main", Vt, [
1502
- s("form", {
2543
+ return (i, n) => (t(), l("main", _n, [
2544
+ r("form", {
1503
2545
  class: "dsea-login-view__form",
1504
- onSubmit: H(r, ["prevent"])
2546
+ onSubmit: ee(u, ["prevent"])
1505
2547
  }, [
1506
- s("div", Rt, [
1507
- B(n.$slots, "brand", {}, void 0, !0)
2548
+ r("div", $n, [
2549
+ T(i.$slots, "brand", {}, void 0, !0)
1508
2550
  ]),
1509
- s("h1", null, d(e.title), 1),
1510
- e.subtitle ? (a(), o("p", Ut, d(e.subtitle), 1)) : p("", !0),
1511
- s("label", {
2551
+ r("h1", null, m(e.title), 1),
2552
+ e.subtitle ? (t(), l("p", Cn, m(e.subtitle), 1)) : b("", !0),
2553
+ r("label", {
1512
2554
  for: `${e.formId}-username`
1513
- }, d(e.usernameLabel), 9, qt),
1514
- K(s("input", {
2555
+ }, m(e.usernameLabel), 9, xn),
2556
+ Y(r("input", {
1515
2557
  id: `${e.formId}-username`,
1516
- "onUpdate:modelValue": u[0] || (u[0] = (b) => i.value = b),
2558
+ "onUpdate:modelValue": n[0] || (n[0] = (c) => o.value = c),
1517
2559
  type: "text",
1518
2560
  name: "username",
1519
2561
  autocomplete: "username",
1520
2562
  required: "",
1521
2563
  disabled: e.loading
1522
- }, null, 8, Wt), [
2564
+ }, null, 8, Ln), [
1523
2565
  [
1524
- V,
1525
- i.value,
2566
+ J,
2567
+ o.value,
1526
2568
  void 0,
1527
2569
  { trim: !0 }
1528
2570
  ]
1529
2571
  ]),
1530
- s("label", {
2572
+ r("label", {
1531
2573
  for: `${e.formId}-password`
1532
- }, d(e.passwordLabel), 9, Ot),
1533
- K(s("input", {
2574
+ }, m(e.passwordLabel), 9, Mn),
2575
+ Y(r("input", {
1534
2576
  id: `${e.formId}-password`,
1535
- "onUpdate:modelValue": u[1] || (u[1] = (b) => l.value = b),
2577
+ "onUpdate:modelValue": n[1] || (n[1] = (c) => s.value = c),
1536
2578
  type: "password",
1537
2579
  name: "password",
1538
2580
  autocomplete: "current-password",
1539
2581
  required: "",
1540
2582
  disabled: e.loading
1541
- }, null, 8, Ht), [
1542
- [V, l.value]
2583
+ }, null, 8, An), [
2584
+ [J, s.value]
1543
2585
  ]),
1544
- e.error ? (a(), o("p", jt, d(e.error), 1)) : p("", !0),
1545
- s("button", {
2586
+ e.error ? (t(), l("p", Tn, m(e.error), 1)) : b("", !0),
2587
+ r("button", {
1546
2588
  type: "submit",
1547
2589
  disabled: e.loading
1548
- }, d(e.loading ? e.loadingLabel : e.submitLabel), 9, Qt),
1549
- n.$slots.footer ? (a(), o("div", Gt, [
1550
- B(n.$slots, "footer", {}, void 0, !0)
1551
- ])) : p("", !0)
2590
+ }, m(e.loading ? e.loadingLabel : e.submitLabel), 9, Pn),
2591
+ i.$slots.footer ? (t(), l("div", Bn, [
2592
+ T(i.$slots, "footer", {}, void 0, !0)
2593
+ ])) : b("", !0)
1552
2594
  ], 32)
1553
2595
  ]));
1554
2596
  }
1555
2597
  });
1556
- const il = /* @__PURE__ */ A(Xt, [["__scopeId", "data-v-65bdd32a"]]), Yt = { class: "dsea-lock-view" }, Jt = { key: 0 }, Zt = ["for"], ea = ["id", "disabled"], ta = {
2598
+ const _o = /* @__PURE__ */ W(Fn, [["__scopeId", "data-v-65bdd32a"]]), En = { class: "dsea-lock-view" }, In = { key: 0 }, Nn = ["for"], zn = ["id", "disabled"], Dn = {
1557
2599
  key: 1,
1558
2600
  class: "dsea-lock-view__error",
1559
2601
  role: "alert"
1560
- }, aa = ["disabled"], na = /* @__PURE__ */ k({
2602
+ }, Rn = ["disabled"], Kn = /* @__PURE__ */ P({
1561
2603
  __name: "AdminLockView",
1562
2604
  props: {
1563
2605
  title: {},
@@ -1570,51 +2612,51 @@ const il = /* @__PURE__ */ A(Xt, [["__scopeId", "data-v-65bdd32a"]]), Yt = { cla
1570
2612
  formId: { default: "admin-lock" }
1571
2613
  },
1572
2614
  emits: ["unlock", "switchAccount"],
1573
- setup(e, { emit: c }) {
1574
- const t = c, i = S("");
1575
- function l() {
1576
- t("unlock", i.value);
2615
+ setup(e, { emit: d }) {
2616
+ const a = d, o = M("");
2617
+ function s() {
2618
+ a("unlock", o.value);
1577
2619
  }
1578
- return (r, n) => (a(), o("main", Yt, [
1579
- s("form", {
2620
+ return (u, i) => (t(), l("main", En, [
2621
+ r("form", {
1580
2622
  class: "dsea-lock-view__form",
1581
- onSubmit: H(l, ["prevent"])
2623
+ onSubmit: ee(s, ["prevent"])
1582
2624
  }, [
1583
- B(r.$slots, "avatar", {}, void 0, !0),
1584
- s("h1", null, d(e.title), 1),
1585
- e.identity ? (a(), o("p", Jt, d(e.identity), 1)) : p("", !0),
1586
- s("label", {
2625
+ T(u.$slots, "avatar", {}, void 0, !0),
2626
+ r("h1", null, m(e.title), 1),
2627
+ e.identity ? (t(), l("p", In, m(e.identity), 1)) : b("", !0),
2628
+ r("label", {
1587
2629
  for: `${e.formId}-password`
1588
- }, d(e.passwordLabel), 9, Zt),
1589
- K(s("input", {
2630
+ }, m(e.passwordLabel), 9, Nn),
2631
+ Y(r("input", {
1590
2632
  id: `${e.formId}-password`,
1591
- "onUpdate:modelValue": n[0] || (n[0] = (u) => i.value = u),
2633
+ "onUpdate:modelValue": i[0] || (i[0] = (n) => o.value = n),
1592
2634
  type: "password",
1593
2635
  autocomplete: "current-password",
1594
2636
  required: "",
1595
2637
  disabled: e.loading
1596
- }, null, 8, ea), [
1597
- [V, i.value]
2638
+ }, null, 8, zn), [
2639
+ [J, o.value]
1598
2640
  ]),
1599
- e.error ? (a(), o("p", ta, d(e.error), 1)) : p("", !0),
1600
- s("button", {
2641
+ e.error ? (t(), l("p", Dn, m(e.error), 1)) : b("", !0),
2642
+ r("button", {
1601
2643
  type: "submit",
1602
2644
  disabled: e.loading
1603
- }, d(e.unlockLabel), 9, aa),
1604
- e.switchLabel ? (a(), o("button", {
2645
+ }, m(e.unlockLabel), 9, Rn),
2646
+ e.switchLabel ? (t(), l("button", {
1605
2647
  key: 2,
1606
2648
  type: "button",
1607
2649
  class: "dsea-lock-view__switch",
1608
- onClick: n[1] || (n[1] = (u) => t("switchAccount"))
1609
- }, d(e.switchLabel), 1)) : p("", !0)
2650
+ onClick: i[1] || (i[1] = (n) => a("switchAccount"))
2651
+ }, m(e.switchLabel), 1)) : b("", !0)
1610
2652
  ], 32)
1611
2653
  ]));
1612
2654
  }
1613
2655
  });
1614
- const rl = /* @__PURE__ */ A(na, [["__scopeId", "data-v-e70aeaca"]]), la = { class: "dsea-exception-view" }, oa = { class: "dsea-exception-view__content" }, sa = { class: "dsea-exception-view__status" }, ia = {
2656
+ const $o = /* @__PURE__ */ W(Kn, [["__scopeId", "data-v-e70aeaca"]]), Wn = { class: "dsea-exception-view" }, On = { class: "dsea-exception-view__content" }, Vn = { class: "dsea-exception-view__status" }, Un = {
1615
2657
  key: 0,
1616
2658
  class: "dsea-exception-view__description"
1617
- }, ra = /* @__PURE__ */ k({
2659
+ }, qn = /* @__PURE__ */ P({
1618
2660
  __name: "AdminExceptionView",
1619
2661
  props: {
1620
2662
  status: {},
@@ -1623,27 +2665,27 @@ const rl = /* @__PURE__ */ A(na, [["__scopeId", "data-v-e70aeaca"]]), la = { cla
1623
2665
  actionLabel: {}
1624
2666
  },
1625
2667
  emits: ["action"],
1626
- setup(e, { emit: c }) {
1627
- const t = c;
1628
- return (i, l) => (a(), o("main", la, [
1629
- s("div", oa, [
1630
- s("p", sa, d(e.status), 1),
1631
- s("h1", null, d(e.title), 1),
1632
- e.description ? (a(), o("p", ia, d(e.description), 1)) : p("", !0),
1633
- e.actionLabel ? (a(), o("button", {
2668
+ setup(e, { emit: d }) {
2669
+ const a = d;
2670
+ return (o, s) => (t(), l("main", Wn, [
2671
+ r("div", On, [
2672
+ r("p", Vn, m(e.status), 1),
2673
+ r("h1", null, m(e.title), 1),
2674
+ e.description ? (t(), l("p", Un, m(e.description), 1)) : b("", !0),
2675
+ e.actionLabel ? (t(), l("button", {
1634
2676
  key: 1,
1635
2677
  type: "button",
1636
- onClick: l[0] || (l[0] = (r) => t("action"))
1637
- }, d(e.actionLabel), 1)) : p("", !0)
2678
+ onClick: s[0] || (s[0] = (u) => a("action"))
2679
+ }, m(e.actionLabel), 1)) : b("", !0)
1638
2680
  ])
1639
2681
  ]));
1640
2682
  }
1641
2683
  });
1642
- const dl = /* @__PURE__ */ A(ra, [["__scopeId", "data-v-b9e53f59"]]), da = { class: "dsea-profile-tabs" }, ca = {
2684
+ const Co = /* @__PURE__ */ W(qn, [["__scopeId", "data-v-b9e53f59"]]), Hn = { class: "dsea-profile-tabs" }, jn = {
1643
2685
  key: 0,
1644
2686
  class: "dsea-profile-tabs__notice",
1645
2687
  role: "status"
1646
- }, ua = { class: "dsea-profile-tabs__body" }, ma = ["aria-label"], ba = ["aria-current", "onClick"], va = ["aria-label"], pa = /* @__PURE__ */ k({
2688
+ }, Qn = { class: "dsea-profile-tabs__body" }, Xn = ["aria-label"], Gn = ["aria-current", "onClick"], Yn = ["aria-label"], Jn = /* @__PURE__ */ P({
1647
2689
  __name: "AdminProfileTabs",
1648
2690
  props: {
1649
2691
  tabs: {},
@@ -1652,38 +2694,38 @@ const dl = /* @__PURE__ */ A(ra, [["__scopeId", "data-v-b9e53f59"]]), da = { cla
1652
2694
  notice: {}
1653
2695
  },
1654
2696
  emits: ["update:activeKey"],
1655
- setup(e, { emit: c }) {
1656
- const t = e, i = c, l = I(() => t.tabs.find((r) => r.key === t.activeKey));
1657
- return (r, n) => {
1658
- var u;
1659
- return a(), o("div", da, [
1660
- e.notice ? (a(), o("p", ca, d(e.notice), 1)) : p("", !0),
1661
- s("div", ua, [
1662
- s("nav", { "aria-label": e.label }, [
1663
- (a(!0), o(x, null, M(e.tabs, (b) => (a(), o("button", {
1664
- key: b.key,
2697
+ setup(e, { emit: d }) {
2698
+ const a = e, o = d, s = E(() => a.tabs.find((u) => u.key === a.activeKey));
2699
+ return (u, i) => {
2700
+ var n;
2701
+ return t(), l("div", Hn, [
2702
+ e.notice ? (t(), l("p", jn, m(e.notice), 1)) : b("", !0),
2703
+ r("div", Qn, [
2704
+ r("nav", { "aria-label": e.label }, [
2705
+ (t(!0), l(F, null, K(e.tabs, (c) => (t(), l("button", {
2706
+ key: c.key,
1665
2707
  type: "button",
1666
- "aria-current": b.key === e.activeKey ? "page" : void 0,
1667
- onClick: (g) => i("update:activeKey", b.key)
1668
- }, d(b.label), 9, ba))), 128))
1669
- ], 8, ma),
1670
- s("section", {
1671
- "aria-label": (u = l.value) == null ? void 0 : u.label
2708
+ "aria-current": c.key === e.activeKey ? "page" : void 0,
2709
+ onClick: (y) => o("update:activeKey", c.key)
2710
+ }, m(c.label), 9, Gn))), 128))
2711
+ ], 8, Xn),
2712
+ r("section", {
2713
+ "aria-label": (n = s.value) == null ? void 0 : n.label
1672
2714
  }, [
1673
- l.value ? (a(), P(he(l.value.component), { key: 0 })) : B(r.$slots, "default", {}, void 0, !0, 1)
1674
- ], 8, va)
2715
+ s.value ? (t(), z(Je(s.value.component), { key: 0 })) : T(u.$slots, "default", {}, void 0, !0, 1)
2716
+ ], 8, Yn)
1675
2717
  ])
1676
2718
  ]);
1677
2719
  };
1678
2720
  }
1679
2721
  });
1680
- const cl = /* @__PURE__ */ A(pa, [["__scopeId", "data-v-55c2076e"]]), ga = { key: 0 }, ha = ["value"], fa = { key: 1 }, ya = {
2722
+ const xo = /* @__PURE__ */ W(Jn, [["__scopeId", "data-v-55c2076e"]]), Zn = { key: 0 }, el = ["value"], tl = { key: 1 }, al = {
1681
2723
  key: 2,
1682
2724
  class: "dsea-profile-form__avatar"
1683
- }, ka = {
2725
+ }, nl = {
1684
2726
  key: 3,
1685
2727
  role: "alert"
1686
- }, _a = ["disabled"], wa = /* @__PURE__ */ k({
2728
+ }, ll = ["disabled"], ol = /* @__PURE__ */ P({
1687
2729
  __name: "AdminProfileForm",
1688
2730
  props: {
1689
2731
  name: {},
@@ -1695,89 +2737,89 @@ const cl = /* @__PURE__ */ A(pa, [["__scopeId", "data-v-55c2076e"]]), ga = { key
1695
2737
  labels: { default: () => ({ name: "Name", email: "Email", phone: "Phone", currentPassword: "Current password", save: "Save changes", saving: "Saving" }) }
1696
2738
  },
1697
2739
  emits: ["submit"],
1698
- setup(e, { emit: c }) {
1699
- const t = e, i = c, l = oe({ name: t.name, email: t.email, currentPassword: "" });
1700
- U(() => [t.name, t.email], () => {
1701
- l.name = t.name, l.email = t.email;
2740
+ setup(e, { emit: d }) {
2741
+ const a = e, o = d, s = Te({ name: a.name, email: a.email, currentPassword: "" });
2742
+ Z(() => [a.name, a.email], () => {
2743
+ s.name = a.name, s.email = a.email;
1702
2744
  });
1703
- function r() {
1704
- t.saving || (i("submit", {
1705
- name: l.name.trim(),
1706
- email: l.email.trim(),
1707
- ...t.requireCurrentPassword ? { currentPassword: l.currentPassword } : {}
1708
- }), l.currentPassword = "");
1709
- }
1710
- return (n, u) => (a(), o("form", {
2745
+ function u() {
2746
+ a.saving || (o("submit", {
2747
+ name: s.name.trim(),
2748
+ email: s.email.trim(),
2749
+ ...a.requireCurrentPassword ? { currentPassword: s.currentPassword } : {}
2750
+ }), s.currentPassword = "");
2751
+ }
2752
+ return (i, n) => (t(), l("form", {
1711
2753
  class: "dsea-profile-form",
1712
- onSubmit: H(r, ["prevent"])
2754
+ onSubmit: ee(u, ["prevent"])
1713
2755
  }, [
1714
- s("label", null, [
1715
- z(d(e.labels.name), 1),
1716
- K(s("input", {
1717
- "onUpdate:modelValue": u[0] || (u[0] = (b) => l.name = b),
2756
+ r("label", null, [
2757
+ Q(m(e.labels.name), 1),
2758
+ Y(r("input", {
2759
+ "onUpdate:modelValue": n[0] || (n[0] = (c) => s.name = c),
1718
2760
  type: "text",
1719
2761
  required: "",
1720
2762
  maxlength: "100",
1721
2763
  autocomplete: "name"
1722
2764
  }, null, 512), [
1723
2765
  [
1724
- V,
1725
- l.name,
2766
+ J,
2767
+ s.name,
1726
2768
  void 0,
1727
2769
  { trim: !0 }
1728
2770
  ]
1729
2771
  ])
1730
2772
  ]),
1731
- s("label", null, [
1732
- z(d(e.labels.email), 1),
1733
- K(s("input", {
1734
- "onUpdate:modelValue": u[1] || (u[1] = (b) => l.email = b),
2773
+ r("label", null, [
2774
+ Q(m(e.labels.email), 1),
2775
+ Y(r("input", {
2776
+ "onUpdate:modelValue": n[1] || (n[1] = (c) => s.email = c),
1735
2777
  type: "email",
1736
2778
  autocomplete: "email"
1737
2779
  }, null, 512), [
1738
2780
  [
1739
- V,
1740
- l.email,
2781
+ J,
2782
+ s.email,
1741
2783
  void 0,
1742
2784
  { trim: !0 }
1743
2785
  ]
1744
2786
  ])
1745
2787
  ]),
1746
- e.phone !== void 0 ? (a(), o("label", ga, [
1747
- z(d(e.labels.phone), 1),
1748
- s("input", {
2788
+ e.phone !== void 0 ? (t(), l("label", Zn, [
2789
+ Q(m(e.labels.phone), 1),
2790
+ r("input", {
1749
2791
  value: e.phone,
1750
2792
  type: "tel",
1751
2793
  disabled: "",
1752
2794
  autocomplete: "tel"
1753
- }, null, 8, ha)
1754
- ])) : p("", !0),
1755
- e.requireCurrentPassword ? (a(), o("label", fa, [
1756
- z(d(e.labels.currentPassword), 1),
1757
- K(s("input", {
1758
- "onUpdate:modelValue": u[2] || (u[2] = (b) => l.currentPassword = b),
2795
+ }, null, 8, el)
2796
+ ])) : b("", !0),
2797
+ e.requireCurrentPassword ? (t(), l("label", tl, [
2798
+ Q(m(e.labels.currentPassword), 1),
2799
+ Y(r("input", {
2800
+ "onUpdate:modelValue": n[2] || (n[2] = (c) => s.currentPassword = c),
1759
2801
  type: "password",
1760
2802
  required: "",
1761
2803
  autocomplete: "current-password"
1762
2804
  }, null, 512), [
1763
- [V, l.currentPassword]
2805
+ [J, s.currentPassword]
1764
2806
  ])
1765
- ])) : p("", !0),
1766
- n.$slots.avatar ? (a(), o("div", ya, [
1767
- B(n.$slots, "avatar", {}, void 0, !0)
1768
- ])) : p("", !0),
1769
- e.error ? (a(), o("p", ka, d(e.error), 1)) : p("", !0),
1770
- s("button", {
2807
+ ])) : b("", !0),
2808
+ i.$slots.avatar ? (t(), l("div", al, [
2809
+ T(i.$slots, "avatar", {}, void 0, !0)
2810
+ ])) : b("", !0),
2811
+ e.error ? (t(), l("p", nl, m(e.error), 1)) : b("", !0),
2812
+ r("button", {
1771
2813
  type: "submit",
1772
2814
  disabled: e.saving
1773
- }, d(e.saving ? e.labels.saving : e.labels.save), 9, _a)
2815
+ }, m(e.saving ? e.labels.saving : e.labels.save), 9, ll)
1774
2816
  ], 32));
1775
2817
  }
1776
2818
  });
1777
- const ul = /* @__PURE__ */ A(wa, [["__scopeId", "data-v-4dc61808"]]), $a = {
2819
+ const Lo = /* @__PURE__ */ W(ol, [["__scopeId", "data-v-4dc61808"]]), il = {
1778
2820
  key: 0,
1779
2821
  role: "alert"
1780
- }, La = ["disabled"], Ca = /* @__PURE__ */ k({
2822
+ }, sl = ["disabled"], rl = /* @__PURE__ */ P({
1781
2823
  __name: "AdminPasswordForm",
1782
2824
  props: {
1783
2825
  minBytes: { default: 10 },
@@ -1787,104 +2829,104 @@ const ul = /* @__PURE__ */ A(wa, [["__scopeId", "data-v-4dc61808"]]), $a = {
1787
2829
  labels: { default: () => ({ current: "Current password", next: "New password", confirm: "Confirm password", save: "Change password", saving: "Saving", mismatch: "Passwords do not match", length: "Password length is invalid" }) }
1788
2830
  },
1789
2831
  emits: ["submit"],
1790
- setup(e, { expose: c, emit: t }) {
1791
- const i = e, l = t, r = S(""), n = S(""), u = S(""), b = S("");
1792
- function g() {
1793
- if (i.saving)
2832
+ setup(e, { expose: d, emit: a }) {
2833
+ const o = e, s = a, u = M(""), i = M(""), n = M(""), c = M("");
2834
+ function y() {
2835
+ if (o.saving)
1794
2836
  return;
1795
- const m = new TextEncoder().encode(n.value).length;
1796
- if (m < i.minBytes || m > i.maxBytes) {
1797
- b.value = i.labels.length;
2837
+ const p = new TextEncoder().encode(i.value).length;
2838
+ if (p < o.minBytes || p > o.maxBytes) {
2839
+ c.value = o.labels.length;
1798
2840
  return;
1799
2841
  }
1800
- if (n.value !== u.value) {
1801
- b.value = i.labels.mismatch;
2842
+ if (i.value !== n.value) {
2843
+ c.value = o.labels.mismatch;
1802
2844
  return;
1803
2845
  }
1804
- b.value = "", l("submit", { currentPassword: r.value, password: n.value });
2846
+ c.value = "", s("submit", { currentPassword: u.value, password: i.value });
1805
2847
  }
1806
- function v() {
1807
- r.value = "", n.value = "", u.value = "", b.value = "";
2848
+ function h() {
2849
+ u.value = "", i.value = "", n.value = "", c.value = "";
1808
2850
  }
1809
- return c({ reset: v }), (m, L) => (a(), o("form", {
2851
+ return d({ reset: h }), (p, N) => (t(), l("form", {
1810
2852
  class: "dsea-password-form",
1811
- onSubmit: H(g, ["prevent"])
2853
+ onSubmit: ee(y, ["prevent"])
1812
2854
  }, [
1813
- s("label", null, [
1814
- z(d(e.labels.current), 1),
1815
- K(s("input", {
1816
- "onUpdate:modelValue": L[0] || (L[0] = (F) => r.value = F),
2855
+ r("label", null, [
2856
+ Q(m(e.labels.current), 1),
2857
+ Y(r("input", {
2858
+ "onUpdate:modelValue": N[0] || (N[0] = (A) => u.value = A),
1817
2859
  type: "password",
1818
2860
  required: "",
1819
2861
  autocomplete: "current-password"
1820
2862
  }, null, 512), [
1821
- [V, r.value]
2863
+ [J, u.value]
1822
2864
  ])
1823
2865
  ]),
1824
- s("label", null, [
1825
- z(d(e.labels.next), 1),
1826
- K(s("input", {
1827
- "onUpdate:modelValue": L[1] || (L[1] = (F) => n.value = F),
2866
+ r("label", null, [
2867
+ Q(m(e.labels.next), 1),
2868
+ Y(r("input", {
2869
+ "onUpdate:modelValue": N[1] || (N[1] = (A) => i.value = A),
1828
2870
  type: "password",
1829
2871
  required: "",
1830
2872
  autocomplete: "new-password"
1831
2873
  }, null, 512), [
1832
- [V, n.value]
2874
+ [J, i.value]
1833
2875
  ])
1834
2876
  ]),
1835
- s("label", null, [
1836
- z(d(e.labels.confirm), 1),
1837
- K(s("input", {
1838
- "onUpdate:modelValue": L[2] || (L[2] = (F) => u.value = F),
2877
+ r("label", null, [
2878
+ Q(m(e.labels.confirm), 1),
2879
+ Y(r("input", {
2880
+ "onUpdate:modelValue": N[2] || (N[2] = (A) => n.value = A),
1839
2881
  type: "password",
1840
2882
  required: "",
1841
2883
  autocomplete: "new-password"
1842
2884
  }, null, 512), [
1843
- [V, u.value]
2885
+ [J, n.value]
1844
2886
  ])
1845
2887
  ]),
1846
- b.value || e.error ? (a(), o("p", $a, d(b.value || e.error), 1)) : p("", !0),
1847
- s("button", {
2888
+ c.value || e.error ? (t(), l("p", il, m(c.value || e.error), 1)) : b("", !0),
2889
+ r("button", {
1848
2890
  type: "submit",
1849
2891
  disabled: e.saving
1850
- }, d(e.saving ? e.labels.saving : e.labels.save), 9, La)
2892
+ }, m(e.saving ? e.labels.saving : e.labels.save), 9, sl)
1851
2893
  ], 32));
1852
2894
  }
1853
2895
  });
1854
- const ml = /* @__PURE__ */ A(Ca, [["__scopeId", "data-v-3eb63418"]]), Sa = ["aria-label"], xa = ["onClick"], Aa = /* @__PURE__ */ k({
2896
+ const Mo = /* @__PURE__ */ W(rl, [["__scopeId", "data-v-3eb63418"]]), ul = ["aria-label"], dl = ["onClick"], cl = /* @__PURE__ */ P({
1855
2897
  __name: "AdminSecuritySettings",
1856
2898
  props: {
1857
2899
  items: {},
1858
2900
  label: { default: "Security settings" }
1859
2901
  },
1860
2902
  emits: ["action"],
1861
- setup(e, { emit: c }) {
1862
- const t = c;
1863
- return (i, l) => (a(), o("section", {
2903
+ setup(e, { emit: d }) {
2904
+ const a = d;
2905
+ return (o, s) => (t(), l("section", {
1864
2906
  class: "dsea-security-settings",
1865
2907
  "aria-label": e.label
1866
2908
  }, [
1867
- (a(!0), o(x, null, M(e.items, (r) => (a(), o("div", {
1868
- key: r.key,
2909
+ (t(!0), l(F, null, K(e.items, (u) => (t(), l("div", {
2910
+ key: u.key,
1869
2911
  class: "dsea-security-settings__row"
1870
2912
  }, [
1871
- s("div", null, [
1872
- s("strong", null, d(r.title), 1),
1873
- s("p", null, d(r.description), 1)
2913
+ r("div", null, [
2914
+ r("strong", null, m(u.title), 1),
2915
+ r("p", null, m(u.description), 1)
1874
2916
  ]),
1875
- r.action ? (a(), o("button", {
2917
+ u.action ? (t(), l("button", {
1876
2918
  key: 0,
1877
2919
  type: "button",
1878
- onClick: (n) => t("action", r.key)
1879
- }, d(r.action), 9, xa)) : p("", !0)
2920
+ onClick: (i) => a("action", u.key)
2921
+ }, m(u.action), 9, dl)) : b("", !0)
1880
2922
  ]))), 128))
1881
- ], 8, Sa));
2923
+ ], 8, ul));
1882
2924
  }
1883
2925
  });
1884
- const bl = /* @__PURE__ */ A(Aa, [["__scopeId", "data-v-9de763c2"]]), Ma = ["aria-label"], Ta = ["disabled"], Ba = { class: "dsea-error-log__table-wrap" }, Pa = { scope: "col" }, Ia = { scope: "col" }, Ea = { scope: "col" }, Fa = ["onClick"], Na = { key: 0 }, za = {
2926
+ const Ao = /* @__PURE__ */ W(cl, [["__scopeId", "data-v-9de763c2"]]), ml = ["aria-label"], vl = ["disabled"], gl = { class: "dsea-error-log__table-wrap" }, bl = { scope: "col" }, hl = { scope: "col" }, pl = { scope: "col" }, fl = ["onClick"], yl = { key: 0 }, kl = {
1885
2927
  colspan: "4",
1886
2928
  class: "dsea-error-log__empty"
1887
- }, Da = ["aria-label"], Ka = ["aria-label"], Va = { key: 0 }, Ra = /* @__PURE__ */ k({
2929
+ }, wl = ["aria-label"], Sl = ["aria-label"], _l = { key: 0 }, $l = /* @__PURE__ */ P({
1888
2930
  __name: "AdminErrorLogView",
1889
2931
  props: {
1890
2932
  entries: {},
@@ -1898,97 +2940,97 @@ const bl = /* @__PURE__ */ A(Aa, [["__scopeId", "data-v-9de763c2"]]), Ma = ["ari
1898
2940
  emptyLabel: { default: "No errors" }
1899
2941
  },
1900
2942
  emits: ["clear"],
1901
- setup(e, { emit: c }) {
1902
- const t = c, i = S(null), l = S();
1903
- return U(i, async (r) => {
1904
- var n;
1905
- r && (await se(), (n = l.value) == null || n.focus());
1906
- }), (r, n) => (a(), o("section", {
2943
+ setup(e, { emit: d }) {
2944
+ const a = d, o = M(null), s = M();
2945
+ return Z(o, async (u) => {
2946
+ var i;
2947
+ u && (await Be(), (i = s.value) == null || i.focus());
2948
+ }), (u, i) => (t(), l("section", {
1907
2949
  class: "dsea-error-log",
1908
2950
  "aria-label": e.title
1909
2951
  }, [
1910
- s("header", null, [
1911
- s("h1", null, d(e.title), 1),
1912
- s("button", {
2952
+ r("header", null, [
2953
+ r("h1", null, m(e.title), 1),
2954
+ r("button", {
1913
2955
  type: "button",
1914
2956
  disabled: !e.entries.length,
1915
- onClick: n[0] || (n[0] = (u) => t("clear"))
1916
- }, d(e.clearLabel), 9, Ta)
2957
+ onClick: i[0] || (i[0] = (n) => a("clear"))
2958
+ }, m(e.clearLabel), 9, vl)
1917
2959
  ]),
1918
- s("div", Ba, [
1919
- s("table", null, [
1920
- s("thead", null, [
1921
- s("tr", null, [
1922
- s("th", Pa, d(e.timeLabel), 1),
1923
- s("th", Ia, d(e.messageLabel), 1),
1924
- s("th", Ea, d(e.sourceLabel), 1),
1925
- n[4] || (n[4] = s("th", { scope: "col" }, null, -1))
2960
+ r("div", gl, [
2961
+ r("table", null, [
2962
+ r("thead", null, [
2963
+ r("tr", null, [
2964
+ r("th", bl, m(e.timeLabel), 1),
2965
+ r("th", hl, m(e.messageLabel), 1),
2966
+ r("th", pl, m(e.sourceLabel), 1),
2967
+ i[4] || (i[4] = r("th", { scope: "col" }, null, -1))
1926
2968
  ])
1927
2969
  ]),
1928
- s("tbody", null, [
1929
- (a(!0), o(x, null, M(e.entries, (u) => (a(), o("tr", {
1930
- key: u.id
2970
+ r("tbody", null, [
2971
+ (t(!0), l(F, null, K(e.entries, (n) => (t(), l("tr", {
2972
+ key: n.id
1931
2973
  }, [
1932
- s("td", null, d(u.time), 1),
1933
- s("td", null, d(u.message), 1),
1934
- s("td", null, d(u.source), 1),
1935
- s("td", null, [
1936
- s("button", {
2974
+ r("td", null, m(n.time), 1),
2975
+ r("td", null, m(n.message), 1),
2976
+ r("td", null, m(n.source), 1),
2977
+ r("td", null, [
2978
+ r("button", {
1937
2979
  type: "button",
1938
- onClick: (b) => i.value = u
1939
- }, d(e.detailsLabel), 9, Fa)
2980
+ onClick: (c) => o.value = n
2981
+ }, m(e.detailsLabel), 9, fl)
1940
2982
  ])
1941
2983
  ]))), 128)),
1942
- e.entries.length ? p("", !0) : (a(), o("tr", Na, [
1943
- s("td", za, d(e.emptyLabel), 1)
2984
+ e.entries.length ? b("", !0) : (t(), l("tr", yl, [
2985
+ r("td", kl, m(e.emptyLabel), 1)
1944
2986
  ]))
1945
2987
  ])
1946
2988
  ])
1947
2989
  ]),
1948
- i.value ? (a(), o("div", {
2990
+ o.value ? (t(), l("div", {
1949
2991
  key: 0,
1950
2992
  class: "dsea-error-log__backdrop",
1951
- onClick: n[3] || (n[3] = H((u) => i.value = null, ["self"]))
2993
+ onClick: i[3] || (i[3] = ee((n) => o.value = null, ["self"]))
1952
2994
  }, [
1953
- s("section", {
2995
+ r("section", {
1954
2996
  ref_key: "dialog",
1955
- ref: l,
2997
+ ref: s,
1956
2998
  role: "dialog",
1957
2999
  "aria-modal": "true",
1958
3000
  "aria-label": e.detailsLabel,
1959
3001
  tabindex: "-1",
1960
3002
  class: "dsea-error-log__dialog",
1961
- onKeydown: n[2] || (n[2] = J((u) => i.value = null, ["esc"]))
3003
+ onKeydown: i[2] || (i[2] = be((n) => o.value = null, ["esc"]))
1962
3004
  }, [
1963
- s("header", null, [
1964
- s("h2", null, d(i.value.message), 1),
1965
- s("button", {
3005
+ r("header", null, [
3006
+ r("h2", null, m(o.value.message), 1),
3007
+ r("button", {
1966
3008
  type: "button",
1967
3009
  "aria-label": e.closeLabel,
1968
- onClick: n[1] || (n[1] = (u) => i.value = null)
3010
+ onClick: i[1] || (i[1] = (n) => o.value = null)
1969
3011
  }, [
1970
- $(y(w), {
3012
+ x(f(L), {
1971
3013
  icon: "lucide:x",
1972
3014
  size: 18
1973
3015
  })
1974
- ], 8, Ka)
3016
+ ], 8, Sl)
1975
3017
  ]),
1976
- s("dl", null, [
1977
- s("dt", null, d(e.timeLabel), 1),
1978
- s("dd", null, d(i.value.time), 1),
1979
- s("dt", null, d(e.sourceLabel), 1),
1980
- s("dd", null, d(i.value.source), 1)
3018
+ r("dl", null, [
3019
+ r("dt", null, m(e.timeLabel), 1),
3020
+ r("dd", null, m(o.value.time), 1),
3021
+ r("dt", null, m(e.sourceLabel), 1),
3022
+ r("dd", null, m(o.value.source), 1)
1981
3023
  ]),
1982
- i.value.details ? (a(), o("pre", Va, d(i.value.details), 1)) : p("", !0)
1983
- ], 40, Da)
1984
- ])) : p("", !0)
1985
- ], 8, Ma));
3024
+ o.value.details ? (t(), l("pre", _l, m(o.value.details), 1)) : b("", !0)
3025
+ ], 40, wl)
3026
+ ])) : b("", !0)
3027
+ ], 8, ml));
1986
3028
  }
1987
3029
  });
1988
- const vl = /* @__PURE__ */ A(Ra, [["__scopeId", "data-v-c1b52346"]]), Ua = { class: "dsea-about-view" }, qa = { key: 0 }, Wa = { class: "dsea-about-view__info" }, Oa = ["href"], Ha = {
3030
+ const To = /* @__PURE__ */ W($l, [["__scopeId", "data-v-c1b52346"]]), Cl = { class: "dsea-about-view" }, xl = { key: 0 }, Ll = { class: "dsea-about-view__info" }, Ml = ["href"], Al = {
1989
3031
  key: 0,
1990
3032
  class: "dsea-about-view__dependencies"
1991
- }, ja = /* @__PURE__ */ k({
3033
+ }, Tl = /* @__PURE__ */ P({
1992
3034
  __name: "AdminAboutView",
1993
3035
  props: {
1994
3036
  title: {},
@@ -2002,47 +3044,47 @@ const vl = /* @__PURE__ */ A(Ra, [["__scopeId", "data-v-c1b52346"]]), Ua = { cla
2002
3044
  dependenciesLabel: { default: "Dependencies" }
2003
3045
  },
2004
3046
  setup(e) {
2005
- const c = e, t = I(() => c.links.filter((l) => X(l.href))), i = I(() => Object.entries(c.dependencies).sort(([l], [r]) => l.localeCompare(r)));
2006
- return (l, r) => (a(), o("section", Ua, [
2007
- s("header", null, [
2008
- s("h1", null, d(e.title), 1),
2009
- e.description ? (a(), o("p", qa, d(e.description), 1)) : p("", !0)
3047
+ const d = e, a = E(() => d.links.filter((s) => ge(s.href))), o = E(() => Object.entries(d.dependencies).sort(([s], [u]) => s.localeCompare(u)));
3048
+ return (s, u) => (t(), l("section", Cl, [
3049
+ r("header", null, [
3050
+ r("h1", null, m(e.title), 1),
3051
+ e.description ? (t(), l("p", xl, m(e.description), 1)) : b("", !0)
2010
3052
  ]),
2011
- s("dl", Wa, [
2012
- s("dt", null, d(e.versionLabel), 1),
2013
- s("dd", null, d(e.version), 1),
2014
- e.builtAt ? (a(), o(x, { key: 0 }, [
2015
- s("dt", null, d(e.builtAtLabel), 1),
2016
- s("dd", null, d(e.builtAt), 1)
2017
- ], 64)) : p("", !0),
2018
- (a(!0), o(x, null, M(t.value, (n) => (a(), o(x, {
2019
- key: n.label
3053
+ r("dl", Ll, [
3054
+ r("dt", null, m(e.versionLabel), 1),
3055
+ r("dd", null, m(e.version), 1),
3056
+ e.builtAt ? (t(), l(F, { key: 0 }, [
3057
+ r("dt", null, m(e.builtAtLabel), 1),
3058
+ r("dd", null, m(e.builtAt), 1)
3059
+ ], 64)) : b("", !0),
3060
+ (t(!0), l(F, null, K(a.value, (i) => (t(), l(F, {
3061
+ key: i.label
2020
3062
  }, [
2021
- s("dt", null, d(n.label), 1),
2022
- s("dd", null, [
2023
- s("a", {
2024
- href: n.href,
3063
+ r("dt", null, m(i.label), 1),
3064
+ r("dd", null, [
3065
+ r("a", {
3066
+ href: i.href,
2025
3067
  target: "_blank",
2026
3068
  rel: "noopener noreferrer"
2027
- }, d(n.label), 9, Oa)
3069
+ }, m(i.label), 9, Ml)
2028
3070
  ])
2029
3071
  ], 64))), 128))
2030
3072
  ]),
2031
- i.value.length ? (a(), o("section", Ha, [
2032
- s("h2", null, d(e.dependenciesLabel), 1),
2033
- s("dl", null, [
2034
- (a(!0), o(x, null, M(i.value, (n) => (a(), o(x, {
2035
- key: n[0]
3073
+ o.value.length ? (t(), l("section", Al, [
3074
+ r("h2", null, m(e.dependenciesLabel), 1),
3075
+ r("dl", null, [
3076
+ (t(!0), l(F, null, K(o.value, (i) => (t(), l(F, {
3077
+ key: i[0]
2036
3078
  }, [
2037
- s("dt", null, d(n[0]), 1),
2038
- s("dd", null, d(n[1]), 1)
3079
+ r("dt", null, m(i[0]), 1),
3080
+ r("dd", null, m(i[1]), 1)
2039
3081
  ], 64))), 128))
2040
3082
  ])
2041
- ])) : p("", !0)
3083
+ ])) : b("", !0)
2042
3084
  ]));
2043
3085
  }
2044
3086
  });
2045
- const pl = /* @__PURE__ */ A(ja, [["__scopeId", "data-v-c800d903"]]), Qa = ["aria-label"], Ga = ["title"], Xa = ["aria-label", "onClick"], Ya = /* @__PURE__ */ k({
3087
+ const Po = /* @__PURE__ */ W(Tl, [["__scopeId", "data-v-c800d903"]]), Pl = ["aria-label"], Bl = ["title"], Fl = ["aria-label", "onClick"], El = /* @__PURE__ */ P({
2046
3088
  __name: "AgentAttachmentList",
2047
3089
  props: {
2048
3090
  attachments: {},
@@ -2050,47 +3092,47 @@ const pl = /* @__PURE__ */ A(ja, [["__scopeId", "data-v-c800d903"]]), Qa = ["ari
2050
3092
  removeLabel: { default: "Remove" }
2051
3093
  },
2052
3094
  emits: ["remove"],
2053
- setup(e, { emit: c }) {
2054
- const t = c;
2055
- function i(l) {
2056
- return l < 1024 ? `${l} B` : l < 1048576 ? `${(l / 1024).toFixed(1)} KB` : `${(l / 1048576).toFixed(1)} MB`;
3095
+ setup(e, { emit: d }) {
3096
+ const a = d;
3097
+ function o(s) {
3098
+ return s < 1024 ? `${s} B` : s < 1048576 ? `${(s / 1024).toFixed(1)} KB` : `${(s / 1048576).toFixed(1)} MB`;
2057
3099
  }
2058
- return (l, r) => e.attachments.length ? (a(), o("ul", {
3100
+ return (s, u) => e.attachments.length ? (t(), l("ul", {
2059
3101
  key: 0,
2060
3102
  class: "dsea-agent-attachments",
2061
3103
  "aria-label": e.label
2062
3104
  }, [
2063
- (a(!0), o(x, null, M(e.attachments, (n) => (a(), o("li", {
2064
- key: n.id
3105
+ (t(!0), l(F, null, K(e.attachments, (i) => (t(), l("li", {
3106
+ key: i.id
2065
3107
  }, [
2066
- $(y(w), {
2067
- icon: n.status === "uploading" ? "lucide:loader-circle" : "lucide:paperclip",
3108
+ x(f(L), {
3109
+ icon: i.status === "uploading" ? "lucide:loader-circle" : "lucide:paperclip",
2068
3110
  size: 14
2069
3111
  }, null, 8, ["icon"]),
2070
- s("span", {
3112
+ r("span", {
2071
3113
  class: "dsea-agent-attachments__name",
2072
- title: n.name
2073
- }, d(n.name), 9, Ga),
2074
- s("small", null, d(i(n.size)), 1),
2075
- n.status !== "uploading" ? (a(), o("button", {
3114
+ title: i.name
3115
+ }, m(i.name), 9, Bl),
3116
+ r("small", null, m(o(i.size)), 1),
3117
+ i.status !== "uploading" ? (t(), l("button", {
2076
3118
  key: 0,
2077
3119
  type: "button",
2078
- "aria-label": `${e.removeLabel}: ${n.name}`,
2079
- onClick: (u) => t("remove", n.id)
3120
+ "aria-label": `${e.removeLabel}: ${i.name}`,
3121
+ onClick: (n) => a("remove", i.id)
2080
3122
  }, [
2081
- $(y(w), {
3123
+ x(f(L), {
2082
3124
  icon: "lucide:x",
2083
3125
  size: 14
2084
3126
  })
2085
- ], 8, Xa)) : p("", !0)
3127
+ ], 8, Fl)) : b("", !0)
2086
3128
  ]))), 128))
2087
- ], 8, Qa)) : p("", !0);
3129
+ ], 8, Pl)) : b("", !0);
2088
3130
  }
2089
3131
  });
2090
- const Ja = /* @__PURE__ */ A(Ya, [["__scopeId", "data-v-23c5547e"]]), Za = { class: "dsea-agent-model-select" }, en = { class: "dsea-agent-model-select__label" }, tn = ["value", "disabled"], an = {
3132
+ const Il = /* @__PURE__ */ W(El, [["__scopeId", "data-v-23c5547e"]]), Nl = { class: "dsea-agent-model-select" }, zl = { class: "dsea-agent-model-select__label" }, Dl = ["value", "disabled"], Rl = {
2091
3133
  value: "",
2092
3134
  disabled: ""
2093
- }, nn = ["value"], ln = /* @__PURE__ */ k({
3135
+ }, Kl = ["value"], Wl = /* @__PURE__ */ P({
2094
3136
  __name: "AgentModelSelect",
2095
3137
  props: {
2096
3138
  model: {},
@@ -2102,28 +3144,28 @@ const Ja = /* @__PURE__ */ A(Ya, [["__scopeId", "data-v-23c5547e"]]), Za = { cla
2102
3144
  loadingLabel: { default: "Loading models" }
2103
3145
  },
2104
3146
  emits: ["update:model"],
2105
- setup(e, { emit: c }) {
2106
- const t = c;
2107
- function i(l) {
2108
- t("update:model", l.target.value);
2109
- }
2110
- return (l, r) => (a(), o("label", Za, [
2111
- s("span", en, d(e.label), 1),
2112
- s("select", {
3147
+ setup(e, { emit: d }) {
3148
+ const a = d;
3149
+ function o(s) {
3150
+ a("update:model", s.target.value);
3151
+ }
3152
+ return (s, u) => (t(), l("label", Nl, [
3153
+ r("span", zl, m(e.label), 1),
3154
+ r("select", {
2113
3155
  value: e.model,
2114
3156
  disabled: e.disabled || e.loading,
2115
- onChange: i
3157
+ onChange: o
2116
3158
  }, [
2117
- s("option", an, d(e.loading ? e.loadingLabel : e.placeholder), 1),
2118
- (a(!0), o(x, null, M(e.models, (n) => (a(), o("option", {
2119
- key: n.id,
2120
- value: n.id
2121
- }, d(n.name) + d(n.provider ? ` · ${n.provider}` : ""), 9, nn))), 128))
2122
- ], 40, tn)
3159
+ r("option", Rl, m(e.loading ? e.loadingLabel : e.placeholder), 1),
3160
+ (t(!0), l(F, null, K(e.models, (i) => (t(), l("option", {
3161
+ key: i.id,
3162
+ value: i.id
3163
+ }, m(i.name) + m(i.provider ? ` · ${i.provider}` : ""), 9, Kl))), 128))
3164
+ ], 40, Dl)
2123
3165
  ]));
2124
3166
  }
2125
3167
  });
2126
- const on = /* @__PURE__ */ A(ln, [["__scopeId", "data-v-bd9414ff"]]), sn = { class: "dsea-agent-composer" }, rn = ["value", "placeholder", "disabled"], dn = { class: "dsea-agent-composer__toolbar" }, cn = ["disabled", "aria-label", "title"], un = ["value", "aria-label", "disabled"], mn = ["value"], bn = ["disabled", "aria-label", "title"], vn = /* @__PURE__ */ k({
3168
+ const Ol = /* @__PURE__ */ W(Wl, [["__scopeId", "data-v-bd9414ff"]]), Vl = { class: "dsea-agent-composer" }, Ul = ["value", "placeholder", "disabled"], ql = { class: "dsea-agent-composer__toolbar" }, Hl = ["disabled", "aria-label", "title"], jl = ["value", "aria-label", "disabled"], Ql = ["value"], Xl = ["disabled", "aria-label", "title"], Gl = /* @__PURE__ */ P({
2127
3169
  __name: "AgentComposer",
2128
3170
  props: {
2129
3171
  draft: {},
@@ -2146,103 +3188,103 @@ const on = /* @__PURE__ */ A(ln, [["__scopeId", "data-v-bd9414ff"]]), sn = { cla
2146
3188
  stopLabel: { default: "Stop" }
2147
3189
  },
2148
3190
  emits: ["update:draft", "update:model", "update:approvalMode", "files", "removeAttachment", "send", "stop"],
2149
- setup(e, { emit: c }) {
2150
- const t = e, i = c, l = S();
2151
- function r(b) {
2152
- i("update:draft", b.target.value);
3191
+ setup(e, { emit: d }) {
3192
+ const a = e, o = d, s = M();
3193
+ function u(c) {
3194
+ o("update:draft", c.target.value);
2153
3195
  }
2154
- function n(b) {
2155
- b.key !== "Enter" || b.shiftKey || b.isComposing || (b.preventDefault(), !t.loading && t.draft.trim() && !t.disabled && !t.waitingApproval && i("send"));
3196
+ function i(c) {
3197
+ c.key !== "Enter" || c.shiftKey || c.isComposing || (c.preventDefault(), !a.loading && a.draft.trim() && !a.disabled && !a.waitingApproval && o("send"));
2156
3198
  }
2157
- function u(b) {
2158
- const g = b.target, v = Array.from(g.files ?? []);
2159
- v.length && i("files", v), g.value = "";
3199
+ function n(c) {
3200
+ const y = c.target, h = Array.from(y.files ?? []);
3201
+ h.length && o("files", h), y.value = "";
2160
3202
  }
2161
- return (b, g) => (a(), o("div", sn, [
2162
- $(Ja, {
3203
+ return (c, y) => (t(), l("div", Vl, [
3204
+ x(Il, {
2163
3205
  attachments: e.attachments,
2164
3206
  label: e.attachmentsLabel,
2165
- onRemove: g[0] || (g[0] = (v) => i("removeAttachment", v))
3207
+ onRemove: y[0] || (y[0] = (h) => o("removeAttachment", h))
2166
3208
  }, null, 8, ["attachments", "label"]),
2167
- s("textarea", {
3209
+ r("textarea", {
2168
3210
  value: e.draft,
2169
3211
  placeholder: e.waitingApproval ? e.waitingLabel : e.placeholder,
2170
3212
  disabled: e.disabled || e.waitingApproval,
2171
3213
  rows: "2",
2172
- onInput: r,
2173
- onKeydown: n
2174
- }, null, 40, rn),
2175
- s("div", dn, [
2176
- s("input", {
3214
+ onInput: u,
3215
+ onKeydown: i
3216
+ }, null, 40, Ul),
3217
+ r("div", ql, [
3218
+ r("input", {
2177
3219
  ref_key: "fileInput",
2178
- ref: l,
3220
+ ref: s,
2179
3221
  type: "file",
2180
3222
  multiple: "",
2181
3223
  class: "dsea-agent-composer__file-input",
2182
- onChange: u
3224
+ onChange: n
2183
3225
  }, null, 544),
2184
- s("button", {
3226
+ r("button", {
2185
3227
  type: "button",
2186
3228
  class: "dsea-agent-composer__icon",
2187
3229
  disabled: e.disabled || e.waitingApproval,
2188
3230
  "aria-label": e.attachLabel,
2189
3231
  title: e.attachLabel,
2190
- onClick: g[1] || (g[1] = (v) => {
2191
- var m;
2192
- return (m = l.value) == null ? void 0 : m.click();
3232
+ onClick: y[1] || (y[1] = (h) => {
3233
+ var p;
3234
+ return (p = s.value) == null ? void 0 : p.click();
2193
3235
  })
2194
3236
  }, [
2195
- $(y(w), {
3237
+ x(f(L), {
2196
3238
  icon: "lucide:paperclip",
2197
3239
  size: 18
2198
3240
  })
2199
- ], 8, cn),
2200
- s("select", {
3241
+ ], 8, Hl),
3242
+ r("select", {
2201
3243
  value: e.approvalMode,
2202
3244
  "aria-label": e.approvalLabel,
2203
3245
  disabled: e.disabled || e.waitingApproval,
2204
- onChange: g[2] || (g[2] = (v) => i("update:approvalMode", v.target.value))
3246
+ onChange: y[2] || (y[2] = (h) => o("update:approvalMode", h.target.value))
2205
3247
  }, [
2206
- (a(!0), o(x, null, M(e.approvalModes, (v) => (a(), o("option", {
2207
- key: v.value,
2208
- value: v.value
2209
- }, d(v.label), 9, mn))), 128))
2210
- ], 40, un),
2211
- $(on, {
3248
+ (t(!0), l(F, null, K(e.approvalModes, (h) => (t(), l("option", {
3249
+ key: h.value,
3250
+ value: h.value
3251
+ }, m(h.label), 9, Ql))), 128))
3252
+ ], 40, jl),
3253
+ x(Ol, {
2212
3254
  model: e.model,
2213
3255
  models: e.models,
2214
3256
  loading: e.modelsLoading,
2215
3257
  disabled: e.disabled || e.loading || e.waitingApproval,
2216
3258
  label: e.modelLabel,
2217
- "onUpdate:model": g[3] || (g[3] = (v) => i("update:model", v))
3259
+ "onUpdate:model": y[3] || (y[3] = (h) => o("update:model", h))
2218
3260
  }, null, 8, ["model", "models", "loading", "disabled", "label"]),
2219
- s("button", {
3261
+ r("button", {
2220
3262
  type: "button",
2221
3263
  class: "dsea-agent-composer__send",
2222
3264
  disabled: !e.loading && (!e.draft.trim() || e.disabled || e.waitingApproval),
2223
3265
  "aria-label": e.loading ? e.stopLabel : e.sendLabel,
2224
3266
  title: e.loading ? e.stopLabel : e.sendLabel,
2225
- onClick: g[4] || (g[4] = (v) => i(e.loading ? "stop" : "send"))
3267
+ onClick: y[4] || (y[4] = (h) => o(e.loading ? "stop" : "send"))
2226
3268
  }, [
2227
- $(y(w), {
3269
+ x(f(L), {
2228
3270
  icon: e.loading ? "lucide:square" : "lucide:send",
2229
3271
  size: 18
2230
3272
  }, null, 8, ["icon"])
2231
- ], 8, bn)
3273
+ ], 8, Xl)
2232
3274
  ])
2233
3275
  ]));
2234
3276
  }
2235
3277
  });
2236
- const gl = /* @__PURE__ */ A(vn, [["__scopeId", "data-v-f5f922c2"]]), pn = { key: 0 }, gn = { class: "dsea-agent-approval__status" }, hn = {
3278
+ const Bo = /* @__PURE__ */ W(Gl, [["__scopeId", "data-v-f5f922c2"]]), Yl = { key: 0 }, Jl = { class: "dsea-agent-approval__status" }, Zl = {
2237
3279
  key: 0,
2238
3280
  class: "dsea-agent-approval__tool"
2239
- }, fn = { key: 1 }, yn = {
3281
+ }, eo = { key: 1 }, to = {
2240
3282
  key: 2,
2241
3283
  class: "dsea-agent-approval__meta"
2242
- }, kn = {
3284
+ }, ao = {
2243
3285
  key: 3,
2244
3286
  class: "dsea-agent-approval__reason"
2245
- }, _n = { key: 4 }, wn = ["disabled"], $n = ["disabled"], Ln = /* @__PURE__ */ k({
3287
+ }, no = { key: 4 }, lo = ["disabled"], oo = ["disabled"], io = /* @__PURE__ */ P({
2246
3288
  __name: "AgentApprovalCard",
2247
3289
  props: {
2248
3290
  approval: {},
@@ -2250,8 +3292,8 @@ const gl = /* @__PURE__ */ A(vn, [["__scopeId", "data-v-f5f922c2"]]), pn = { key
2250
3292
  labels: {}
2251
3293
  },
2252
3294
  emits: ["resolve"],
2253
- setup(e, { emit: c }) {
2254
- const t = e, i = c, l = {
3295
+ setup(e, { emit: d }) {
3296
+ const a = e, o = d, s = {
2255
3297
  status: {
2256
3298
  pending: "Approval needed",
2257
3299
  approved: "Approved",
@@ -2268,364 +3310,123 @@ const gl = /* @__PURE__ */ A(vn, [["__scopeId", "data-v-f5f922c2"]]), pn = { key
2268
3310
  expires: "Expires",
2269
3311
  reject: "Reject",
2270
3312
  approve: "Approve"
2271
- }, r = I(() => {
2272
- var n, u;
3313
+ }, u = E(() => {
3314
+ var i, n;
2273
3315
  return {
2274
- ...l,
2275
- ...t.labels,
2276
- status: { ...l.status, ...(n = t.labels) == null ? void 0 : n.status },
2277
- risk: { ...l.risk, ...(u = t.labels) == null ? void 0 : u.risk }
3316
+ ...s,
3317
+ ...a.labels,
3318
+ status: { ...s.status, ...(i = a.labels) == null ? void 0 : i.status },
3319
+ risk: { ...s.risk, ...(n = a.labels) == null ? void 0 : n.risk }
2278
3320
  };
2279
3321
  });
2280
- return (n, u) => (a(), o("article", {
2281
- class: N(["dsea-agent-approval", `dsea-agent-approval--${e.approval.status}`])
3322
+ return (i, n) => (t(), l("article", {
3323
+ class: U(["dsea-agent-approval", `dsea-agent-approval--${e.approval.status}`])
2282
3324
  }, [
2283
- s("header", null, [
2284
- s("div", null, [
2285
- s("h2", null, d(r.value.status[e.approval.status] || e.approval.status), 1),
2286
- e.approval.summary ? (a(), o("p", pn, d(e.approval.summary), 1)) : p("", !0)
3325
+ r("header", null, [
3326
+ r("div", null, [
3327
+ r("h2", null, m(u.value.status[e.approval.status] || e.approval.status), 1),
3328
+ e.approval.summary ? (t(), l("p", Yl, m(e.approval.summary), 1)) : b("", !0)
2287
3329
  ]),
2288
- s("span", gn, d(r.value.risk[e.approval.riskLevel || "read"] || e.approval.riskLevel), 1)
3330
+ r("span", Jl, m(u.value.risk[e.approval.riskLevel || "read"] || e.approval.riskLevel), 1)
2289
3331
  ]),
2290
- e.approval.toolName ? (a(), o("p", hn, [
2291
- z(d(r.value.tool) + ": ", 1),
2292
- s("code", null, d(e.approval.toolName), 1)
2293
- ])) : p("", !0),
2294
- e.approval.details ? (a(), o("details", fn, [
2295
- s("summary", null, d(r.value.details), 1),
2296
- s("pre", null, d(e.approval.details), 1)
2297
- ])) : p("", !0),
2298
- e.approval.expiresAt ? (a(), o("p", yn, d(r.value.expires) + ": " + d(e.approval.expiresAt), 1)) : p("", !0),
2299
- e.approval.reason ? (a(), o("p", kn, d(e.approval.reason), 1)) : p("", !0),
2300
- e.approval.status === "pending" ? (a(), o("footer", _n, [
2301
- s("button", {
3332
+ e.approval.toolName ? (t(), l("p", Zl, [
3333
+ Q(m(u.value.tool) + ": ", 1),
3334
+ r("code", null, m(e.approval.toolName), 1)
3335
+ ])) : b("", !0),
3336
+ e.approval.details ? (t(), l("details", eo, [
3337
+ r("summary", null, m(u.value.details), 1),
3338
+ r("pre", null, m(e.approval.details), 1)
3339
+ ])) : b("", !0),
3340
+ e.approval.expiresAt ? (t(), l("p", to, m(u.value.expires) + ": " + m(e.approval.expiresAt), 1)) : b("", !0),
3341
+ e.approval.reason ? (t(), l("p", ao, m(e.approval.reason), 1)) : b("", !0),
3342
+ e.approval.status === "pending" ? (t(), l("footer", no, [
3343
+ r("button", {
2302
3344
  type: "button",
2303
3345
  disabled: e.busy,
2304
- onClick: u[0] || (u[0] = (b) => i("resolve", "reject"))
2305
- }, d(r.value.reject), 9, wn),
2306
- s("button", {
3346
+ onClick: n[0] || (n[0] = (c) => o("resolve", "reject"))
3347
+ }, m(u.value.reject), 9, lo),
3348
+ r("button", {
2307
3349
  type: "button",
2308
3350
  class: "dsea-agent-approval__approve",
2309
3351
  disabled: e.busy,
2310
- onClick: u[1] || (u[1] = (b) => i("resolve", "approve"))
2311
- }, d(r.value.approve), 9, $n)
2312
- ])) : p("", !0)
3352
+ onClick: n[1] || (n[1] = (c) => o("resolve", "approve"))
3353
+ }, m(u.value.approve), 9, oo)
3354
+ ])) : b("", !0)
2313
3355
  ], 2));
2314
3356
  }
2315
3357
  });
2316
- const hl = /* @__PURE__ */ A(Ln, [["__scopeId", "data-v-88695aee"]]), Cn = { class: "dsea-admin-tabs" }, Sn = {
2317
- class: "dsea-admin-tabs__list",
2318
- role: "tablist"
2319
- }, xn = ["aria-selected", "onClick"], An = ["aria-label", "onClick"], Mn = {
2320
- key: 0,
2321
- class: "dsea-admin-tabs__tools"
2322
- }, Tn = ["aria-label"], Bn = ["aria-label"], fl = /* @__PURE__ */ k({
2323
- __name: "AdminTabs",
2324
- props: {
2325
- tabs: {},
2326
- activeKey: {},
2327
- labels: {},
2328
- navigateOnSelect: { type: Boolean, default: !0 }
2329
- },
2330
- emits: ["select", "close", "refresh", "closeAction"],
2331
- setup(e, { emit: c }) {
2332
- const t = e, i = c, { ports: l } = q(), r = I(() => [
2333
- { event: "left", text: t.labels.closeLeft },
2334
- { event: "right", text: t.labels.closeRight },
2335
- { event: "others", text: t.labels.closeOthers },
2336
- { event: "all", text: t.labels.closeAll }
2337
- ]);
2338
- function n(g) {
2339
- i("select", g), t.navigateOnSelect && l.navigation.go(g);
2340
- }
2341
- function u(g) {
2342
- i("close", g);
2343
- }
2344
- function b(g) {
2345
- g && i("closeAction", g.event, t.activeKey);
2346
- }
2347
- return (g, v) => (a(), o("div", Cn, [
2348
- s("div", Sn, [
2349
- (a(!0), o(x, null, M(e.tabs, (m) => (a(), o("div", {
2350
- key: m.key,
2351
- class: N(["dsea-admin-tabs__item", { "dsea-admin-tabs__item--active": m.key === e.activeKey }])
2352
- }, [
2353
- s("button", {
2354
- type: "button",
2355
- role: "tab",
2356
- "aria-selected": m.key === e.activeKey,
2357
- class: "dsea-admin-tabs__select",
2358
- onClick: (L) => n(m.key)
2359
- }, [
2360
- m.icon ? (a(), P(y(w), {
2361
- key: 0,
2362
- icon: m.icon,
2363
- size: 14
2364
- }, null, 8, ["icon"])) : p("", !0),
2365
- s("span", null, d(m.label), 1)
2366
- ], 8, xn),
2367
- m.affix ? p("", !0) : (a(), o("button", {
2368
- key: 0,
2369
- type: "button",
2370
- class: "dsea-admin-tabs__close",
2371
- "aria-label": `${e.labels.close}: ${m.label}`,
2372
- onClick: (L) => u(m.key)
2373
- }, [
2374
- $(y(w), {
2375
- icon: "lucide:x",
2376
- size: 14
2377
- })
2378
- ], 8, An))
2379
- ], 2))), 128))
2380
- ]),
2381
- e.tabs.length ? (a(), o("div", Mn, [
2382
- s("button", {
2383
- type: "button",
2384
- "aria-label": e.labels.refresh,
2385
- onClick: v[0] || (v[0] = (m) => i("refresh", e.activeKey))
2386
- }, [
2387
- $(y(w), {
2388
- icon: "lucide:refresh-cw",
2389
- size: 16
2390
- })
2391
- ], 8, Tn),
2392
- $(y(re), {
2393
- "drop-menu-list": r.value,
2394
- trigger: ["click"],
2395
- onMenuEvent: b
2396
- }, {
2397
- default: j(() => [
2398
- s("button", {
2399
- type: "button",
2400
- "aria-label": e.labels.actions
2401
- }, [
2402
- $(y(w), {
2403
- icon: "lucide:chevron-down",
2404
- size: 16
2405
- })
2406
- ], 8, Bn)
2407
- ]),
2408
- _: 1
2409
- }, 8, ["drop-menu-list"])
2410
- ])) : p("", !0)
2411
- ]));
2412
- }
2413
- });
2414
- function yl(e, c, t) {
2415
- const i = e.findIndex((l) => l.key === c);
2416
- return i < 0 && t !== "all" ? [...e] : e.filter((l, r) => {
2417
- if (l.affix)
3358
+ const Fo = /* @__PURE__ */ W(io, [["__scopeId", "data-v-88695aee"]]);
3359
+ function Eo(e, d, a) {
3360
+ const o = e.findIndex((s) => s.key === d);
3361
+ return o < 0 && a !== "all" ? [...e] : e.filter((s, u) => {
3362
+ if (s.affix)
2418
3363
  return !0;
2419
- switch (t) {
3364
+ switch (a) {
2420
3365
  case "current":
2421
- return l.key !== c;
3366
+ return s.key !== d;
2422
3367
  case "left":
2423
- return r >= i;
3368
+ return u >= o;
2424
3369
  case "right":
2425
- return r <= i;
3370
+ return u <= o;
2426
3371
  case "others":
2427
- return l.key === c;
3372
+ return s.key === d;
2428
3373
  case "all":
2429
3374
  return !1;
2430
3375
  }
2431
3376
  });
2432
3377
  }
2433
- function kl(e, c) {
2434
- var t;
2435
- return e.some((i) => i.key === c) ? c : (t = e[e.length - 1]) == null ? void 0 : t.key;
3378
+ function Io(e, d) {
3379
+ var a;
3380
+ return e.some((o) => o.key === d) ? d : (a = e[e.length - 1]) == null ? void 0 : a.key;
2436
3381
  }
2437
- const Pn = { class: "dsea-settings-panel" }, In = ["for"], En = { key: 1 }, Fn = ["aria-label"], Nn = ["aria-label", "aria-pressed", "disabled", "onClick"], zn = ["aria-label"], Dn = ["aria-pressed", "disabled", "onClick"], Kn = /* @__PURE__ */ k({
2438
- __name: "SettingsPanel",
2439
- props: {
2440
- sections: {}
2441
- },
2442
- emits: ["change"],
2443
- setup(e, { emit: c }) {
2444
- const t = c;
2445
- function i(u, b) {
2446
- t("change", u, b);
2447
- }
2448
- function l(u, b) {
2449
- typeof b == "boolean" && i(u, b);
2450
- }
2451
- function r(u, b) {
2452
- (typeof b == "string" || typeof b == "number") && i(u, b);
2453
- }
2454
- function n(u, b) {
2455
- typeof b == "number" && Number.isFinite(b) && i(u, b);
2456
- }
2457
- return (u, b) => (a(), o("div", Pn, [
2458
- (a(!0), o(x, null, M(e.sections, (g) => (a(), o("section", {
2459
- key: g.title,
2460
- class: "dsea-settings-panel__section"
2461
- }, [
2462
- s("h3", null, d(g.title), 1),
2463
- (a(!0), o(x, null, M(g.items, (v) => (a(), o("div", {
2464
- key: v.key,
2465
- class: N(["dsea-settings-panel__row", { "dsea-settings-panel__row--stacked": v.type === "color" || v.type === "mode" }])
2466
- }, [
2467
- v.type === "switch" || v.type === "select" || v.type === "number" ? (a(), o("label", {
2468
- key: 0,
2469
- for: v.key
2470
- }, d(v.label), 9, In)) : (a(), o("span", En, d(v.label), 1)),
2471
- v.type === "switch" ? (a(), P(y(ye), {
2472
- key: 2,
2473
- id: v.key,
2474
- checked: v.value,
2475
- disabled: v.disabled,
2476
- onChange: (m) => l(v.key, m)
2477
- }, null, 8, ["id", "checked", "disabled", "onChange"])) : v.type === "select" ? (a(), P(y(ke), {
2478
- key: 3,
2479
- id: v.key,
2480
- value: v.value,
2481
- options: v.options,
2482
- disabled: v.disabled,
2483
- class: "dsea-settings-panel__select",
2484
- onChange: (m) => r(v.key, m)
2485
- }, null, 8, ["id", "value", "options", "disabled", "onChange"])) : v.type === "number" ? (a(), P(y(_e), {
2486
- key: 4,
2487
- id: v.key,
2488
- value: v.value,
2489
- min: v.min,
2490
- max: v.max,
2491
- step: v.step,
2492
- disabled: v.disabled,
2493
- class: "dsea-settings-panel__number",
2494
- onChange: (m) => n(v.key, m)
2495
- }, null, 8, ["id", "value", "min", "max", "step", "disabled", "onChange"])) : v.type === "color" ? (a(), o("div", {
2496
- key: 5,
2497
- class: "dsea-settings-panel__colors",
2498
- role: "group",
2499
- "aria-label": v.label
2500
- }, [
2501
- (a(!0), o(x, null, M(v.colors, (m) => (a(), o("button", {
2502
- key: m,
2503
- type: "button",
2504
- class: N(["dsea-settings-panel__swatch", { "dsea-settings-panel__swatch--active": v.value === m }]),
2505
- style: ie({ backgroundColor: m }),
2506
- "aria-label": m,
2507
- "aria-pressed": v.value === m,
2508
- disabled: v.disabled,
2509
- onClick: (L) => i(v.key, m)
2510
- }, [
2511
- v.value === m ? (a(), P(y(w), {
2512
- key: 0,
2513
- icon: "lucide:check",
2514
- size: 14
2515
- })) : p("", !0)
2516
- ], 14, Nn))), 128))
2517
- ], 8, Fn)) : v.type === "mode" ? (a(), o("div", {
2518
- key: 6,
2519
- class: "dsea-settings-panel__modes",
2520
- role: "group",
2521
- "aria-label": v.label
2522
- }, [
2523
- (a(!0), o(x, null, M(v.options, (m) => (a(), o("button", {
2524
- key: m.value,
2525
- type: "button",
2526
- class: N({ active: v.value === m.value }),
2527
- "aria-pressed": v.value === m.value,
2528
- disabled: v.disabled,
2529
- onClick: (L) => i(v.key, m.value)
2530
- }, [
2531
- m.icon ? (a(), P(y(w), {
2532
- key: 0,
2533
- icon: m.icon,
2534
- size: 16
2535
- }, null, 8, ["icon"])) : p("", !0),
2536
- z(" " + d(m.label), 1)
2537
- ], 10, Dn))), 128))
2538
- ], 8, zn)) : p("", !0)
2539
- ], 2))), 128))
2540
- ]))), 128))
2541
- ]));
2542
- }
2543
- });
2544
- const _l = /* @__PURE__ */ k({
2545
- __name: "AdminSettingsDrawer",
2546
- props: {
2547
- open: { type: Boolean },
2548
- title: {},
2549
- sections: {},
2550
- width: { default: 340 },
2551
- resetLabel: {}
2552
- },
2553
- emits: ["update:open", "change", "reset"],
2554
- setup(e, { emit: c }) {
2555
- const t = c;
2556
- return (i, l) => (a(), P(y(we), {
2557
- visible: e.open,
2558
- title: e.title,
2559
- placement: "right",
2560
- width: e.width,
2561
- onClose: l[2] || (l[2] = (r) => t("update:open", !1))
2562
- }, fe({
2563
- default: j(() => [
2564
- $(Kn, {
2565
- sections: e.sections,
2566
- onChange: l[0] || (l[0] = (r, n) => t("change", r, n))
2567
- }, null, 8, ["sections"])
2568
- ]),
2569
- _: 2
2570
- }, [
2571
- i.$slots.footer || e.resetLabel ? {
2572
- name: "footer",
2573
- fn: j(() => [
2574
- B(i.$slots, "footer", {}, () => [
2575
- s("button", {
2576
- type: "button",
2577
- class: "dsea-settings-drawer__reset",
2578
- onClick: l[1] || (l[1] = (r) => t("reset"))
2579
- }, d(e.resetLabel), 1)
2580
- ])
2581
- ]),
2582
- key: "0"
2583
- } : void 0
2584
- ]), 1032, ["visible", "title", "width"]));
2585
- }
2586
- });
2587
3382
  export {
2588
- pl as AdminAboutView,
2589
- Jn as AdminAppSwitcher,
2590
- ol as AdminBreadcrumb,
2591
- vl as AdminErrorLogView,
2592
- dl as AdminExceptionView,
2593
- Yn as AdminFullscreenButton,
2594
- sl as AdminIframeView,
2595
- ll as AdminLayout,
2596
- rl as AdminLockView,
2597
- il as AdminLoginView,
2598
- nl as AdminNotificationCenter,
2599
- ml as AdminPasswordForm,
2600
- ul as AdminProfileForm,
2601
- cl as AdminProfileTabs,
2602
- bl as AdminSecuritySettings,
2603
- _l as AdminSettingsDrawer,
2604
- fl as AdminTabs,
2605
- al as AdminUserMenu,
2606
- hl as AgentApprovalCard,
2607
- Ja as AgentAttachmentList,
2608
- gl as AgentComposer,
2609
- on as AgentModelSelect,
2610
- Xn as AppDarkModeToggle,
2611
- Gn as AppLocalePicker,
2612
- Ce as AppLogo,
2613
- el as AppProvider,
2614
- tl as AppSearch,
2615
- te as BasicMenu,
2616
- Kn as SettingsPanel,
2617
- jn as SimpleMenu,
2618
- Qn as SimpleMenuTag,
2619
- de as adminMenuKey,
2620
- ne as adminShellMessages,
2621
- me as appProviderKey,
2622
- yl as closeTabs,
2623
- Hn as createAdminMenuPlugin,
2624
- be as createAppProviderContext,
2625
- Wn as getAdminShellMessage,
2626
- ee as getAllParentPath,
2627
- On as legacyAdminMessages,
2628
- kl as nextActiveTab,
2629
- ce as useAdminMenuPort,
2630
- Zn as useAppProviderContext
3383
+ Po as AdminAboutView,
3384
+ Mt as AdminAppSwitcher,
3385
+ _a as AdminBreadcrumb,
3386
+ To as AdminErrorLogView,
3387
+ Co as AdminExceptionView,
3388
+ vt as AdminFullscreenButton,
3389
+ So as AdminIframeView,
3390
+ ko as AdminLayout,
3391
+ $o as AdminLockView,
3392
+ _o as AdminLoginView,
3393
+ na as AdminNotificationCenter,
3394
+ Mo as AdminPasswordForm,
3395
+ Lo as AdminProfileForm,
3396
+ xo as AdminProfileTabs,
3397
+ Ao as AdminSecuritySettings,
3398
+ Va as AdminSettingsDrawer,
3399
+ Ea as AdminTabs,
3400
+ qt as AdminUserMenu,
3401
+ Fo as AgentApprovalCard,
3402
+ Il as AgentAttachmentList,
3403
+ Bo as AgentComposer,
3404
+ Ol as AgentModelSelect,
3405
+ po as AppDarkModeToggle,
3406
+ rt as AppLocalePicker,
3407
+ ve as AppLogo,
3408
+ yo as AppProvider,
3409
+ zt as AppSearch,
3410
+ oe as BasicMenu,
3411
+ wo as ClassicAdminLayout,
3412
+ Oa as SettingsPanel,
3413
+ bo as SimpleMenu,
3414
+ ho as SimpleMenuTag,
3415
+ Ee as adminMenuKey,
3416
+ Me as adminShellMessages,
3417
+ Ne as appProviderKey,
3418
+ ae as classicLayoutDefaults,
3419
+ Eo as closeTabs,
3420
+ go as createAdminMenuPlugin,
3421
+ ze as createAppProviderContext,
3422
+ qa as createClassicLayoutSettingsController,
3423
+ De as firstClassicPage,
3424
+ mo as getAdminShellMessage,
3425
+ ue as getAllParentPath,
3426
+ vo as legacyAdminMessages,
3427
+ Io as nextActiveTab,
3428
+ ke as normalizeClassicLayoutSettings,
3429
+ Ha as resolveClassicNavigation,
3430
+ Se as useAdminMenuPort,
3431
+ fo as useAppProviderContext
2631
3432
  };