mgv-backoffice 1.34.0 → 1.36.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 +81 -8
- package/dist/components/BaseBarDistribution.vue.d.ts +24 -0
- package/dist/components/BasePageHeader.vue.d.ts +8 -2
- package/dist/components/BasePillPickerModal.vue.d.ts +43 -0
- package/dist/components/BaseToolbarButton.vue.d.ts +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/types/distribution.d.ts +7 -0
- package/dist/types/pillPicker.d.ts +14 -0
- package/dist/ui-lib.css +1 -1
- package/dist/ui-lib.js +702 -558
- package/dist/ui-lib.umd.cjs +1 -1
- package/package.json +1 -1
- package/src/components/BaseBarDistribution.test.ts +51 -0
- package/src/components/BaseBarDistribution.vue +73 -0
- package/src/components/BasePageHeader.vue +24 -7
- package/src/components/BasePillPickerModal.test.ts +95 -0
- package/src/components/BasePillPickerModal.vue +0 -0
- package/src/components/BaseToolbarButton.test.ts +48 -0
- package/src/components/BaseToolbarButton.vue +21 -6
- package/src/composables/usePolling.ts +15 -3
- package/src/index.ts +4 -0
- package/src/types/distribution.ts +7 -0
- package/src/types/pillPicker.ts +14 -0
package/dist/ui-lib.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createStaticVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, effectScope as p, nextTick as m, normalizeClass as h,
|
|
2
|
-
import { ArrowDownIcon as
|
|
3
|
-
import { HomeIcon as
|
|
4
|
-
import { useRoute as
|
|
1
|
+
import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createStaticVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, effectScope as p, nextTick as m, normalizeClass as h, normalizeStyle as g, onBeforeUnmount as _, onMounted as v, onScopeDispose as y, onUnmounted as b, openBlock as x, reactive as S, readonly as C, ref as w, renderList as T, renderSlot as E, resolveComponent as D, resolveDynamicComponent as O, toDisplayString as k, unref as A, useSlots as ee, vModelCheckbox as j, vModelDynamic as M, vModelText as N, vShow as te, watch as P, withCtx as F, withDirectives as I, withKeys as ne, withModifiers as L } from "vue";
|
|
2
|
+
import { ArrowDownIcon as re, ArrowUpIcon as ie, Bars3Icon as ae, BellIcon as oe, CheckCircleIcon as se, ChevronDoubleLeftIcon as ce, ChevronDoubleRightIcon as le, ChevronDownIcon as ue, ChevronRightIcon as de, ClipboardDocumentCheckIcon as fe, ClipboardDocumentIcon as pe, DocumentDuplicateIcon as me, ExclamationCircleIcon as he, ExclamationTriangleIcon as ge, FolderIcon as _e, InformationCircleIcon as ve, MagnifyingGlassIcon as ye, MinusIcon as be, MoonIcon as xe, SunIcon as Se, XMarkIcon as Ce } from "@heroicons/vue/24/outline";
|
|
3
|
+
import { HomeIcon as we } from "@heroicons/vue/24/solid";
|
|
4
|
+
import { useRoute as Te, useRouter as Ee } from "vue-router";
|
|
5
5
|
//#region src/enums/AlertEnum.ts
|
|
6
6
|
var R = /* @__PURE__ */ function(e) {
|
|
7
7
|
return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
|
|
8
|
-
}({}), z =
|
|
9
|
-
function
|
|
10
|
-
if (
|
|
8
|
+
}({}), z = w(!1), De = !1, B = "mgv-theme";
|
|
9
|
+
function Oe(e) {
|
|
10
|
+
if (De) {
|
|
11
11
|
e !== B && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${B}". Call initTheme({ storageKey }) before mounting any component.`);
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
|
-
if (
|
|
14
|
+
if (De = !0, B = e, typeof window < "u") {
|
|
15
15
|
let e = window.localStorage?.getItem(B);
|
|
16
16
|
e ? z.value = e === "dark" : typeof window.matchMedia == "function" && (z.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
17
17
|
}
|
|
@@ -21,11 +21,11 @@ function De(e) {
|
|
|
21
21
|
}, { immediate: !0 });
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
|
|
24
|
+
function ke(e) {
|
|
25
|
+
Oe(e?.storageKey ?? B);
|
|
26
26
|
}
|
|
27
27
|
function V(e) {
|
|
28
|
-
|
|
28
|
+
Oe(e?.storageKey ?? B);
|
|
29
29
|
function t() {
|
|
30
30
|
z.value = !z.value;
|
|
31
31
|
}
|
|
@@ -36,10 +36,10 @@ function V(e) {
|
|
|
36
36
|
}
|
|
37
37
|
//#endregion
|
|
38
38
|
//#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
|
|
39
|
-
var
|
|
39
|
+
var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
40
40
|
key: 0,
|
|
41
41
|
class: "font-medium"
|
|
42
|
-
},
|
|
42
|
+
}, Me = /* @__PURE__ */ f({
|
|
43
43
|
__name: "BaseAlert",
|
|
44
44
|
props: {
|
|
45
45
|
title: { default: "" },
|
|
@@ -69,10 +69,10 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
69
69
|
}
|
|
70
70
|
}, l = r(() => n.value ? c[t.color].dark : c[t.color].light), u = r(() => {
|
|
71
71
|
switch (t.color) {
|
|
72
|
-
case R.SUCCESS: return
|
|
73
|
-
case R.WARNING: return
|
|
74
|
-
case R.INFO: return
|
|
75
|
-
default: return
|
|
72
|
+
case R.SUCCESS: return se;
|
|
73
|
+
case R.WARNING: return ge;
|
|
74
|
+
case R.INFO: return ve;
|
|
75
|
+
default: return he;
|
|
76
76
|
}
|
|
77
77
|
}), d = r(() => {
|
|
78
78
|
switch (t.color) {
|
|
@@ -82,24 +82,24 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
82
82
|
default: return "text-red-500";
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
|
-
return (t, n) => (
|
|
85
|
+
return (t, n) => (x(), o("div", {
|
|
86
86
|
role: "alert",
|
|
87
87
|
class: h(["flex gap-3 mb-4 rounded-lg border text-sm transition-colors", [e.compact ? "items-start px-3 py-2 text-xs" : "items-start p-4", l.value]])
|
|
88
|
-
}, [(
|
|
88
|
+
}, [(x(), i(O(u.value), {
|
|
89
89
|
class: h(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
|
|
90
90
|
"aria-hidden": "true"
|
|
91
|
-
}, null, 8, ["class"])), s("div",
|
|
91
|
+
}, null, 8, ["class"])), s("div", Ae, [e.title ? (x(), o("p", je, k(e.title), 1)) : a("", !0), E(t.$slots, "default")])], 2));
|
|
92
92
|
}
|
|
93
93
|
}), H = /* @__PURE__ */ function(e) {
|
|
94
94
|
return e.NONE = "NONE", e.RED = "RED", e.YELLOW = "YELLOW", e.BLACK = "BLACK", e.GRAY = "GRAY", e.GREEN = "GREEN", e.BLUE = "BLUE", e;
|
|
95
|
-
}({}),
|
|
95
|
+
}({}), Ne = "bg-red-100 text-red-700 border-red-200", Pe = /* @__PURE__ */ f({
|
|
96
96
|
__name: "BaseBadge",
|
|
97
97
|
props: { color: {
|
|
98
98
|
type: String,
|
|
99
99
|
required: !1
|
|
100
100
|
} },
|
|
101
101
|
setup(e) {
|
|
102
|
-
let t =
|
|
102
|
+
let t = ee(), n = r(() => !!t.default), i = e, s = {
|
|
103
103
|
[H.RED]: "bg-red-100 text-red-700 border-red-200",
|
|
104
104
|
[H.GREEN]: "bg-green-100 text-green-700 border-green-200",
|
|
105
105
|
[H.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
|
|
@@ -107,19 +107,19 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
107
107
|
[H.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
|
|
108
108
|
[H.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
|
|
109
109
|
[H.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
|
|
110
|
-
}, c = r(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && s[i.color] ||
|
|
111
|
-
return (e, t) => n.value ? (
|
|
110
|
+
}, c = r(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && s[i.color] || Ne}`);
|
|
111
|
+
return (e, t) => n.value ? (x(), o("span", {
|
|
112
112
|
key: 0,
|
|
113
113
|
class: h(c.value)
|
|
114
|
-
}, [
|
|
114
|
+
}, [E(e.$slots, "default")], 2)) : a("", !0);
|
|
115
115
|
}
|
|
116
|
-
}),
|
|
116
|
+
}), Fe = {
|
|
117
117
|
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",
|
|
118
118
|
"aria-label": "Breadcrumb"
|
|
119
|
-
},
|
|
119
|
+
}, Ie = { class: "inline-flex items-center space-x-1 md:space-x-3" }, Le = {
|
|
120
120
|
class: "inline-flex items-center",
|
|
121
121
|
style: { "margin-left": "0" }
|
|
122
|
-
},
|
|
122
|
+
}, Re = /* @__PURE__ */ f({
|
|
123
123
|
__name: "BaseBreadcrumb",
|
|
124
124
|
props: {
|
|
125
125
|
items: {
|
|
@@ -143,22 +143,22 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
143
143
|
}));
|
|
144
144
|
});
|
|
145
145
|
return (t, n) => {
|
|
146
|
-
let r =
|
|
147
|
-
return
|
|
146
|
+
let r = D("router-link");
|
|
147
|
+
return x(), o("nav", Fe, [s("ol", Ie, [s("li", Le, [d(r, {
|
|
148
148
|
to: "/",
|
|
149
149
|
class: "inline-flex items-center text-sm font-medium text-gray-700 hover:text-blue-600 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
|
|
150
150
|
}, {
|
|
151
|
-
default: F(() => [d(
|
|
151
|
+
default: F(() => [d(A(we), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= u(" Home ", -1)]),
|
|
152
152
|
_: 1
|
|
153
|
-
})]), (
|
|
153
|
+
})]), (x(!0), o(e, null, T(i.value, (e, t) => (x(), o("li", {
|
|
154
154
|
key: t,
|
|
155
155
|
class: "inline-flex items-center",
|
|
156
156
|
style: { "margin-left": "0" }
|
|
157
|
-
}, [d(
|
|
157
|
+
}, [d(A(de), { class: "h-4 w-4 text-gray-500" }), d(r, {
|
|
158
158
|
to: e.url,
|
|
159
159
|
class: "ml-1 text-sm font-medium text-gray-700 hover:text-blue-600 md:ml-2 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
|
|
160
160
|
}, {
|
|
161
|
-
default: F(() => [u(
|
|
161
|
+
default: F(() => [u(k(e.name), 1)]),
|
|
162
162
|
_: 2
|
|
163
163
|
}, 1032, ["to"])]))), 128))])]);
|
|
164
164
|
};
|
|
@@ -167,17 +167,17 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
167
167
|
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;
|
|
168
168
|
}({}), W = /* @__PURE__ */ function(e) {
|
|
169
169
|
return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
|
|
170
|
-
}({}),
|
|
170
|
+
}({}), ze = [
|
|
171
171
|
"type",
|
|
172
172
|
"disabled",
|
|
173
173
|
"onClick"
|
|
174
|
-
],
|
|
174
|
+
], Be = {
|
|
175
175
|
key: 0,
|
|
176
176
|
class: "inline-flex items-center"
|
|
177
|
-
},
|
|
177
|
+
}, Ve = { key: 1 }, He = { key: 2 }, Ue = ["type", "disabled"], We = {
|
|
178
178
|
key: 0,
|
|
179
179
|
class: "inline-flex items-center"
|
|
180
|
-
},
|
|
180
|
+
}, Ge = { key: 1 }, Ke = { key: 2 }, G = /* @__PURE__ */ f({
|
|
181
181
|
__name: "BaseButton",
|
|
182
182
|
props: {
|
|
183
183
|
description: {
|
|
@@ -395,8 +395,8 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
395
395
|
return n.isRounded && (o = "rounded-full"), t + " " + a + " " + i + " font-medium " + o;
|
|
396
396
|
}
|
|
397
397
|
return (t, r) => {
|
|
398
|
-
let c =
|
|
399
|
-
return e.to ? (
|
|
398
|
+
let c = D("router-link");
|
|
399
|
+
return e.to ? (x(), i(c, {
|
|
400
400
|
key: 0,
|
|
401
401
|
to: e.to,
|
|
402
402
|
custom: ""
|
|
@@ -407,7 +407,7 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
407
407
|
disabled: e.isDisable || e.isLoading,
|
|
408
408
|
onClick: i
|
|
409
409
|
}, [
|
|
410
|
-
e.isLoading ? (
|
|
410
|
+
e.isLoading ? (x(), o("div", Be, [...r[0] ||= [s("svg", {
|
|
411
411
|
"aria-hidden": "true",
|
|
412
412
|
role: "status",
|
|
413
413
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -421,18 +421,18 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
421
421
|
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",
|
|
422
422
|
fill: "currentColor"
|
|
423
423
|
})], -1)]])) : a("", !0),
|
|
424
|
-
e.iconLeft ? a("", !0) : (
|
|
425
|
-
|
|
426
|
-
e.iconLeft ? (
|
|
427
|
-
], 10,
|
|
424
|
+
e.iconLeft ? a("", !0) : (x(), o("span", Ve, k(e.description), 1)),
|
|
425
|
+
E(t.$slots, "default"),
|
|
426
|
+
e.iconLeft ? (x(), o("span", He, k(e.description), 1)) : a("", !0)
|
|
427
|
+
], 10, ze)]),
|
|
428
428
|
_: 3
|
|
429
|
-
}, 8, ["to"])) : (
|
|
429
|
+
}, 8, ["to"])) : (x(), o("button", {
|
|
430
430
|
key: 1,
|
|
431
431
|
type: n.type,
|
|
432
432
|
class: h(l()),
|
|
433
433
|
disabled: e.isDisable || e.isLoading
|
|
434
434
|
}, [
|
|
435
|
-
e.isLoading ? (
|
|
435
|
+
e.isLoading ? (x(), o("div", We, [...r[1] ||= [s("svg", {
|
|
436
436
|
"aria-hidden": "true",
|
|
437
437
|
role: "status",
|
|
438
438
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -446,40 +446,40 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
446
446
|
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",
|
|
447
447
|
fill: "currentColor"
|
|
448
448
|
})], -1)]])) : a("", !0),
|
|
449
|
-
e.iconLeft ? a("", !0) : (
|
|
450
|
-
|
|
451
|
-
e.iconLeft ? (
|
|
452
|
-
], 10,
|
|
449
|
+
e.iconLeft ? a("", !0) : (x(), o("span", Ge, k(e.description), 1)),
|
|
450
|
+
E(t.$slots, "default"),
|
|
451
|
+
e.iconLeft ? (x(), o("span", Ke, k(e.description), 1)) : a("", !0)
|
|
452
|
+
], 10, Ue));
|
|
453
453
|
};
|
|
454
454
|
}
|
|
455
|
-
}),
|
|
455
|
+
}), qe = /* @__PURE__ */ function(e) {
|
|
456
456
|
return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
|
|
457
|
-
}({}),
|
|
457
|
+
}({}), Je = {
|
|
458
458
|
key: 0,
|
|
459
459
|
class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
|
|
460
|
-
},
|
|
460
|
+
}, Ye = {
|
|
461
461
|
key: 1,
|
|
462
462
|
class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
|
|
463
|
-
},
|
|
463
|
+
}, Xe = {
|
|
464
464
|
key: 2,
|
|
465
465
|
class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
|
|
466
|
-
},
|
|
466
|
+
}, Ze = /* @__PURE__ */ f({
|
|
467
467
|
__name: "BaseLine",
|
|
468
468
|
props: { mode: {
|
|
469
469
|
type: String,
|
|
470
470
|
required: !1,
|
|
471
|
-
default:
|
|
471
|
+
default: qe.BASE
|
|
472
472
|
} },
|
|
473
473
|
setup(t) {
|
|
474
|
-
return (n, r) => (
|
|
475
|
-
t.mode ===
|
|
476
|
-
t.mode ===
|
|
477
|
-
t.mode ===
|
|
474
|
+
return (n, r) => (x(), o(e, null, [
|
|
475
|
+
t.mode === A(qe).BASE ? (x(), o("hr", Je)) : a("", !0),
|
|
476
|
+
t.mode === A(qe).BASE_SHORTER ? (x(), o("hr", Ye)) : a("", !0),
|
|
477
|
+
t.mode === A(qe).SQUARE ? (x(), o("hr", Xe)) : a("", !0)
|
|
478
478
|
], 64));
|
|
479
479
|
}
|
|
480
480
|
}), K = /* @__PURE__ */ function(e) {
|
|
481
481
|
return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
|
|
482
|
-
}({}),
|
|
482
|
+
}({}), Qe = K, $e = ["height", "width"], et = /* @__PURE__ */ f({
|
|
483
483
|
__name: "BaseLogo",
|
|
484
484
|
props: { size: {
|
|
485
485
|
type: String,
|
|
@@ -504,12 +504,12 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
504
504
|
return e;
|
|
505
505
|
}
|
|
506
506
|
return (e, t) => {
|
|
507
|
-
let r =
|
|
508
|
-
return
|
|
507
|
+
let r = D("router-link");
|
|
508
|
+
return x(), i(r, {
|
|
509
509
|
to: "/",
|
|
510
510
|
class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
|
|
511
511
|
}, {
|
|
512
|
-
default: F(() => [(
|
|
512
|
+
default: F(() => [(x(), o("svg", {
|
|
513
513
|
height: n(),
|
|
514
514
|
width: n(),
|
|
515
515
|
viewBox: "33.6 130.6 499.7 242.9",
|
|
@@ -659,23 +659,23 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
659
659
|
d: "m281.7 183.8h3.6v18.5h-3.6z",
|
|
660
660
|
fill: "url(#k)"
|
|
661
661
|
}, null, -1)
|
|
662
|
-
]], 8,
|
|
662
|
+
]], 8, $e))]),
|
|
663
663
|
_: 1
|
|
664
664
|
});
|
|
665
665
|
};
|
|
666
666
|
}
|
|
667
|
-
}),
|
|
667
|
+
}), tt = /* @__PURE__ */ function(e) {
|
|
668
668
|
return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
|
|
669
|
-
}({}),
|
|
669
|
+
}({}), nt = {
|
|
670
670
|
key: 0,
|
|
671
671
|
class: "p-6 text-center"
|
|
672
|
-
},
|
|
672
|
+
}, rt = { class: "flex justify-center" }, it = {
|
|
673
673
|
key: 1,
|
|
674
674
|
class: "p-6 text-center"
|
|
675
|
-
},
|
|
675
|
+
}, at = {
|
|
676
676
|
key: 0,
|
|
677
677
|
class: "mb-5 text-sm text-gray-500"
|
|
678
|
-
},
|
|
678
|
+
}, ot = { class: "flex justify-center" }, st = /* @__PURE__ */ f({
|
|
679
679
|
__name: "BaseModal",
|
|
680
680
|
props: {
|
|
681
681
|
title: {
|
|
@@ -694,7 +694,7 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
694
694
|
mode: {
|
|
695
695
|
type: String,
|
|
696
696
|
required: !1,
|
|
697
|
-
default:
|
|
697
|
+
default: tt.SUCCESS
|
|
698
698
|
}
|
|
699
699
|
},
|
|
700
700
|
emits: ["closeModal", "confirmModal"],
|
|
@@ -703,11 +703,11 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
703
703
|
function c(e) {
|
|
704
704
|
e.key === "Escape" && r("closeModal");
|
|
705
705
|
}
|
|
706
|
-
return
|
|
706
|
+
return v(() => {
|
|
707
707
|
document.addEventListener("keydown", c);
|
|
708
|
-
}),
|
|
708
|
+
}), b(() => {
|
|
709
709
|
document.removeEventListener("keydown", c);
|
|
710
|
-
}), (n, r) => (
|
|
710
|
+
}), (n, r) => (x(), o(e, null, [s("div", {
|
|
711
711
|
class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
|
|
712
712
|
onClick: r[0] ||= (e) => n.$emit("closeModal")
|
|
713
713
|
}), s("div", {
|
|
@@ -715,37 +715,37 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
715
715
|
role: "dialog",
|
|
716
716
|
"aria-modal": "true",
|
|
717
717
|
"aria-labelledby": i
|
|
718
|
-
}, [t.mode ===
|
|
719
|
-
d(
|
|
718
|
+
}, [t.mode === A(tt).DELETE ? (x(), o("div", nt, [
|
|
719
|
+
d(A(he), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
|
|
720
720
|
s("h3", {
|
|
721
721
|
id: i,
|
|
722
722
|
class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
|
|
723
|
-
}, " Are you sure you want to delete this " +
|
|
724
|
-
s("div",
|
|
725
|
-
color:
|
|
723
|
+
}, " Are you sure you want to delete this " + k(t.title) + "? ", 1),
|
|
724
|
+
s("div", rt, [d(G, {
|
|
725
|
+
color: A(U).RED,
|
|
726
726
|
onClick: r[1] ||= (e) => n.$emit("confirmModal"),
|
|
727
727
|
description: "Yes, I'm sure"
|
|
728
728
|
}, null, 8, ["color"]), d(G, {
|
|
729
|
-
color:
|
|
729
|
+
color: A(U).WHITE,
|
|
730
730
|
onClick: r[2] ||= (e) => n.$emit("closeModal"),
|
|
731
731
|
description: "No, cancel"
|
|
732
732
|
}, null, 8, ["color"])])
|
|
733
|
-
])) : (
|
|
734
|
-
d(
|
|
733
|
+
])) : (x(), o("div", it, [
|
|
734
|
+
d(A(se), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
|
|
735
735
|
s("h3", {
|
|
736
736
|
id: i,
|
|
737
737
|
class: "mb-2 text-lg font-medium text-gray-900"
|
|
738
|
-
},
|
|
739
|
-
t.description ? (
|
|
740
|
-
|
|
741
|
-
s("div",
|
|
742
|
-
color:
|
|
738
|
+
}, k(t.title), 1),
|
|
739
|
+
t.description ? (x(), o("p", at, k(t.description), 1)) : a("", !0),
|
|
740
|
+
E(n.$slots, "default"),
|
|
741
|
+
s("div", ot, [d(G, {
|
|
742
|
+
color: A(U).BLUE,
|
|
743
743
|
onClick: r[3] ||= (e) => n.$emit("closeModal"),
|
|
744
744
|
description: "OK"
|
|
745
745
|
}, null, 8, ["color"])])
|
|
746
746
|
]))])], 64));
|
|
747
747
|
}
|
|
748
|
-
}),
|
|
748
|
+
}), ct = /* @__PURE__ */ f({
|
|
749
749
|
__name: "BaseRow",
|
|
750
750
|
props: { bgColor: {
|
|
751
751
|
type: String,
|
|
@@ -757,9 +757,9 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
757
757
|
function n() {
|
|
758
758
|
return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
|
|
759
759
|
}
|
|
760
|
-
return (e, t) => (
|
|
760
|
+
return (e, t) => (x(), o("div", { class: h(n()) }, [E(e.$slots, "default")], 2));
|
|
761
761
|
}
|
|
762
|
-
}),
|
|
762
|
+
}), lt = /* @__PURE__ */ f({
|
|
763
763
|
__name: "BaseSpinner",
|
|
764
764
|
props: {
|
|
765
765
|
size: { default: "sm" },
|
|
@@ -781,7 +781,7 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
781
781
|
red: "border-t-red-500",
|
|
782
782
|
amber: "border-t-amber-500"
|
|
783
783
|
})[t.color]);
|
|
784
|
-
return (e, t) => (
|
|
784
|
+
return (e, t) => (x(), o("div", {
|
|
785
785
|
class: h(["border-gray-200 rounded-full animate-spin", [n.value, i.value]]),
|
|
786
786
|
role: "status",
|
|
787
787
|
"aria-label": "Loading"
|
|
@@ -791,7 +791,7 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
791
791
|
return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
|
|
792
792
|
}({}), J = /* @__PURE__ */ function(e) {
|
|
793
793
|
return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
|
|
794
|
-
}({}),
|
|
794
|
+
}({}), ut = { 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" }, dt = { class: "ml-3 text-sm font-normal" }, ft = /* @__PURE__ */ f({
|
|
795
795
|
__name: "BaseToast",
|
|
796
796
|
props: {
|
|
797
797
|
mode: {
|
|
@@ -819,13 +819,13 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
819
819
|
}
|
|
820
820
|
},
|
|
821
821
|
setup(e) {
|
|
822
|
-
let t = e, n =
|
|
822
|
+
let t = e, n = w(!0), r = null;
|
|
823
823
|
function i() {
|
|
824
824
|
n.value = !1, r &&= (clearTimeout(r), null);
|
|
825
825
|
}
|
|
826
|
-
|
|
826
|
+
v(() => {
|
|
827
827
|
r = setTimeout(() => n.value = !1, t.duration);
|
|
828
|
-
}),
|
|
828
|
+
}), b(() => {
|
|
829
829
|
r && clearTimeout(r);
|
|
830
830
|
});
|
|
831
831
|
function c() {
|
|
@@ -864,33 +864,33 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
864
864
|
}
|
|
865
865
|
return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
|
|
866
866
|
}
|
|
867
|
-
return (t, r) => n.value ? (
|
|
867
|
+
return (t, r) => n.value ? (x(), o("div", {
|
|
868
868
|
key: 0,
|
|
869
869
|
id: "toast-top-right",
|
|
870
870
|
class: h(l()),
|
|
871
871
|
role: "alert"
|
|
872
|
-
}, [s("div",
|
|
873
|
-
e.mode ==
|
|
872
|
+
}, [s("div", ut, [
|
|
873
|
+
e.mode == A(q).ERROR ? (x(), o("div", {
|
|
874
874
|
key: 0,
|
|
875
875
|
class: h(c())
|
|
876
|
-
}, [d(
|
|
876
|
+
}, [d(A(he), { class: "h-6 w-6 text-red-500" }), r[0] ||= s("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == A(q).SUCCESS ? (x(), o("div", {
|
|
877
877
|
key: 1,
|
|
878
878
|
class: h(c())
|
|
879
|
-
}, [d(
|
|
879
|
+
}, [d(A(se), { class: "h-6 w-6 text-green-500" }), r[1] ||= s("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == A(q).WARNING ? (x(), o("div", {
|
|
880
880
|
key: 2,
|
|
881
881
|
class: h(c())
|
|
882
|
-
}, [d(
|
|
883
|
-
s("div",
|
|
884
|
-
e.hasCloseIcon ? (
|
|
882
|
+
}, [d(A(ge), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= s("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : a("", !0),
|
|
883
|
+
s("div", dt, k(e.description), 1),
|
|
884
|
+
e.hasCloseIcon ? (x(), o("button", {
|
|
885
885
|
key: 3,
|
|
886
886
|
type: "button",
|
|
887
887
|
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 cursor-pointer",
|
|
888
888
|
"aria-label": "Close",
|
|
889
889
|
onClick: i
|
|
890
|
-
}, [r[3] ||= s("span", { class: "sr-only" }, "Close", -1), d(
|
|
890
|
+
}, [r[3] ||= s("span", { class: "sr-only" }, "Close", -1), d(A(Ce), { class: "h-6 w-6 text-gray-500" })])) : a("", !0)
|
|
891
891
|
])], 2)) : a("", !0);
|
|
892
892
|
}
|
|
893
|
-
}),
|
|
893
|
+
}), pt = { class: "w-13" }, mt = /* @__PURE__ */ f({
|
|
894
894
|
__name: "ColoredSquares",
|
|
895
895
|
props: { color: {
|
|
896
896
|
type: String,
|
|
@@ -907,7 +907,7 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
907
907
|
"bg-yellow-300",
|
|
908
908
|
"bg-purple-300",
|
|
909
909
|
"bg-pink-300"
|
|
910
|
-
], r =
|
|
910
|
+
], r = w(n[Math.floor(Math.random() * n.length)]);
|
|
911
911
|
function i() {
|
|
912
912
|
let e = "gray";
|
|
913
913
|
switch (t.color) {
|
|
@@ -927,9 +927,9 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
927
927
|
}
|
|
928
928
|
return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full bg-" + e + "-100 text-" + e + "-800";
|
|
929
929
|
}
|
|
930
|
-
return (e, t) => (
|
|
930
|
+
return (e, t) => (x(), o("div", pt, [s("div", { class: h(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [E(e.$slots, "default"), s("div", { class: h(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
|
|
931
931
|
}
|
|
932
|
-
}),
|
|
932
|
+
}), ht = { class: "flex items-start justify-between" }, gt = { class: "min-w-0" }, _t = /* @__PURE__ */ f({
|
|
933
933
|
__name: "EarningsCard",
|
|
934
934
|
props: {
|
|
935
935
|
title: { default: "TOTAL EARNINGS" },
|
|
@@ -981,14 +981,14 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
981
981
|
minimumFractionDigits: n.decimals,
|
|
982
982
|
maximumFractionDigits: n.decimals
|
|
983
983
|
}));
|
|
984
|
-
return (n, r) => (
|
|
984
|
+
return (n, r) => (x(), o("div", { class: h(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (x(), o("div", {
|
|
985
985
|
key: 0,
|
|
986
986
|
class: h(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
|
|
987
|
-
},
|
|
988
|
-
s("p", { class: h(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) },
|
|
989
|
-
s("p", { class: h(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) },
|
|
990
|
-
s("p", { class: h(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) },
|
|
991
|
-
]), s("div", { class: h(["flex items-center justify-center", [d.value.iconBox, t.compact ? "absolute right-2 top-2 h-6 w-6 rounded-lg" : "mt-6 h-12 w-12 rounded-xl"]]) }, [(
|
|
987
|
+
}, k(t.badge), 3)) : a("", !0), s("div", ht, [s("div", gt, [
|
|
988
|
+
s("p", { class: h(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, k(t.title), 3),
|
|
989
|
+
s("p", { class: h(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, k(f.value), 3),
|
|
990
|
+
s("p", { class: h(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, k(t.subtitle), 3)
|
|
991
|
+
]), s("div", { class: h(["flex items-center justify-center", [d.value.iconBox, t.compact ? "absolute right-2 top-2 h-6 w-6 rounded-lg" : "mt-6 h-12 w-12 rounded-xl"]]) }, [(x(), o("svg", {
|
|
992
992
|
class: h([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
|
|
993
993
|
viewBox: "0 0 24 24",
|
|
994
994
|
fill: "none",
|
|
@@ -996,12 +996,12 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
996
996
|
"stroke-width": "2.5",
|
|
997
997
|
"stroke-linecap": "round",
|
|
998
998
|
"stroke-linejoin": "round"
|
|
999
|
-
}, [l.value ? (
|
|
999
|
+
}, [l.value ? (x(), o(e, { key: 0 }, [r[0] ||= s("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= s("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (x(), o(e, { key: 1 }, [r[2] ||= s("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= s("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
|
|
1000
1000
|
}
|
|
1001
|
-
}),
|
|
1001
|
+
}), vt = {
|
|
1002
1002
|
key: 0,
|
|
1003
1003
|
class: "font-bold text-green-800 dark:text-green-400"
|
|
1004
|
-
},
|
|
1004
|
+
}, yt = { key: 0 }, bt = { key: 0 }, xt = "font-bold", St = /* @__PURE__ */ f({
|
|
1005
1005
|
__name: "EuroAmount",
|
|
1006
1006
|
props: {
|
|
1007
1007
|
amount: {
|
|
@@ -1021,20 +1021,20 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
1021
1021
|
},
|
|
1022
1022
|
setup(t) {
|
|
1023
1023
|
let n = t, i = r(() => n.amount !== null && n.amount !== void 0), s = r(() => i.value && n.amount < 0), c = r(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = r(() => s.value || c.value), d = r(() => !s.value && !c.value && !(n.beforeAmount === null || n.beforeAmount === void 0));
|
|
1024
|
-
return (n, r) => (
|
|
1024
|
+
return (n, r) => (x(), o(e, null, [i.value && d.value ? (x(), o("span", vt, [u(k(t.amount) + " ", 1), t.showCurrency ? (x(), o("span", yt, "€")) : a("", !0)])) : a("", !0), i.value && !d.value ? (x(), o("span", {
|
|
1025
1025
|
key: 1,
|
|
1026
|
-
class: h([
|
|
1027
|
-
}, [u(
|
|
1026
|
+
class: h([xt, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
|
|
1027
|
+
}, [u(k(t.amount) + " ", 1), t.showCurrency ? (x(), o("span", bt, "€")) : a("", !0)], 2)) : a("", !0)], 64));
|
|
1028
1028
|
}
|
|
1029
|
-
}),
|
|
1029
|
+
}), Ct = { "aria-label": "Pagination" }, wt = { class: "flex list-none p-0 m-0" }, Tt = [
|
|
1030
1030
|
"aria-current",
|
|
1031
1031
|
"aria-label",
|
|
1032
1032
|
"onClick"
|
|
1033
|
-
],
|
|
1033
|
+
], Et = {
|
|
1034
1034
|
key: 1,
|
|
1035
1035
|
"aria-hidden": "true",
|
|
1036
1036
|
class: "inline-block border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-not-allowed"
|
|
1037
|
-
},
|
|
1037
|
+
}, Dt = /* @__PURE__ */ f({
|
|
1038
1038
|
__name: "Pagination",
|
|
1039
1039
|
props: {
|
|
1040
1040
|
totalItems: {
|
|
@@ -1048,7 +1048,7 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
1048
1048
|
},
|
|
1049
1049
|
emits: ["page-changed"],
|
|
1050
1050
|
setup(t, { emit: n }) {
|
|
1051
|
-
let r = t, i =
|
|
1051
|
+
let r = t, i = w(1), a = w(0), c = w([]), l = n;
|
|
1052
1052
|
function u(e) {
|
|
1053
1053
|
if (a.value <= 5) {
|
|
1054
1054
|
c.value = Array.from({ length: a.value }, (e, t) => t + 1);
|
|
@@ -1064,28 +1064,28 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
1064
1064
|
}
|
|
1065
1065
|
return P(() => [r.totalItems, r.itemsPerPage], () => {
|
|
1066
1066
|
a.value = Math.ceil(r.totalItems / r.itemsPerPage), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
|
|
1067
|
-
}, { immediate: !0 }), (t, n) => (
|
|
1067
|
+
}, { immediate: !0 }), (t, n) => (x(), o("nav", Ct, [s("ul", wt, [(x(!0), o(e, null, T(c.value, (e, t) => (x(), o("li", {
|
|
1068
1068
|
key: t,
|
|
1069
1069
|
class: "mr-1"
|
|
1070
|
-
}, [e === 0 ? (
|
|
1070
|
+
}, [e === 0 ? (x(), o("span", Et, "...")) : (x(), o("button", {
|
|
1071
1071
|
key: 0,
|
|
1072
1072
|
type: "button",
|
|
1073
1073
|
"aria-current": e === i.value ? "page" : void 0,
|
|
1074
1074
|
"aria-label": `Go to page ${e}`,
|
|
1075
1075
|
onClick: (t) => d(e),
|
|
1076
1076
|
class: h(["inline-block min-w-[44px] border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-pointer transition-colors hover:bg-gray-300 dark:hover:bg-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", { "active font-bold bg-gray-200 dark:bg-gray-700": e === i.value }])
|
|
1077
|
-
},
|
|
1077
|
+
}, k(e), 11, Tt))]))), 128))])]));
|
|
1078
1078
|
}
|
|
1079
|
-
}),
|
|
1079
|
+
}), Ot = { key: 0 }, kt = {
|
|
1080
1080
|
key: 0,
|
|
1081
1081
|
class: "flex items-center space-x-2"
|
|
1082
|
-
},
|
|
1082
|
+
}, At = {
|
|
1083
1083
|
key: 1,
|
|
1084
1084
|
class: "flex items-center space-x-2"
|
|
1085
|
-
},
|
|
1085
|
+
}, jt = {
|
|
1086
1086
|
key: 2,
|
|
1087
1087
|
class: "flex items-center space-x-2"
|
|
1088
|
-
},
|
|
1088
|
+
}, Mt = /* @__PURE__ */ f({
|
|
1089
1089
|
__name: "TrendArrow",
|
|
1090
1090
|
props: {
|
|
1091
1091
|
number: {
|
|
@@ -1099,23 +1099,23 @@ var ke = { class: "min-w-0 flex-1" }, Ae = {
|
|
|
1099
1099
|
},
|
|
1100
1100
|
setup(e) {
|
|
1101
1101
|
let t = e, n = r(() => t.number !== null && t.number !== void 0 && t.number < 0), i = r(() => t.number === 0);
|
|
1102
|
-
return (r, s) => e.number !== null && e.number !== void 0 ? (
|
|
1103
|
-
default: F(() => [u(
|
|
1102
|
+
return (r, s) => e.number !== null && e.number !== void 0 ? (x(), o("div", Ot, [n.value ? (x(), o("span", kt, [d(Pe, { color: A(H).RED }, {
|
|
1103
|
+
default: F(() => [u(k(e.number) + k(t.icon), 1)]),
|
|
1104
1104
|
_: 1
|
|
1105
|
-
}, 8, ["color"]), d(
|
|
1106
|
-
default: F(() => [u(
|
|
1105
|
+
}, 8, ["color"]), d(A(re), { class: "h-5 w-5 text-red-500" })])) : i.value ? (x(), o("span", At, [d(Pe, { color: A(H).GRAY }, {
|
|
1106
|
+
default: F(() => [u(k(e.number) + k(t.icon), 1)]),
|
|
1107
1107
|
_: 1
|
|
1108
|
-
}, 8, ["color"]), d(
|
|
1109
|
-
default: F(() => [u(
|
|
1108
|
+
}, 8, ["color"]), d(A(be), { class: "h-5 w-5 text-gray-400" })])) : (x(), o("span", jt, [d(Pe, { color: A(H).GREEN }, {
|
|
1109
|
+
default: F(() => [u(k(e.number) + k(t.icon), 1)]),
|
|
1110
1110
|
_: 1
|
|
1111
|
-
}, 8, ["color"]), d(
|
|
1111
|
+
}, 8, ["color"]), d(A(ie), { class: "h-5 w-5 text-green-500" })]))])) : a("", !0);
|
|
1112
1112
|
}
|
|
1113
1113
|
});
|
|
1114
1114
|
//#endregion
|
|
1115
1115
|
//#region src/composables/useThemeClasses.ts
|
|
1116
1116
|
function Y() {
|
|
1117
1117
|
let { isDark: e } = V();
|
|
1118
|
-
return
|
|
1118
|
+
return S({
|
|
1119
1119
|
card: r(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
|
|
1120
1120
|
cardAlt: r(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
|
|
1121
1121
|
pageBg: r(() => e.value ? "bg-gray-900" : "bg-gray-50"),
|
|
@@ -1141,15 +1141,15 @@ function Y() {
|
|
|
1141
1141
|
}
|
|
1142
1142
|
//#endregion
|
|
1143
1143
|
//#region src/composables/useEscapeKey.ts
|
|
1144
|
-
function
|
|
1144
|
+
function Nt(e) {
|
|
1145
1145
|
function t(t) {
|
|
1146
1146
|
t.key === "Escape" && e();
|
|
1147
1147
|
}
|
|
1148
|
-
|
|
1148
|
+
v(() => document.addEventListener("keydown", t)), _(() => document.removeEventListener("keydown", t));
|
|
1149
1149
|
}
|
|
1150
1150
|
//#endregion
|
|
1151
1151
|
//#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
|
|
1152
|
-
var
|
|
1152
|
+
var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-w-0" }, It = { class: "p-6 overflow-y-auto flex-1" }, Lt = { class: "p-6" }, Rt = { class: "flex items-start gap-4" }, zt = { class: "flex-1" }, Bt = { class: "mt-4" }, Vt = { class: "mt-6 flex gap-3 justify-end" }, Ht = /* @__PURE__ */ f({
|
|
1153
1153
|
__name: "BaseModalShell",
|
|
1154
1154
|
props: {
|
|
1155
1155
|
title: {},
|
|
@@ -1173,51 +1173,51 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1173
1173
|
function g() {
|
|
1174
1174
|
l("backdrop"), c.manualClose || l("cancel");
|
|
1175
1175
|
}
|
|
1176
|
-
return
|
|
1176
|
+
return Nt(() => {
|
|
1177
1177
|
c.manualClose || l("cancel");
|
|
1178
|
-
}), (n, r) => (
|
|
1178
|
+
}), (n, r) => (x(), i(t, { to: "body" }, [s("div", {
|
|
1179
1179
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
1180
1180
|
role: "dialog",
|
|
1181
1181
|
"aria-modal": "true",
|
|
1182
1182
|
"aria-labelledby": f,
|
|
1183
1183
|
onClick: g
|
|
1184
|
-
}, [e.scrollable ? (
|
|
1184
|
+
}, [e.scrollable ? (x(), o("div", {
|
|
1185
1185
|
key: 0,
|
|
1186
1186
|
class: h(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
|
|
1187
1187
|
onClick: r[0] ||= L(() => {}, ["stop"])
|
|
1188
1188
|
}, [
|
|
1189
|
-
s("div", { class: h(["flex items-start justify-between gap-4 p-6 border-b shrink-0",
|
|
1189
|
+
s("div", { class: h(["flex items-start justify-between gap-4 p-6 border-b shrink-0", A(d).border]) }, [s("div", Pt, [E(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(x(), i(O(e.icon), {
|
|
1190
1190
|
class: h(["h-6 w-6", e.iconClass]),
|
|
1191
1191
|
"aria-hidden": "true"
|
|
1192
|
-
}, null, 8, ["class"]))], 2)]), s("div",
|
|
1192
|
+
}, null, 8, ["class"]))], 2)]), s("div", Ft, [s("h3", {
|
|
1193
1193
|
id: f,
|
|
1194
|
-
class: h(["text-lg font-medium",
|
|
1195
|
-
},
|
|
1194
|
+
class: h(["text-lg font-medium", A(d).primaryText])
|
|
1195
|
+
}, k(e.title), 3), e.subtitle ? (x(), o("p", {
|
|
1196
1196
|
key: 0,
|
|
1197
|
-
class: h(["text-sm mt-1 break-all",
|
|
1198
|
-
},
|
|
1199
|
-
s("div",
|
|
1200
|
-
n.$slots.footer ? (
|
|
1197
|
+
class: h(["text-sm mt-1 break-all", A(d).mutedText])
|
|
1198
|
+
}, k(e.subtitle), 3)) : a("", !0)])]), E(n.$slots, "header-actions")], 2),
|
|
1199
|
+
s("div", It, [E(n.$slots, "default")]),
|
|
1200
|
+
n.$slots.footer ? (x(), o("div", {
|
|
1201
1201
|
key: 0,
|
|
1202
|
-
class: h(["flex gap-3 justify-end p-6 border-t shrink-0",
|
|
1203
|
-
}, [
|
|
1204
|
-
], 2)) : (
|
|
1202
|
+
class: h(["flex gap-3 justify-end p-6 border-t shrink-0", A(d).border])
|
|
1203
|
+
}, [E(n.$slots, "footer")], 2)) : a("", !0)
|
|
1204
|
+
], 2)) : (x(), o("div", {
|
|
1205
1205
|
key: 1,
|
|
1206
1206
|
class: h(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
|
|
1207
1207
|
onClick: r[1] ||= L(() => {}, ["stop"])
|
|
1208
|
-
}, [s("div",
|
|
1209
|
-
s("div",
|
|
1208
|
+
}, [s("div", Lt, [
|
|
1209
|
+
s("div", Rt, [E(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(x(), i(O(e.icon), {
|
|
1210
1210
|
class: h(["h-6 w-6", e.iconClass]),
|
|
1211
1211
|
"aria-hidden": "true"
|
|
1212
|
-
}, null, 8, ["class"]))], 2)]), s("div",
|
|
1212
|
+
}, null, 8, ["class"]))], 2)]), s("div", zt, [s("h3", {
|
|
1213
1213
|
id: f,
|
|
1214
|
-
class: h(["text-lg font-medium",
|
|
1215
|
-
},
|
|
1216
|
-
s("div",
|
|
1217
|
-
s("div",
|
|
1214
|
+
class: h(["text-lg font-medium", A(d).primaryText])
|
|
1215
|
+
}, k(e.title), 3)])]),
|
|
1216
|
+
s("div", Bt, [E(n.$slots, "default")]),
|
|
1217
|
+
s("div", Vt, [E(n.$slots, "footer")])
|
|
1218
1218
|
])], 2))])]));
|
|
1219
1219
|
}
|
|
1220
|
-
}),
|
|
1220
|
+
}), Ut = ["aria-expanded"], Wt = { class: "flex items-center gap-3" }, Gt = /* @__PURE__ */ f({
|
|
1221
1221
|
__name: "BaseCollapsibleSection",
|
|
1222
1222
|
props: {
|
|
1223
1223
|
title: {},
|
|
@@ -1228,16 +1228,16 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1228
1228
|
emits: ["toggle"],
|
|
1229
1229
|
setup(e, { emit: t }) {
|
|
1230
1230
|
let n = e, i = t, { isDark: c } = V(), l = Y(), u = r(() => c.value ? "text-gray-100" : "text-gray-700"), d = r(() => c.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = r(() => c.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = r(() => n.bodyClass === void 0 ? c.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
|
|
1231
|
-
return (t, n) => (
|
|
1231
|
+
return (t, n) => (x(), o("section", { class: h(["rounded-xl border transition-colors", A(l).cardAlt]) }, [s("button", {
|
|
1232
1232
|
type: "button",
|
|
1233
1233
|
class: h(["w-full flex items-center justify-between p-4 text-left transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [d.value, e.collapsed ? "rounded-xl" : "rounded-t-xl"]]),
|
|
1234
1234
|
"aria-expanded": !e.collapsed,
|
|
1235
1235
|
onClick: n[0] ||= (e) => i("toggle")
|
|
1236
|
-
}, [s("div",
|
|
1236
|
+
}, [s("div", Wt, [s("h2", { class: h(["text-base font-semibold", u.value]) }, k(e.title), 3), e.badge ? (x(), o("span", {
|
|
1237
1237
|
key: 0,
|
|
1238
1238
|
class: h(["text-xs px-2 py-0.5 rounded-full", f.value])
|
|
1239
|
-
},
|
|
1240
|
-
class: h(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180",
|
|
1239
|
+
}, k(e.badge), 3)) : a("", !0)]), (x(), o("svg", {
|
|
1240
|
+
class: h(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", A(l).dimTextAlt]]),
|
|
1241
1241
|
fill: "none",
|
|
1242
1242
|
viewBox: "0 0 24 24",
|
|
1243
1243
|
stroke: "currentColor",
|
|
@@ -1247,15 +1247,15 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1247
1247
|
"stroke-linecap": "round",
|
|
1248
1248
|
"stroke-linejoin": "round",
|
|
1249
1249
|
d: "M19 9l-7 7-7-7"
|
|
1250
|
-
}, null, -1)]], 2))], 10,
|
|
1250
|
+
}, null, -1)]], 2))], 10, Ut), I(s("div", { class: h(["p-6 border-t rounded-b-xl", [A(l).border, p.value]]) }, [E(t.$slots, "default")], 2), [[te, !e.collapsed]])], 2));
|
|
1251
1251
|
}
|
|
1252
|
-
}),
|
|
1252
|
+
}), Kt = ["disabled"], qt = ["disabled"], Jt = {
|
|
1253
1253
|
key: 0,
|
|
1254
1254
|
class: "w-4 h-4 animate-spin",
|
|
1255
1255
|
fill: "none",
|
|
1256
1256
|
viewBox: "0 0 24 24",
|
|
1257
1257
|
"aria-hidden": "true"
|
|
1258
|
-
},
|
|
1258
|
+
}, Yt = /* @__PURE__ */ f({
|
|
1259
1259
|
__name: "BaseConfirmModal",
|
|
1260
1260
|
props: {
|
|
1261
1261
|
title: {},
|
|
@@ -1278,10 +1278,10 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1278
1278
|
function f() {
|
|
1279
1279
|
n.submitting || r("cancel");
|
|
1280
1280
|
}
|
|
1281
|
-
return (t, n) => (
|
|
1281
|
+
return (t, n) => (x(), i(Ht, {
|
|
1282
1282
|
title: e.title,
|
|
1283
|
-
icon:
|
|
1284
|
-
"icon-bg-class": e.variant === "danger" ?
|
|
1283
|
+
icon: A(ge),
|
|
1284
|
+
"icon-bg-class": e.variant === "danger" ? A(c) ? "bg-red-900/30" : "bg-red-50" : A(c) ? "bg-amber-900/30" : "bg-amber-50",
|
|
1285
1285
|
"icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
|
|
1286
1286
|
"manual-close": e.submitting,
|
|
1287
1287
|
onCancel: f
|
|
@@ -1289,14 +1289,14 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1289
1289
|
footer: F(() => [s("button", {
|
|
1290
1290
|
type: "button",
|
|
1291
1291
|
disabled: e.submitting,
|
|
1292
|
-
class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [
|
|
1292
|
+
class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [A(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
|
|
1293
1293
|
onClick: f
|
|
1294
|
-
},
|
|
1294
|
+
}, k(e.cancelText), 11, Kt), s("button", {
|
|
1295
1295
|
type: "button",
|
|
1296
1296
|
disabled: e.submitting,
|
|
1297
1297
|
class: h(["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 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2", [e.variant === "danger" ? "focus-visible:ring-red-500" : "focus-visible:ring-emerald-500", 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"]]),
|
|
1298
1298
|
onClick: d
|
|
1299
|
-
}, [e.submitting ? (
|
|
1299
|
+
}, [e.submitting ? (x(), o("svg", Jt, [...n[0] ||= [s("circle", {
|
|
1300
1300
|
class: "opacity-25",
|
|
1301
1301
|
cx: "12",
|
|
1302
1302
|
cy: "12",
|
|
@@ -1307,8 +1307,8 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1307
1307
|
class: "opacity-75",
|
|
1308
1308
|
fill: "currentColor",
|
|
1309
1309
|
d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
|
|
1310
|
-
}, null, -1)]])) : a("", !0), u(" " +
|
|
1311
|
-
default: F(() => [
|
|
1310
|
+
}, null, -1)]])) : a("", !0), u(" " + k(e.submitting ? e.submittingText : e.confirmText), 1)], 10, qt)]),
|
|
1311
|
+
default: F(() => [E(t.$slots, "message", {}, () => [s("p", { class: h(["text-sm", A(c) ? "text-gray-300" : "text-gray-600"]) }, k(e.message), 3)]), E(t.$slots, "default")]),
|
|
1312
1312
|
_: 3
|
|
1313
1313
|
}, 8, [
|
|
1314
1314
|
"title",
|
|
@@ -1318,7 +1318,7 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1318
1318
|
"manual-close"
|
|
1319
1319
|
]));
|
|
1320
1320
|
}
|
|
1321
|
-
}),
|
|
1321
|
+
}), Xt = { class: "mt-4" }, Zt = ["placeholder"], Qt = ["disabled"], $t = /* @__PURE__ */ f({
|
|
1322
1322
|
__name: "BaseTextInputModal",
|
|
1323
1323
|
props: {
|
|
1324
1324
|
title: {},
|
|
@@ -1336,8 +1336,8 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1336
1336
|
},
|
|
1337
1337
|
emits: ["confirm", "cancel"],
|
|
1338
1338
|
setup(e, { emit: t }) {
|
|
1339
|
-
let n = e, r = t, { isDark: a } = V(), o = Y(), l =
|
|
1340
|
-
|
|
1339
|
+
let n = e, r = t, { isDark: a } = V(), o = Y(), l = w(n.initialValue), u = w(null);
|
|
1340
|
+
v(async () => {
|
|
1341
1341
|
await m(), u.value?.focus();
|
|
1342
1342
|
});
|
|
1343
1343
|
function d() {
|
|
@@ -1349,39 +1349,39 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1349
1349
|
function p() {
|
|
1350
1350
|
l.value.trim() === (n.initialValue ?? "").trim() && f();
|
|
1351
1351
|
}
|
|
1352
|
-
return
|
|
1352
|
+
return Nt(f), (t, n) => (x(), i(Ht, {
|
|
1353
1353
|
title: e.title,
|
|
1354
|
-
icon:
|
|
1354
|
+
icon: A(me),
|
|
1355
1355
|
"manual-close": "",
|
|
1356
1356
|
onBackdrop: p
|
|
1357
1357
|
}, c({
|
|
1358
1358
|
footer: F(() => [s("button", {
|
|
1359
1359
|
type: "button",
|
|
1360
|
-
class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1360
|
+
class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(o).ghostButton]),
|
|
1361
1361
|
onClick: f
|
|
1362
|
-
},
|
|
1362
|
+
}, k(e.cancelText), 3), s("button", {
|
|
1363
1363
|
type: "button",
|
|
1364
1364
|
disabled: !l.value.trim() || e.submitting,
|
|
1365
1365
|
class: h(["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 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", [!l.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
|
|
1366
1366
|
onClick: d
|
|
1367
|
-
},
|
|
1368
|
-
default: F(() => [s("p", { class: h(["text-sm",
|
|
1367
|
+
}, k(e.submitting ? e.submittingText : e.confirmText), 11, Qt)]),
|
|
1368
|
+
default: F(() => [s("p", { class: h(["text-sm", A(a) ? "text-gray-300" : "text-gray-600"]) }, k(e.message), 3), s("div", Xt, [s("label", { class: h(["block text-sm font-medium mb-1", A(o).label]) }, k(e.inputLabel), 3), I(s("input", {
|
|
1369
1369
|
ref_key: "nameInput",
|
|
1370
1370
|
ref: u,
|
|
1371
1371
|
"onUpdate:modelValue": n[0] ||= (e) => l.value = e,
|
|
1372
1372
|
type: "text",
|
|
1373
1373
|
placeholder: e.placeholder,
|
|
1374
|
-
class: h(["w-full px-3 py-2 rounded-md border text-sm transition-colors",
|
|
1375
|
-
onKeyup:
|
|
1376
|
-
}, null, 42,
|
|
1374
|
+
class: h(["w-full px-3 py-2 rounded-md border text-sm transition-colors", A(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"]),
|
|
1375
|
+
onKeyup: ne(d, ["enter"])
|
|
1376
|
+
}, null, 42, Zt), [[N, l.value]])])]),
|
|
1377
1377
|
_: 2
|
|
1378
1378
|
}, [t.$slots.icon ? {
|
|
1379
1379
|
name: "icon",
|
|
1380
|
-
fn: F(() => [
|
|
1380
|
+
fn: F(() => [E(t.$slots, "icon")]),
|
|
1381
1381
|
key: "0"
|
|
1382
1382
|
} : void 0]), 1032, ["title", "icon"]));
|
|
1383
1383
|
}
|
|
1384
|
-
}),
|
|
1384
|
+
}), en = { class: "flex items-center justify-center min-h-[60vh]" }, tn = { class: "text-center px-6" }, nn = /* @__PURE__ */ f({
|
|
1385
1385
|
__name: "BaseNotFoundPage",
|
|
1386
1386
|
props: {
|
|
1387
1387
|
code: { default: "404" },
|
|
@@ -1390,33 +1390,33 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
|
|
|
1390
1390
|
homeLabel: { default: "Go home" }
|
|
1391
1391
|
},
|
|
1392
1392
|
setup(e) {
|
|
1393
|
-
let t = e, n =
|
|
1393
|
+
let t = e, n = Ee(), { isDark: r } = V(), i = Y();
|
|
1394
1394
|
function a() {
|
|
1395
1395
|
n.push({ name: t.homeRouteName });
|
|
1396
1396
|
}
|
|
1397
|
-
return (t, n) => (
|
|
1398
|
-
d(
|
|
1399
|
-
s("h1", { class: h(["text-4xl font-bold mb-2",
|
|
1400
|
-
s("p", { class: h(["text-lg mb-6",
|
|
1397
|
+
return (t, n) => (x(), o("div", en, [s("div", tn, [
|
|
1398
|
+
d(A(ge), { class: h(["w-16 h-16 mx-auto mb-4", A(i).illustration]) }, null, 8, ["class"]),
|
|
1399
|
+
s("h1", { class: h(["text-4xl font-bold mb-2", A(r) ? "text-gray-200" : "text-gray-800"]) }, k(e.code), 3),
|
|
1400
|
+
s("p", { class: h(["text-lg mb-6", A(i).dimTextAlt]) }, k(e.message), 3),
|
|
1401
1401
|
s("button", {
|
|
1402
1402
|
onClick: a,
|
|
1403
|
-
class: h(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2",
|
|
1404
|
-
},
|
|
1403
|
+
class: h(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", A(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
|
|
1404
|
+
}, k(e.homeLabel), 3)
|
|
1405
1405
|
])]));
|
|
1406
1406
|
}
|
|
1407
|
-
}),
|
|
1408
|
-
function
|
|
1407
|
+
}), rn = w(!1);
|
|
1408
|
+
function an() {
|
|
1409
1409
|
function e() {
|
|
1410
|
-
|
|
1410
|
+
rn.value = !0;
|
|
1411
1411
|
}
|
|
1412
1412
|
function t() {
|
|
1413
|
-
|
|
1413
|
+
rn.value = !1;
|
|
1414
1414
|
}
|
|
1415
1415
|
function n() {
|
|
1416
|
-
|
|
1416
|
+
rn.value = !rn.value;
|
|
1417
1417
|
}
|
|
1418
1418
|
return {
|
|
1419
|
-
mobileOpen:
|
|
1419
|
+
mobileOpen: rn,
|
|
1420
1420
|
open: e,
|
|
1421
1421
|
close: t,
|
|
1422
1422
|
toggle: n
|
|
@@ -1424,19 +1424,19 @@ function rn() {
|
|
|
1424
1424
|
}
|
|
1425
1425
|
//#endregion
|
|
1426
1426
|
//#region src/composables/useSidebarCollapse.ts
|
|
1427
|
-
var X =
|
|
1428
|
-
function
|
|
1429
|
-
if (!
|
|
1430
|
-
let e = window.localStorage?.getItem(
|
|
1427
|
+
var X = w(!1), on = !1, sn = "mgv-sidebar-collapsed";
|
|
1428
|
+
function cn(e) {
|
|
1429
|
+
if (!on && (on = !0, sn = e, typeof window < "u")) {
|
|
1430
|
+
let e = window.localStorage?.getItem(sn);
|
|
1431
1431
|
e && (X.value = e === "true"), p(!0).run(() => {
|
|
1432
1432
|
P(X, (e) => {
|
|
1433
|
-
window.localStorage?.setItem(
|
|
1433
|
+
window.localStorage?.setItem(sn, String(e));
|
|
1434
1434
|
});
|
|
1435
1435
|
});
|
|
1436
1436
|
}
|
|
1437
1437
|
}
|
|
1438
|
-
function
|
|
1439
|
-
|
|
1438
|
+
function ln(e) {
|
|
1439
|
+
cn(e?.storageKey ?? sn);
|
|
1440
1440
|
function t() {
|
|
1441
1441
|
X.value = !0;
|
|
1442
1442
|
}
|
|
@@ -1455,16 +1455,16 @@ function cn(e) {
|
|
|
1455
1455
|
}
|
|
1456
1456
|
//#endregion
|
|
1457
1457
|
//#region src/composables/useNotifications.ts
|
|
1458
|
-
var Z =
|
|
1459
|
-
function
|
|
1458
|
+
var Z = w([]), un = w(!1), dn = r(() => Z.value.filter((e) => !e.read).length);
|
|
1459
|
+
function fn() {
|
|
1460
1460
|
function e() {
|
|
1461
|
-
|
|
1461
|
+
un.value = !0;
|
|
1462
1462
|
}
|
|
1463
1463
|
function t() {
|
|
1464
|
-
|
|
1464
|
+
un.value = !1;
|
|
1465
1465
|
}
|
|
1466
1466
|
function n() {
|
|
1467
|
-
|
|
1467
|
+
un.value = !un.value;
|
|
1468
1468
|
}
|
|
1469
1469
|
function r(e) {
|
|
1470
1470
|
Z.value = e;
|
|
@@ -1492,8 +1492,8 @@ function dn() {
|
|
|
1492
1492
|
}
|
|
1493
1493
|
return {
|
|
1494
1494
|
notifications: Z,
|
|
1495
|
-
unreadCount:
|
|
1496
|
-
open:
|
|
1495
|
+
unreadCount: dn,
|
|
1496
|
+
open: un,
|
|
1497
1497
|
openPanel: e,
|
|
1498
1498
|
closePanel: t,
|
|
1499
1499
|
togglePanel: n,
|
|
@@ -1507,22 +1507,22 @@ function dn() {
|
|
|
1507
1507
|
}
|
|
1508
1508
|
//#endregion
|
|
1509
1509
|
//#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
|
|
1510
|
-
var
|
|
1510
|
+
var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }, hn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, gn = { class: "space-y-0.5" }, _n = [
|
|
1511
1511
|
"aria-current",
|
|
1512
1512
|
"title",
|
|
1513
1513
|
"onClick"
|
|
1514
|
-
],
|
|
1514
|
+
], vn = ["aria-label"], yn = { class: "relative shrink-0" }, bn = {
|
|
1515
1515
|
key: 0,
|
|
1516
1516
|
class: "absolute -top-1.5 -right-1.5 min-w-4 h-4 px-1 rounded-full bg-red-500 text-white text-[10px] font-semibold leading-4 text-center"
|
|
1517
|
-
},
|
|
1517
|
+
}, xn = [
|
|
1518
1518
|
"title",
|
|
1519
1519
|
"aria-label",
|
|
1520
1520
|
"aria-pressed"
|
|
1521
|
-
],
|
|
1521
|
+
], Sn = [
|
|
1522
1522
|
"title",
|
|
1523
1523
|
"aria-label",
|
|
1524
1524
|
"aria-pressed"
|
|
1525
|
-
],
|
|
1525
|
+
], Cn = /*#__PURE__*/ ((e, t) => {
|
|
1526
1526
|
let n = e.__vccOpts || e;
|
|
1527
1527
|
for (let [e, r] of t) n[e] = r;
|
|
1528
1528
|
return n;
|
|
@@ -1547,7 +1547,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1547
1547
|
}
|
|
1548
1548
|
},
|
|
1549
1549
|
setup(t) {
|
|
1550
|
-
let n = t, c =
|
|
1550
|
+
let n = t, c = Ee(), l = Te(), { isDark: f, toggleTheme: p } = V(), { mobileOpen: g, close: _, toggle: v } = an(), { collapsed: y, toggle: b } = ln(), { unreadCount: S, togglePanel: C } = fn(), D = r(() => n.collapsible && y.value), ee = w(null), j = null;
|
|
1551
1551
|
P(g, async (e) => {
|
|
1552
1552
|
e ? (j = document.activeElement instanceof HTMLElement ? document.activeElement : null, await m(), ee.value?.focus()) : (j?.focus(), j = null);
|
|
1553
1553
|
});
|
|
@@ -1557,141 +1557,141 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1557
1557
|
function N(e) {
|
|
1558
1558
|
return l.name === e;
|
|
1559
1559
|
}
|
|
1560
|
-
function
|
|
1560
|
+
function te(e) {
|
|
1561
1561
|
c.push({ name: e }), _();
|
|
1562
1562
|
}
|
|
1563
|
-
return (n, r) => (
|
|
1564
|
-
s("div", { class: h(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors",
|
|
1563
|
+
return (n, r) => (x(), o("div", null, [
|
|
1564
|
+
s("div", { class: h(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", A(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [s("button", {
|
|
1565
1565
|
type: "button",
|
|
1566
1566
|
onClick: M,
|
|
1567
1567
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1568
1568
|
"aria-label": "Go to home"
|
|
1569
|
-
}, [
|
|
1569
|
+
}, [E(n.$slots, "logo", { size: 28 }, void 0, !0)]), s("button", {
|
|
1570
1570
|
type: "button",
|
|
1571
|
-
onClick: r[0] ||= (...e) =>
|
|
1572
|
-
class: h(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1573
|
-
"aria-label":
|
|
1574
|
-
"aria-expanded":
|
|
1575
|
-
}, [
|
|
1571
|
+
onClick: r[0] ||= (...e) => A(v) && A(v)(...e),
|
|
1572
|
+
class: h(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
|
|
1573
|
+
"aria-label": A(g) ? "Close navigation menu" : "Open navigation menu",
|
|
1574
|
+
"aria-expanded": A(g)
|
|
1575
|
+
}, [A(g) ? (x(), i(A(Ce), {
|
|
1576
1576
|
key: 1,
|
|
1577
1577
|
class: "w-6 h-6",
|
|
1578
1578
|
"aria-hidden": "true"
|
|
1579
|
-
})) : (
|
|
1579
|
+
})) : (x(), i(A(ae), {
|
|
1580
1580
|
key: 0,
|
|
1581
1581
|
class: "w-6 h-6",
|
|
1582
1582
|
"aria-hidden": "true"
|
|
1583
|
-
}))], 10,
|
|
1584
|
-
|
|
1583
|
+
}))], 10, pn)], 2),
|
|
1584
|
+
A(g) ? (x(), o("div", {
|
|
1585
1585
|
key: 0,
|
|
1586
1586
|
class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
|
|
1587
1587
|
"aria-hidden": "true",
|
|
1588
|
-
onClick: r[1] ||= (...e) =>
|
|
1588
|
+
onClick: r[1] ||= (...e) => A(_) && A(_)(...e)
|
|
1589
1589
|
})) : a("", !0),
|
|
1590
1590
|
s("aside", {
|
|
1591
1591
|
role: "navigation",
|
|
1592
1592
|
"aria-label": "Main navigation",
|
|
1593
1593
|
class: h(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
t.collapsible &&
|
|
1594
|
+
A(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
|
|
1595
|
+
A(g) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
|
|
1596
|
+
t.collapsible && A(y) ? "lg:w-16" : "lg:w-60"
|
|
1597
1597
|
]])
|
|
1598
|
-
}, [s("div",
|
|
1599
|
-
s("div", { class: h(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2":
|
|
1598
|
+
}, [s("div", mn, [
|
|
1599
|
+
s("div", { class: h(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": D.value }]) }, [s("button", {
|
|
1600
1600
|
type: "button",
|
|
1601
1601
|
onClick: M,
|
|
1602
1602
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1603
1603
|
"aria-label": "Go to home"
|
|
1604
|
-
}, [
|
|
1604
|
+
}, [E(n.$slots, "logo", { size: D.value ? 36 : 52 }, void 0, !0)]), s("button", {
|
|
1605
1605
|
ref_key: "closeMobileButton",
|
|
1606
1606
|
ref: ee,
|
|
1607
1607
|
type: "button",
|
|
1608
|
-
onClick: r[2] ||= (...e) =>
|
|
1609
|
-
class: h(["lg:hidden p-1.5 rounded-lg cursor-pointer absolute right-3 top-4 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1608
|
+
onClick: r[2] ||= (...e) => A(_) && A(_)(...e),
|
|
1609
|
+
class: h(["lg:hidden p-1.5 rounded-lg cursor-pointer absolute right-3 top-4 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
|
|
1610
1610
|
"aria-label": "Close navigation menu"
|
|
1611
|
-
}, [d(
|
|
1611
|
+
}, [d(A(Ce), {
|
|
1612
1612
|
class: "w-5 h-5",
|
|
1613
1613
|
"aria-hidden": "true"
|
|
1614
1614
|
})], 2)], 2),
|
|
1615
|
-
s("nav",
|
|
1615
|
+
s("nav", hn, [(x(!0), o(e, null, T(t.sections, (t) => (x(), o("div", { key: t.title }, [s("p", { class: h(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": D.value }]) }, k(t.title), 3), s("ul", gn, [(x(!0), o(e, null, T(t.items, (e) => (x(), o("li", { key: e.name }, [s("button", {
|
|
1616
1616
|
type: "button",
|
|
1617
1617
|
"aria-current": N(e.name) ? "page" : void 0,
|
|
1618
|
-
title:
|
|
1619
|
-
onClick: (t) =>
|
|
1620
|
-
class: h(["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", [N(e.name) ?
|
|
1621
|
-
}, [(
|
|
1622
|
-
s("div", { class: h(["px-4 py-4 border-t transition-colors space-y-3",
|
|
1623
|
-
t.showNotifications ? (
|
|
1618
|
+
title: D.value ? e.label : void 0,
|
|
1619
|
+
onClick: (t) => te(e.name),
|
|
1620
|
+
class: h(["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", [N(e.name) ? A(f) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
|
|
1621
|
+
}, [(x(), i(O(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s("span", { class: h({ "lg:hidden": D.value }) }, k(e.label), 3)], 10, _n)]))), 128))])]))), 128))]),
|
|
1622
|
+
s("div", { class: h(["px-4 py-4 border-t transition-colors space-y-3", A(f) ? "border-gray-800" : "border-gray-200"]) }, [
|
|
1623
|
+
t.showNotifications ? (x(), o("button", {
|
|
1624
1624
|
key: 0,
|
|
1625
1625
|
type: "button",
|
|
1626
|
-
onClick: r[3] ||= (...e) =>
|
|
1626
|
+
onClick: r[3] ||= (...e) => A(C) && A(C)(...e),
|
|
1627
1627
|
title: "Notifications",
|
|
1628
|
-
"aria-label":
|
|
1629
|
-
class: h(["relative 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", [
|
|
1630
|
-
}, [s("span",
|
|
1628
|
+
"aria-label": A(S) > 0 ? `Notifications, ${A(S)} unread` : "Notifications",
|
|
1629
|
+
class: h(["relative 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", [A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
|
|
1630
|
+
}, [s("span", yn, [d(A(oe), {
|
|
1631
1631
|
class: "w-[18px] h-[18px]",
|
|
1632
1632
|
"aria-hidden": "true"
|
|
1633
|
-
}),
|
|
1634
|
-
t.showThemeToggle ? (
|
|
1633
|
+
}), A(S) > 0 ? (x(), o("span", bn, k(A(S) > 99 ? "99+" : A(S)), 1)) : a("", !0)]), s("span", { class: h({ "lg:hidden": D.value }) }, "Notifications", 2)], 10, vn)) : a("", !0),
|
|
1634
|
+
t.showThemeToggle ? (x(), o("button", {
|
|
1635
1635
|
key: 1,
|
|
1636
1636
|
type: "button",
|
|
1637
|
-
onClick: r[4] ||= (...e) =>
|
|
1638
|
-
title:
|
|
1639
|
-
"aria-label":
|
|
1640
|
-
"aria-pressed":
|
|
1641
|
-
class: h(["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", [
|
|
1637
|
+
onClick: r[4] ||= (...e) => A(p) && A(p)(...e),
|
|
1638
|
+
title: A(f) ? "Switch to light mode" : "Switch to dark mode",
|
|
1639
|
+
"aria-label": A(f) ? "Switch to light mode" : "Switch to dark mode",
|
|
1640
|
+
"aria-pressed": A(f),
|
|
1641
|
+
class: h(["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", [A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
|
|
1642
1642
|
}, [
|
|
1643
|
-
(
|
|
1644
|
-
class: h(["hidden w-[18px] h-[18px] shrink-0", { "lg:block":
|
|
1643
|
+
(x(), i(O(A(f) ? A(Se) : A(xe)), {
|
|
1644
|
+
class: h(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": D.value }]),
|
|
1645
1645
|
"aria-hidden": "true"
|
|
1646
1646
|
}, null, 8, ["class"])),
|
|
1647
|
-
s("span", { class: h({ "lg:hidden":
|
|
1648
|
-
s("span", { class: h(["ml-auto relative w-9 h-5 rounded-full transition-colors", [
|
|
1649
|
-
], 10,
|
|
1650
|
-
t.collapsible ? (
|
|
1647
|
+
s("span", { class: h({ "lg:hidden": D.value }) }, k(A(f) ? "Switch to light" : "Switch to dark"), 3),
|
|
1648
|
+
s("span", { class: h(["ml-auto relative w-9 h-5 rounded-full transition-colors", [A(f) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": D.value }]]) }, [s("span", { class: h(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", A(f) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
|
|
1649
|
+
], 10, xn)) : a("", !0),
|
|
1650
|
+
t.collapsible ? (x(), o("button", {
|
|
1651
1651
|
key: 2,
|
|
1652
1652
|
type: "button",
|
|
1653
|
-
onClick: r[5] ||= (...e) =>
|
|
1654
|
-
title:
|
|
1655
|
-
"aria-label":
|
|
1656
|
-
"aria-pressed":
|
|
1657
|
-
class: h(["hidden lg: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", [
|
|
1658
|
-
}, [(
|
|
1653
|
+
onClick: r[5] ||= (...e) => A(b) && A(b)(...e),
|
|
1654
|
+
title: A(y) ? "Expand sidebar" : "Collapse sidebar",
|
|
1655
|
+
"aria-label": A(y) ? "Expand sidebar" : "Collapse sidebar",
|
|
1656
|
+
"aria-pressed": A(y),
|
|
1657
|
+
class: h(["hidden lg: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", [A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
|
|
1658
|
+
}, [(x(), i(O(A(y) ? A(le) : A(ce)), {
|
|
1659
1659
|
class: "w-[18px] h-[18px] shrink-0",
|
|
1660
1660
|
"aria-hidden": "true"
|
|
1661
|
-
})), s("span", { class: h({ "lg:hidden":
|
|
1662
|
-
s("div", { class: h({ "lg:hidden":
|
|
1663
|
-
s("div", { class: h({ "lg:hidden":
|
|
1661
|
+
})), s("span", { class: h({ "lg:hidden": D.value }) }, "Collapse", 2)], 10, Sn)) : a("", !0),
|
|
1662
|
+
s("div", { class: h({ "lg:hidden": D.value }) }, [E(n.$slots, "status", {}, void 0, !0)], 2),
|
|
1663
|
+
s("div", { class: h({ "lg:hidden": D.value }) }, [E(n.$slots, "footer", {}, () => [t.appName || t.version ? (x(), o("div", {
|
|
1664
1664
|
key: 0,
|
|
1665
|
-
class: h(["flex items-center justify-center gap-2 text-xs", (
|
|
1665
|
+
class: h(["flex items-center justify-center gap-2 text-xs", (A(f), "text-gray-500")])
|
|
1666
1666
|
}, [s("span", null, [
|
|
1667
|
-
u(
|
|
1668
|
-
t.appName && t.version ? (
|
|
1669
|
-
t.version ? (
|
|
1667
|
+
u(k(t.appName), 1),
|
|
1668
|
+
t.appName && t.version ? (x(), o(e, { key: 0 }, [], 64)) : a("", !0),
|
|
1669
|
+
t.version ? (x(), o(e, { key: 1 }, [u("v" + k(t.version), 1)], 64)) : a("", !0)
|
|
1670
1670
|
])], 2)) : a("", !0)], !0)], 2)
|
|
1671
1671
|
], 2)
|
|
1672
1672
|
])], 2)
|
|
1673
1673
|
]));
|
|
1674
1674
|
}
|
|
1675
|
-
}), [["__scopeId", "data-v-452beaf2"]]),
|
|
1675
|
+
}), [["__scopeId", "data-v-452beaf2"]]), wn = {
|
|
1676
1676
|
key: 1,
|
|
1677
1677
|
class: "mt-4 flex justify-center py-6"
|
|
1678
|
-
},
|
|
1678
|
+
}, Tn = {
|
|
1679
1679
|
key: 2,
|
|
1680
1680
|
class: "mt-4 text-sm text-red-500",
|
|
1681
1681
|
role: "alert"
|
|
1682
|
-
},
|
|
1682
|
+
}, En = {
|
|
1683
1683
|
key: 3,
|
|
1684
1684
|
class: "mt-4"
|
|
1685
|
-
},
|
|
1685
|
+
}, Dn = { class: "relative" }, On = ["placeholder"], kn = {
|
|
1686
1686
|
key: 4,
|
|
1687
1687
|
class: "mt-3 max-h-64 overflow-y-auto"
|
|
1688
|
-
},
|
|
1688
|
+
}, An = ["aria-pressed", "onClick"], jn = { class: "flex-1 min-w-0" }, Mn = {
|
|
1689
1689
|
key: 0,
|
|
1690
1690
|
class: "text-center py-6"
|
|
1691
|
-
},
|
|
1691
|
+
}, Nn = {
|
|
1692
1692
|
key: 1,
|
|
1693
1693
|
class: "text-center py-6"
|
|
1694
|
-
},
|
|
1694
|
+
}, Pn = ["disabled"], Fn = ["disabled"], In = /* @__PURE__ */ f({
|
|
1695
1695
|
__name: "BaseEntityPickerModal",
|
|
1696
1696
|
props: {
|
|
1697
1697
|
title: {},
|
|
@@ -1713,10 +1713,10 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1713
1713
|
},
|
|
1714
1714
|
emits: ["confirm", "cancel"],
|
|
1715
1715
|
setup(t, { emit: n }) {
|
|
1716
|
-
let l = t, u = n, { isDark: f } = V(), p = Y(), g =
|
|
1716
|
+
let l = t, u = n, { isDark: f } = V(), p = Y(), g = w([]), _ = w(!1), y = w(""), b = w(null), S = w(""), C = w(null), D = r(() => {
|
|
1717
1717
|
let e = l.loader ? g.value : l.items;
|
|
1718
1718
|
return l.excludeId ? e.filter((e) => e.id !== l.excludeId) : e;
|
|
1719
|
-
}),
|
|
1719
|
+
}), O = r(() => D.value.filter((e) => e.label.toLowerCase().includes(S.value.toLowerCase()))), ee = {
|
|
1720
1720
|
emerald: {
|
|
1721
1721
|
iconBg: "bg-emerald-50",
|
|
1722
1722
|
iconText: "text-emerald-600",
|
|
@@ -1808,74 +1808,74 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1808
1808
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1809
1809
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1810
1810
|
}
|
|
1811
|
-
},
|
|
1812
|
-
|
|
1811
|
+
}, M = r(() => (f.value ? j : ee)[l.variant]);
|
|
1812
|
+
v(async () => {
|
|
1813
1813
|
if (l.loader) {
|
|
1814
|
-
|
|
1814
|
+
_.value = !0;
|
|
1815
1815
|
try {
|
|
1816
1816
|
g.value = await l.loader();
|
|
1817
1817
|
} catch {
|
|
1818
1818
|
y.value = "Failed to load items";
|
|
1819
1819
|
} finally {
|
|
1820
|
-
|
|
1820
|
+
_.value = !1;
|
|
1821
1821
|
}
|
|
1822
1822
|
}
|
|
1823
|
-
await m(),
|
|
1823
|
+
await m(), C.value?.focus();
|
|
1824
1824
|
});
|
|
1825
|
-
function P() {
|
|
1826
|
-
!x.value || l.submitting || u("confirm", x.value);
|
|
1827
|
-
}
|
|
1828
1825
|
function te() {
|
|
1826
|
+
!b.value || l.submitting || u("confirm", b.value);
|
|
1827
|
+
}
|
|
1828
|
+
function P() {
|
|
1829
1829
|
l.submitting || u("cancel");
|
|
1830
1830
|
}
|
|
1831
|
-
return (n, r) => (
|
|
1831
|
+
return (n, r) => (x(), i(Ht, {
|
|
1832
1832
|
title: t.title,
|
|
1833
|
-
icon:
|
|
1834
|
-
"icon-bg-class":
|
|
1835
|
-
"icon-class":
|
|
1833
|
+
icon: A(_e),
|
|
1834
|
+
"icon-bg-class": M.value.iconBg,
|
|
1835
|
+
"icon-class": M.value.iconText,
|
|
1836
1836
|
"manual-close": t.submitting,
|
|
1837
|
-
onCancel:
|
|
1837
|
+
onCancel: P
|
|
1838
1838
|
}, c({
|
|
1839
1839
|
footer: F(() => [s("button", {
|
|
1840
1840
|
type: "button",
|
|
1841
1841
|
disabled: t.submitting,
|
|
1842
|
-
class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1843
|
-
onClick: te
|
|
1844
|
-
}, O(t.cancelText), 11, Nn), s("button", {
|
|
1845
|
-
type: "button",
|
|
1846
|
-
disabled: !x.value || t.submitting,
|
|
1847
|
-
class: h(["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 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", !x.value || t.submitting ? N.value.confirmDisabled : N.value.confirmActive]),
|
|
1842
|
+
class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(p).ghostButton]),
|
|
1848
1843
|
onClick: P
|
|
1849
|
-
},
|
|
1844
|
+
}, k(t.cancelText), 11, Pn), s("button", {
|
|
1845
|
+
type: "button",
|
|
1846
|
+
disabled: !b.value || t.submitting,
|
|
1847
|
+
class: h(["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 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", !b.value || t.submitting ? M.value.confirmDisabled : M.value.confirmActive]),
|
|
1848
|
+
onClick: te
|
|
1849
|
+
}, k(t.submitting ? t.submittingText : t.confirmText), 11, Fn)]),
|
|
1850
1850
|
default: F(() => [
|
|
1851
|
-
t.message ? (
|
|
1851
|
+
t.message ? (x(), o("p", {
|
|
1852
1852
|
key: 0,
|
|
1853
|
-
class: h(["text-sm",
|
|
1854
|
-
},
|
|
1855
|
-
|
|
1856
|
-
!
|
|
1857
|
-
class: h(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4",
|
|
1853
|
+
class: h(["text-sm", A(f) ? "text-gray-300" : "text-gray-600"])
|
|
1854
|
+
}, k(t.message), 3)) : a("", !0),
|
|
1855
|
+
_.value ? (x(), o("div", wn, [d(lt, { color: "emerald" })])) : y.value ? (x(), o("div", Tn, k(y.value), 1)) : a("", !0),
|
|
1856
|
+
!_.value && !y.value && D.value.length > 0 ? (x(), o("div", En, [s("div", Dn, [d(A(ye), {
|
|
1857
|
+
class: h(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", A(p).dimText]),
|
|
1858
1858
|
"aria-hidden": "true"
|
|
1859
1859
|
}, null, 8, ["class"]), I(s("input", {
|
|
1860
1860
|
ref_key: "searchInputRef",
|
|
1861
|
-
ref:
|
|
1861
|
+
ref: C,
|
|
1862
1862
|
"onUpdate:modelValue": r[0] ||= (e) => S.value = e,
|
|
1863
1863
|
type: "text",
|
|
1864
1864
|
placeholder: t.searchPlaceholder,
|
|
1865
|
-
class: h(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [
|
|
1866
|
-
}, null, 10,
|
|
1867
|
-
!
|
|
1865
|
+
class: h(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [A(f) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", M.value.inputFocus]])
|
|
1866
|
+
}, null, 10, On), [[N, S.value]])])])) : a("", !0),
|
|
1867
|
+
!_.value && !y.value ? (x(), o("div", kn, [(x(!0), o(e, null, T(O.value, (e) => (x(), o("button", {
|
|
1868
1868
|
key: e.id,
|
|
1869
1869
|
type: "button",
|
|
1870
|
-
"aria-pressed":
|
|
1871
|
-
class: h(["w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [
|
|
1872
|
-
onClick: (t) =>
|
|
1870
|
+
"aria-pressed": b.value === e.id,
|
|
1871
|
+
class: h(["w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [b.value === e.id ? M.value.selectedRow : A(f) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
|
|
1872
|
+
onClick: (t) => b.value = e.id
|
|
1873
1873
|
}, [
|
|
1874
|
-
d(
|
|
1875
|
-
s("div",
|
|
1876
|
-
|
|
1874
|
+
d(A(_e), { class: h(["w-5 h-5 flex-shrink-0", A(p).dimText]) }, null, 8, ["class"]),
|
|
1875
|
+
s("div", jn, [s("p", { class: h(["text-sm font-medium truncate", A(p).bodyText]) }, k(e.label), 3)]),
|
|
1876
|
+
b.value === e.id ? (x(), o("div", {
|
|
1877
1877
|
key: 0,
|
|
1878
|
-
class: h(["w-5 h-5 rounded-full flex items-center justify-center",
|
|
1878
|
+
class: h(["w-5 h-5 rounded-full flex items-center justify-center", M.value.checkBg])
|
|
1879
1879
|
}, [...r[1] ||= [s("svg", {
|
|
1880
1880
|
class: "w-3 h-3 text-white",
|
|
1881
1881
|
fill: "none",
|
|
@@ -1888,12 +1888,12 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1888
1888
|
"stroke-linejoin": "round",
|
|
1889
1889
|
d: "M5 13l4 4L19 7"
|
|
1890
1890
|
})], -1)]], 2)) : a("", !0)
|
|
1891
|
-
], 10,
|
|
1891
|
+
], 10, An))), 128)), D.value.length === 0 ? (x(), o("div", Mn, [s("p", { class: h(["text-sm", A(p).dimText]) }, k(t.emptyMessage), 3)])) : O.value.length === 0 ? (x(), o("div", Nn, [s("p", { class: h(["text-sm", A(p).dimText]) }, k(t.noMatchMessage), 3)])) : a("", !0)])) : a("", !0)
|
|
1892
1892
|
]),
|
|
1893
1893
|
_: 2
|
|
1894
1894
|
}, [n.$slots.icon ? {
|
|
1895
1895
|
name: "icon",
|
|
1896
|
-
fn: F(() => [
|
|
1896
|
+
fn: F(() => [E(n.$slots, "icon")]),
|
|
1897
1897
|
key: "0"
|
|
1898
1898
|
} : void 0]), 1032, [
|
|
1899
1899
|
"title",
|
|
@@ -1903,10 +1903,10 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1903
1903
|
"manual-close"
|
|
1904
1904
|
]));
|
|
1905
1905
|
}
|
|
1906
|
-
}),
|
|
1906
|
+
}), Ln = {
|
|
1907
1907
|
href: "#main-content",
|
|
1908
1908
|
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"
|
|
1909
|
-
},
|
|
1909
|
+
}, Rn = ["inert"], zn = /* @__PURE__ */ f({
|
|
1910
1910
|
__name: "BaseAppLayout",
|
|
1911
1911
|
props: {
|
|
1912
1912
|
showSidebar: {
|
|
@@ -1916,25 +1916,27 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1916
1916
|
skipLinkLabel: { default: "Skip to main content" }
|
|
1917
1917
|
},
|
|
1918
1918
|
setup(e) {
|
|
1919
|
-
let t = e, { isDark: n } = V(), { mobileOpen: i } =
|
|
1920
|
-
return (t, r) => (
|
|
1921
|
-
s("a",
|
|
1922
|
-
l.value ?
|
|
1919
|
+
let t = e, { isDark: n } = V(), { mobileOpen: i } = an(), { collapsed: c } = ln(), l = r(() => t.showSidebar);
|
|
1920
|
+
return (t, r) => (x(), o("div", { class: h(["min-h-screen transition-colors duration-300", A(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
|
|
1921
|
+
s("a", Ln, k(e.skipLinkLabel), 1),
|
|
1922
|
+
l.value ? E(t.$slots, "sidebar", { key: 0 }) : a("", !0),
|
|
1923
1923
|
s("main", {
|
|
1924
1924
|
id: "main-content",
|
|
1925
1925
|
tabindex: "-1",
|
|
1926
|
-
inert: l.value &&
|
|
1927
|
-
class: h(["transition-all duration-300", l.value ?
|
|
1928
|
-
}, [
|
|
1926
|
+
inert: l.value && A(i) ? !0 : void 0,
|
|
1927
|
+
class: h(["transition-all duration-300", l.value ? A(c) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
|
|
1928
|
+
}, [E(t.$slots, "default")], 10, Rn)
|
|
1929
1929
|
], 2));
|
|
1930
1930
|
}
|
|
1931
|
-
}),
|
|
1931
|
+
}), Bn = { class: "flex items-center gap-3 min-w-0" }, Vn = { class: "flex items-center gap-2" }, Hn = /* @__PURE__ */ f({
|
|
1932
1932
|
__name: "BasePageHeader",
|
|
1933
1933
|
props: {
|
|
1934
1934
|
title: {},
|
|
1935
1935
|
subtitle: { default: "" },
|
|
1936
1936
|
iconColor: { default: "emerald" },
|
|
1937
|
-
maxWidthClass: { default: "max-w-4xl" }
|
|
1937
|
+
maxWidthClass: { default: "max-w-4xl" },
|
|
1938
|
+
align: { default: "center" },
|
|
1939
|
+
marginClass: { default: "mb-8" }
|
|
1938
1940
|
},
|
|
1939
1941
|
setup(e) {
|
|
1940
1942
|
let t = e, { isDark: n } = V(), i = Y(), c = r(() => {
|
|
@@ -1978,10 +1980,13 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
1978
1980
|
}[t.iconColor];
|
|
1979
1981
|
return n.value ? e.dark : e.light;
|
|
1980
1982
|
});
|
|
1981
|
-
return (t, n) => (
|
|
1983
|
+
return (t, n) => (x(), o("header", { class: h(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [s("div", { class: h(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [s("div", Bn, [t.$slots.icon ? (x(), o("div", {
|
|
1984
|
+
key: 0,
|
|
1985
|
+
class: h(["w-10 h-10 rounded-lg flex items-center justify-center", c.value])
|
|
1986
|
+
}, [E(t.$slots, "icon", { iconClass: l.value })], 2)) : a("", !0), s("div", null, [s("h1", { class: h(["text-2xl font-bold", A(i).primaryTextSoft]) }, k(e.title), 3), e.subtitle || t.$slots.subtitle ? (x(), o("p", {
|
|
1982
1987
|
key: 0,
|
|
1983
|
-
class: h(["text-sm",
|
|
1984
|
-
},
|
|
1988
|
+
class: h(["text-sm", A(i).dimTextAlt])
|
|
1989
|
+
}, [E(t.$slots, "subtitle", {}, () => [u(k(e.subtitle), 1)])], 2)) : a("", !0)])]), s("div", Vn, [E(t.$slots, "actions")])], 2)], 2));
|
|
1985
1990
|
}
|
|
1986
1991
|
}), Un = [
|
|
1987
1992
|
"type",
|
|
@@ -2001,7 +2006,11 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2001
2006
|
},
|
|
2002
2007
|
emits: ["click"],
|
|
2003
2008
|
setup(e) {
|
|
2004
|
-
let t = e, { isDark: n } = V(), i =
|
|
2009
|
+
let t = e, { isDark: n } = V(), i = {
|
|
2010
|
+
neutral: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2011
|
+
danger: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2012
|
+
ghost: "h-9 px-4 rounded-md font-semibold disabled:opacity-40 disabled:hover:bg-slate-50 dark:disabled:hover:bg-slate-900"
|
|
2013
|
+
}, s = r(() => {
|
|
2005
2014
|
let e = {
|
|
2006
2015
|
neutral: {
|
|
2007
2016
|
dark: "bg-gray-800 text-gray-100 border-gray-700 hover:bg-gray-700",
|
|
@@ -2010,17 +2019,21 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2010
2019
|
danger: {
|
|
2011
2020
|
dark: "bg-red-600 text-white border-red-600 hover:bg-red-500",
|
|
2012
2021
|
light: "bg-red-600 text-white border-red-600 hover:bg-red-700"
|
|
2022
|
+
},
|
|
2023
|
+
ghost: {
|
|
2024
|
+
dark: "border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800",
|
|
2025
|
+
light: "border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800"
|
|
2013
2026
|
}
|
|
2014
2027
|
}[t.variant];
|
|
2015
|
-
return n.value ? e.dark : e.light;
|
|
2028
|
+
return [i[t.variant], n.value ? e.dark : e.light];
|
|
2016
2029
|
});
|
|
2017
|
-
return (t, n) => (
|
|
2030
|
+
return (t, n) => (x(), o("button", {
|
|
2018
2031
|
type: e.type,
|
|
2019
2032
|
disabled: e.disabled,
|
|
2020
2033
|
title: e.title,
|
|
2021
|
-
class: h(["inline-flex shrink-0 items-center gap-2
|
|
2034
|
+
class: h(["inline-flex shrink-0 items-center gap-2 text-sm border transition-colors cursor-pointer disabled:cursor-not-allowed whitespace-nowrap focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", s.value]),
|
|
2022
2035
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2023
|
-
}, [
|
|
2036
|
+
}, [E(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (x(), o("span", Wn, k(e.label), 1)) : a("", !0)], 10, Un));
|
|
2024
2037
|
}
|
|
2025
2038
|
}), Kn = [
|
|
2026
2039
|
"type",
|
|
@@ -2119,14 +2132,14 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2119
2132
|
}[t.color];
|
|
2120
2133
|
return n.value ? e.dark : e.light;
|
|
2121
2134
|
}), c = r(() => t.disabled ? `${s.value} opacity-50 cursor-not-allowed` : `${i.value} cursor-pointer`);
|
|
2122
|
-
return (t, n) => (
|
|
2135
|
+
return (t, n) => (x(), o("button", {
|
|
2123
2136
|
type: e.type,
|
|
2124
2137
|
disabled: e.disabled,
|
|
2125
2138
|
title: e.title,
|
|
2126
2139
|
"aria-label": e.ariaLabel,
|
|
2127
2140
|
class: h(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-current", [e.fullWidth ? "flex-1" : "", c.value]]),
|
|
2128
2141
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2129
|
-
}, [
|
|
2142
|
+
}, [E(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (x(), o("span", qn, k(e.label), 1)) : a("", !0)], 10, Kn));
|
|
2130
2143
|
}
|
|
2131
2144
|
}), Yn = ["title", "aria-label"], Xn = /* @__PURE__ */ f({
|
|
2132
2145
|
__name: "BaseCopyButton",
|
|
@@ -2139,7 +2152,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2139
2152
|
},
|
|
2140
2153
|
emits: ["copied", "error"],
|
|
2141
2154
|
setup(e, { emit: t }) {
|
|
2142
|
-
let n = e, a = t, { isDark: s } = V(), c =
|
|
2155
|
+
let n = e, a = t, { isDark: s } = V(), c = w(!1), l = null, u = r(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = r(() => n.label ? `Copy ${n.label}` : "Copy"), f = r(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${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 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${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"}`);
|
|
2143
2156
|
async function p(e) {
|
|
2144
2157
|
try {
|
|
2145
2158
|
if (navigator.clipboard?.writeText) {
|
|
@@ -2161,19 +2174,19 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2161
2174
|
a("error", e);
|
|
2162
2175
|
}
|
|
2163
2176
|
}
|
|
2164
|
-
return
|
|
2177
|
+
return b(() => {
|
|
2165
2178
|
l && clearTimeout(l);
|
|
2166
|
-
}), (t, n) => (
|
|
2179
|
+
}), (t, n) => (x(), o("button", {
|
|
2167
2180
|
type: "button",
|
|
2168
2181
|
title: u.value,
|
|
2169
2182
|
"aria-label": d.value,
|
|
2170
2183
|
class: h(f.value),
|
|
2171
2184
|
onClick: m
|
|
2172
|
-
}, [c.value ? (
|
|
2185
|
+
}, [c.value ? (x(), i(A(fe), {
|
|
2173
2186
|
key: 0,
|
|
2174
2187
|
class: h(e.iconClass),
|
|
2175
2188
|
"aria-hidden": "true"
|
|
2176
|
-
}, null, 8, ["class"])) : (
|
|
2189
|
+
}, null, 8, ["class"])) : (x(), i(A(pe), {
|
|
2177
2190
|
key: 1,
|
|
2178
2191
|
class: h(e.iconClass),
|
|
2179
2192
|
"aria-hidden": "true"
|
|
@@ -2213,13 +2226,13 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2213
2226
|
function u() {
|
|
2214
2227
|
c.value || i("click");
|
|
2215
2228
|
}
|
|
2216
|
-
return (t, n) => (
|
|
2229
|
+
return (t, n) => (x(), o("button", {
|
|
2217
2230
|
type: "button",
|
|
2218
2231
|
disabled: c.value,
|
|
2219
2232
|
"aria-busy": e.loading,
|
|
2220
2233
|
onClick: u,
|
|
2221
|
-
class: h(["inline-flex items-center justify-center gap-3 h-11 px-4 rounded-lg border text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "",
|
|
2222
|
-
}, [e.loading ? (
|
|
2234
|
+
class: h(["inline-flex items-center justify-center gap-3 h-11 px-4 rounded-lg border text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", A(a) ? "bg-gray-900 border-gray-700 text-gray-100 hover:bg-gray-800" : "bg-white border-gray-300 text-gray-700 hover:bg-gray-50"]])
|
|
2235
|
+
}, [e.loading ? (x(), o("svg", Qn, [...n[0] ||= [s("circle", {
|
|
2223
2236
|
class: "opacity-25",
|
|
2224
2237
|
cx: "12",
|
|
2225
2238
|
cy: "12",
|
|
@@ -2230,7 +2243,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2230
2243
|
class: "opacity-75",
|
|
2231
2244
|
fill: "currentColor",
|
|
2232
2245
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2233
|
-
}, null, -1)]])) : (
|
|
2246
|
+
}, null, -1)]])) : (x(), o("svg", $n, [...n[1] ||= [l("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), s("span", null, k(e.label), 1)], 10, Zn));
|
|
2234
2247
|
}
|
|
2235
2248
|
}), tr = {
|
|
2236
2249
|
key: 0,
|
|
@@ -2267,7 +2280,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2267
2280
|
},
|
|
2268
2281
|
emits: ["submit", "google-sign-in"],
|
|
2269
2282
|
setup(t, { emit: n }) {
|
|
2270
|
-
let i = t, c = n, { isDark: l } = V(), f = Y(), p =
|
|
2283
|
+
let i = t, c = n, { isDark: l } = V(), f = Y(), p = w(""), m = w(""), g = w(!1), _ = w(!1), v = r(() => i.loading || i.googleLoading);
|
|
2271
2284
|
function y() {
|
|
2272
2285
|
v.value || c("submit", {
|
|
2273
2286
|
email: p.value,
|
|
@@ -2275,25 +2288,25 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2275
2288
|
...i.showRemember ? { remember: g.value } : {}
|
|
2276
2289
|
});
|
|
2277
2290
|
}
|
|
2278
|
-
return (n, r) => (
|
|
2279
|
-
n.$slots.logo ? (
|
|
2280
|
-
s("div", nr, [s("h1", { class: h(["text-xl font-semibold",
|
|
2291
|
+
return (n, r) => (x(), o("div", { class: h(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", A(f).card]) }, [
|
|
2292
|
+
n.$slots.logo ? (x(), o("div", tr, [E(n.$slots, "logo")])) : a("", !0),
|
|
2293
|
+
s("div", nr, [s("h1", { class: h(["text-xl font-semibold", A(f).primaryText]) }, k(t.title), 3), t.subtitle ? (x(), o("p", {
|
|
2281
2294
|
key: 0,
|
|
2282
|
-
class: h(["mt-1 text-sm",
|
|
2283
|
-
},
|
|
2284
|
-
t.error ? (
|
|
2295
|
+
class: h(["mt-1 text-sm", A(f).mutedText])
|
|
2296
|
+
}, k(t.subtitle), 3)) : a("", !0)]),
|
|
2297
|
+
t.error ? (x(), o("div", {
|
|
2285
2298
|
key: 1,
|
|
2286
2299
|
role: "alert",
|
|
2287
|
-
class: h(["mb-4 rounded-lg border px-3 py-2 text-sm",
|
|
2288
|
-
},
|
|
2289
|
-
t.showGoogle ? (
|
|
2300
|
+
class: h(["mb-4 rounded-lg border px-3 py-2 text-sm", A(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
|
|
2301
|
+
}, k(t.error), 3)) : a("", !0),
|
|
2302
|
+
t.showGoogle ? (x(), o(e, { key: 2 }, [d(er, {
|
|
2290
2303
|
loading: t.googleLoading,
|
|
2291
2304
|
disabled: t.loading,
|
|
2292
2305
|
onClick: r[0] ||= (e) => c("google-sign-in")
|
|
2293
2306
|
}, null, 8, ["loading", "disabled"]), s("div", rr, [
|
|
2294
|
-
s("span", { class: h(["h-px flex-1",
|
|
2295
|
-
s("span", { class: h(["text-xs uppercase tracking-wider",
|
|
2296
|
-
s("span", { class: h(["h-px flex-1",
|
|
2307
|
+
s("span", { class: h(["h-px flex-1", A(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
|
|
2308
|
+
s("span", { class: h(["text-xs uppercase tracking-wider", A(f).dimTextAlt]) }, "or", 2),
|
|
2309
|
+
s("span", { class: h(["h-px flex-1", A(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
|
|
2297
2310
|
])], 64)) : a("", !0),
|
|
2298
2311
|
s("form", {
|
|
2299
2312
|
class: "space-y-4",
|
|
@@ -2301,7 +2314,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2301
2314
|
}, [
|
|
2302
2315
|
s("div", null, [s("label", {
|
|
2303
2316
|
for: "login-email",
|
|
2304
|
-
class: h(["block mb-1.5 text-sm font-medium",
|
|
2317
|
+
class: h(["block mb-1.5 text-sm font-medium", A(f).label])
|
|
2305
2318
|
}, " Email ", 2), I(s("input", {
|
|
2306
2319
|
id: "login-email",
|
|
2307
2320
|
"onUpdate:modelValue": r[1] ||= (e) => p.value = e,
|
|
@@ -2311,12 +2324,12 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2311
2324
|
required: "",
|
|
2312
2325
|
disabled: v.value,
|
|
2313
2326
|
placeholder: "you@example.com",
|
|
2314
|
-
class: h(["w-full h-11 px-3 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60",
|
|
2315
|
-
}, null, 10, ir), [[
|
|
2327
|
+
class: h(["w-full h-11 px-3 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", A(f).inputWithPlaceholder])
|
|
2328
|
+
}, null, 10, ir), [[N, p.value]])]),
|
|
2316
2329
|
s("div", null, [s("div", ar, [s("label", {
|
|
2317
2330
|
for: "login-password",
|
|
2318
|
-
class: h(["block text-sm font-medium",
|
|
2319
|
-
}, " Password ", 2),
|
|
2331
|
+
class: h(["block text-sm font-medium", A(f).label])
|
|
2332
|
+
}, " Password ", 2), E(n.$slots, "forgot")]), s("div", or, [I(s("input", {
|
|
2320
2333
|
id: "login-password",
|
|
2321
2334
|
"onUpdate:modelValue": r[2] ||= (e) => m.value = e,
|
|
2322
2335
|
type: _.value ? "text" : "password",
|
|
@@ -2325,29 +2338,29 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2325
2338
|
required: "",
|
|
2326
2339
|
disabled: v.value,
|
|
2327
2340
|
placeholder: "••••••••",
|
|
2328
|
-
class: h(["w-full h-11 pl-3 pr-16 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60",
|
|
2329
|
-
}, null, 10, sr), [[
|
|
2341
|
+
class: h(["w-full h-11 pl-3 pr-16 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", A(f).inputWithPlaceholder])
|
|
2342
|
+
}, null, 10, sr), [[M, m.value]]), s("button", {
|
|
2330
2343
|
type: "button",
|
|
2331
2344
|
onClick: r[3] ||= (e) => _.value = !_.value,
|
|
2332
2345
|
"aria-label": _.value ? "Hide password" : "Show password",
|
|
2333
2346
|
"aria-pressed": _.value,
|
|
2334
|
-
class: h(["absolute inset-y-0 right-0 px-3 text-xs font-medium cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 rounded-r-lg",
|
|
2335
|
-
},
|
|
2336
|
-
t.showRemember ? (
|
|
2347
|
+
class: h(["absolute inset-y-0 right-0 px-3 text-xs font-medium cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 rounded-r-lg", A(f).mutedText])
|
|
2348
|
+
}, k(_.value ? "Hide" : "Show"), 11, cr)])]),
|
|
2349
|
+
t.showRemember ? (x(), o("label", {
|
|
2337
2350
|
key: 0,
|
|
2338
|
-
class: h(["flex items-center gap-2 text-sm cursor-pointer select-none",
|
|
2351
|
+
class: h(["flex items-center gap-2 text-sm cursor-pointer select-none", A(f).bodyText])
|
|
2339
2352
|
}, [I(s("input", {
|
|
2340
2353
|
"onUpdate:modelValue": r[4] ||= (e) => g.value = e,
|
|
2341
2354
|
type: "checkbox",
|
|
2342
2355
|
disabled: v.value,
|
|
2343
2356
|
class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
|
|
2344
|
-
}, null, 8, lr), [[
|
|
2357
|
+
}, null, 8, lr), [[j, g.value]]), r[5] ||= u(" Remember me ", -1)], 2)) : a("", !0),
|
|
2345
2358
|
s("button", {
|
|
2346
2359
|
type: "submit",
|
|
2347
2360
|
disabled: v.value,
|
|
2348
2361
|
"aria-busy": t.loading,
|
|
2349
2362
|
class: "inline-flex items-center justify-center gap-2 w-full h-11 px-4 rounded-lg text-sm font-semibold text-white bg-emerald-600 hover:bg-emerald-700 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed"
|
|
2350
|
-
}, [t.loading ? (
|
|
2363
|
+
}, [t.loading ? (x(), o("svg", dr, [...r[6] ||= [s("circle", {
|
|
2351
2364
|
class: "opacity-25",
|
|
2352
2365
|
cx: "12",
|
|
2353
2366
|
cy: "12",
|
|
@@ -2358,12 +2371,12 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2358
2371
|
class: "opacity-75",
|
|
2359
2372
|
fill: "currentColor",
|
|
2360
2373
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2361
|
-
}, null, -1)]])) : a("", !0), u(" " +
|
|
2374
|
+
}, null, -1)]])) : a("", !0), u(" " + k(t.submitLabel), 1)], 8, ur)
|
|
2362
2375
|
], 32),
|
|
2363
|
-
n.$slots.footer ? (
|
|
2376
|
+
n.$slots.footer ? (x(), o("div", {
|
|
2364
2377
|
key: 3,
|
|
2365
|
-
class: h(["mt-6 text-center text-sm",
|
|
2366
|
-
}, [
|
|
2378
|
+
class: h(["mt-6 text-center text-sm", A(f).mutedText])
|
|
2379
|
+
}, [E(n.$slots, "footer")], 2)) : a("", !0)
|
|
2367
2380
|
], 2));
|
|
2368
2381
|
}
|
|
2369
2382
|
}), pr = ["aria-label"], mr = { class: "flex-1 overflow-y-auto" }, hr = {
|
|
@@ -2381,28 +2394,28 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2381
2394
|
},
|
|
2382
2395
|
emits: ["select"],
|
|
2383
2396
|
setup(c, { emit: l }) {
|
|
2384
|
-
let f = l, { isDark: p } = V(), m = Y(), { notifications: g, unreadCount: _, open: v, closePanel: y, markAllRead:
|
|
2397
|
+
let f = l, { isDark: p } = V(), m = Y(), { notifications: g, unreadCount: _, open: v, closePanel: y, markAllRead: b, markRead: S } = fn(), C = {
|
|
2385
2398
|
info: "bg-sky-500",
|
|
2386
2399
|
success: "bg-emerald-500",
|
|
2387
2400
|
warning: "bg-amber-500",
|
|
2388
2401
|
error: "bg-red-500"
|
|
2389
|
-
},
|
|
2402
|
+
}, w = r(() => g.value.length);
|
|
2390
2403
|
function E(e) {
|
|
2391
2404
|
S(e), f("select", e);
|
|
2392
2405
|
}
|
|
2393
|
-
return
|
|
2406
|
+
return Nt(() => {
|
|
2394
2407
|
v.value && y();
|
|
2395
|
-
}), (r, l) => (
|
|
2408
|
+
}), (r, l) => (x(), i(t, { to: "body" }, [d(n, {
|
|
2396
2409
|
"enter-active-class": "transition-opacity duration-200",
|
|
2397
2410
|
"enter-from-class": "opacity-0",
|
|
2398
2411
|
"leave-active-class": "transition-opacity duration-200",
|
|
2399
2412
|
"leave-to-class": "opacity-0"
|
|
2400
2413
|
}, {
|
|
2401
|
-
default: F(() => [
|
|
2414
|
+
default: F(() => [A(v) ? (x(), o("div", {
|
|
2402
2415
|
key: 0,
|
|
2403
2416
|
class: "fixed inset-0 z-[60] bg-black/50",
|
|
2404
2417
|
"aria-hidden": "true",
|
|
2405
|
-
onClick: l[0] ||= (...e) =>
|
|
2418
|
+
onClick: l[0] ||= (...e) => A(y) && A(y)(...e)
|
|
2406
2419
|
})) : a("", !0)]),
|
|
2407
2420
|
_: 1
|
|
2408
2421
|
}), d(n, {
|
|
@@ -2411,50 +2424,50 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2411
2424
|
"leave-active-class": "transition-transform duration-300 ease-in",
|
|
2412
2425
|
"leave-to-class": "-translate-x-full"
|
|
2413
2426
|
}, {
|
|
2414
|
-
default: F(() => [
|
|
2427
|
+
default: F(() => [A(v) ? (x(), o("aside", {
|
|
2415
2428
|
key: 0,
|
|
2416
2429
|
role: "dialog",
|
|
2417
2430
|
"aria-modal": "true",
|
|
2418
2431
|
"aria-label": c.title,
|
|
2419
|
-
class: h(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl",
|
|
2432
|
+
class: h(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", A(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
|
|
2420
2433
|
}, [
|
|
2421
|
-
s("div", { class: h(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0",
|
|
2434
|
+
s("div", { class: h(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", A(m).border]) }, [s("h2", { class: h(["text-lg font-semibold flex items-center gap-2", A(m).primaryText]) }, [u(k(c.title) + " ", 1), s("span", { class: h(["text-sm font-normal", A(m).dimTextAlt]) }, "— " + k(w.value), 3)], 2), s("button", {
|
|
2422
2435
|
type: "button",
|
|
2423
|
-
onClick: l[1] ||= (...e) =>
|
|
2436
|
+
onClick: l[1] ||= (...e) => A(y) && A(y)(...e),
|
|
2424
2437
|
"aria-label": "Close notifications",
|
|
2425
|
-
class: h(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
2426
|
-
}, [d(
|
|
2438
|
+
class: h(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
|
|
2439
|
+
}, [d(A(Ce), {
|
|
2427
2440
|
class: "w-5 h-5",
|
|
2428
2441
|
"aria-hidden": "true"
|
|
2429
2442
|
})], 2)], 2),
|
|
2430
|
-
c.showMarkAllRead &&
|
|
2443
|
+
c.showMarkAllRead && A(_) > 0 ? (x(), o("div", {
|
|
2431
2444
|
key: 0,
|
|
2432
|
-
class: h(["px-5 py-2 border-b shrink-0 flex justify-end",
|
|
2445
|
+
class: h(["px-5 py-2 border-b shrink-0 flex justify-end", A(m).border])
|
|
2433
2446
|
}, [s("button", {
|
|
2434
2447
|
type: "button",
|
|
2435
|
-
onClick: l[2] ||= (...e) =>
|
|
2436
|
-
class: h(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline",
|
|
2448
|
+
onClick: l[2] ||= (...e) => A(b) && A(b)(...e),
|
|
2449
|
+
class: h(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", A(m).emeraldText])
|
|
2437
2450
|
}, " Mark all as read ", 2)], 2)) : a("", !0),
|
|
2438
|
-
s("div", mr, [
|
|
2439
|
-
class: h(["w-10 h-10",
|
|
2451
|
+
s("div", mr, [w.value === 0 ? (x(), o("div", hr, [d(A(oe), {
|
|
2452
|
+
class: h(["w-10 h-10", A(m).illustration]),
|
|
2440
2453
|
"aria-hidden": "true"
|
|
2441
|
-
}, null, 8, ["class"]), s("p", { class: h(["text-sm",
|
|
2454
|
+
}, null, 8, ["class"]), s("p", { class: h(["text-sm", A(m).mutedText]) }, k(c.emptyText), 3)])) : (x(), o("ul", {
|
|
2442
2455
|
key: 1,
|
|
2443
|
-
class: h(["divide-y",
|
|
2444
|
-
}, [(
|
|
2456
|
+
class: h(["divide-y", A(p) ? "divide-gray-800" : "divide-gray-100"])
|
|
2457
|
+
}, [(x(!0), o(e, null, T(A(g), (e) => (x(), o("li", { key: e.id }, [s("button", {
|
|
2445
2458
|
type: "button",
|
|
2446
2459
|
onClick: (t) => E(e.id),
|
|
2447
|
-
class: h(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" :
|
|
2460
|
+
class: h(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" : A(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", A(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
|
|
2448
2461
|
}, [s("span", {
|
|
2449
|
-
class: h(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ?
|
|
2462
|
+
class: h(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? A(p) ? "bg-gray-700" : "bg-gray-300" : C[e.type ?? "info"]]),
|
|
2450
2463
|
"aria-hidden": "true"
|
|
2451
|
-
}, null, 2), s("span", _r, [s("span", vr, [s("span", { class: h(["text-sm truncate", [e.read ? "font-medium" : "font-semibold",
|
|
2464
|
+
}, null, 2), s("span", _r, [s("span", vr, [s("span", { class: h(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", A(m).primaryTextSoft]]) }, k(e.title), 3), e.time ? (x(), o("span", {
|
|
2452
2465
|
key: 0,
|
|
2453
|
-
class: h(["text-xs shrink-0",
|
|
2454
|
-
},
|
|
2466
|
+
class: h(["text-xs shrink-0", A(m).dimText])
|
|
2467
|
+
}, k(e.time), 3)) : a("", !0)]), e.message ? (x(), o("span", {
|
|
2455
2468
|
key: 0,
|
|
2456
|
-
class: h(["mt-0.5 block text-sm",
|
|
2457
|
-
},
|
|
2469
|
+
class: h(["mt-0.5 block text-sm", A(m).mutedText])
|
|
2470
|
+
}, k(e.message), 3)) : a("", !0)])], 10, gr)]))), 128))], 2))])
|
|
2458
2471
|
], 10, pr)) : a("", !0)]),
|
|
2459
2472
|
_: 1
|
|
2460
2473
|
})]));
|
|
@@ -2471,19 +2484,19 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2471
2484
|
emits: ["click"],
|
|
2472
2485
|
setup(e, { emit: t }) {
|
|
2473
2486
|
let n = t, { isDark: r } = V();
|
|
2474
|
-
return (t, i) => (
|
|
2487
|
+
return (t, i) => (x(), o("button", {
|
|
2475
2488
|
type: "button",
|
|
2476
2489
|
disabled: e.disabled,
|
|
2477
|
-
class: h(["inline-flex items-center gap-1 font-medium rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [e.size === "xs" ? "text-xs px-2 py-0.5" : "text-xs px-2.5 py-1",
|
|
2490
|
+
class: h(["inline-flex items-center gap-1 font-medium rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [e.size === "xs" ? "text-xs px-2 py-0.5" : "text-xs px-2.5 py-1", A(r) ? "text-emerald-300 border-emerald-700 bg-emerald-900/30 hover:bg-emerald-800/50" : "text-emerald-700 border-emerald-200 bg-emerald-50 hover:bg-emerald-100"]]),
|
|
2478
2491
|
onClick: i[0] ||= (e) => n("click")
|
|
2479
|
-
}, [
|
|
2492
|
+
}, [E(t.$slots, "default")], 10, br));
|
|
2480
2493
|
}
|
|
2481
2494
|
}), Sr = /* @__PURE__ */ f({
|
|
2482
2495
|
__name: "BaseRemoveButton",
|
|
2483
2496
|
emits: ["click"],
|
|
2484
2497
|
setup(e, { emit: t }) {
|
|
2485
2498
|
let n = t;
|
|
2486
|
-
return (e, t) => (
|
|
2499
|
+
return (e, t) => (x(), o("button", {
|
|
2487
2500
|
type: "button",
|
|
2488
2501
|
class: "px-2 text-lg leading-none text-red-400 hover:text-red-600 transition-colors cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-red-400 disabled:cursor-not-allowed disabled:text-gray-400 disabled:hover:text-gray-400",
|
|
2489
2502
|
onClick: t[0] ||= (e) => n("click")
|
|
@@ -2513,7 +2526,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2513
2526
|
default: return "bg-gray-400";
|
|
2514
2527
|
}
|
|
2515
2528
|
});
|
|
2516
|
-
return (t, n) => (
|
|
2529
|
+
return (t, n) => (x(), o("div", { class: h(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", i.value]) }, [s("span", Cr, [e.status === "ok" ? (x(), o("span", wr)) : a("", !0), s("span", { class: h(["relative inline-flex rounded-full h-2 w-2", c.value]) }, null, 2)]), u(" " + k(e.label), 1)], 2));
|
|
2517
2530
|
}
|
|
2518
2531
|
}), Er = { class: "text-sm font-medium" }, Dr = [
|
|
2519
2532
|
"accept",
|
|
@@ -2536,7 +2549,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2536
2549
|
},
|
|
2537
2550
|
emits: ["files"],
|
|
2538
2551
|
setup(e, { emit: t }) {
|
|
2539
|
-
let n = e, r = t, { isDark: i } = V(), c =
|
|
2552
|
+
let n = e, r = t, { isDark: i } = V(), c = w(!1);
|
|
2540
2553
|
function l(e) {
|
|
2541
2554
|
let t = e.target, n = Array.from(t.files ?? []);
|
|
2542
2555
|
t.value = "", n.length && r("files", n);
|
|
@@ -2549,13 +2562,13 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2549
2562
|
let t = Array.from(e.dataTransfer?.files ?? []);
|
|
2550
2563
|
t.length && r("files", n.multiple ? t : t.slice(0, 1));
|
|
2551
2564
|
}
|
|
2552
|
-
return (t, n) => (
|
|
2553
|
-
class: h(["flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center transition-colors", [e.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", c.value ?
|
|
2565
|
+
return (t, n) => (x(), o("label", {
|
|
2566
|
+
class: h(["flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center transition-colors", [e.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", c.value ? A(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : A(i) ? "border-gray-700 hover:border-emerald-500 text-gray-400 hover:text-emerald-400" : "border-gray-300 hover:border-emerald-500 text-gray-500 hover:text-emerald-600"]]),
|
|
2554
2567
|
onDragover: L(u, ["prevent"]),
|
|
2555
2568
|
onDragleave: n[0] ||= L((e) => c.value = !1, ["prevent"]),
|
|
2556
2569
|
onDrop: L(d, ["prevent"])
|
|
2557
2570
|
}, [
|
|
2558
|
-
|
|
2571
|
+
E(t.$slots, "icon", {}, () => [n[1] ||= s("svg", {
|
|
2559
2572
|
class: "w-10 h-10",
|
|
2560
2573
|
fill: "none",
|
|
2561
2574
|
viewBox: "0 0 24 24",
|
|
@@ -2567,11 +2580,11 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2567
2580
|
"stroke-linejoin": "round",
|
|
2568
2581
|
d: "M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12-3-3m0 0-3 3m3-3v6m-1.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
|
|
2569
2582
|
})], -1)]),
|
|
2570
|
-
s("p", Er,
|
|
2571
|
-
e.hint ? (
|
|
2583
|
+
s("p", Er, k(e.label), 1),
|
|
2584
|
+
e.hint ? (x(), o("p", {
|
|
2572
2585
|
key: 0,
|
|
2573
|
-
class: h(["text-xs",
|
|
2574
|
-
},
|
|
2586
|
+
class: h(["text-xs", A(i) ? "text-gray-500" : "text-gray-400"])
|
|
2587
|
+
}, k(e.hint), 3)) : a("", !0),
|
|
2575
2588
|
s("input", {
|
|
2576
2589
|
type: "file",
|
|
2577
2590
|
class: "hidden",
|
|
@@ -2607,11 +2620,11 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2607
2620
|
let e = i[t.variant];
|
|
2608
2621
|
return n.value ? e.dark : e.light;
|
|
2609
2622
|
}), c = r(() => a[t.size]);
|
|
2610
|
-
return (t, n) => (
|
|
2623
|
+
return (t, n) => (x(), o("pre", { class: h(["font-mono overflow-auto", [
|
|
2611
2624
|
c.value,
|
|
2612
2625
|
s.value,
|
|
2613
2626
|
e.maxHeightClass
|
|
2614
|
-
]]) },
|
|
2627
|
+
]]) }, k(e.code), 3));
|
|
2615
2628
|
}
|
|
2616
2629
|
}), Ar = ["value", "type"], Q = /* @__PURE__ */ f({
|
|
2617
2630
|
__name: "BaseInput",
|
|
@@ -2630,7 +2643,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2630
2643
|
function r(e) {
|
|
2631
2644
|
n("update:modelValue", e.target.value);
|
|
2632
2645
|
}
|
|
2633
|
-
return (t, n) => (
|
|
2646
|
+
return (t, n) => (x(), o("input", {
|
|
2634
2647
|
value: e.modelValue,
|
|
2635
2648
|
type: e.type,
|
|
2636
2649
|
class: h(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "sm" ? "px-2 py-1.5" : "px-3 py-2"]]),
|
|
@@ -2653,11 +2666,11 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2653
2666
|
function r(e) {
|
|
2654
2667
|
n("update:modelValue", e.target.value);
|
|
2655
2668
|
}
|
|
2656
|
-
return (t, n) => (
|
|
2669
|
+
return (t, n) => (x(), o("select", {
|
|
2657
2670
|
value: e.modelValue,
|
|
2658
2671
|
class: h(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "md" ? "px-3 py-2" : "px-2 py-1.5"]]),
|
|
2659
2672
|
onChange: r
|
|
2660
|
-
}, [
|
|
2673
|
+
}, [E(t.$slots, "default")], 42, jr));
|
|
2661
2674
|
}
|
|
2662
2675
|
}), Nr = [
|
|
2663
2676
|
"disabled",
|
|
@@ -2684,23 +2697,23 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2684
2697
|
},
|
|
2685
2698
|
emits: ["update:modelValue"],
|
|
2686
2699
|
setup(t, { emit: n }) {
|
|
2687
|
-
let i = t, c = n, l =
|
|
2700
|
+
let i = t, c = n, l = w(!1), u = w(null), f = r(() => i.options.find((e) => e.value === i.modelValue) ?? null), p = r(() => i.triggerClass ? "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed " + i.triggerClass : "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed rounded-lg border text-sm border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-700 dark:text-slate-100 hover:bg-slate-50 dark:hover:bg-slate-800 " + (i.size === "sm" ? "px-3 py-2" : "px-4 py-2.5"));
|
|
2688
2701
|
function m(e) {
|
|
2689
2702
|
return `block w-full px-4 py-2 text-left text-sm transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500 disabled:opacity-50 disabled:cursor-not-allowed ${e.value === i.modelValue ? "bg-emerald-500 text-white" : "text-slate-700 dark:text-slate-200 hover:bg-slate-100 dark:hover:bg-slate-800"}`;
|
|
2690
2703
|
}
|
|
2691
|
-
function
|
|
2704
|
+
function g() {
|
|
2692
2705
|
i.disabled || (l.value = !l.value);
|
|
2693
2706
|
}
|
|
2694
2707
|
function y(e) {
|
|
2695
2708
|
e.disabled || (c("update:modelValue", e.value), l.value = !1);
|
|
2696
2709
|
}
|
|
2697
|
-
|
|
2710
|
+
Nt(() => {
|
|
2698
2711
|
l.value = !1;
|
|
2699
2712
|
});
|
|
2700
|
-
function
|
|
2713
|
+
function b(e) {
|
|
2701
2714
|
l.value && u.value && !u.value.contains(e.target) && (l.value = !1);
|
|
2702
2715
|
}
|
|
2703
|
-
return
|
|
2716
|
+
return v(() => document.addEventListener("click", b)), _(() => document.removeEventListener("click", b)), (n, r) => (x(), o("div", {
|
|
2704
2717
|
ref_key: "rootEl",
|
|
2705
2718
|
ref: u,
|
|
2706
2719
|
class: h(t.block ? "relative w-full" : "relative inline-block")
|
|
@@ -2711,16 +2724,16 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2711
2724
|
"aria-label": t.ariaLabel || void 0,
|
|
2712
2725
|
"aria-haspopup": "listbox",
|
|
2713
2726
|
"aria-expanded": l.value,
|
|
2714
|
-
onClick:
|
|
2715
|
-
}, [s("span", { class: h(["min-w-0 truncate", f.value ? "" : "text-slate-400 dark:text-slate-500"]) },
|
|
2727
|
+
onClick: g
|
|
2728
|
+
}, [s("span", { class: h(["min-w-0 truncate", f.value ? "" : "text-slate-400 dark:text-slate-500"]) }, k(f.value ? f.value.label : t.placeholder), 3), d(A(ue), {
|
|
2716
2729
|
class: h(["shrink-0 transition-transform", [t.chevronClass, l.value ? "rotate-180" : ""]]),
|
|
2717
2730
|
"aria-hidden": "true"
|
|
2718
|
-
}, null, 8, ["class"])], 10, Nr), l.value ? (
|
|
2731
|
+
}, null, 8, ["class"])], 10, Nr), l.value ? (x(), o("ul", {
|
|
2719
2732
|
key: 0,
|
|
2720
2733
|
role: "listbox",
|
|
2721
2734
|
"aria-label": t.ariaLabel || t.placeholder,
|
|
2722
2735
|
class: "absolute z-20 mt-1 w-full min-w-max max-w-xs max-h-60 overflow-auto rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 py-1 shadow-lg focus:outline-none"
|
|
2723
|
-
}, [(
|
|
2736
|
+
}, [(x(!0), o(e, null, T(t.options, (e) => (x(), o("li", {
|
|
2724
2737
|
key: String(e.value),
|
|
2725
2738
|
role: "option",
|
|
2726
2739
|
"aria-selected": e.value === t.modelValue,
|
|
@@ -2730,7 +2743,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2730
2743
|
disabled: e.disabled,
|
|
2731
2744
|
class: h(m(e)),
|
|
2732
2745
|
onClick: (t) => y(e)
|
|
2733
|
-
},
|
|
2746
|
+
}, k(e.label), 11, Ir)], 8, Fr))), 128))], 8, Pr)) : a("", !0)], 2));
|
|
2734
2747
|
}
|
|
2735
2748
|
}), Rr = ["role", "aria-label"], zr = [
|
|
2736
2749
|
"aria-pressed",
|
|
@@ -2755,18 +2768,18 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2755
2768
|
let t = e.value === i.modelValue;
|
|
2756
2769
|
return i.optionClass ? i.optionClass(e, t) : t ? l.value : Br;
|
|
2757
2770
|
}
|
|
2758
|
-
return (n, r) => (
|
|
2771
|
+
return (n, r) => (x(), o("div", {
|
|
2759
2772
|
role: t.ariaLabel ? "group" : void 0,
|
|
2760
2773
|
"aria-label": t.ariaLabel || void 0,
|
|
2761
2774
|
class: h(s.value)
|
|
2762
|
-
}, [(
|
|
2775
|
+
}, [(x(!0), o(e, null, T(t.options, (e) => (x(), o("button", {
|
|
2763
2776
|
key: String(e.value),
|
|
2764
2777
|
type: "button",
|
|
2765
2778
|
class: h([c.value, u(e)]),
|
|
2766
2779
|
"aria-pressed": e.value === t.modelValue,
|
|
2767
2780
|
title: e.title,
|
|
2768
2781
|
onClick: (t) => a("update:modelValue", e.value)
|
|
2769
|
-
},
|
|
2782
|
+
}, k(e.label), 11, zr))), 128))], 10, Rr));
|
|
2770
2783
|
}
|
|
2771
2784
|
}), Hr = { class: "w-full text-sm" }, Ur = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Wr = { class: "text-left" }, Gr = { key: 0 }, Kr = ["colspan"], qr = /* @__PURE__ */ f({
|
|
2772
2785
|
__name: "BaseTable",
|
|
@@ -2779,13 +2792,13 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2779
2792
|
emptyText: { default: "No rows." }
|
|
2780
2793
|
},
|
|
2781
2794
|
setup(t) {
|
|
2782
|
-
return (n, r) => (
|
|
2795
|
+
return (n, r) => (x(), o("table", Hr, [s("thead", Ur, [s("tr", Wr, [(x(!0), o(e, null, T(t.columns, (e, t) => (x(), o("th", {
|
|
2783
2796
|
key: t,
|
|
2784
2797
|
class: h(["px-4 py-3", e.align === "right" ? "text-right" : ""])
|
|
2785
|
-
},
|
|
2798
|
+
}, k(e.label), 3))), 128))])]), s("tbody", null, [t.empty ? (x(), o("tr", Gr, [s("td", {
|
|
2786
2799
|
colspan: t.columns.length,
|
|
2787
2800
|
class: "px-4 py-12 text-center text-slate-500"
|
|
2788
|
-
}, [
|
|
2801
|
+
}, [E(n.$slots, "empty", {}, () => [u(k(t.emptyText), 1)])], 8, Kr)])) : a("", !0), E(n.$slots, "default")])]));
|
|
2789
2802
|
}
|
|
2790
2803
|
}), Jr = { class: "grid gap-3 md:grid-cols-2" }, Yr = {
|
|
2791
2804
|
key: 0,
|
|
@@ -2812,24 +2825,24 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2812
2825
|
let n = parseFloat(t);
|
|
2813
2826
|
r("update", e, Number.isNaN(n) ? t : n);
|
|
2814
2827
|
}
|
|
2815
|
-
return (n, u) => (
|
|
2816
|
-
u.type === "boolean" ? a("", !0) : (
|
|
2817
|
-
u.type === "select" ? (
|
|
2828
|
+
return (n, u) => (x(), o("div", Jr, [(x(!0), o(e, null, T(t.specs, (u) => (x(), o("div", { key: u.key }, [
|
|
2829
|
+
u.type === "boolean" ? a("", !0) : (x(), o("label", Yr, k(u.label), 1)),
|
|
2830
|
+
u.type === "select" ? (x(), i(Mr, {
|
|
2818
2831
|
key: 1,
|
|
2819
2832
|
modelValue: String(t.params[u.key] ?? ""),
|
|
2820
2833
|
"onUpdate:modelValue": (e) => r("update", u.key, e)
|
|
2821
2834
|
}, {
|
|
2822
|
-
default: F(() => [(
|
|
2835
|
+
default: F(() => [(x(!0), o(e, null, T(u.options ?? [], (e) => (x(), o("option", {
|
|
2823
2836
|
key: e,
|
|
2824
2837
|
value: e
|
|
2825
|
-
},
|
|
2838
|
+
}, k(e), 9, Xr))), 128))]),
|
|
2826
2839
|
_: 2
|
|
2827
|
-
}, 1032, ["modelValue", "onUpdate:modelValue"])) : u.type === "boolean" ? (
|
|
2840
|
+
}, 1032, ["modelValue", "onUpdate:modelValue"])) : u.type === "boolean" ? (x(), o("label", Zr, [s("input", {
|
|
2828
2841
|
checked: !!t.params[u.key],
|
|
2829
2842
|
type: "checkbox",
|
|
2830
2843
|
class: "h-4 w-4",
|
|
2831
2844
|
onChange: (e) => c(u.key, e)
|
|
2832
|
-
}, null, 40, Qr), s("span", $r,
|
|
2845
|
+
}, null, 40, Qr), s("span", $r, k(u.label), 1)])) : (x(), i(Q, {
|
|
2833
2846
|
key: 3,
|
|
2834
2847
|
modelValue: t.params[u.key],
|
|
2835
2848
|
type: "number",
|
|
@@ -2842,8 +2855,8 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2842
2855
|
"min",
|
|
2843
2856
|
"onUpdate:modelValue"
|
|
2844
2857
|
])),
|
|
2845
|
-
u.help ? (
|
|
2846
|
-
|
|
2858
|
+
u.help ? (x(), o("p", ei, k(u.help), 1)) : a("", !0),
|
|
2859
|
+
E(n.$slots, "after", { spec: u })
|
|
2847
2860
|
]))), 128))]));
|
|
2848
2861
|
}
|
|
2849
2862
|
}), ni = { class: "mt-1.5 space-y-0.5 px-1" }, ri = { class: "text-slate-400 dark:text-slate-500" }, ii = /* @__PURE__ */ f({
|
|
@@ -2865,10 +2878,10 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2865
2878
|
function i(e) {
|
|
2866
2879
|
return !n.signed || e == null ? "text-slate-500 dark:text-slate-400" : e >= 0 ? "text-emerald-600 dark:text-emerald-400" : "text-red-600 dark:text-red-400";
|
|
2867
2880
|
}
|
|
2868
|
-
return (n, a) => (
|
|
2881
|
+
return (n, a) => (x(), o("div", ni, [(x(!0), o(e, null, T(t.items, (e) => (x(), o("div", {
|
|
2869
2882
|
key: e.label,
|
|
2870
2883
|
class: "flex items-center justify-between text-[11px]"
|
|
2871
|
-
}, [s("span", ri,
|
|
2884
|
+
}, [s("span", ri, k(e.label), 1), s("span", { class: h(["font-mono tabular-nums font-medium", i(e.value)]) }, k(r(e.value)), 3)]))), 128))]));
|
|
2872
2885
|
}
|
|
2873
2886
|
}), ai = [
|
|
2874
2887
|
"disabled",
|
|
@@ -2903,13 +2916,13 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2903
2916
|
red: "border-red-500 bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-500",
|
|
2904
2917
|
slate: "border-slate-600 bg-slate-600 text-white hover:bg-slate-700 focus-visible:ring-emerald-500"
|
|
2905
2918
|
};
|
|
2906
|
-
return (r, i) => (
|
|
2919
|
+
return (r, i) => (x(), o("button", {
|
|
2907
2920
|
type: "button",
|
|
2908
2921
|
disabled: e.disabled,
|
|
2909
2922
|
title: e.title,
|
|
2910
2923
|
"aria-pressed": e.active,
|
|
2911
2924
|
class: h(["whitespace-nowrap rounded-md border px-3 text-sm font-semibold text-center transition-colors focus:outline-none focus-visible:ring-2 disabled:opacity-50 disabled:cursor-not-allowed", e.active ? n[e.color] : t[e.color]])
|
|
2912
|
-
}, [
|
|
2925
|
+
}, [E(r.$slots, "default", {}, () => [u(k(e.label), 1)])], 10, ai));
|
|
2913
2926
|
}
|
|
2914
2927
|
}), si = { class: "flex items-center justify-between mb-4" }, ci = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, li = {
|
|
2915
2928
|
key: 0,
|
|
@@ -2943,7 +2956,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2943
2956
|
"load-error"
|
|
2944
2957
|
],
|
|
2945
2958
|
setup(t, { expose: n, emit: r }) {
|
|
2946
|
-
let c = t, l = r, f =
|
|
2959
|
+
let c = t, l = r, f = w(!1), p = w(!1), m = S({
|
|
2947
2960
|
keyId: "",
|
|
2948
2961
|
secretKey: "",
|
|
2949
2962
|
baseUrl: c.defaults.baseUrl,
|
|
@@ -2957,20 +2970,20 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2957
2970
|
l("load-error", e instanceof Error ? e.message : "");
|
|
2958
2971
|
}
|
|
2959
2972
|
}
|
|
2960
|
-
function
|
|
2973
|
+
function _(e) {
|
|
2961
2974
|
return !e || !e.trim();
|
|
2962
2975
|
}
|
|
2963
2976
|
async function y() {
|
|
2964
2977
|
if (!f.value) {
|
|
2965
|
-
if (
|
|
2978
|
+
if (_(m.keyId)) {
|
|
2966
2979
|
l("error", c.requiredKeyMessage);
|
|
2967
2980
|
return;
|
|
2968
2981
|
}
|
|
2969
|
-
if (!p.value &&
|
|
2982
|
+
if (!p.value && _(m.secretKey)) {
|
|
2970
2983
|
l("error", c.requiredSecretMessage);
|
|
2971
2984
|
return;
|
|
2972
2985
|
}
|
|
2973
|
-
if (
|
|
2986
|
+
if (_(m.baseUrl) || _(m.dataUrl)) {
|
|
2974
2987
|
l("error", "Base URL and Data URL are required.");
|
|
2975
2988
|
return;
|
|
2976
2989
|
}
|
|
@@ -2978,7 +2991,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2978
2991
|
try {
|
|
2979
2992
|
p.value = (await c.updateFn({
|
|
2980
2993
|
keyId: m.keyId.trim(),
|
|
2981
|
-
secretKey:
|
|
2994
|
+
secretKey: _(m.secretKey) ? void 0 : m.secretKey.trim(),
|
|
2982
2995
|
baseUrl: m.baseUrl.trim(),
|
|
2983
2996
|
dataUrl: m.dataUrl.trim()
|
|
2984
2997
|
})).hasSecret, m.secretKey = "", l("saved", c.savedMessage);
|
|
@@ -2989,14 +3002,14 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
2989
3002
|
}
|
|
2990
3003
|
}
|
|
2991
3004
|
}
|
|
2992
|
-
return
|
|
3005
|
+
return v(g), n({ load: g }), (n, r) => (x(), i(ct, { class: "!p-6" }, {
|
|
2993
3006
|
default: F(() => [
|
|
2994
|
-
s("div", si, [s("div", null, [s("h2", ci,
|
|
3007
|
+
s("div", si, [s("div", null, [s("h2", ci, k(t.title), 1), t.subtitle ? (x(), o("p", li, k(t.subtitle), 1)) : a("", !0)]), f.value ? (x(), o("span", ui, [d(lt, { class: "!h-4 !w-4" }), r[4] ||= u(" Saving… ", -1)])) : a("", !0)]),
|
|
2995
3008
|
s("div", di, [
|
|
2996
3009
|
s("div", fi, [s("label", {
|
|
2997
3010
|
for: `${t.idPrefix}-key-id`,
|
|
2998
3011
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
2999
|
-
},
|
|
3012
|
+
}, k(t.keyLabel), 9, pi), d(Q, {
|
|
3000
3013
|
id: `${t.idPrefix}-key-id`,
|
|
3001
3014
|
modelValue: m.keyId,
|
|
3002
3015
|
"onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
|
|
@@ -3013,7 +3026,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
3013
3026
|
s("label", {
|
|
3014
3027
|
for: `${t.idPrefix}-secret`,
|
|
3015
3028
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3016
|
-
},
|
|
3029
|
+
}, k(t.secretLabel), 9, hi),
|
|
3017
3030
|
d(Q, {
|
|
3018
3031
|
id: `${t.idPrefix}-secret`,
|
|
3019
3032
|
modelValue: m.secretKey,
|
|
@@ -3027,7 +3040,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
3027
3040
|
"modelValue",
|
|
3028
3041
|
"placeholder"
|
|
3029
3042
|
]),
|
|
3030
|
-
s("p", gi, [p.value ? (
|
|
3043
|
+
s("p", gi, [p.value ? (x(), o(e, { key: 0 }, [u(k(t.secretSetHint), 1)], 64)) : E(n.$slots, "no-secret-hint", { key: 1 }, () => [u(k(t.permissionsHint), 1)])])
|
|
3031
3044
|
]),
|
|
3032
3045
|
s("div", _i, [
|
|
3033
3046
|
s("label", {
|
|
@@ -3041,7 +3054,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
3041
3054
|
type: "text",
|
|
3042
3055
|
class: h(Si)
|
|
3043
3056
|
}, null, 8, ["id", "modelValue"]),
|
|
3044
|
-
|
|
3057
|
+
E(n.$slots, "base-url-extra", { form: m })
|
|
3045
3058
|
]),
|
|
3046
3059
|
s("div", yi, [s("label", {
|
|
3047
3060
|
for: `${t.idPrefix}-data-url`,
|
|
@@ -3054,7 +3067,7 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
3054
3067
|
class: h(Si)
|
|
3055
3068
|
}, null, 8, ["id", "modelValue"])]),
|
|
3056
3069
|
s("div", xi, [d(G, {
|
|
3057
|
-
color:
|
|
3070
|
+
color: A(U).GREEN,
|
|
3058
3071
|
description: t.saveLabel,
|
|
3059
3072
|
isDisable: f.value,
|
|
3060
3073
|
isLoading: f.value,
|
|
@@ -3066,28 +3079,153 @@ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }
|
|
|
3066
3079
|
"isLoading"
|
|
3067
3080
|
])])
|
|
3068
3081
|
]),
|
|
3069
|
-
|
|
3082
|
+
E(n.$slots, "footer")
|
|
3070
3083
|
]),
|
|
3071
3084
|
_: 3
|
|
3072
3085
|
}));
|
|
3073
3086
|
}
|
|
3087
|
+
}), wi = {
|
|
3088
|
+
key: 0,
|
|
3089
|
+
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3090
|
+
}, Ti = { class: "mb-3 flex flex-wrap items-center gap-2" }, Ei = { class: "relative min-w-[200px] flex-1" }, Di = ["placeholder"], Oi = {
|
|
3091
|
+
key: 0,
|
|
3092
|
+
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3093
|
+
}, ki = {
|
|
3094
|
+
key: 1,
|
|
3095
|
+
class: "flex flex-wrap gap-2"
|
|
3096
|
+
}, Ai = ["title", "onClick"], ji = "h-9 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", Mi = "\0all", Ni = /* @__PURE__ */ f({
|
|
3097
|
+
__name: "BasePillPickerModal",
|
|
3098
|
+
props: {
|
|
3099
|
+
title: {},
|
|
3100
|
+
items: {},
|
|
3101
|
+
groups: {},
|
|
3102
|
+
icon: {},
|
|
3103
|
+
subtitle: {},
|
|
3104
|
+
searchPlaceholder: { default: "Filter…" },
|
|
3105
|
+
emptyMessage: { default: "Nothing to pick from." },
|
|
3106
|
+
noMatchMessage: { default: "No items match the current filter." },
|
|
3107
|
+
mono: {
|
|
3108
|
+
type: Boolean,
|
|
3109
|
+
default: !1
|
|
3110
|
+
},
|
|
3111
|
+
maxWidthClass: { default: "max-w-2xl" },
|
|
3112
|
+
closeText: { default: "Close" },
|
|
3113
|
+
groupAriaLabel: { default: "Group" },
|
|
3114
|
+
allLabel: { default: "All" }
|
|
3115
|
+
},
|
|
3116
|
+
emits: ["pick", "close"],
|
|
3117
|
+
setup(t, { emit: n }) {
|
|
3118
|
+
let c = t, l = n, u = r(() => c.icon ?? ye), f = w(""), p = w(Mi), m = r(() => c.groups && c.groups.length > 0 ? [{
|
|
3119
|
+
value: Mi,
|
|
3120
|
+
label: c.allLabel
|
|
3121
|
+
}, ...c.groups] : []), g = r(() => c.items.filter((e) => (p.value === Mi || e.group === p.value) && e.label.toLowerCase().includes(f.value.trim().toLowerCase())));
|
|
3122
|
+
return (n, r) => (x(), i(Ht, {
|
|
3123
|
+
title: t.title,
|
|
3124
|
+
icon: u.value,
|
|
3125
|
+
subtitle: t.subtitle,
|
|
3126
|
+
scrollable: "",
|
|
3127
|
+
"max-width-class": t.maxWidthClass,
|
|
3128
|
+
onCancel: r[4] ||= (e) => l("close")
|
|
3129
|
+
}, {
|
|
3130
|
+
footer: F(() => [d(Gn, {
|
|
3131
|
+
variant: "ghost",
|
|
3132
|
+
label: t.closeText,
|
|
3133
|
+
onClick: r[3] ||= (e) => l("close")
|
|
3134
|
+
}, null, 8, ["label"])]),
|
|
3135
|
+
default: F(() => [t.items.length === 0 ? (x(), o("p", wi, k(t.emptyMessage), 1)) : (x(), o(e, { key: 1 }, [s("div", Ti, [s("div", Ei, [
|
|
3136
|
+
d(A(ye), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
|
|
3137
|
+
I(s("input", {
|
|
3138
|
+
"onUpdate:modelValue": r[0] ||= (e) => f.value = e,
|
|
3139
|
+
type: "text",
|
|
3140
|
+
placeholder: t.searchPlaceholder,
|
|
3141
|
+
autocomplete: "off",
|
|
3142
|
+
class: h([
|
|
3143
|
+
ji,
|
|
3144
|
+
"w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
|
|
3145
|
+
t.mono ? "font-mono" : ""
|
|
3146
|
+
])
|
|
3147
|
+
}, null, 10, Di), [[N, f.value]]),
|
|
3148
|
+
f.value ? (x(), o("button", {
|
|
3149
|
+
key: 0,
|
|
3150
|
+
type: "button",
|
|
3151
|
+
"aria-label": "Clear the filter",
|
|
3152
|
+
class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
|
|
3153
|
+
onClick: r[1] ||= (e) => f.value = ""
|
|
3154
|
+
}, " ✕ ")) : a("", !0)
|
|
3155
|
+
]), m.value.length > 0 ? (x(), i(Vr, {
|
|
3156
|
+
key: 0,
|
|
3157
|
+
modelValue: p.value,
|
|
3158
|
+
"onUpdate:modelValue": r[2] ||= (e) => p.value = e,
|
|
3159
|
+
options: m.value,
|
|
3160
|
+
"aria-label": t.groupAriaLabel
|
|
3161
|
+
}, null, 8, [
|
|
3162
|
+
"modelValue",
|
|
3163
|
+
"options",
|
|
3164
|
+
"aria-label"
|
|
3165
|
+
])) : a("", !0)]), g.value.length === 0 ? (x(), o("p", Oi, k(t.noMatchMessage), 1)) : (x(), o("div", ki, [(x(!0), o(e, null, T(g.value, (e) => (x(), o("button", {
|
|
3166
|
+
key: e.id,
|
|
3167
|
+
type: "button",
|
|
3168
|
+
title: e.title,
|
|
3169
|
+
class: h(["h-8 shrink-0 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 px-3 text-sm text-slate-700 dark:text-slate-200 transition-colors hover:border-emerald-500 hover:bg-emerald-50 hover:text-emerald-700 dark:hover:bg-emerald-500/10 dark:hover:text-emerald-400 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", t.mono ? "font-mono" : ""]),
|
|
3170
|
+
onClick: (t) => l("pick", e)
|
|
3171
|
+
}, k(e.label), 11, Ai))), 128))]))], 64))]),
|
|
3172
|
+
_: 1
|
|
3173
|
+
}, 8, [
|
|
3174
|
+
"title",
|
|
3175
|
+
"icon",
|
|
3176
|
+
"subtitle",
|
|
3177
|
+
"max-width-class"
|
|
3178
|
+
]));
|
|
3179
|
+
}
|
|
3180
|
+
}), Pi = ["aria-label"], Fi = ["title"], Ii = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, Li = ["title"], Ri = /* @__PURE__ */ f({
|
|
3181
|
+
__name: "BaseBarDistribution",
|
|
3182
|
+
props: {
|
|
3183
|
+
bars: {},
|
|
3184
|
+
ariaLabel: { default: "Value distribution" },
|
|
3185
|
+
countNoun: { default: "item" },
|
|
3186
|
+
titlePrefix: { default: "" },
|
|
3187
|
+
maxBarHeight: { default: 56 },
|
|
3188
|
+
barClass: { default: "bg-emerald-500/80 dark:bg-emerald-400/80" }
|
|
3189
|
+
},
|
|
3190
|
+
setup(t) {
|
|
3191
|
+
let n = t, i = r(() => Math.max(1, ...n.bars.map((e) => e.count))), a = (e) => Math.max(3, Math.round(e.count / i.value * n.maxBarHeight)), c = (e) => `${n.titlePrefix ? `${n.titlePrefix} ` : ""}${e.label}: ${e.count} ${n.countNoun}${e.count === 1 ? "" : "s"}`;
|
|
3192
|
+
return (n, r) => (x(), o("div", {
|
|
3193
|
+
class: "flex items-end gap-1.5 overflow-x-auto pb-1",
|
|
3194
|
+
role: "img",
|
|
3195
|
+
"aria-label": t.ariaLabel
|
|
3196
|
+
}, [(x(!0), o(e, null, T(t.bars, (e) => (x(), o("div", {
|
|
3197
|
+
key: e.label,
|
|
3198
|
+
class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
|
|
3199
|
+
title: c(e)
|
|
3200
|
+
}, [
|
|
3201
|
+
s("span", Ii, k(e.count), 1),
|
|
3202
|
+
s("div", {
|
|
3203
|
+
class: h(["w-full max-w-8 rounded-t", t.barClass]),
|
|
3204
|
+
style: g({ height: `${a(e)}px` })
|
|
3205
|
+
}, null, 6),
|
|
3206
|
+
s("span", {
|
|
3207
|
+
class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
|
|
3208
|
+
title: e.label
|
|
3209
|
+
}, k(e.label), 9, Li)
|
|
3210
|
+
], 8, Fi))), 128))], 8, Pi));
|
|
3211
|
+
}
|
|
3074
3212
|
});
|
|
3075
3213
|
//#endregion
|
|
3076
3214
|
//#region src/composables/useDebounce.ts
|
|
3077
|
-
function
|
|
3078
|
-
let n =
|
|
3215
|
+
function zi(e, t = 300) {
|
|
3216
|
+
let n = w(e.value), r = null;
|
|
3079
3217
|
return P(e, (e) => {
|
|
3080
3218
|
r && clearTimeout(r), r = setTimeout(() => {
|
|
3081
3219
|
n.value = e, r = null;
|
|
3082
3220
|
}, t);
|
|
3083
|
-
}),
|
|
3221
|
+
}), y(() => {
|
|
3084
3222
|
r &&= (clearTimeout(r), null);
|
|
3085
3223
|
}), n;
|
|
3086
3224
|
}
|
|
3087
3225
|
//#endregion
|
|
3088
3226
|
//#region src/composables/useToast.ts
|
|
3089
|
-
function
|
|
3090
|
-
let t =
|
|
3227
|
+
function Bi(e = 3e3) {
|
|
3228
|
+
let t = w(!1), n = w(""), r = w(q.SUCCESS), i = null;
|
|
3091
3229
|
function a() {
|
|
3092
3230
|
i &&= (clearTimeout(i), null);
|
|
3093
3231
|
}
|
|
@@ -3096,7 +3234,7 @@ function Ti(e = 3e3) {
|
|
|
3096
3234
|
t.value = !1, i = null;
|
|
3097
3235
|
}, c);
|
|
3098
3236
|
}
|
|
3099
|
-
return
|
|
3237
|
+
return y(() => {
|
|
3100
3238
|
a();
|
|
3101
3239
|
}), {
|
|
3102
3240
|
showToast: t,
|
|
@@ -3107,8 +3245,8 @@ function Ti(e = 3e3) {
|
|
|
3107
3245
|
}
|
|
3108
3246
|
//#endregion
|
|
3109
3247
|
//#region src/composables/useQueryParamSync.ts
|
|
3110
|
-
function
|
|
3111
|
-
let e =
|
|
3248
|
+
function Vi() {
|
|
3249
|
+
let e = Te(), t = Ee();
|
|
3112
3250
|
function n(t) {
|
|
3113
3251
|
let n = e.query[t];
|
|
3114
3252
|
return typeof n == "string" ? n : "";
|
|
@@ -3129,7 +3267,7 @@ function Ei() {
|
|
|
3129
3267
|
}
|
|
3130
3268
|
//#endregion
|
|
3131
3269
|
//#region src/composables/useFieldClasses.ts
|
|
3132
|
-
function
|
|
3270
|
+
function Hi() {
|
|
3133
3271
|
let { isDark: e } = V(), t = r(() => e.value ? "text-gray-300" : "text-gray-600"), n = r(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
|
|
3134
3272
|
function i(t) {
|
|
3135
3273
|
return t == null || String(t).trim() === "" ? e.value ? "bg-gray-800 border-red-500 text-gray-100 placeholder-gray-500 focus:ring-red-500 focus:border-red-500 ring-1 ring-red-500/30" : "bg-white border-red-400 text-gray-800 focus:ring-red-500 focus:border-red-500 ring-1 ring-red-400/30" : n.value;
|
|
@@ -3142,41 +3280,47 @@ function Di() {
|
|
|
3142
3280
|
}
|
|
3143
3281
|
//#endregion
|
|
3144
3282
|
//#region src/composables/usePolling.ts
|
|
3145
|
-
function
|
|
3146
|
-
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o =
|
|
3147
|
-
function s() {
|
|
3148
|
-
a !== null || t === null || (a = setInterval(() => void e(), t));
|
|
3149
|
-
}
|
|
3283
|
+
function Ui(e, t, n = {}) {
|
|
3284
|
+
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = w(!1), s = !1;
|
|
3150
3285
|
function c() {
|
|
3151
|
-
a !== null
|
|
3286
|
+
a !== null || t === null || (a = setInterval(() => void e(), t));
|
|
3152
3287
|
}
|
|
3153
3288
|
function l() {
|
|
3154
|
-
|
|
3289
|
+
a !== null && (clearInterval(a), a = null);
|
|
3155
3290
|
}
|
|
3156
3291
|
function u() {
|
|
3157
|
-
o.value = !
|
|
3292
|
+
s = !1, !o.value && (o.value = !0, r && e(), c());
|
|
3158
3293
|
}
|
|
3159
3294
|
function d() {
|
|
3160
|
-
|
|
3295
|
+
s = !1, o.value = !1, l();
|
|
3161
3296
|
}
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3297
|
+
function f() {
|
|
3298
|
+
if (document.visibilityState === "visible") {
|
|
3299
|
+
if (!s) return;
|
|
3300
|
+
s = !1, o.value = !0, e(), c();
|
|
3301
|
+
} else {
|
|
3302
|
+
if (!o.value) return;
|
|
3303
|
+
o.value = !1, l(), s = !0;
|
|
3304
|
+
}
|
|
3305
|
+
}
|
|
3306
|
+
return v(() => {
|
|
3307
|
+
u(), i && document.addEventListener("visibilitychange", f);
|
|
3308
|
+
}), b(() => {
|
|
3309
|
+
d(), i && document.removeEventListener("visibilitychange", f);
|
|
3166
3310
|
}), {
|
|
3167
|
-
start:
|
|
3168
|
-
stop:
|
|
3169
|
-
active:
|
|
3311
|
+
start: u,
|
|
3312
|
+
stop: d,
|
|
3313
|
+
active: C(o)
|
|
3170
3314
|
};
|
|
3171
3315
|
}
|
|
3172
3316
|
//#endregion
|
|
3173
3317
|
//#region src/enums/BaseBadgeEnum.ts
|
|
3174
|
-
var
|
|
3318
|
+
var Wi = /* @__PURE__ */ function(e) {
|
|
3175
3319
|
return e.WIN = "WIN", e.LOSE = "LOSE", e;
|
|
3176
3320
|
}({});
|
|
3177
3321
|
//#endregion
|
|
3178
3322
|
//#region src/utils/util.ts
|
|
3179
|
-
function
|
|
3323
|
+
function Gi(e) {
|
|
3180
3324
|
let t = "red";
|
|
3181
3325
|
switch (e) {
|
|
3182
3326
|
case R.ERROR:
|
|
@@ -3194,7 +3338,7 @@ function Ai(e) {
|
|
|
3194
3338
|
}
|
|
3195
3339
|
return t;
|
|
3196
3340
|
}
|
|
3197
|
-
function
|
|
3341
|
+
function Ki(e) {
|
|
3198
3342
|
let t = "red";
|
|
3199
3343
|
switch (e) {
|
|
3200
3344
|
case H.GREEN:
|
|
@@ -3223,14 +3367,14 @@ function ji(e) {
|
|
|
3223
3367
|
}
|
|
3224
3368
|
//#endregion
|
|
3225
3369
|
//#region src/utils/httpColors.ts
|
|
3226
|
-
var
|
|
3370
|
+
var qi = {
|
|
3227
3371
|
GET: "bg-blue-600",
|
|
3228
3372
|
POST: "bg-emerald-600",
|
|
3229
3373
|
PUT: "bg-amber-600",
|
|
3230
3374
|
DELETE: "bg-red-600",
|
|
3231
3375
|
PATCH: "bg-purple-600",
|
|
3232
3376
|
HEAD: "bg-gray-600"
|
|
3233
|
-
},
|
|
3377
|
+
}, Ji = {
|
|
3234
3378
|
GET: "bg-blue-500",
|
|
3235
3379
|
POST: "bg-green-500",
|
|
3236
3380
|
PUT: "bg-yellow-500",
|
|
@@ -3238,39 +3382,39 @@ var Mi = {
|
|
|
3238
3382
|
PATCH: "bg-purple-500",
|
|
3239
3383
|
HEAD: "bg-gray-500"
|
|
3240
3384
|
};
|
|
3241
|
-
function
|
|
3242
|
-
return e ?
|
|
3385
|
+
function Yi(e) {
|
|
3386
|
+
return e ? qi[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
3243
3387
|
}
|
|
3244
|
-
function
|
|
3245
|
-
return e ?
|
|
3388
|
+
function Xi(e) {
|
|
3389
|
+
return e ? Ji[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
|
|
3246
3390
|
}
|
|
3247
|
-
function
|
|
3391
|
+
function Zi(e) {
|
|
3248
3392
|
let t = e ?? 0;
|
|
3249
3393
|
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";
|
|
3250
3394
|
}
|
|
3251
|
-
function
|
|
3395
|
+
function Qi(e, t) {
|
|
3252
3396
|
let n = (e || "ANY").toUpperCase();
|
|
3253
3397
|
return n === "GET" ? t ? "bg-blue-500/15 text-blue-400" : "bg-blue-100 text-blue-700" : n === "POST" ? t ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-100 text-emerald-700" : n === "PUT" ? t ? "bg-amber-500/15 text-amber-400" : "bg-amber-100 text-amber-700" : n === "DELETE" ? t ? "bg-red-500/15 text-red-400" : "bg-red-100 text-red-700" : n === "PATCH" ? t ? "bg-purple-500/15 text-purple-400" : "bg-purple-100 text-purple-700" : n === "HEAD" ? t ? "bg-sky-500/15 text-sky-400" : "bg-sky-100 text-sky-700" : t ? "bg-gray-500/15 text-gray-400" : "bg-gray-100 text-gray-600";
|
|
3254
3398
|
}
|
|
3255
|
-
function
|
|
3399
|
+
function $i(e, t) {
|
|
3256
3400
|
let n = e ?? 200;
|
|
3257
3401
|
return n >= 200 && n < 300 ? t ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-100 text-emerald-700" : n >= 300 && n < 400 ? t ? "bg-sky-500/15 text-sky-300" : "bg-sky-100 text-sky-700" : n >= 400 && n < 500 ? t ? "bg-amber-500/15 text-amber-300" : "bg-amber-100 text-amber-700" : n >= 500 && n < 600 ? t ? "bg-red-500/15 text-red-300" : "bg-red-100 text-red-700" : t ? "bg-gray-800 text-gray-400" : "bg-gray-100 text-gray-600";
|
|
3258
3402
|
}
|
|
3259
|
-
function
|
|
3403
|
+
function ea(e, t) {
|
|
3260
3404
|
let n = e ?? 200;
|
|
3261
3405
|
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";
|
|
3262
3406
|
}
|
|
3263
3407
|
//#endregion
|
|
3264
3408
|
//#region src/utils/kvRows.ts
|
|
3265
|
-
function
|
|
3409
|
+
function ta(e) {
|
|
3266
3410
|
return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
|
|
3267
3411
|
}
|
|
3268
|
-
function
|
|
3412
|
+
function na(e) {
|
|
3269
3413
|
return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
|
|
3270
3414
|
}
|
|
3271
3415
|
//#endregion
|
|
3272
3416
|
//#region src/utils/sanitizeHtml.ts
|
|
3273
|
-
var
|
|
3417
|
+
var ra = /* @__PURE__ */ new Set([
|
|
3274
3418
|
"A",
|
|
3275
3419
|
"B",
|
|
3276
3420
|
"STRONG",
|
|
@@ -3285,7 +3429,7 @@ var Hi = /* @__PURE__ */ new Set([
|
|
|
3285
3429
|
"LI",
|
|
3286
3430
|
"SPAN",
|
|
3287
3431
|
"DIV"
|
|
3288
|
-
]),
|
|
3432
|
+
]), ia = /* @__PURE__ */ new Set([
|
|
3289
3433
|
"SCRIPT",
|
|
3290
3434
|
"STYLE",
|
|
3291
3435
|
"IFRAME",
|
|
@@ -3293,40 +3437,40 @@ var Hi = /* @__PURE__ */ new Set([
|
|
|
3293
3437
|
"EMBED",
|
|
3294
3438
|
"NOSCRIPT",
|
|
3295
3439
|
"TEMPLATE"
|
|
3296
|
-
]),
|
|
3297
|
-
function
|
|
3440
|
+
]), aa = { A: /* @__PURE__ */ new Set(["href", "title"]) };
|
|
3441
|
+
function oa(e) {
|
|
3298
3442
|
let t = e.trim().toLowerCase();
|
|
3299
3443
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
|
|
3300
3444
|
}
|
|
3301
|
-
function
|
|
3445
|
+
function sa(e) {
|
|
3302
3446
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
3303
3447
|
let t = e, n = t.tagName.toUpperCase();
|
|
3304
|
-
if (!
|
|
3305
|
-
|
|
3448
|
+
if (!ra.has(n)) {
|
|
3449
|
+
ia.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
|
|
3306
3450
|
return;
|
|
3307
3451
|
}
|
|
3308
|
-
let r =
|
|
3452
|
+
let r = aa[n] ?? /* @__PURE__ */ new Set();
|
|
3309
3453
|
for (let e of Array.from(t.attributes)) {
|
|
3310
3454
|
if (!r.has(e.name.toLowerCase())) {
|
|
3311
3455
|
t.removeAttribute(e.name);
|
|
3312
3456
|
continue;
|
|
3313
3457
|
}
|
|
3314
|
-
n === "A" && e.name.toLowerCase() === "href" && !
|
|
3458
|
+
n === "A" && e.name.toLowerCase() === "href" && !oa(e.value) && t.removeAttribute(e.name);
|
|
3315
3459
|
}
|
|
3316
3460
|
n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
|
|
3317
|
-
for (let e of Array.from(t.childNodes))
|
|
3461
|
+
for (let e of Array.from(t.childNodes)) sa(e);
|
|
3318
3462
|
}
|
|
3319
|
-
function
|
|
3463
|
+
function ca(e) {
|
|
3320
3464
|
if (!e) return "";
|
|
3321
3465
|
let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
|
|
3322
3466
|
if (!t) return "";
|
|
3323
|
-
for (let e of Array.from(t.childNodes))
|
|
3467
|
+
for (let e of Array.from(t.childNodes)) sa(e);
|
|
3324
3468
|
return t.innerHTML;
|
|
3325
3469
|
}
|
|
3326
3470
|
//#endregion
|
|
3327
3471
|
//#region src/utils/format.ts
|
|
3328
3472
|
var $ = "—";
|
|
3329
|
-
function
|
|
3473
|
+
function la(e, t = 4) {
|
|
3330
3474
|
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
3331
3475
|
let n = typeof e == "string" ? Number(e) : e;
|
|
3332
3476
|
return isFinite(n) ? n.toLocaleString(void 0, {
|
|
@@ -3334,12 +3478,12 @@ function Ji(e, t = 4) {
|
|
|
3334
3478
|
maximumFractionDigits: t
|
|
3335
3479
|
}) : $;
|
|
3336
3480
|
}
|
|
3337
|
-
function
|
|
3481
|
+
function ua(e) {
|
|
3338
3482
|
if (e == null || e === "") return $;
|
|
3339
3483
|
let t = new Date(e);
|
|
3340
3484
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
|
|
3341
3485
|
}
|
|
3342
|
-
function
|
|
3486
|
+
function da(e) {
|
|
3343
3487
|
return new Date(e).toLocaleString(void 0, {
|
|
3344
3488
|
month: "short",
|
|
3345
3489
|
day: "numeric",
|
|
@@ -3347,13 +3491,13 @@ function Xi(e) {
|
|
|
3347
3491
|
minute: "2-digit"
|
|
3348
3492
|
});
|
|
3349
3493
|
}
|
|
3350
|
-
function
|
|
3494
|
+
function fa(e) {
|
|
3351
3495
|
return new Date(e).toLocaleDateString(void 0, {
|
|
3352
3496
|
month: "short",
|
|
3353
3497
|
day: "numeric"
|
|
3354
3498
|
});
|
|
3355
3499
|
}
|
|
3356
|
-
function
|
|
3500
|
+
function pa(e) {
|
|
3357
3501
|
try {
|
|
3358
3502
|
return new Date(e).toLocaleString(void 0, {
|
|
3359
3503
|
year: "numeric",
|
|
@@ -3369,7 +3513,7 @@ function Qi(e) {
|
|
|
3369
3513
|
return String(e);
|
|
3370
3514
|
}
|
|
3371
3515
|
}
|
|
3372
|
-
function
|
|
3516
|
+
function ma(e) {
|
|
3373
3517
|
if (!isFinite(e) || e === 0) return e.toFixed(2);
|
|
3374
3518
|
let t = Math.abs(e), n = 2;
|
|
3375
3519
|
return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
|
|
@@ -3377,13 +3521,13 @@ function $i(e) {
|
|
|
3377
3521
|
maximumFractionDigits: n
|
|
3378
3522
|
});
|
|
3379
3523
|
}
|
|
3380
|
-
function
|
|
3524
|
+
function ha(e, t = 2) {
|
|
3381
3525
|
return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
|
|
3382
3526
|
}
|
|
3383
|
-
function
|
|
3527
|
+
function ga(e) {
|
|
3384
3528
|
return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
|
|
3385
3529
|
}
|
|
3386
|
-
function
|
|
3530
|
+
function _a(e) {
|
|
3387
3531
|
if (e == null || e === "") return $;
|
|
3388
3532
|
let t = new Date(e);
|
|
3389
3533
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -3392,7 +3536,7 @@ function na(e) {
|
|
|
3392
3536
|
day: "numeric"
|
|
3393
3537
|
});
|
|
3394
3538
|
}
|
|
3395
|
-
function
|
|
3539
|
+
function va(e) {
|
|
3396
3540
|
if (e == null || e === "") return $;
|
|
3397
3541
|
let t = new Date(e);
|
|
3398
3542
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -3403,22 +3547,22 @@ function ra(e) {
|
|
|
3403
3547
|
minute: "2-digit"
|
|
3404
3548
|
});
|
|
3405
3549
|
}
|
|
3406
|
-
function
|
|
3550
|
+
function ya(e) {
|
|
3407
3551
|
if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
|
|
3408
3552
|
let t = e / 1e3, n = t < 1 ? 3 : 2;
|
|
3409
3553
|
return `= ${t.toFixed(n)} s`;
|
|
3410
3554
|
}
|
|
3411
|
-
function
|
|
3555
|
+
function ba(e) {
|
|
3412
3556
|
return e ? e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB` : "";
|
|
3413
3557
|
}
|
|
3414
|
-
function
|
|
3558
|
+
function xa(e) {
|
|
3415
3559
|
try {
|
|
3416
3560
|
return JSON.stringify(JSON.parse(e), null, 2);
|
|
3417
3561
|
} catch {
|
|
3418
3562
|
return e;
|
|
3419
3563
|
}
|
|
3420
3564
|
}
|
|
3421
|
-
function
|
|
3565
|
+
function Sa(e) {
|
|
3422
3566
|
if (e == null) return "";
|
|
3423
3567
|
if (typeof e == "string") return e;
|
|
3424
3568
|
try {
|
|
@@ -3427,14 +3571,14 @@ function sa(e) {
|
|
|
3427
3571
|
return String(e);
|
|
3428
3572
|
}
|
|
3429
3573
|
}
|
|
3430
|
-
function
|
|
3574
|
+
function Ca(e, t = 2) {
|
|
3431
3575
|
if (e == null || !isFinite(e)) return $;
|
|
3432
3576
|
let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
|
|
3433
3577
|
return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
|
|
3434
3578
|
}
|
|
3435
3579
|
//#endregion
|
|
3436
3580
|
//#region src/utils/validate.ts
|
|
3437
|
-
function
|
|
3581
|
+
function wa(e) {
|
|
3438
3582
|
let t = (e ?? "").trim();
|
|
3439
3583
|
if (!t) return !1;
|
|
3440
3584
|
try {
|
|
@@ -3444,7 +3588,7 @@ function la(e) {
|
|
|
3444
3588
|
return !1;
|
|
3445
3589
|
}
|
|
3446
3590
|
}
|
|
3447
|
-
function
|
|
3591
|
+
function Ta(e) {
|
|
3448
3592
|
if (!e.trim()) return !0;
|
|
3449
3593
|
try {
|
|
3450
3594
|
return JSON.parse(e), !0;
|
|
@@ -3452,7 +3596,7 @@ function ua(e) {
|
|
|
3452
3596
|
return !1;
|
|
3453
3597
|
}
|
|
3454
3598
|
}
|
|
3455
|
-
function
|
|
3599
|
+
function Ea(e) {
|
|
3456
3600
|
if (!e.trim()) return !0;
|
|
3457
3601
|
try {
|
|
3458
3602
|
return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
|
|
@@ -3460,7 +3604,7 @@ function da(e) {
|
|
|
3460
3604
|
return !1;
|
|
3461
3605
|
}
|
|
3462
3606
|
}
|
|
3463
|
-
function
|
|
3607
|
+
function Da(e) {
|
|
3464
3608
|
if (!e.trim()) return !0;
|
|
3465
3609
|
let t = e.replace(/\s+/g, "");
|
|
3466
3610
|
if (!t) return !0;
|
|
@@ -3473,7 +3617,7 @@ function fa(e) {
|
|
|
3473
3617
|
}
|
|
3474
3618
|
//#endregion
|
|
3475
3619
|
//#region src/utils/specForm.ts
|
|
3476
|
-
function
|
|
3620
|
+
function Oa(e, t) {
|
|
3477
3621
|
let n = {};
|
|
3478
3622
|
if (!e) return n;
|
|
3479
3623
|
for (let r of e) {
|
|
@@ -3482,7 +3626,7 @@ function pa(e, t) {
|
|
|
3482
3626
|
}
|
|
3483
3627
|
return n;
|
|
3484
3628
|
}
|
|
3485
|
-
function
|
|
3629
|
+
function ka(e, t) {
|
|
3486
3630
|
if (!e) return null;
|
|
3487
3631
|
for (let n of e) if (n.type === "decimal" || n.type === "integer") {
|
|
3488
3632
|
let e = t[n.key], r = e === "" || e == null;
|
|
@@ -3493,7 +3637,7 @@ function ma(e, t) {
|
|
|
3493
3637
|
}
|
|
3494
3638
|
//#endregion
|
|
3495
3639
|
//#region src/utils/pnl.ts
|
|
3496
|
-
function
|
|
3640
|
+
function Aa(e) {
|
|
3497
3641
|
if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
|
|
3498
3642
|
pnlUsd: null,
|
|
3499
3643
|
pnlPct: null
|
|
@@ -3508,4 +3652,4 @@ function ha(e) {
|
|
|
3508
3652
|
};
|
|
3509
3653
|
}
|
|
3510
3654
|
//#endregion
|
|
3511
|
-
export { R as AlertEnum, Jn as BaseActionButton,
|
|
3655
|
+
export { R as AlertEnum, Jn as BaseActionButton, Me as BaseAlert, zn as BaseAppLayout, Pe as BaseBadge, Wi as BaseBadgeEnum, Ri as BaseBarDistribution, Re as BaseBreadcrumb, G as BaseButton, U as BaseButtonEnum, W as BaseButtonSizeEnum, xr as BaseChipButton, kr as BaseCodeBlock, Gt as BaseCollapsibleSection, Yt as BaseConfirmModal, Xn as BaseCopyButton, Ci as BaseCredentialsForm, Lr as BaseDropdown, In as BaseEntityPickerModal, Or as BaseFileDropzone, oi as BaseFilterChip, er as BaseGoogleSignInButton, Q as BaseInput, Ze as BaseLine, Qe as BaseLoginEnum, fr as BaseLoginForm, et as BaseLogo, K as BaseLogoEnum, st as BaseModal, tt as BaseModalEnum, Ht as BaseModalShell, nn as BaseNotFoundPage, yr as BaseNotificationPanel, Hn as BasePageHeader, Ni as BasePillPickerModal, Sr as BaseRemoveButton, ct as BaseRow, Vr as BaseSegmentedControl, Mr as BaseSelect, Cn as BaseSidebar, ti as BaseSpecFields, lt as BaseSpinner, ii as BaseStatBreakdown, Tr as BaseStatusPill, qr as BaseTable, $t as BaseTextInputModal, ft as BaseToast, q as BaseToastEnum, Gn as BaseToolbarButton, mt as ColoredSquares, H as ColorsEnums, _t as EarningsCard, St as EuroAmount, qe as LineEnum, Dt as Pagination, J as PositioningEnum, Mt as TrendArrow, Oa as buildSpecParams, Aa as computePnL, ka as firstInvalidNumericSpec, ba as fmtBytes, _a as fmtCalendarDate, va as fmtCalendarDateTime, ua as fmtDate, fa as fmtDateShort, da as fmtDateTime, pa as fmtDateTimeMs, Ca as fmtDuration, ya as fmtMsAsSeconds, la as fmtNumber, ha as fmtPct, ma as fmtPrice, ga as fmtUsd, xa as formatJson, Gi as getBaseColor, Ki as getBaseColorOf, ke as initTheme, oa as isSafeHref, wa as isValidAbsoluteUrl, Da as isValidBase64, Ta as isValidJson, Ea as isValidXml, Xi as methodBadgeBright, Yi as methodBadgeSolid, Qi as methodBadgeTinted, na as rowKeyMissing, ta as rowValueMissing, ca as sanitizeHtml, $i as statusBadgeSoft, Zi as statusBadgeSolid, ea as statusBadgeTinted, Sa as stringifyValue, zi as useDebouncedRef, Nt as useEscapeKey, Hi as useFieldClasses, an as useMobileSidebar, fn as useNotifications, Ui as usePolling, Vi as useQueryParamSync, ln as useSidebarCollapse, V as useTheme, Y as useThemeClasses, Bi as useToast };
|