mgv-backoffice 1.13.0 → 1.16.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/README.md +43 -1
- package/dist/src/components/BaseCopyButton.vue.d.ts +26 -0
- package/dist/src/components/BaseModalShell.vue.d.ts +18 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/ui-lib.css +1 -1
- package/dist/ui-lib.js +261 -187
- package/dist/ui-lib.umd.cjs +1 -1
- package/package.json +1 -1
- package/src/components/BaseCopyButton.vue +135 -0
- package/src/components/BaseEntityPickerModal.vue +1 -1
- package/src/components/BaseModalShell.vue +52 -0
- package/src/index.ts +1 -0
package/dist/ui-lib.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fragment as e, Teleport as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, effectScope as u, nextTick as d, normalizeClass as f, onBeforeUnmount as p, onMounted as m, onScopeDispose as h, onUnmounted as g, openBlock as _, ref as v, renderList as y, renderSlot as b, resolveComponent as x, resolveDynamicComponent as S, toDisplayString as C, unref as w, useSlots as T, vModelText as E, vShow as D, watch as O, withCtx as k, withDirectives as A, withKeys as j, withModifiers as M } from "vue";
|
|
2
|
-
import { ArrowDownIcon as ee, ArrowUpIcon as te, Bars3Icon as N, CheckCircleIcon as ne, ChevronRightIcon as re,
|
|
3
|
-
import { HomeIcon as
|
|
4
|
-
import { useRoute as
|
|
2
|
+
import { ArrowDownIcon as ee, ArrowUpIcon as te, Bars3Icon as N, CheckCircleIcon as ne, ChevronRightIcon as re, ClipboardDocumentCheckIcon as ie, ClipboardDocumentIcon as ae, DocumentDuplicateIcon as oe, ExclamationCircleIcon as se, ExclamationTriangleIcon as P, FolderIcon as ce, InformationCircleIcon as le, MagnifyingGlassIcon as ue, XMarkIcon as F } from "@heroicons/vue/24/outline";
|
|
3
|
+
import { HomeIcon as de } from "@heroicons/vue/24/solid";
|
|
4
|
+
import { useRoute as fe, useRouter as pe } from "vue-router";
|
|
5
5
|
//#region src/enums/AlertEnum.ts
|
|
6
6
|
var I = /* @__PURE__ */ function(e) {
|
|
7
7
|
return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
|
|
@@ -10,7 +10,7 @@ var I = /* @__PURE__ */ function(e) {
|
|
|
10
10
|
}({});
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/utils/util.ts
|
|
13
|
-
function
|
|
13
|
+
function me(e) {
|
|
14
14
|
let t = "red";
|
|
15
15
|
switch (e) {
|
|
16
16
|
case I.ERROR:
|
|
@@ -28,7 +28,7 @@ function fe(e) {
|
|
|
28
28
|
}
|
|
29
29
|
return t;
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function he(e) {
|
|
32
32
|
let t = "red";
|
|
33
33
|
switch (e) {
|
|
34
34
|
case L.GREEN:
|
|
@@ -57,7 +57,7 @@ function pe(e) {
|
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
59
|
//#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
|
|
60
|
-
var
|
|
60
|
+
var ge = { class: "font-medium pl-1" }, _e = /* @__PURE__ */ l({
|
|
61
61
|
__name: "BaseAlert",
|
|
62
62
|
props: {
|
|
63
63
|
title: {
|
|
@@ -74,15 +74,15 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
|
|
|
74
74
|
setup(e) {
|
|
75
75
|
let t = e;
|
|
76
76
|
function n() {
|
|
77
|
-
let e =
|
|
77
|
+
let e = me(t.color);
|
|
78
78
|
return "flex items-center p-4 mb-4 text-sm text-" + e + "-800 border border-" + e + "-300 rounded-lg bg-" + e + "-50 dark:bg-gray-800 dark:text-" + e + "-400 dark:border-" + e + "-800";
|
|
79
79
|
}
|
|
80
80
|
return (t, r) => (_(), a("div", {
|
|
81
81
|
class: f(n()),
|
|
82
82
|
role: "alert"
|
|
83
|
-
}, [c(w(
|
|
83
|
+
}, [c(w(le), { class: "w-6 h-6 text-gray-400" }), o("div", null, [o("span", ge, C(e.title), 1)])], 2));
|
|
84
84
|
}
|
|
85
|
-
}),
|
|
85
|
+
}), ve = "bg-red-100 text-red-700 border-red-200", R = /* @__PURE__ */ l({
|
|
86
86
|
__name: "BaseBadge",
|
|
87
87
|
props: { color: {
|
|
88
88
|
type: String,
|
|
@@ -96,19 +96,19 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
|
|
|
96
96
|
[L.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
|
|
97
97
|
[L.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
|
|
98
98
|
[L.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
|
|
99
|
-
}, c = n(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${o.color && s[o.color] ||
|
|
99
|
+
}, c = n(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${o.color && s[o.color] || ve}`);
|
|
100
100
|
return (e, t) => r.value ? (_(), a("span", {
|
|
101
101
|
key: 0,
|
|
102
102
|
class: f(c.value)
|
|
103
103
|
}, [b(e.$slots, "default")], 2)) : i("", !0);
|
|
104
104
|
}
|
|
105
|
-
}),
|
|
105
|
+
}), ye = {
|
|
106
106
|
class: "flex px-5 py-3 text-gray-700 border border-gray-200 rounded-lg bg-gray-50 dark:bg-gray-800 dark:border-gray-700",
|
|
107
107
|
"aria-label": "Breadcrumb"
|
|
108
|
-
},
|
|
108
|
+
}, be = { class: "inline-flex items-center space-x-1 md:space-x-3" }, xe = {
|
|
109
109
|
class: "inline-flex items-center",
|
|
110
110
|
style: { "margin-left": "0" }
|
|
111
|
-
},
|
|
111
|
+
}, Se = /* @__PURE__ */ l({
|
|
112
112
|
__name: "BaseBreadcrumb",
|
|
113
113
|
props: {
|
|
114
114
|
items: {
|
|
@@ -133,11 +133,11 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
|
|
|
133
133
|
});
|
|
134
134
|
return (t, n) => {
|
|
135
135
|
let r = x("router-link");
|
|
136
|
-
return _(), a("nav",
|
|
136
|
+
return _(), a("nav", ye, [o("ol", be, [o("li", xe, [c(r, {
|
|
137
137
|
to: "/",
|
|
138
138
|
class: "inline-flex items-center text-sm font-medium text-gray-700 hover:text-blue-600 dark:text-gray-400 dark:hover:text-white"
|
|
139
139
|
}, {
|
|
140
|
-
default: k(() => [c(w(
|
|
140
|
+
default: k(() => [c(w(de), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= s(" Home ", -1)]),
|
|
141
141
|
_: 1
|
|
142
142
|
})]), (_(!0), a(e, null, y(i.value, (e, t) => (_(), a("li", {
|
|
143
143
|
key: t,
|
|
@@ -156,10 +156,10 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
|
|
|
156
156
|
return e.RED = "RED", e.BLUE = "BLUE", e.WHITE = "WHITE", e.DARK = "DARK", e.GREEN = "GREEN", e.EMERALD = "EMERALD", e.YELLOW = "YELLOW", e.PURPLE = "PURPLE", e.SKY = "SKY", e.GRAY = "GRAY", e.AMBER = "AMBER", e;
|
|
157
157
|
}({}), B = /* @__PURE__ */ function(e) {
|
|
158
158
|
return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
|
|
159
|
-
}({}), V = v(!1),
|
|
160
|
-
function
|
|
161
|
-
if (!
|
|
162
|
-
if (
|
|
159
|
+
}({}), V = v(!1), Ce = !1, H = "mgv-theme";
|
|
160
|
+
function we(e) {
|
|
161
|
+
if (!Ce) {
|
|
162
|
+
if (Ce = !0, H = e, typeof window < "u") {
|
|
163
163
|
let e = window.localStorage?.getItem(H);
|
|
164
164
|
e ? V.value = e === "dark" : typeof window.matchMedia == "function" && (V.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
165
165
|
}
|
|
@@ -171,7 +171,7 @@ function Se(e) {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
function U(e) {
|
|
174
|
-
|
|
174
|
+
we(e?.storageKey ?? H);
|
|
175
175
|
function t() {
|
|
176
176
|
V.value = !V.value;
|
|
177
177
|
}
|
|
@@ -182,17 +182,17 @@ function U(e) {
|
|
|
182
182
|
}
|
|
183
183
|
//#endregion
|
|
184
184
|
//#region src/components/BaseButton.vue?vue&type=script&setup=true&lang.ts
|
|
185
|
-
var
|
|
185
|
+
var Te = [
|
|
186
186
|
"type",
|
|
187
187
|
"disabled",
|
|
188
188
|
"onClick"
|
|
189
|
-
],
|
|
189
|
+
], Ee = {
|
|
190
190
|
key: 0,
|
|
191
191
|
class: "inline-flex items-center"
|
|
192
|
-
},
|
|
192
|
+
}, De = { key: 1 }, Oe = { key: 2 }, ke = ["type", "disabled"], Ae = {
|
|
193
193
|
key: 0,
|
|
194
194
|
class: "inline-flex items-center"
|
|
195
|
-
},
|
|
195
|
+
}, je = { key: 1 }, Me = { key: 2 }, Ne = /* @__PURE__ */ l({
|
|
196
196
|
__name: "BaseButton",
|
|
197
197
|
props: {
|
|
198
198
|
description: {
|
|
@@ -428,7 +428,7 @@ var Ce = [
|
|
|
428
428
|
disabled: e.isDisable || e.isLoading,
|
|
429
429
|
onClick: r
|
|
430
430
|
}, [
|
|
431
|
-
e.isLoading ? (_(), a("div",
|
|
431
|
+
e.isLoading ? (_(), a("div", Ee, [...s[0] ||= [o("svg", {
|
|
432
432
|
"aria-hidden": "true",
|
|
433
433
|
role: "status",
|
|
434
434
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -442,10 +442,10 @@ var Ce = [
|
|
|
442
442
|
d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
|
|
443
443
|
fill: "currentColor"
|
|
444
444
|
})], -1)]])) : i("", !0),
|
|
445
|
-
e.iconLeft ? i("", !0) : (_(), a("span",
|
|
445
|
+
e.iconLeft ? i("", !0) : (_(), a("span", De, C(e.description), 1)),
|
|
446
446
|
b(t.$slots, "default"),
|
|
447
|
-
e.iconLeft ? (_(), a("span",
|
|
448
|
-
], 10,
|
|
447
|
+
e.iconLeft ? (_(), a("span", Oe, C(e.description), 1)) : i("", !0)
|
|
448
|
+
], 10, Te)]),
|
|
449
449
|
_: 3
|
|
450
450
|
}, 8, ["to"])) : (_(), a("button", {
|
|
451
451
|
key: 1,
|
|
@@ -453,7 +453,7 @@ var Ce = [
|
|
|
453
453
|
class: f(l()),
|
|
454
454
|
disabled: e.isDisable || e.isLoading
|
|
455
455
|
}, [
|
|
456
|
-
e.isLoading ? (_(), a("div",
|
|
456
|
+
e.isLoading ? (_(), a("div", Ae, [...s[1] ||= [o("svg", {
|
|
457
457
|
"aria-hidden": "true",
|
|
458
458
|
role: "status",
|
|
459
459
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -467,24 +467,24 @@ var Ce = [
|
|
|
467
467
|
d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
|
|
468
468
|
fill: "currentColor"
|
|
469
469
|
})], -1)]])) : i("", !0),
|
|
470
|
-
e.iconLeft ? i("", !0) : (_(), a("span",
|
|
470
|
+
e.iconLeft ? i("", !0) : (_(), a("span", je, C(e.description), 1)),
|
|
471
471
|
b(t.$slots, "default"),
|
|
472
|
-
e.iconLeft ? (_(), a("span",
|
|
473
|
-
], 10,
|
|
472
|
+
e.iconLeft ? (_(), a("span", Me, C(e.description), 1)) : i("", !0)
|
|
473
|
+
], 10, ke));
|
|
474
474
|
};
|
|
475
475
|
}
|
|
476
476
|
}), W = /* @__PURE__ */ function(e) {
|
|
477
477
|
return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
|
|
478
|
-
}({}),
|
|
478
|
+
}({}), Pe = {
|
|
479
479
|
key: 0,
|
|
480
480
|
class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
|
|
481
|
-
},
|
|
481
|
+
}, Fe = {
|
|
482
482
|
key: 1,
|
|
483
483
|
class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
|
|
484
|
-
},
|
|
484
|
+
}, Ie = {
|
|
485
485
|
key: 2,
|
|
486
486
|
class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
|
|
487
|
-
},
|
|
487
|
+
}, Le = /* @__PURE__ */ l({
|
|
488
488
|
__name: "BaseLine",
|
|
489
489
|
props: { mode: {
|
|
490
490
|
type: String,
|
|
@@ -493,14 +493,14 @@ var Ce = [
|
|
|
493
493
|
} },
|
|
494
494
|
setup(t) {
|
|
495
495
|
return (n, r) => (_(), a(e, null, [
|
|
496
|
-
t.mode === w(W).BASE ? (_(), a("hr",
|
|
497
|
-
t.mode === w(W).BASE_SHORTER ? (_(), a("hr",
|
|
498
|
-
t.mode === w(W).SQUARE ? (_(), a("hr",
|
|
496
|
+
t.mode === w(W).BASE ? (_(), a("hr", Pe)) : i("", !0),
|
|
497
|
+
t.mode === w(W).BASE_SHORTER ? (_(), a("hr", Fe)) : i("", !0),
|
|
498
|
+
t.mode === w(W).SQUARE ? (_(), a("hr", Ie)) : i("", !0)
|
|
499
499
|
], 64));
|
|
500
500
|
}
|
|
501
501
|
}), G = /* @__PURE__ */ function(e) {
|
|
502
502
|
return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
|
|
503
|
-
}({}),
|
|
503
|
+
}({}), Re = G, ze = ["height", "width"], Be = /* @__PURE__ */ l({
|
|
504
504
|
__name: "BaseLogo",
|
|
505
505
|
props: { size: {
|
|
506
506
|
type: String,
|
|
@@ -680,17 +680,17 @@ var Ce = [
|
|
|
680
680
|
d: "m281.7 183.8h3.6v18.5h-3.6z",
|
|
681
681
|
fill: "url(#k)"
|
|
682
682
|
}, null, -1)
|
|
683
|
-
]], 8,
|
|
683
|
+
]], 8, ze))]),
|
|
684
684
|
_: 1
|
|
685
685
|
});
|
|
686
686
|
};
|
|
687
687
|
}
|
|
688
688
|
}), K = /* @__PURE__ */ function(e) {
|
|
689
689
|
return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
|
|
690
|
-
}({}),
|
|
690
|
+
}({}), Ve = ["aria-labelledby"], He = {
|
|
691
691
|
key: 0,
|
|
692
692
|
class: "p-6 text-center"
|
|
693
|
-
},
|
|
693
|
+
}, Ue = ["id"], We = { class: "flex justify-center" }, Ge = /* @__PURE__ */ l({
|
|
694
694
|
__name: "BaseModal",
|
|
695
695
|
props: {
|
|
696
696
|
title: {
|
|
@@ -732,13 +732,13 @@ var Ce = [
|
|
|
732
732
|
role: "dialog",
|
|
733
733
|
"aria-modal": "true",
|
|
734
734
|
"aria-labelledby": "modal-title-" + t.title
|
|
735
|
-
}, [t.mode === w(K).DELETE ? (_(), a("div",
|
|
736
|
-
c(w(
|
|
735
|
+
}, [t.mode === w(K).DELETE ? (_(), a("div", He, [
|
|
736
|
+
c(w(se), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
|
|
737
737
|
o("h3", {
|
|
738
738
|
id: "modal-title-" + t.title,
|
|
739
739
|
class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
|
|
740
|
-
}, " Are you sure you want to delete this " + C(t.title) + "? ", 9,
|
|
741
|
-
o("div",
|
|
740
|
+
}, " Are you sure you want to delete this " + C(t.title) + "? ", 9, Ue),
|
|
741
|
+
o("div", We, [c(s, {
|
|
742
742
|
color: w(z).RED,
|
|
743
743
|
onClick: r[1] ||= (e) => n.$emit("confirmModal"),
|
|
744
744
|
description: "Yes, I'm sure"
|
|
@@ -747,14 +747,14 @@ var Ce = [
|
|
|
747
747
|
onClick: r[2] ||= (e) => n.$emit("closeModal"),
|
|
748
748
|
description: "No, cancel"
|
|
749
749
|
}, null, 8, ["color"])])
|
|
750
|
-
])) : i("", !0)], 8,
|
|
750
|
+
])) : i("", !0)], 8, Ve)], 64);
|
|
751
751
|
};
|
|
752
752
|
}
|
|
753
753
|
}), q = (e, t) => {
|
|
754
754
|
let n = e.__vccOpts || e;
|
|
755
755
|
for (let [e, r] of t) n[e] = r;
|
|
756
756
|
return n;
|
|
757
|
-
},
|
|
757
|
+
}, Ke = /* @__PURE__ */ q(Ge, [["__scopeId", "data-v-1db4f0ac"]]), qe = /* @__PURE__ */ l({
|
|
758
758
|
__name: "BaseRow",
|
|
759
759
|
props: { bgColor: {
|
|
760
760
|
type: String,
|
|
@@ -768,7 +768,7 @@ var Ce = [
|
|
|
768
768
|
}
|
|
769
769
|
return (e, t) => (_(), a("div", { class: f(n()) }, [b(e.$slots, "default")], 2));
|
|
770
770
|
}
|
|
771
|
-
}),
|
|
771
|
+
}), Je = /* @__PURE__ */ l({
|
|
772
772
|
__name: "BaseSpinner",
|
|
773
773
|
props: {
|
|
774
774
|
size: { default: "sm" },
|
|
@@ -800,13 +800,13 @@ var Ce = [
|
|
|
800
800
|
return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
|
|
801
801
|
}({}), Y = /* @__PURE__ */ function(e) {
|
|
802
802
|
return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
|
|
803
|
-
}({}),
|
|
803
|
+
}({}), Ye = { class: "flex items-center w-full max-w-md p-4 mb-4 text-gray-500 bg-white rounded-lg shadow dark:text-gray-400 dark:bg-gray-800" }, Xe = { class: "ml-3 text-sm font-normal" }, Ze = {
|
|
804
804
|
key: 3,
|
|
805
805
|
type: "button",
|
|
806
806
|
class: "ml-auto -mx-1.5 -my-1.5 bg-white text-gray-400 hover:text-gray-900 rounded-lg focus:ring-2 focus:ring-gray-300 p-1.5 hover:bg-gray-100 inline-flex items-center justify-center h-8 w-8 dark:text-gray-500 dark:hover:text-white dark:bg-gray-800 dark:hover:bg-gray-700",
|
|
807
807
|
"data-dismiss-target": "#toast-danger",
|
|
808
808
|
"aria-label": "Close"
|
|
809
|
-
},
|
|
809
|
+
}, Qe = /* @__PURE__ */ l({
|
|
810
810
|
__name: "BaseToast",
|
|
811
811
|
props: {
|
|
812
812
|
mode: {
|
|
@@ -884,25 +884,25 @@ var Ce = [
|
|
|
884
884
|
id: "toast-top-right",
|
|
885
885
|
class: f(u()),
|
|
886
886
|
role: "alert"
|
|
887
|
-
}, [o("div",
|
|
887
|
+
}, [o("div", Ye, [
|
|
888
888
|
e.mode == w(J).ERROR ? (_(), a("div", {
|
|
889
889
|
key: 0,
|
|
890
890
|
class: f(l())
|
|
891
|
-
}, [c(w(
|
|
891
|
+
}, [c(w(se), { class: "h-6 w-6 text-red-500" }), r[0] ||= o("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == w(J).SUCCESS ? (_(), a("div", {
|
|
892
892
|
key: 1,
|
|
893
893
|
class: f(l())
|
|
894
894
|
}, [c(w(ne), { class: "h-6 w-6 text-green-500" }), r[1] ||= o("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == w(J).WARNING ? (_(), a("div", {
|
|
895
895
|
key: 2,
|
|
896
896
|
class: f(l())
|
|
897
897
|
}, [c(w(P), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= o("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : i("", !0),
|
|
898
|
-
o("div",
|
|
899
|
-
e.hasCloseIcon ? (_(), a("button",
|
|
898
|
+
o("div", Xe, C(e.description), 1),
|
|
899
|
+
e.hasCloseIcon ? (_(), a("button", Ze, [r[3] ||= o("span", { class: "sr-only" }, "Close", -1), c(w(F), {
|
|
900
900
|
class: "h-6 w-6 text-gray-500 cursor-pointer",
|
|
901
901
|
onClick: s
|
|
902
902
|
})])) : i("", !0)
|
|
903
903
|
])], 2)) : i("", !0);
|
|
904
904
|
}
|
|
905
|
-
}),
|
|
905
|
+
}), $e = { class: "w-13" }, et = /* @__PURE__ */ l({
|
|
906
906
|
__name: "ColoredSquares",
|
|
907
907
|
props: { color: {
|
|
908
908
|
type: String,
|
|
@@ -941,9 +941,9 @@ var Ce = [
|
|
|
941
941
|
}
|
|
942
942
|
return "font-bold bg-" + e + "-100 text-" + e + "-800 text-xs mr-2 px-2.5 py-0.5 rounded-full";
|
|
943
943
|
}
|
|
944
|
-
return (e, t) => (_(), a("div",
|
|
944
|
+
return (e, t) => (_(), a("div", $e, [o("div", { class: f(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [b(e.$slots, "default"), o("div", { class: f(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
|
|
945
945
|
}
|
|
946
|
-
}),
|
|
946
|
+
}), tt = { class: "flex items-start justify-between" }, nt = { class: "text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, rt = /* @__PURE__ */ l({
|
|
947
947
|
__name: "EarningsCard",
|
|
948
948
|
props: {
|
|
949
949
|
title: { default: "TOTAL EARNINGS" },
|
|
@@ -982,8 +982,8 @@ var Ce = [
|
|
|
982
982
|
return (t, n) => (_(), a("div", { class: f(["relative rounded-xl border-2 border-dashed bg-white p-6 dark:bg-slate-800", s.value.border]) }, [e.badge ? (_(), a("div", {
|
|
983
983
|
key: 0,
|
|
984
984
|
class: f(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", s.value.badge])
|
|
985
|
-
}, C(e.badge), 3)) : i("", !0), o("div",
|
|
986
|
-
o("p",
|
|
985
|
+
}, C(e.badge), 3)) : i("", !0), o("div", tt, [o("div", null, [
|
|
986
|
+
o("p", nt, C(e.title), 1),
|
|
987
987
|
o("p", { class: f(["mt-1 text-4xl font-bold", s.value.amount]) }, C(c.value), 3),
|
|
988
988
|
o("p", { class: f(["mt-1 text-sm font-medium", s.value.subtitle]) }, C(e.subtitle), 3)
|
|
989
989
|
]), o("div", { class: f(["mt-6 flex h-12 w-12 items-center justify-center rounded-xl", s.value.iconBox]) }, [(_(), a("svg", {
|
|
@@ -996,10 +996,10 @@ var Ce = [
|
|
|
996
996
|
"stroke-linejoin": "round"
|
|
997
997
|
}, [...n[0] ||= [o("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), o("polyline", { points: "16 7 22 7 22 13" }, null, -1)]], 2))], 2)])], 2));
|
|
998
998
|
}
|
|
999
|
-
}),
|
|
999
|
+
}), it = {
|
|
1000
1000
|
key: 0,
|
|
1001
1001
|
class: "font-bold text-green-800"
|
|
1002
|
-
},
|
|
1002
|
+
}, at = { key: 0 }, ot = { key: 0 }, st = "font-bold", ct = /* @__PURE__ */ l({
|
|
1003
1003
|
__name: "EuroAmount",
|
|
1004
1004
|
props: {
|
|
1005
1005
|
amount: {
|
|
@@ -1019,15 +1019,15 @@ var Ce = [
|
|
|
1019
1019
|
},
|
|
1020
1020
|
setup(t) {
|
|
1021
1021
|
let r = t, o = n(() => r.amount !== null && r.amount !== void 0), c = n(() => o.value && r.amount < 0), l = n(() => r.beforeAmount === null || r.beforeAmount === void 0 ? !1 : r.amount < r.beforeAmount), u = n(() => c.value || l.value), d = n(() => !c.value && !l.value && !(r.beforeAmount === null || r.beforeAmount === void 0));
|
|
1022
|
-
return (n, r) => (_(), a(e, null, [o.value && d.value ? (_(), a("span",
|
|
1022
|
+
return (n, r) => (_(), a(e, null, [o.value && d.value ? (_(), a("span", it, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", at, "€")) : i("", !0)])) : i("", !0), o.value && !d.value ? (_(), a("span", {
|
|
1023
1023
|
key: 1,
|
|
1024
|
-
class: f([
|
|
1025
|
-
}, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span",
|
|
1024
|
+
class: f([st, u.value ? "text-red-800" : "text-gray-800"])
|
|
1025
|
+
}, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", ot, "€")) : i("", !0)], 2)) : i("", !0)], 64));
|
|
1026
1026
|
}
|
|
1027
|
-
}),
|
|
1027
|
+
}), lt = ["onClick", "onKeydown"], ut = {
|
|
1028
1028
|
key: 1,
|
|
1029
1029
|
style: { cursor: "not-allowed" }
|
|
1030
|
-
},
|
|
1030
|
+
}, dt = /* @__PURE__ */ q(/* @__PURE__ */ l({
|
|
1031
1031
|
__name: "Pagination",
|
|
1032
1032
|
props: {
|
|
1033
1033
|
totalItems: {
|
|
@@ -1070,15 +1070,15 @@ var Ce = [
|
|
|
1070
1070
|
onClick: (t) => d(e),
|
|
1071
1071
|
onKeydown: j((t) => d(e), ["enter"]),
|
|
1072
1072
|
class: f({ active: e === s.value })
|
|
1073
|
-
}, C(e), 43,
|
|
1073
|
+
}, C(e), 43, lt)), e === 0 ? (_(), a("span", ut, "...")) : i("", !0)]))), 128))])]));
|
|
1074
1074
|
}
|
|
1075
|
-
}), [["__scopeId", "data-v-d7ebb6ac"]]),
|
|
1075
|
+
}), [["__scopeId", "data-v-d7ebb6ac"]]), ft = { key: 0 }, pt = {
|
|
1076
1076
|
key: 0,
|
|
1077
1077
|
class: "flex items-center space-x-2"
|
|
1078
|
-
},
|
|
1078
|
+
}, mt = {
|
|
1079
1079
|
key: 1,
|
|
1080
1080
|
class: "flex items-center space-x-2"
|
|
1081
|
-
},
|
|
1081
|
+
}, ht = /* @__PURE__ */ l({
|
|
1082
1082
|
__name: "TrendArrow",
|
|
1083
1083
|
props: {
|
|
1084
1084
|
number: {
|
|
@@ -1092,10 +1092,10 @@ var Ce = [
|
|
|
1092
1092
|
},
|
|
1093
1093
|
setup(e) {
|
|
1094
1094
|
let t = e, r = n(() => t.number !== null && t.number !== void 0 && t.number < 0);
|
|
1095
|
-
return (n, o) => e.number !== null && e.number !== void 0 ? (_(), a("div",
|
|
1095
|
+
return (n, o) => e.number !== null && e.number !== void 0 ? (_(), a("div", ft, [r.value ? (_(), a("span", pt, [c(R, { color: w(L).RED }, {
|
|
1096
1096
|
default: k(() => [s(C(e.number) + C(t.icon), 1)]),
|
|
1097
1097
|
_: 1
|
|
1098
|
-
}, 8, ["color"]), c(w(ee), { class: "h-5 w-5 text-red-500" })])) : (_(), a("span",
|
|
1098
|
+
}, 8, ["color"]), c(w(ee), { class: "h-5 w-5 text-red-500" })])) : (_(), a("span", mt, [c(R, { color: w(L).GREEN }, {
|
|
1099
1099
|
default: k(() => [s(C(e.number) + C(t.icon), 1)]),
|
|
1100
1100
|
_: 1
|
|
1101
1101
|
}, 8, ["color"]), c(w(te), { class: "h-5 w-5 text-green-500" })]))])) : i("", !0);
|
|
@@ -1139,7 +1139,7 @@ function Z(e) {
|
|
|
1139
1139
|
}
|
|
1140
1140
|
//#endregion
|
|
1141
1141
|
//#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
|
|
1142
|
-
var
|
|
1142
|
+
var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-w-0" }, vt = { class: "p-6 overflow-y-auto flex-1" }, yt = { class: "p-6" }, bt = { class: "flex items-start gap-4" }, xt = { class: "flex-1" }, St = { class: "mt-4" }, Ct = { class: "mt-6 flex gap-3 justify-end" }, Q = /* @__PURE__ */ l({
|
|
1143
1143
|
__name: "BaseModalShell",
|
|
1144
1144
|
props: {
|
|
1145
1145
|
title: {},
|
|
@@ -1147,35 +1147,58 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1147
1147
|
manualClose: {
|
|
1148
1148
|
type: Boolean,
|
|
1149
1149
|
default: !1
|
|
1150
|
-
}
|
|
1150
|
+
},
|
|
1151
|
+
scrollable: {
|
|
1152
|
+
type: Boolean,
|
|
1153
|
+
default: !1
|
|
1154
|
+
},
|
|
1155
|
+
subtitle: { default: "" }
|
|
1151
1156
|
},
|
|
1152
1157
|
emits: ["cancel", "backdrop"],
|
|
1153
|
-
setup(e, { emit:
|
|
1154
|
-
let
|
|
1155
|
-
function
|
|
1156
|
-
|
|
1158
|
+
setup(e, { emit: s }) {
|
|
1159
|
+
let c = e, l = s, { isDark: u } = U(), d = X(), p = `modal-title-${Math.random().toString(36).slice(2, 9)}`, m = n(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200");
|
|
1160
|
+
function h() {
|
|
1161
|
+
l("backdrop"), c.manualClose || l("cancel");
|
|
1157
1162
|
}
|
|
1158
1163
|
return Z(() => {
|
|
1159
|
-
|
|
1160
|
-
}), (n,
|
|
1164
|
+
c.manualClose || l("cancel");
|
|
1165
|
+
}), (n, s) => (_(), r(t, { to: "body" }, [o("div", {
|
|
1161
1166
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
1162
1167
|
role: "dialog",
|
|
1163
1168
|
"aria-modal": "true",
|
|
1164
|
-
"aria-labelledby":
|
|
1165
|
-
onClick:
|
|
1166
|
-
}, [
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1169
|
+
"aria-labelledby": p,
|
|
1170
|
+
onClick: h
|
|
1171
|
+
}, [e.scrollable ? (_(), a("div", {
|
|
1172
|
+
key: 0,
|
|
1173
|
+
class: f(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, m.value]]),
|
|
1174
|
+
onClick: s[0] ||= M(() => {}, ["stop"])
|
|
1175
|
+
}, [
|
|
1176
|
+
o("div", { class: f(["flex items-start justify-between gap-4 p-6 border-b shrink-0", w(d).border]) }, [o("div", gt, [b(n.$slots, "icon"), o("div", _t, [o("h3", {
|
|
1177
|
+
id: p,
|
|
1178
|
+
class: f(["text-lg font-medium", w(d).primaryText])
|
|
1179
|
+
}, C(e.title), 3), e.subtitle ? (_(), a("p", {
|
|
1180
|
+
key: 0,
|
|
1181
|
+
class: f(["text-sm mt-1 break-all", w(d).mutedText])
|
|
1182
|
+
}, C(e.subtitle), 3)) : i("", !0)])]), b(n.$slots, "header-actions")], 2),
|
|
1183
|
+
o("div", vt, [b(n.$slots, "default")]),
|
|
1184
|
+
n.$slots.footer ? (_(), a("div", {
|
|
1185
|
+
key: 0,
|
|
1186
|
+
class: f(["flex gap-3 justify-end p-6 border-t shrink-0", w(d).border])
|
|
1187
|
+
}, [b(n.$slots, "footer")], 2)) : i("", !0)
|
|
1188
|
+
], 2)) : (_(), a("div", {
|
|
1189
|
+
key: 1,
|
|
1190
|
+
class: f(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, m.value]]),
|
|
1191
|
+
onClick: s[1] ||= M(() => {}, ["stop"])
|
|
1192
|
+
}, [o("div", yt, [
|
|
1193
|
+
o("div", bt, [b(n.$slots, "icon"), o("div", xt, [o("h3", {
|
|
1194
|
+
id: p,
|
|
1195
|
+
class: f(["text-lg font-medium", w(d).primaryText])
|
|
1173
1196
|
}, C(e.title), 3)])]),
|
|
1174
|
-
o("div",
|
|
1175
|
-
o("div",
|
|
1176
|
-
])], 2)])]));
|
|
1197
|
+
o("div", St, [b(n.$slots, "default")]),
|
|
1198
|
+
o("div", Ct, [b(n.$slots, "footer")])
|
|
1199
|
+
])], 2))])]));
|
|
1177
1200
|
}
|
|
1178
|
-
}),
|
|
1201
|
+
}), wt = ["aria-expanded"], Tt = { class: "flex items-center gap-3" }, Et = /* @__PURE__ */ l({
|
|
1179
1202
|
__name: "BaseCollapsibleSection",
|
|
1180
1203
|
props: {
|
|
1181
1204
|
title: {},
|
|
@@ -1191,7 +1214,7 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1191
1214
|
class: f(["w-full flex items-center justify-between p-4 text-left transition-colors", d.value]),
|
|
1192
1215
|
"aria-expanded": !e.collapsed,
|
|
1193
1216
|
onClick: n[0] ||= (e) => s("toggle")
|
|
1194
|
-
}, [o("div",
|
|
1217
|
+
}, [o("div", Tt, [o("h2", { class: f(["text-base font-semibold", u.value]) }, C(e.title), 3), e.badge ? (_(), a("span", {
|
|
1195
1218
|
key: 0,
|
|
1196
1219
|
class: f(["text-xs px-2 py-0.5 rounded-full", p.value])
|
|
1197
1220
|
}, C(e.badge), 3)) : i("", !0)]), (_(), a("svg", {
|
|
@@ -1205,15 +1228,15 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1205
1228
|
"stroke-linecap": "round",
|
|
1206
1229
|
"stroke-linejoin": "round",
|
|
1207
1230
|
d: "M19 9l-7 7-7-7"
|
|
1208
|
-
}, null, -1)]], 2))], 10,
|
|
1231
|
+
}, null, -1)]], 2))], 10, wt), A(o("div", { class: f(["p-6 border-t", [w(l).border, m.value]]) }, [b(t.$slots, "default")], 2), [[D, !e.collapsed]])], 2));
|
|
1209
1232
|
}
|
|
1210
|
-
}),
|
|
1233
|
+
}), Dt = ["disabled"], Ot = ["disabled"], kt = {
|
|
1211
1234
|
key: 0,
|
|
1212
1235
|
class: "w-4 h-4 animate-spin",
|
|
1213
1236
|
fill: "none",
|
|
1214
1237
|
viewBox: "0 0 24 24",
|
|
1215
1238
|
"aria-hidden": "true"
|
|
1216
|
-
},
|
|
1239
|
+
}, At = /* @__PURE__ */ l({
|
|
1217
1240
|
__name: "BaseConfirmModal",
|
|
1218
1241
|
props: {
|
|
1219
1242
|
title: {},
|
|
@@ -1250,12 +1273,12 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1250
1273
|
disabled: e.submitting,
|
|
1251
1274
|
class: f(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150", [w(d).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
|
|
1252
1275
|
onClick: m
|
|
1253
|
-
}, C(e.cancelText), 11,
|
|
1276
|
+
}, C(e.cancelText), 11, Dt), o("button", {
|
|
1254
1277
|
type: "button",
|
|
1255
1278
|
disabled: e.submitting,
|
|
1256
1279
|
class: f(["inline-flex items-center justify-center gap-2 px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150", [e.variant === "danger" ? e.submitting ? "bg-red-400 cursor-not-allowed" : "bg-red-600 hover:bg-red-700 cursor-pointer" : e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
|
|
1257
1280
|
onClick: p
|
|
1258
|
-
}, [e.submitting ? (_(), a("svg",
|
|
1281
|
+
}, [e.submitting ? (_(), a("svg", kt, [...n[0] ||= [o("circle", {
|
|
1259
1282
|
class: "opacity-25",
|
|
1260
1283
|
cx: "12",
|
|
1261
1284
|
cy: "12",
|
|
@@ -1266,12 +1289,12 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1266
1289
|
class: "opacity-75",
|
|
1267
1290
|
fill: "currentColor",
|
|
1268
1291
|
d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
|
|
1269
|
-
}, null, -1)]])) : i("", !0), s(" " + C(e.submitting ? e.submittingText : e.confirmText), 1)], 10,
|
|
1292
|
+
}, null, -1)]])) : i("", !0), s(" " + C(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Ot)]),
|
|
1270
1293
|
default: k(() => [o("p", { class: f(["text-sm", w(u) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), b(t.$slots, "default")]),
|
|
1271
1294
|
_: 3
|
|
1272
1295
|
}, 8, ["title", "manual-close"]));
|
|
1273
1296
|
}
|
|
1274
|
-
}),
|
|
1297
|
+
}), jt = { class: "mt-4" }, Mt = ["placeholder"], Nt = ["disabled"], Pt = /* @__PURE__ */ l({
|
|
1275
1298
|
__name: "BaseTextInputModal",
|
|
1276
1299
|
props: {
|
|
1277
1300
|
title: {},
|
|
@@ -1307,7 +1330,7 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1307
1330
|
"manual-close": "",
|
|
1308
1331
|
onBackdrop: g
|
|
1309
1332
|
}, {
|
|
1310
|
-
icon: k(() => [b(t.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", w(a) ? "bg-emerald-900/30" : "bg-emerald-50"]) }, [c(w(
|
|
1333
|
+
icon: k(() => [b(t.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", w(a) ? "bg-emerald-900/30" : "bg-emerald-50"]) }, [c(w(oe), {
|
|
1311
1334
|
class: "h-6 w-6 text-emerald-600",
|
|
1312
1335
|
"aria-hidden": "true"
|
|
1313
1336
|
})], 2)])]),
|
|
@@ -1320,8 +1343,8 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1320
1343
|
disabled: !l.value.trim() || e.submitting,
|
|
1321
1344
|
class: f(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150", [!l.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
|
|
1322
1345
|
onClick: p
|
|
1323
|
-
}, C(e.submitting ? e.submittingText : e.confirmText), 11,
|
|
1324
|
-
default: k(() => [o("p", { class: f(["text-sm", w(a) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), o("div",
|
|
1346
|
+
}, C(e.submitting ? e.submittingText : e.confirmText), 11, Nt)]),
|
|
1347
|
+
default: k(() => [o("p", { class: f(["text-sm", w(a) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), o("div", jt, [o("label", { class: f(["block text-sm font-medium mb-1", w(s).label]) }, C(e.inputLabel), 3), A(o("input", {
|
|
1325
1348
|
ref_key: "nameInput",
|
|
1326
1349
|
ref: u,
|
|
1327
1350
|
"onUpdate:modelValue": n[0] ||= (e) => l.value = e,
|
|
@@ -1329,11 +1352,11 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1329
1352
|
placeholder: e.placeholder,
|
|
1330
1353
|
class: f(["w-full px-3 py-2 rounded-md border text-sm transition-colors", w(a) ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:outline-none focus:border-emerald-500" : "bg-white border-gray-300 text-gray-900 placeholder-gray-400 focus:outline-none focus:border-emerald-500"]),
|
|
1331
1354
|
onKeyup: j(p, ["enter"])
|
|
1332
|
-
}, null, 42,
|
|
1355
|
+
}, null, 42, Mt), [[E, l.value]])])]),
|
|
1333
1356
|
_: 3
|
|
1334
1357
|
}, 8, ["title"]));
|
|
1335
1358
|
}
|
|
1336
|
-
}),
|
|
1359
|
+
}), Ft = { class: "flex items-center justify-center min-h-[60vh]" }, It = { class: "text-center px-6" }, Lt = /* @__PURE__ */ l({
|
|
1337
1360
|
__name: "BaseNotFoundPage",
|
|
1338
1361
|
props: {
|
|
1339
1362
|
code: { default: "404" },
|
|
@@ -1342,11 +1365,11 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1342
1365
|
homeLabel: { default: "Go home" }
|
|
1343
1366
|
},
|
|
1344
1367
|
setup(e) {
|
|
1345
|
-
let t = e, n =
|
|
1368
|
+
let t = e, n = pe(), { isDark: r } = U(), i = X();
|
|
1346
1369
|
function s() {
|
|
1347
1370
|
n.push({ name: t.homeRouteName });
|
|
1348
1371
|
}
|
|
1349
|
-
return (t, n) => (_(), a("div",
|
|
1372
|
+
return (t, n) => (_(), a("div", Ft, [o("div", It, [
|
|
1350
1373
|
c(w(P), { class: f(["w-16 h-16 mx-auto mb-4", w(i).illustration]) }, null, 8, ["class"]),
|
|
1351
1374
|
o("h1", { class: f(["text-4xl font-bold mb-2", w(r) ? "text-gray-200" : "text-gray-800"]) }, C(e.code), 3),
|
|
1352
1375
|
o("p", { class: f(["text-lg mb-6", w(i).dimTextAlt]) }, C(e.message), 3),
|
|
@@ -1357,7 +1380,7 @@ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { clas
|
|
|
1357
1380
|
])]));
|
|
1358
1381
|
}
|
|
1359
1382
|
}), $ = v(!1);
|
|
1360
|
-
function
|
|
1383
|
+
function Rt() {
|
|
1361
1384
|
function e() {
|
|
1362
1385
|
$.value = !0;
|
|
1363
1386
|
}
|
|
@@ -1376,11 +1399,11 @@ function Nt() {
|
|
|
1376
1399
|
}
|
|
1377
1400
|
//#endregion
|
|
1378
1401
|
//#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
|
|
1379
|
-
var
|
|
1402
|
+
var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }, Vt = { class: "px-5 pt-5 pb-4 flex items-center justify-center relative" }, Ht = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Ut = { class: "px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500" }, Wt = { class: "space-y-0.5" }, Gt = ["aria-current", "onClick"], Kt = [
|
|
1380
1403
|
"title",
|
|
1381
1404
|
"aria-label",
|
|
1382
1405
|
"aria-pressed"
|
|
1383
|
-
],
|
|
1406
|
+
], qt = /* @__PURE__ */ q(/* @__PURE__ */ l({
|
|
1384
1407
|
__name: "BaseSidebar",
|
|
1385
1408
|
props: {
|
|
1386
1409
|
sections: {},
|
|
@@ -1393,7 +1416,7 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1393
1416
|
}
|
|
1394
1417
|
},
|
|
1395
1418
|
setup(t) {
|
|
1396
|
-
let n = t, l =
|
|
1419
|
+
let n = t, l = pe(), u = fe(), { isDark: p, toggleTheme: h } = U(), { mobileOpen: x, close: T, toggle: E } = Rt(), D = v(null), k = null;
|
|
1397
1420
|
O(x, async (e) => {
|
|
1398
1421
|
e ? (k = document.activeElement instanceof HTMLElement ? document.activeElement : null, await d(), D.value?.focus()) : (k?.focus(), k = null);
|
|
1399
1422
|
}), m(() => {}), g(() => {});
|
|
@@ -1426,7 +1449,7 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1426
1449
|
key: 0,
|
|
1427
1450
|
class: "w-6 h-6",
|
|
1428
1451
|
"aria-hidden": "true"
|
|
1429
|
-
}))], 10,
|
|
1452
|
+
}))], 10, zt)], 2),
|
|
1430
1453
|
w(x) ? (_(), a("div", {
|
|
1431
1454
|
key: 0,
|
|
1432
1455
|
class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
|
|
@@ -1437,8 +1460,8 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1437
1460
|
role: "navigation",
|
|
1438
1461
|
"aria-label": "Main navigation",
|
|
1439
1462
|
class: f(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-transform duration-300 lg:pointer-events-auto", [w(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200", w(x) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50"]])
|
|
1440
|
-
}, [o("div",
|
|
1441
|
-
o("div",
|
|
1463
|
+
}, [o("div", Bt, [
|
|
1464
|
+
o("div", Vt, [o("button", {
|
|
1442
1465
|
type: "button",
|
|
1443
1466
|
onClick: A,
|
|
1444
1467
|
class: "cursor-pointer",
|
|
@@ -1454,12 +1477,12 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1454
1477
|
class: "w-5 h-5",
|
|
1455
1478
|
"aria-hidden": "true"
|
|
1456
1479
|
})], 2)]),
|
|
1457
|
-
o("nav",
|
|
1480
|
+
o("nav", Ht, [(_(!0), a(e, null, y(t.sections, (t) => (_(), a("div", { key: t.title }, [o("p", Ut, C(t.title), 1), o("ul", Wt, [(_(!0), a(e, null, y(t.items, (e) => (_(), a("li", { key: e.name }, [o("button", {
|
|
1458
1481
|
type: "button",
|
|
1459
1482
|
"aria-current": j(e.name) ? "page" : void 0,
|
|
1460
1483
|
onClick: (t) => M(e.name),
|
|
1461
1484
|
class: f(["flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors w-full text-left cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", j(e.name) ? w(p) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : w(p) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100"])
|
|
1462
|
-
}, [(_(), r(S(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s(" " + C(e.label), 1)], 10,
|
|
1485
|
+
}, [(_(), r(S(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s(" " + C(e.label), 1)], 10, Gt)]))), 128))])]))), 128))]),
|
|
1463
1486
|
o("div", { class: f(["px-4 py-4 border-t transition-colors space-y-3", w(p) ? "border-gray-800" : "border-gray-200"]) }, [
|
|
1464
1487
|
t.showThemeToggle ? (_(), a("button", {
|
|
1465
1488
|
key: 0,
|
|
@@ -1469,7 +1492,7 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1469
1492
|
"aria-label": w(p) ? "Switch to light mode" : "Switch to dark mode",
|
|
1470
1493
|
"aria-pressed": w(p),
|
|
1471
1494
|
class: f(["flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", w(p) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100"])
|
|
1472
|
-
}, [s(C(w(p) ? "Switch to light" : "Switch to dark") + " ", 1), o("span", { class: f(["ml-auto relative w-9 h-5 rounded-full transition-colors", w(p) ? "bg-emerald-600" : "bg-gray-300"]) }, [o("span", { class: f(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", w(p) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)], 10,
|
|
1495
|
+
}, [s(C(w(p) ? "Switch to light" : "Switch to dark") + " ", 1), o("span", { class: f(["ml-auto relative w-9 h-5 rounded-full transition-colors", w(p) ? "bg-emerald-600" : "bg-gray-300"]) }, [o("span", { class: f(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", w(p) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)], 10, Kt)) : i("", !0),
|
|
1473
1496
|
b(n.$slots, "status", {}, void 0, !0),
|
|
1474
1497
|
b(n.$slots, "footer", {}, () => [t.appName || t.version ? (_(), a("div", {
|
|
1475
1498
|
key: 0,
|
|
@@ -1483,26 +1506,26 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1483
1506
|
])], 2)
|
|
1484
1507
|
]));
|
|
1485
1508
|
}
|
|
1486
|
-
}), [["__scopeId", "data-v-e27f267e"]]),
|
|
1509
|
+
}), [["__scopeId", "data-v-e27f267e"]]), Jt = {
|
|
1487
1510
|
key: 1,
|
|
1488
1511
|
class: "mt-4 flex justify-center py-6"
|
|
1489
|
-
},
|
|
1512
|
+
}, Yt = {
|
|
1490
1513
|
key: 2,
|
|
1491
1514
|
class: "mt-4 text-sm text-red-500",
|
|
1492
1515
|
role: "alert"
|
|
1493
|
-
},
|
|
1516
|
+
}, Xt = {
|
|
1494
1517
|
key: 3,
|
|
1495
1518
|
class: "mt-4"
|
|
1496
|
-
},
|
|
1519
|
+
}, Zt = { class: "relative" }, Qt = ["placeholder"], $t = {
|
|
1497
1520
|
key: 4,
|
|
1498
1521
|
class: "mt-3 max-h-64 overflow-y-auto"
|
|
1499
|
-
},
|
|
1522
|
+
}, en = ["onClick"], tn = { class: "flex-1 min-w-0" }, nn = {
|
|
1500
1523
|
key: 0,
|
|
1501
1524
|
class: "text-center py-6"
|
|
1502
|
-
},
|
|
1525
|
+
}, rn = {
|
|
1503
1526
|
key: 1,
|
|
1504
1527
|
class: "text-center py-6"
|
|
1505
|
-
},
|
|
1528
|
+
}, an = ["disabled"], on = ["disabled"], sn = /* @__PURE__ */ l({
|
|
1506
1529
|
__name: "BaseEntityPickerModal",
|
|
1507
1530
|
props: {
|
|
1508
1531
|
title: {},
|
|
@@ -1644,7 +1667,7 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1644
1667
|
"manual-close": t.submitting,
|
|
1645
1668
|
onCancel: re
|
|
1646
1669
|
}, {
|
|
1647
|
-
icon: k(() => [b(n.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", N.value.iconBg]) }, [c(w(
|
|
1670
|
+
icon: k(() => [b(n.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", N.value.iconBg]) }, [c(w(ce), {
|
|
1648
1671
|
class: f(["h-6 w-6", N.value.iconText]),
|
|
1649
1672
|
"aria-hidden": "true"
|
|
1650
1673
|
}, null, 8, ["class"])], 2)])]),
|
|
@@ -1653,19 +1676,19 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1653
1676
|
disabled: t.submitting,
|
|
1654
1677
|
class: f(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed", w(h).ghostButton]),
|
|
1655
1678
|
onClick: re
|
|
1656
|
-
}, C(t.cancelText), 11,
|
|
1679
|
+
}, C(t.cancelText), 11, an), o("button", {
|
|
1657
1680
|
type: "button",
|
|
1658
1681
|
disabled: !T.value || t.submitting,
|
|
1659
1682
|
class: f(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150", !T.value || t.submitting ? N.value.confirmDisabled : N.value.confirmActive]),
|
|
1660
1683
|
onClick: ne
|
|
1661
|
-
}, C(t.submitting ? t.submittingText : t.confirmText), 11,
|
|
1684
|
+
}, C(t.submitting ? t.submittingText : t.confirmText), 11, on)]),
|
|
1662
1685
|
default: k(() => [
|
|
1663
1686
|
t.message ? (_(), a("p", {
|
|
1664
1687
|
key: 0,
|
|
1665
1688
|
class: f(["text-sm", w(p) ? "text-gray-300" : "text-gray-600"])
|
|
1666
1689
|
}, C(t.message), 3)) : i("", !0),
|
|
1667
|
-
x.value ? (_(), a("div",
|
|
1668
|
-
!x.value && !S.value && j.value.length > 0 ? (_(), a("div",
|
|
1690
|
+
x.value ? (_(), a("div", Jt, [c(Je, { color: "emerald" })])) : S.value ? (_(), a("div", Yt, C(S.value), 1)) : i("", !0),
|
|
1691
|
+
!x.value && !S.value && j.value.length > 0 ? (_(), a("div", Xt, [o("div", Zt, [c(w(ue), {
|
|
1669
1692
|
class: f(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", w(h).dimText]),
|
|
1670
1693
|
"aria-hidden": "true"
|
|
1671
1694
|
}, null, 8, ["class"]), A(o("input", {
|
|
@@ -1675,14 +1698,14 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1675
1698
|
type: "text",
|
|
1676
1699
|
placeholder: t.searchPlaceholder,
|
|
1677
1700
|
class: f(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [w(p) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", N.value.inputFocus]])
|
|
1678
|
-
}, null, 10,
|
|
1679
|
-
!x.value && !S.value ? (_(), a("div",
|
|
1701
|
+
}, null, 10, Qt), [[E, D.value]])])])) : i("", !0),
|
|
1702
|
+
!x.value && !S.value ? (_(), a("div", $t, [(_(!0), a(e, null, y(M.value, (e) => (_(), a("div", {
|
|
1680
1703
|
key: e.id,
|
|
1681
1704
|
class: f(["flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors", [T.value === e.id ? N.value.selectedRow : w(p) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
|
|
1682
1705
|
onClick: (t) => T.value = e.id
|
|
1683
1706
|
}, [
|
|
1684
|
-
c(w(
|
|
1685
|
-
o("div",
|
|
1707
|
+
c(w(ce), { class: f(["w-5 h-5 flex-shrink-0", w(h).dimText]) }, null, 8, ["class"]),
|
|
1708
|
+
o("div", tn, [o("p", { class: f(["text-sm font-medium truncate", w(h).bodyText]) }, C(e.label), 3)]),
|
|
1686
1709
|
T.value === e.id ? (_(), a("div", {
|
|
1687
1710
|
key: 0,
|
|
1688
1711
|
class: f(["w-5 h-5 rounded-full flex items-center justify-center", N.value.checkBg])
|
|
@@ -1698,15 +1721,15 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1698
1721
|
"stroke-linejoin": "round",
|
|
1699
1722
|
d: "M5 13l4 4L19 7"
|
|
1700
1723
|
})], -1)]], 2)) : i("", !0)
|
|
1701
|
-
], 10,
|
|
1724
|
+
], 10, en))), 128)), j.value.length === 0 ? (_(), a("div", nn, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.emptyMessage), 3)])) : M.value.length === 0 ? (_(), a("div", rn, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.noMatchMessage), 3)])) : i("", !0)])) : i("", !0)
|
|
1702
1725
|
]),
|
|
1703
1726
|
_: 3
|
|
1704
1727
|
}, 8, ["title", "manual-close"]));
|
|
1705
1728
|
}
|
|
1706
|
-
}),
|
|
1729
|
+
}), cn = {
|
|
1707
1730
|
href: "#main-content",
|
|
1708
1731
|
class: "sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[100] focus:px-3 focus:py-2 focus:rounded-md focus:bg-emerald-600 focus:text-white focus:shadow-lg"
|
|
1709
|
-
},
|
|
1732
|
+
}, ln = ["inert"], un = /* @__PURE__ */ l({
|
|
1710
1733
|
__name: "BaseAppLayout",
|
|
1711
1734
|
props: {
|
|
1712
1735
|
showSidebar: {
|
|
@@ -1716,19 +1739,19 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1716
1739
|
skipLinkLabel: { default: "Skip to main content" }
|
|
1717
1740
|
},
|
|
1718
1741
|
setup(e) {
|
|
1719
|
-
let t = e, { isDark: r } = U(), { mobileOpen: s } =
|
|
1742
|
+
let t = e, { isDark: r } = U(), { mobileOpen: s } = Rt(), c = n(() => t.showSidebar);
|
|
1720
1743
|
return (t, n) => (_(), a("div", { class: f(["min-h-screen transition-colors duration-300", w(r) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
|
|
1721
|
-
o("a",
|
|
1744
|
+
o("a", cn, C(e.skipLinkLabel), 1),
|
|
1722
1745
|
c.value ? b(t.$slots, "sidebar", { key: 0 }) : i("", !0),
|
|
1723
1746
|
o("main", {
|
|
1724
1747
|
id: "main-content",
|
|
1725
1748
|
tabindex: "-1",
|
|
1726
1749
|
inert: c.value && w(s) ? !0 : void 0,
|
|
1727
1750
|
class: f(c.value ? "pt-14 lg:pt-0 lg:ml-60" : "")
|
|
1728
|
-
}, [b(t.$slots, "default")], 10,
|
|
1751
|
+
}, [b(t.$slots, "default")], 10, ln)
|
|
1729
1752
|
], 2));
|
|
1730
1753
|
}
|
|
1731
|
-
}),
|
|
1754
|
+
}), dn = { class: "flex items-center justify-between mb-8" }, fn = { class: "flex items-center gap-3" }, pn = { class: "flex items-center gap-2" }, mn = /* @__PURE__ */ l({
|
|
1732
1755
|
__name: "BasePageHeader",
|
|
1733
1756
|
props: {
|
|
1734
1757
|
title: {},
|
|
@@ -1778,16 +1801,16 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1778
1801
|
}[t.iconColor];
|
|
1779
1802
|
return r.value ? e.dark : e.light;
|
|
1780
1803
|
});
|
|
1781
|
-
return (t, n) => (_(), a("div", { class: f(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [o("div",
|
|
1804
|
+
return (t, n) => (_(), a("div", { class: f(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [o("div", dn, [o("div", fn, [o("div", { class: f(["w-10 h-10 rounded-lg flex items-center justify-center", c.value]) }, [b(t.$slots, "icon", { iconClass: l.value })], 2), o("div", null, [o("h1", { class: f(["text-2xl font-bold", w(s).primaryTextSoft]) }, C(e.title), 3), e.subtitle ? (_(), a("p", {
|
|
1782
1805
|
key: 0,
|
|
1783
1806
|
class: f(["text-sm", w(s).dimTextAlt])
|
|
1784
|
-
}, C(e.subtitle), 3)) : i("", !0)])]), o("div",
|
|
1807
|
+
}, C(e.subtitle), 3)) : i("", !0)])]), o("div", pn, [b(t.$slots, "actions")])])], 2));
|
|
1785
1808
|
}
|
|
1786
|
-
}),
|
|
1809
|
+
}), hn = [
|
|
1787
1810
|
"type",
|
|
1788
1811
|
"disabled",
|
|
1789
1812
|
"title"
|
|
1790
|
-
],
|
|
1813
|
+
], gn = { key: 0 }, _n = /* @__PURE__ */ l({
|
|
1791
1814
|
__name: "BaseToolbarButton",
|
|
1792
1815
|
props: {
|
|
1793
1816
|
label: { default: "" },
|
|
@@ -1820,14 +1843,14 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1820
1843
|
title: e.title,
|
|
1821
1844
|
class: f(["inline-flex shrink-0 items-center gap-2 px-3 py-2 rounded-lg text-sm font-medium border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap", o.value]),
|
|
1822
1845
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
1823
|
-
}, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span",
|
|
1846
|
+
}, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", gn, C(e.label), 1)) : i("", !0)], 10, hn));
|
|
1824
1847
|
}
|
|
1825
|
-
}),
|
|
1848
|
+
}), vn = [
|
|
1826
1849
|
"type",
|
|
1827
1850
|
"disabled",
|
|
1828
1851
|
"title",
|
|
1829
1852
|
"aria-label"
|
|
1830
|
-
],
|
|
1853
|
+
], yn = { key: 0 }, bn = /* @__PURE__ */ l({
|
|
1831
1854
|
__name: "BaseActionButton",
|
|
1832
1855
|
props: {
|
|
1833
1856
|
label: { default: "" },
|
|
@@ -1926,12 +1949,63 @@ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }
|
|
|
1926
1949
|
"aria-label": e.ariaLabel,
|
|
1927
1950
|
class: f(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors", [e.fullWidth ? "flex-1" : "", c.value]]),
|
|
1928
1951
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
1929
|
-
}, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span",
|
|
1952
|
+
}, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", yn, C(e.label), 1)) : i("", !0)], 10, vn));
|
|
1953
|
+
}
|
|
1954
|
+
}), xn = ["title", "aria-label"], Sn = /* @__PURE__ */ l({
|
|
1955
|
+
__name: "BaseCopyButton",
|
|
1956
|
+
props: {
|
|
1957
|
+
text: {},
|
|
1958
|
+
label: { default: "" },
|
|
1959
|
+
variant: { default: "ghost" },
|
|
1960
|
+
resetMs: { default: 1500 },
|
|
1961
|
+
iconClass: { default: "w-4 h-4" }
|
|
1962
|
+
},
|
|
1963
|
+
emits: ["copied", "error"],
|
|
1964
|
+
setup(e, { emit: t }) {
|
|
1965
|
+
let i = e, o = t, { isDark: s } = U(), c = v(!1), l = null, u = n(() => c.value ? "Copied!" : i.label ? `Copy ${i.label}` : "Copy"), d = n(() => i.label ? `Copy ${i.label}` : "Copy"), p = n(() => i.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 ${c.value ? s.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : s.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer ${s.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
|
|
1966
|
+
async function m(e) {
|
|
1967
|
+
try {
|
|
1968
|
+
if (navigator.clipboard?.writeText) {
|
|
1969
|
+
await navigator.clipboard.writeText(e);
|
|
1970
|
+
return;
|
|
1971
|
+
}
|
|
1972
|
+
} catch {}
|
|
1973
|
+
let t = document.createElement("textarea");
|
|
1974
|
+
t.value = e, t.style.position = "fixed", t.style.opacity = "0", document.body.appendChild(t), t.select();
|
|
1975
|
+
let n = document.execCommand("copy");
|
|
1976
|
+
if (document.body.removeChild(t), !n) throw Error("Copy command was rejected");
|
|
1977
|
+
}
|
|
1978
|
+
async function h() {
|
|
1979
|
+
try {
|
|
1980
|
+
await m(i.text), c.value = !0, l && clearTimeout(l), l = setTimeout(() => {
|
|
1981
|
+
c.value = !1;
|
|
1982
|
+
}, i.resetMs), o("copied");
|
|
1983
|
+
} catch (e) {
|
|
1984
|
+
o("error", e);
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
return g(() => {
|
|
1988
|
+
l && clearTimeout(l);
|
|
1989
|
+
}), (t, n) => (_(), a("button", {
|
|
1990
|
+
type: "button",
|
|
1991
|
+
title: u.value,
|
|
1992
|
+
"aria-label": d.value,
|
|
1993
|
+
class: f(p.value),
|
|
1994
|
+
onClick: h
|
|
1995
|
+
}, [c.value ? (_(), r(w(ie), {
|
|
1996
|
+
key: 0,
|
|
1997
|
+
class: f(e.iconClass),
|
|
1998
|
+
"aria-hidden": "true"
|
|
1999
|
+
}, null, 8, ["class"])) : (_(), r(w(ae), {
|
|
2000
|
+
key: 1,
|
|
2001
|
+
class: f(e.iconClass),
|
|
2002
|
+
"aria-hidden": "true"
|
|
2003
|
+
}, null, 8, ["class"]))], 10, xn));
|
|
1930
2004
|
}
|
|
1931
2005
|
});
|
|
1932
2006
|
//#endregion
|
|
1933
2007
|
//#region src/composables/useDebounce.ts
|
|
1934
|
-
function
|
|
2008
|
+
function Cn(e, t = 300) {
|
|
1935
2009
|
let n = v(e.value), r = null;
|
|
1936
2010
|
return O(e, (e) => {
|
|
1937
2011
|
r && clearTimeout(r), r = setTimeout(() => {
|
|
@@ -1943,7 +2017,7 @@ function gn(e, t = 300) {
|
|
|
1943
2017
|
}
|
|
1944
2018
|
//#endregion
|
|
1945
2019
|
//#region src/composables/useToast.ts
|
|
1946
|
-
function
|
|
2020
|
+
function wn(e = 3e3) {
|
|
1947
2021
|
let t = v(!1), n = v(""), r = v(J.SUCCESS), i = null;
|
|
1948
2022
|
function a() {
|
|
1949
2023
|
i &&= (clearTimeout(i), null);
|
|
@@ -1964,16 +2038,16 @@ function _n(e = 3e3) {
|
|
|
1964
2038
|
}
|
|
1965
2039
|
//#endregion
|
|
1966
2040
|
//#region src/enums/BaseBadgeEnum.ts
|
|
1967
|
-
var
|
|
2041
|
+
var Tn = /* @__PURE__ */ function(e) {
|
|
1968
2042
|
return e.WIN = "WIN", e.LOSE = "LOSE", e;
|
|
1969
|
-
}({}),
|
|
2043
|
+
}({}), En = {
|
|
1970
2044
|
GET: "bg-blue-600",
|
|
1971
2045
|
POST: "bg-emerald-600",
|
|
1972
2046
|
PUT: "bg-amber-600",
|
|
1973
2047
|
DELETE: "bg-red-600",
|
|
1974
2048
|
PATCH: "bg-purple-600",
|
|
1975
2049
|
HEAD: "bg-gray-600"
|
|
1976
|
-
},
|
|
2050
|
+
}, Dn = {
|
|
1977
2051
|
GET: "bg-blue-500",
|
|
1978
2052
|
POST: "bg-green-500",
|
|
1979
2053
|
PUT: "bg-yellow-500",
|
|
@@ -1981,23 +2055,23 @@ var vn = /* @__PURE__ */ function(e) {
|
|
|
1981
2055
|
PATCH: "bg-purple-500",
|
|
1982
2056
|
HEAD: "bg-gray-500"
|
|
1983
2057
|
};
|
|
1984
|
-
function
|
|
1985
|
-
return e ?
|
|
2058
|
+
function On(e) {
|
|
2059
|
+
return e ? En[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
1986
2060
|
}
|
|
1987
|
-
function
|
|
1988
|
-
return e ?
|
|
2061
|
+
function kn(e) {
|
|
2062
|
+
return e ? Dn[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
|
|
1989
2063
|
}
|
|
1990
|
-
function
|
|
2064
|
+
function An(e) {
|
|
1991
2065
|
let t = e ?? 0;
|
|
1992
2066
|
return t >= 200 && t < 300 ? "bg-emerald-600" : t >= 300 && t < 400 ? "bg-blue-600" : t >= 400 && t < 500 ? "bg-amber-600" : t >= 500 ? "bg-red-600" : "bg-gray-600";
|
|
1993
2067
|
}
|
|
1994
|
-
function
|
|
2068
|
+
function jn(e, t) {
|
|
1995
2069
|
let n = e ?? 200;
|
|
1996
2070
|
return t ? n >= 200 && n < 300 ? "bg-green-500/15 text-green-400" : n >= 300 && n < 400 ? "bg-blue-500/15 text-blue-400" : n >= 400 && n < 500 ? "bg-yellow-500/15 text-yellow-400" : "bg-red-500/15 text-red-400" : n >= 200 && n < 300 ? "bg-green-100 text-green-800" : n >= 300 && n < 400 ? "bg-blue-100 text-blue-800" : n >= 400 && n < 500 ? "bg-yellow-100 text-yellow-800" : "bg-red-100 text-red-800";
|
|
1997
2071
|
}
|
|
1998
2072
|
//#endregion
|
|
1999
2073
|
//#region src/utils/sanitizeHtml.ts
|
|
2000
|
-
var
|
|
2074
|
+
var Mn = new Set([
|
|
2001
2075
|
"A",
|
|
2002
2076
|
"B",
|
|
2003
2077
|
"STRONG",
|
|
@@ -2012,7 +2086,7 @@ var Tn = new Set([
|
|
|
2012
2086
|
"LI",
|
|
2013
2087
|
"SPAN",
|
|
2014
2088
|
"DIV"
|
|
2015
|
-
]),
|
|
2089
|
+
]), Nn = new Set([
|
|
2016
2090
|
"SCRIPT",
|
|
2017
2091
|
"STYLE",
|
|
2018
2092
|
"IFRAME",
|
|
@@ -2020,53 +2094,53 @@ var Tn = new Set([
|
|
|
2020
2094
|
"EMBED",
|
|
2021
2095
|
"NOSCRIPT",
|
|
2022
2096
|
"TEMPLATE"
|
|
2023
|
-
]),
|
|
2024
|
-
function
|
|
2097
|
+
]), Pn = { A: new Set(["href", "title"]) };
|
|
2098
|
+
function Fn(e) {
|
|
2025
2099
|
let t = e.trim().toLowerCase();
|
|
2026
2100
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
|
|
2027
2101
|
}
|
|
2028
|
-
function
|
|
2102
|
+
function In(e) {
|
|
2029
2103
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
2030
2104
|
let t = e, n = t.tagName.toUpperCase();
|
|
2031
|
-
if (!
|
|
2032
|
-
|
|
2105
|
+
if (!Mn.has(n)) {
|
|
2106
|
+
Nn.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
|
|
2033
2107
|
return;
|
|
2034
2108
|
}
|
|
2035
|
-
let r =
|
|
2109
|
+
let r = Pn[n] ?? /* @__PURE__ */ new Set();
|
|
2036
2110
|
for (let e of Array.from(t.attributes)) {
|
|
2037
2111
|
if (!r.has(e.name.toLowerCase())) {
|
|
2038
2112
|
t.removeAttribute(e.name);
|
|
2039
2113
|
continue;
|
|
2040
2114
|
}
|
|
2041
|
-
n === "A" && e.name.toLowerCase() === "href" && !
|
|
2115
|
+
n === "A" && e.name.toLowerCase() === "href" && !Fn(e.value) && t.removeAttribute(e.name);
|
|
2042
2116
|
}
|
|
2043
2117
|
n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
|
|
2044
|
-
for (let e of Array.from(t.childNodes))
|
|
2118
|
+
for (let e of Array.from(t.childNodes)) In(e);
|
|
2045
2119
|
}
|
|
2046
|
-
function
|
|
2120
|
+
function Ln(e) {
|
|
2047
2121
|
if (!e) return "";
|
|
2048
2122
|
let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
|
|
2049
2123
|
if (!t) return "";
|
|
2050
|
-
for (let e of Array.from(t.childNodes))
|
|
2124
|
+
for (let e of Array.from(t.childNodes)) In(e);
|
|
2051
2125
|
return t.innerHTML;
|
|
2052
2126
|
}
|
|
2053
2127
|
//#endregion
|
|
2054
2128
|
//#region src/utils/format.ts
|
|
2055
|
-
var
|
|
2056
|
-
function
|
|
2057
|
-
if (e == null || typeof e == "string" && e.trim() === "") return
|
|
2129
|
+
var Rn = "—";
|
|
2130
|
+
function zn(e, t = 4) {
|
|
2131
|
+
if (e == null || typeof e == "string" && e.trim() === "") return Rn;
|
|
2058
2132
|
let n = typeof e == "string" ? Number(e) : e;
|
|
2059
2133
|
return isFinite(n) ? n.toLocaleString(void 0, {
|
|
2060
2134
|
minimumFractionDigits: t,
|
|
2061
2135
|
maximumFractionDigits: t
|
|
2062
|
-
}) :
|
|
2136
|
+
}) : Rn;
|
|
2063
2137
|
}
|
|
2064
|
-
function
|
|
2065
|
-
if (e == null || e === "") return
|
|
2138
|
+
function Bn(e) {
|
|
2139
|
+
if (e == null || e === "") return Rn;
|
|
2066
2140
|
let t = new Date(e);
|
|
2067
2141
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
|
|
2068
2142
|
}
|
|
2069
|
-
function
|
|
2143
|
+
function Vn(e) {
|
|
2070
2144
|
return new Date(e).toLocaleString(void 0, {
|
|
2071
2145
|
month: "short",
|
|
2072
2146
|
day: "numeric",
|
|
@@ -2074,13 +2148,13 @@ function Pn(e) {
|
|
|
2074
2148
|
minute: "2-digit"
|
|
2075
2149
|
});
|
|
2076
2150
|
}
|
|
2077
|
-
function
|
|
2151
|
+
function Hn(e) {
|
|
2078
2152
|
return new Date(e).toLocaleDateString(void 0, {
|
|
2079
2153
|
month: "short",
|
|
2080
2154
|
day: "numeric"
|
|
2081
2155
|
});
|
|
2082
2156
|
}
|
|
2083
|
-
function
|
|
2157
|
+
function Un(e) {
|
|
2084
2158
|
if (!isFinite(e) || e === 0) return e.toFixed(2);
|
|
2085
2159
|
let t = Math.abs(e), n = 2;
|
|
2086
2160
|
return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
|
|
@@ -2088,15 +2162,15 @@ function In(e) {
|
|
|
2088
2162
|
maximumFractionDigits: n
|
|
2089
2163
|
});
|
|
2090
2164
|
}
|
|
2091
|
-
function
|
|
2165
|
+
function Wn(e, t = 2) {
|
|
2092
2166
|
return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
|
|
2093
2167
|
}
|
|
2094
|
-
function
|
|
2168
|
+
function Gn(e) {
|
|
2095
2169
|
return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
|
|
2096
2170
|
}
|
|
2097
2171
|
//#endregion
|
|
2098
2172
|
//#region src/utils/pnl.ts
|
|
2099
|
-
function
|
|
2173
|
+
function Kn(e) {
|
|
2100
2174
|
if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
|
|
2101
2175
|
pnlUsd: null,
|
|
2102
2176
|
pnlPct: null
|
|
@@ -2111,4 +2185,4 @@ function zn(e) {
|
|
|
2111
2185
|
};
|
|
2112
2186
|
}
|
|
2113
2187
|
//#endregion
|
|
2114
|
-
export { I as AlertEnum,
|
|
2188
|
+
export { I as AlertEnum, bn as BaseActionButton, _e as BaseAlert, un as BaseAppLayout, R as BaseBadge, Tn as BaseBadgeEnum, Se as BaseBreadcrumb, Ne as BaseButton, z as BaseButtonEnum, B as BaseButtonSizeEnum, Et as BaseCollapsibleSection, At as BaseConfirmModal, Sn as BaseCopyButton, sn as BaseEntityPickerModal, Le as BaseLine, Re as BaseLoginEnum, Be as BaseLogo, G as BaseLogoEnum, Ke as BaseModal, K as BaseModalEnum, Q as BaseModalShell, Lt as BaseNotFoundPage, mn as BasePageHeader, qe as BaseRow, qt as BaseSidebar, Je as BaseSpinner, Pt as BaseTextInputModal, Qe as BaseToast, J as BaseToastEnum, _n as BaseToolbarButton, et as ColoredSquares, L as ColorsEnums, rt as EarningsCard, ct as EuroAmount, W as LineEnum, dt as Pagination, Y as PositioningEnum, ht as TrendArrow, Kn as computePnL, Bn as fmtDate, Hn as fmtDateShort, Vn as fmtDateTime, zn as fmtNumber, Wn as fmtPct, Un as fmtPrice, Gn as fmtUsd, me as getBaseColor, he as getBaseColorOf, Fn as isSafeHref, kn as methodBadgeBright, On as methodBadgeSolid, Ln as sanitizeHtml, An as statusBadgeSolid, jn as statusBadgeTinted, Cn as useDebouncedRef, Z as useEscapeKey, Rt as useMobileSidebar, U as useTheme, X as useThemeClasses, wn as useToast };
|