mgv-backoffice 1.36.1 → 1.36.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/BaseBadge.vue.d.ts +1 -11
- package/dist/components/BaseDropdown.vue.d.ts +1 -1
- package/dist/ui-lib.css +1 -1
- package/dist/ui-lib.js +934 -942
- package/dist/ui-lib.umd.cjs +1 -1
- package/package.json +14 -13
- package/src/components/BaseBadge.vue +12 -2
- package/src/components/BaseSidebar.vue +1 -1
package/dist/ui-lib.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Fragment as e, Teleport as t,
|
|
2
|
-
import { ArrowDownIcon as
|
|
3
|
-
import { HomeIcon as
|
|
4
|
-
import { useRoute as
|
|
1
|
+
import { Fragment as e, Teleport as t, Text as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createStaticVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, effectScope as m, nextTick as h, normalizeClass as g, normalizeStyle as _, onBeforeUnmount as v, onMounted as y, onScopeDispose as b, onUnmounted as x, openBlock as S, reactive as C, readonly as w, ref as T, renderList as E, renderSlot as D, resolveComponent as O, resolveDynamicComponent as k, toDisplayString as A, unref as j, useSlots as ee, vModelCheckbox as M, vModelDynamic as te, vModelText as N, vShow as ne, watch as P, withCtx as F, withDirectives as I, withKeys as re, withModifiers as L } from "vue";
|
|
2
|
+
import { ArrowDownIcon as ie, ArrowUpIcon as ae, Bars3Icon as oe, BellIcon as se, CheckCircleIcon as ce, ChevronDoubleLeftIcon as le, ChevronDoubleRightIcon as ue, ChevronDownIcon as de, ChevronRightIcon as fe, ClipboardDocumentCheckIcon as pe, ClipboardDocumentIcon as me, DocumentDuplicateIcon as he, ExclamationCircleIcon as ge, ExclamationTriangleIcon as _e, FolderIcon as ve, InformationCircleIcon as ye, MagnifyingGlassIcon as be, MinusIcon as xe, MoonIcon as Se, SunIcon as Ce, XMarkIcon as we } from "@heroicons/vue/24/outline";
|
|
3
|
+
import { HomeIcon as Te } from "@heroicons/vue/24/solid";
|
|
4
|
+
import { useRoute as Ee, useRouter as De } 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 = T(!1), Oe = !1, B = "mgv-theme";
|
|
9
|
+
function ke(e) {
|
|
10
|
+
if (Oe) {
|
|
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 (Oe = !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
|
}
|
|
18
|
-
typeof document < "u" &&
|
|
18
|
+
typeof document < "u" && m(!0).run(() => {
|
|
19
19
|
P(z, (e) => {
|
|
20
20
|
document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(B, e ? "dark" : "light");
|
|
21
21
|
}, { immediate: !0 });
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
|
|
24
|
+
function Ae(e) {
|
|
25
|
+
ke(e?.storageKey ?? B);
|
|
26
26
|
}
|
|
27
27
|
function V(e) {
|
|
28
|
-
|
|
28
|
+
ke(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 je = { class: "min-w-0 flex-1" }, Me = {
|
|
40
40
|
key: 0,
|
|
41
41
|
class: "font-medium"
|
|
42
|
-
},
|
|
42
|
+
}, Ne = /* @__PURE__ */ p({
|
|
43
43
|
__name: "BaseAlert",
|
|
44
44
|
props: {
|
|
45
45
|
title: { default: "" },
|
|
@@ -50,7 +50,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
setup(e) {
|
|
53
|
-
let t = e, { isDark: n } = V(),
|
|
53
|
+
let t = e, { isDark: n } = V(), r = {
|
|
54
54
|
[R.ERROR]: {
|
|
55
55
|
light: "bg-red-50 border-red-200 text-red-700",
|
|
56
56
|
dark: "bg-red-500/10 border-red-500/30 text-red-300"
|
|
@@ -67,14 +67,14 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
67
67
|
light: "bg-sky-50 border-sky-200 text-sky-700",
|
|
68
68
|
dark: "bg-sky-500/10 border-sky-500/30 text-sky-300"
|
|
69
69
|
}
|
|
70
|
-
}, l =
|
|
70
|
+
}, l = i(() => n.value ? r[t.color].dark : r[t.color].light), u = i(() => {
|
|
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 ce;
|
|
73
|
+
case R.WARNING: return _e;
|
|
74
|
+
case R.INFO: return ye;
|
|
75
|
+
default: return ge;
|
|
76
76
|
}
|
|
77
|
-
}), d =
|
|
77
|
+
}), d = i(() => {
|
|
78
78
|
switch (t.color) {
|
|
79
79
|
case R.SUCCESS: return "text-emerald-500";
|
|
80
80
|
case R.WARNING: return "text-amber-500";
|
|
@@ -82,24 +82,24 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
82
82
|
default: return "text-red-500";
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
|
-
return (t, n) => (
|
|
85
|
+
return (t, n) => (S(), s("div", {
|
|
86
86
|
role: "alert",
|
|
87
|
-
class:
|
|
88
|
-
}, [(
|
|
89
|
-
class:
|
|
87
|
+
class: g(["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
|
+
}, [(S(), a(k(u.value), {
|
|
89
|
+
class: g(["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"])),
|
|
91
|
+
}, null, 8, ["class"])), c("div", je, [e.title ? (S(), s("p", Me, A(e.title), 1)) : o("", !0), D(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
|
+
}({}), Pe = "bg-red-100 text-red-700 border-red-200", Fe = /* @__PURE__ */ p({
|
|
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 = ee(),
|
|
102
|
+
let t = ee(), r = i(() => !!t.default), a = () => (t.default?.() ?? []).map((e) => e.type === n && typeof e.children == "string" ? d(e.children.replace(/_/g, " ")) : e), c = e, l = {
|
|
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 Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
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
|
-
},
|
|
111
|
-
return (e, t) =>
|
|
110
|
+
}, u = i(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${c.color && l[c.color] || Pe}`);
|
|
111
|
+
return (e, t) => r.value ? (S(), s("span", {
|
|
112
112
|
key: 0,
|
|
113
|
-
class:
|
|
114
|
-
}, [
|
|
113
|
+
class: g(u.value)
|
|
114
|
+
}, [f(a)], 2)) : o("", !0);
|
|
115
115
|
}
|
|
116
|
-
}),
|
|
116
|
+
}), Ie = {
|
|
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
|
+
}, Le = { class: "inline-flex items-center space-x-1 md:space-x-3" }, Re = {
|
|
120
120
|
class: "inline-flex items-center",
|
|
121
121
|
style: { "margin-left": "0" }
|
|
122
|
-
},
|
|
122
|
+
}, ze = /* @__PURE__ */ p({
|
|
123
123
|
__name: "BaseBreadcrumb",
|
|
124
124
|
props: {
|
|
125
125
|
items: {
|
|
@@ -134,7 +134,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
134
134
|
}
|
|
135
135
|
},
|
|
136
136
|
setup(t) {
|
|
137
|
-
let n = t,
|
|
137
|
+
let n = t, r = i(() => {
|
|
138
138
|
if (n.items && n.items.length > 0) return n.items;
|
|
139
139
|
let e = (n.path ?? (typeof window < "u" ? window.location.pathname : "/")).split("/").filter((e) => e !== ""), t = "";
|
|
140
140
|
return e.map((e) => (t += "/" + e, {
|
|
@@ -143,22 +143,22 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
143
143
|
}));
|
|
144
144
|
});
|
|
145
145
|
return (t, n) => {
|
|
146
|
-
let
|
|
147
|
-
return
|
|
146
|
+
let i = O("router-link");
|
|
147
|
+
return S(), s("nav", Ie, [c("ol", Le, [c("li", Re, [f(i, {
|
|
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(() => [
|
|
151
|
+
default: F(() => [f(j(Te), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= d(" Home ", -1)]),
|
|
152
152
|
_: 1
|
|
153
|
-
})]), (
|
|
153
|
+
})]), (S(!0), s(e, null, E(r.value, (e, t) => (S(), s("li", {
|
|
154
154
|
key: t,
|
|
155
155
|
class: "inline-flex items-center",
|
|
156
156
|
style: { "margin-left": "0" }
|
|
157
|
-
}, [
|
|
157
|
+
}, [f(j(fe), { class: "h-4 w-4 text-gray-500" }), f(i, {
|
|
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(() => [
|
|
161
|
+
default: F(() => [d(A(e.name), 1)]),
|
|
162
162
|
_: 2
|
|
163
163
|
}, 1032, ["to"])]))), 128))])]);
|
|
164
164
|
};
|
|
@@ -167,17 +167,17 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
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
|
+
}({}), Be = [
|
|
171
171
|
"type",
|
|
172
172
|
"disabled",
|
|
173
173
|
"onClick"
|
|
174
|
-
],
|
|
174
|
+
], Ve = {
|
|
175
175
|
key: 0,
|
|
176
176
|
class: "inline-flex items-center"
|
|
177
|
-
},
|
|
177
|
+
}, He = { key: 1 }, Ue = { key: 2 }, We = ["type", "disabled"], Ge = {
|
|
178
178
|
key: 0,
|
|
179
179
|
class: "inline-flex items-center"
|
|
180
|
-
},
|
|
180
|
+
}, Ke = { key: 1 }, qe = { key: 2 }, Je = /* @__PURE__ */ p({
|
|
181
181
|
__name: "BaseButton",
|
|
182
182
|
props: {
|
|
183
183
|
description: {
|
|
@@ -281,7 +281,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
281
281
|
}, r = e[n.color] ?? e[U.BLUE], i = t.value ? r.dark : r.light;
|
|
282
282
|
return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current border bg-transparent ${i}`;
|
|
283
283
|
}
|
|
284
|
-
function
|
|
284
|
+
function i() {
|
|
285
285
|
let e = {
|
|
286
286
|
[U.BLUE]: {
|
|
287
287
|
light: "text-blue-600 hover:bg-blue-50",
|
|
@@ -333,197 +333,191 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
333
333
|
function l() {
|
|
334
334
|
let e = n.isDisable || n.isLoading, t = "inline-flex items-center transition-colors duration-150";
|
|
335
335
|
e || (t += " cursor-pointer");
|
|
336
|
-
let
|
|
336
|
+
let a;
|
|
337
337
|
switch (n.color) {
|
|
338
338
|
case U.BLUE:
|
|
339
|
-
|
|
339
|
+
a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
|
|
340
340
|
break;
|
|
341
341
|
case U.WHITE:
|
|
342
|
-
|
|
342
|
+
a = e ? "text-gray-900 bg-gray-200 border border-gray-200 cursor-not-allowed" : "focus:outline-none text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200";
|
|
343
343
|
break;
|
|
344
344
|
case U.DARK:
|
|
345
|
-
|
|
345
|
+
a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300";
|
|
346
346
|
break;
|
|
347
347
|
case U.GREEN:
|
|
348
|
-
|
|
348
|
+
a = e ? "text-white bg-green-400 cursor-not-allowed" : "focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300";
|
|
349
349
|
break;
|
|
350
350
|
case U.EMERALD:
|
|
351
|
-
|
|
351
|
+
a = e ? "text-white bg-emerald-400 cursor-not-allowed" : "focus:outline-none text-white bg-emerald-600 hover:bg-emerald-700 focus:ring-4 focus:ring-emerald-300";
|
|
352
352
|
break;
|
|
353
353
|
case U.RED:
|
|
354
|
-
|
|
354
|
+
a = e ? "text-white bg-red-400 cursor-not-allowed" : "focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300";
|
|
355
355
|
break;
|
|
356
356
|
case U.YELLOW:
|
|
357
|
-
|
|
357
|
+
a = e ? "text-white bg-yellow-300 cursor-not-allowed" : "focus:outline-none text-white bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300";
|
|
358
358
|
break;
|
|
359
359
|
case U.PURPLE:
|
|
360
|
-
|
|
360
|
+
a = e ? "text-white bg-purple-400 cursor-not-allowed" : "focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300";
|
|
361
361
|
break;
|
|
362
362
|
case U.SKY:
|
|
363
|
-
|
|
363
|
+
a = e ? "text-white bg-sky-400 cursor-not-allowed" : "focus:outline-none text-white bg-sky-600 hover:bg-sky-700 focus:ring-4 focus:ring-sky-300";
|
|
364
364
|
break;
|
|
365
365
|
case U.AMBER:
|
|
366
|
-
|
|
366
|
+
a = e ? "text-white bg-amber-300 cursor-not-allowed" : "focus:outline-none text-white bg-amber-500 hover:bg-amber-600 focus:ring-4 focus:ring-amber-300";
|
|
367
367
|
break;
|
|
368
368
|
case U.GRAY:
|
|
369
|
-
|
|
370
|
-
break;
|
|
371
|
-
default:
|
|
372
|
-
i = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
|
|
369
|
+
a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-600 hover:bg-gray-700 focus:ring-4 focus:ring-gray-300";
|
|
373
370
|
break;
|
|
371
|
+
default: a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
|
|
374
372
|
}
|
|
375
|
-
n.outline && (
|
|
376
|
-
let
|
|
373
|
+
n.outline && (a = r()), n.ghost && (a = i());
|
|
374
|
+
let o = "px-5 py-2.5 mr-2 mb-2 text-sm";
|
|
377
375
|
switch (n.size) {
|
|
378
376
|
case W.EXTRA_SMALL:
|
|
379
|
-
|
|
377
|
+
o = "px-3 py-2 text-xs";
|
|
380
378
|
break;
|
|
381
379
|
case W.SMALL:
|
|
382
|
-
|
|
380
|
+
o = "px-3 py-2 text-sm";
|
|
383
381
|
break;
|
|
384
382
|
case W.BASE:
|
|
385
|
-
|
|
383
|
+
o = "px-5 py-2.5 text-sm";
|
|
386
384
|
break;
|
|
387
385
|
case W.LARGE:
|
|
388
|
-
|
|
389
|
-
break;
|
|
390
|
-
case W.EXTRA_LARGE:
|
|
391
|
-
a = "px-6 py-3.5 text-base";
|
|
386
|
+
o = "px-5 py-3 text-base";
|
|
392
387
|
break;
|
|
388
|
+
case W.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
|
|
393
389
|
}
|
|
394
|
-
let
|
|
395
|
-
return n.isRounded && (
|
|
390
|
+
let s = "rounded-lg";
|
|
391
|
+
return n.isRounded && (s = "rounded-full"), t + " " + o + " " + a + " font-medium " + s;
|
|
396
392
|
}
|
|
397
393
|
return (t, r) => {
|
|
398
|
-
let
|
|
399
|
-
return e.to ? (
|
|
394
|
+
let i = O("router-link");
|
|
395
|
+
return e.to ? (S(), a(i, {
|
|
400
396
|
key: 0,
|
|
401
397
|
to: e.to,
|
|
402
398
|
custom: ""
|
|
403
399
|
}, {
|
|
404
|
-
default: F(({ navigate: i }) => [
|
|
400
|
+
default: F(({ navigate: i }) => [c("button", {
|
|
405
401
|
type: n.type,
|
|
406
|
-
class:
|
|
402
|
+
class: g(l()),
|
|
407
403
|
disabled: e.isDisable || e.isLoading,
|
|
408
404
|
onClick: i
|
|
409
405
|
}, [
|
|
410
|
-
e.isLoading ? (
|
|
406
|
+
e.isLoading ? (S(), s("div", Ve, [...r[0] ||= [c("svg", {
|
|
411
407
|
"aria-hidden": "true",
|
|
412
408
|
role: "status",
|
|
413
409
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
414
410
|
viewBox: "0 0 100 101",
|
|
415
411
|
fill: "none",
|
|
416
412
|
xmlns: "http://www.w3.org/2000/svg"
|
|
417
|
-
}, [
|
|
413
|
+
}, [c("path", {
|
|
418
414
|
d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
|
|
419
415
|
fill: "#E5E7EB"
|
|
420
|
-
}),
|
|
416
|
+
}), c("path", {
|
|
421
417
|
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
418
|
fill: "currentColor"
|
|
423
|
-
})], -1)]])) :
|
|
424
|
-
e.iconLeft ?
|
|
425
|
-
|
|
426
|
-
e.iconLeft ? (
|
|
427
|
-
], 10,
|
|
419
|
+
})], -1)]])) : o("", !0),
|
|
420
|
+
e.iconLeft ? o("", !0) : (S(), s("span", He, A(e.description), 1)),
|
|
421
|
+
D(t.$slots, "default"),
|
|
422
|
+
e.iconLeft ? (S(), s("span", Ue, A(e.description), 1)) : o("", !0)
|
|
423
|
+
], 10, Be)]),
|
|
428
424
|
_: 3
|
|
429
|
-
}, 8, ["to"])) : (
|
|
425
|
+
}, 8, ["to"])) : (S(), s("button", {
|
|
430
426
|
key: 1,
|
|
431
427
|
type: n.type,
|
|
432
|
-
class:
|
|
428
|
+
class: g(l()),
|
|
433
429
|
disabled: e.isDisable || e.isLoading
|
|
434
430
|
}, [
|
|
435
|
-
e.isLoading ? (
|
|
431
|
+
e.isLoading ? (S(), s("div", Ge, [...r[1] ||= [c("svg", {
|
|
436
432
|
"aria-hidden": "true",
|
|
437
433
|
role: "status",
|
|
438
434
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
439
435
|
viewBox: "0 0 100 101",
|
|
440
436
|
fill: "none",
|
|
441
437
|
xmlns: "http://www.w3.org/2000/svg"
|
|
442
|
-
}, [
|
|
438
|
+
}, [c("path", {
|
|
443
439
|
d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
|
|
444
440
|
fill: "#E5E7EB"
|
|
445
|
-
}),
|
|
441
|
+
}), c("path", {
|
|
446
442
|
d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
|
|
447
443
|
fill: "currentColor"
|
|
448
|
-
})], -1)]])) :
|
|
449
|
-
e.iconLeft ?
|
|
450
|
-
|
|
451
|
-
e.iconLeft ? (
|
|
452
|
-
], 10,
|
|
444
|
+
})], -1)]])) : o("", !0),
|
|
445
|
+
e.iconLeft ? o("", !0) : (S(), s("span", Ke, A(e.description), 1)),
|
|
446
|
+
D(t.$slots, "default"),
|
|
447
|
+
e.iconLeft ? (S(), s("span", qe, A(e.description), 1)) : o("", !0)
|
|
448
|
+
], 10, We));
|
|
453
449
|
};
|
|
454
450
|
}
|
|
455
|
-
}),
|
|
451
|
+
}), Ye = /* @__PURE__ */ function(e) {
|
|
456
452
|
return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
|
|
457
|
-
}({}),
|
|
453
|
+
}({}), Xe = {
|
|
458
454
|
key: 0,
|
|
459
455
|
class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
|
|
460
|
-
},
|
|
456
|
+
}, Ze = {
|
|
461
457
|
key: 1,
|
|
462
458
|
class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
|
|
463
|
-
},
|
|
459
|
+
}, Qe = {
|
|
464
460
|
key: 2,
|
|
465
461
|
class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
|
|
466
|
-
},
|
|
462
|
+
}, $e = /* @__PURE__ */ p({
|
|
467
463
|
__name: "BaseLine",
|
|
468
464
|
props: { mode: {
|
|
469
465
|
type: String,
|
|
470
466
|
required: !1,
|
|
471
|
-
default:
|
|
467
|
+
default: Ye.BASE
|
|
472
468
|
} },
|
|
473
469
|
setup(t) {
|
|
474
|
-
return (n, r) => (
|
|
475
|
-
t.mode ===
|
|
476
|
-
t.mode ===
|
|
477
|
-
t.mode ===
|
|
470
|
+
return (n, r) => (S(), s(e, null, [
|
|
471
|
+
t.mode === j(Ye).BASE ? (S(), s("hr", Xe)) : o("", !0),
|
|
472
|
+
t.mode === j(Ye).BASE_SHORTER ? (S(), s("hr", Ze)) : o("", !0),
|
|
473
|
+
t.mode === j(Ye).SQUARE ? (S(), s("hr", Qe)) : o("", !0)
|
|
478
474
|
], 64));
|
|
479
475
|
}
|
|
480
|
-
}),
|
|
476
|
+
}), G = /* @__PURE__ */ function(e) {
|
|
481
477
|
return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
|
|
482
|
-
}({}),
|
|
478
|
+
}({}), et = G, tt = ["height", "width"], nt = /* @__PURE__ */ p({
|
|
483
479
|
__name: "BaseLogo",
|
|
484
480
|
props: { size: {
|
|
485
481
|
type: String,
|
|
486
482
|
required: !1,
|
|
487
|
-
default:
|
|
483
|
+
default: G.MEDIUM
|
|
488
484
|
} },
|
|
489
485
|
setup(e) {
|
|
490
486
|
let t = e;
|
|
491
487
|
function n() {
|
|
492
488
|
let e = "";
|
|
493
489
|
switch (t.size) {
|
|
494
|
-
case
|
|
490
|
+
case G.SMALL:
|
|
495
491
|
e = "50px";
|
|
496
492
|
break;
|
|
497
|
-
case
|
|
493
|
+
case G.MEDIUM:
|
|
498
494
|
e = "100px";
|
|
499
495
|
break;
|
|
500
|
-
case
|
|
501
|
-
e = "150px";
|
|
502
|
-
break;
|
|
496
|
+
case G.LARGE: e = "150px";
|
|
503
497
|
}
|
|
504
498
|
return e;
|
|
505
499
|
}
|
|
506
500
|
return (e, t) => {
|
|
507
|
-
let r =
|
|
508
|
-
return
|
|
501
|
+
let r = O("router-link");
|
|
502
|
+
return S(), a(r, {
|
|
509
503
|
to: "/",
|
|
510
504
|
class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
|
|
511
505
|
}, {
|
|
512
|
-
default: F(() => [(
|
|
506
|
+
default: F(() => [(S(), s("svg", {
|
|
513
507
|
height: n(),
|
|
514
508
|
width: n(),
|
|
515
509
|
viewBox: "33.6 130.6 499.7 242.9",
|
|
516
510
|
xmlns: "http://www.w3.org/2000/svg",
|
|
517
511
|
"xmlns:xlink": "http://www.w3.org/1999/xlink"
|
|
518
512
|
}, [...t[0] ||= [
|
|
519
|
-
|
|
513
|
+
c("linearGradient", { id: "a" }, [c("stop", {
|
|
520
514
|
offset: ".085",
|
|
521
515
|
"stop-color": "#469e43"
|
|
522
|
-
}),
|
|
516
|
+
}), c("stop", {
|
|
523
517
|
offset: "1",
|
|
524
518
|
"stop-color": "#132d13"
|
|
525
519
|
})], -1),
|
|
526
|
-
|
|
520
|
+
c("linearGradient", {
|
|
527
521
|
id: "b",
|
|
528
522
|
gradientUnits: "userSpaceOnUse",
|
|
529
523
|
x1: "64.863",
|
|
@@ -532,7 +526,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
532
526
|
y1: "288.291",
|
|
533
527
|
y2: "369.4"
|
|
534
528
|
}, null, -1),
|
|
535
|
-
|
|
529
|
+
c("linearGradient", {
|
|
536
530
|
id: "c",
|
|
537
531
|
gradientUnits: "userSpaceOnUse",
|
|
538
532
|
x1: "138.367",
|
|
@@ -541,7 +535,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
541
535
|
y1: "308.454",
|
|
542
536
|
y2: "370.601"
|
|
543
537
|
}, null, -1),
|
|
544
|
-
|
|
538
|
+
c("linearGradient", {
|
|
545
539
|
id: "d",
|
|
546
540
|
gradientUnits: "userSpaceOnUse",
|
|
547
541
|
x1: "195.475",
|
|
@@ -550,7 +544,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
550
544
|
y1: "288.291",
|
|
551
545
|
y2: "369.85"
|
|
552
546
|
}, null, -1),
|
|
553
|
-
|
|
547
|
+
c("linearGradient", {
|
|
554
548
|
id: "e",
|
|
555
549
|
gradientUnits: "userSpaceOnUse",
|
|
556
550
|
x1: "249.634",
|
|
@@ -559,7 +553,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
559
553
|
y1: "307.312",
|
|
560
554
|
y2: "369.511"
|
|
561
555
|
}, null, -1),
|
|
562
|
-
|
|
556
|
+
c("linearGradient", {
|
|
563
557
|
id: "f",
|
|
564
558
|
gradientUnits: "userSpaceOnUse",
|
|
565
559
|
x1: "302.884",
|
|
@@ -568,7 +562,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
568
562
|
y1: "288.291",
|
|
569
563
|
y2: "367.857"
|
|
570
564
|
}, null, -1),
|
|
571
|
-
|
|
565
|
+
c("linearGradient", {
|
|
572
566
|
id: "g",
|
|
573
567
|
gradientUnits: "userSpaceOnUse",
|
|
574
568
|
x1: "354.118",
|
|
@@ -577,7 +571,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
577
571
|
y1: "307.312",
|
|
578
572
|
y2: "369.511"
|
|
579
573
|
}, null, -1),
|
|
580
|
-
|
|
574
|
+
c("linearGradient", {
|
|
581
575
|
id: "h",
|
|
582
576
|
gradientUnits: "userSpaceOnUse",
|
|
583
577
|
x1: "428.02",
|
|
@@ -586,7 +580,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
586
580
|
y1: "306.156",
|
|
587
581
|
y2: "367.742"
|
|
588
582
|
}, null, -1),
|
|
589
|
-
|
|
583
|
+
c("linearGradient", {
|
|
590
584
|
id: "i",
|
|
591
585
|
gradientUnits: "userSpaceOnUse",
|
|
592
586
|
x1: "502.066",
|
|
@@ -595,7 +589,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
595
589
|
y1: "288.291",
|
|
596
590
|
y2: "369.4"
|
|
597
591
|
}, null, -1),
|
|
598
|
-
|
|
592
|
+
c("linearGradient", {
|
|
599
593
|
id: "j",
|
|
600
594
|
gradientUnits: "userSpaceOnUse",
|
|
601
595
|
x1: "283.264",
|
|
@@ -604,78 +598,78 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
604
598
|
y1: "131.629",
|
|
605
599
|
y2: "232.559"
|
|
606
600
|
}, null, -1),
|
|
607
|
-
|
|
601
|
+
c("linearGradient", {
|
|
608
602
|
id: "k",
|
|
609
603
|
gradientUnits: "userSpaceOnUse",
|
|
610
604
|
x1: "283.46",
|
|
611
605
|
x2: "283.46",
|
|
612
606
|
y1: "202.275",
|
|
613
607
|
y2: "183.785"
|
|
614
|
-
}, [
|
|
608
|
+
}, [c("stop", {
|
|
615
609
|
offset: "0",
|
|
616
610
|
"stop-color": "#969799",
|
|
617
611
|
"stop-opacity": "0"
|
|
618
|
-
}),
|
|
612
|
+
}), c("stop", {
|
|
619
613
|
offset: "1",
|
|
620
614
|
"stop-color": "#808183"
|
|
621
615
|
})], -1),
|
|
622
|
-
|
|
616
|
+
c("path", {
|
|
623
617
|
d: "m65 307.2c-6.8 0-13.1 2.2-18.2 5.9v-24.8h-13.2v81.1h31.4c17.2 0 31.1-13.9 31.1-31.1s-13.9-31.1-31.1-31.1zm0 49.3h-18.2v-18.2c0-10.1 8.2-18.2 18.2-18.2 10.1 0 18.2 8.2 18.2 18.2.1 10.1-8.1 18.2-18.2 18.2z",
|
|
624
618
|
fill: "url(#b)"
|
|
625
619
|
}, null, -1),
|
|
626
|
-
|
|
620
|
+
c("path", {
|
|
627
621
|
d: "m168.8 343.9h-46.7c1.4 7.1 6.6 12 14.1 12.7 6.4.6 12.9.1 19.9.1v11.9c-15.2 4.9-33.3.5-42.1-10.4-3.8-4.7-17.3-34.7 11.5-47.4 39-11.4 45.3 22.4 43.3 33.1zm-14.2-12.7c-1.7-8.1-8.8-12.9-17.9-12.3-7.6.5-14 5.8-14.5 12.3z",
|
|
628
622
|
fill: "url(#c)"
|
|
629
623
|
}, null, -1),
|
|
630
|
-
|
|
624
|
+
c("path", {
|
|
631
625
|
d: "m195.5 320.2c0 10.5-.2 20 .1 29.6.2 5.8 4.4 8.4 13.2 8.6v10.5c-13.8 3.9-26.2-4.5-26.4-18-.2-18.7-.1-43.9-.1-62.6h14.1l-.3 18.5 12.7-.1v13.4h-13.3z",
|
|
632
626
|
fill: "url(#d)"
|
|
633
627
|
}, null, -1),
|
|
634
|
-
|
|
628
|
+
c("path", {
|
|
635
629
|
d: "m249.6 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
|
|
636
630
|
fill: "url(#e)"
|
|
637
631
|
}, null, -1),
|
|
638
|
-
|
|
632
|
+
c("path", {
|
|
639
633
|
d: "m296.4 288.3h13v79.6h-13z",
|
|
640
634
|
fill: "url(#f)"
|
|
641
635
|
}, null, -1),
|
|
642
|
-
|
|
636
|
+
c("path", {
|
|
643
637
|
d: "m354.1 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
|
|
644
638
|
fill: "url(#g)"
|
|
645
639
|
}, null, -1),
|
|
646
|
-
|
|
640
|
+
c("path", {
|
|
647
641
|
d: "m442.2 367.7c0-12.3.2-23.6 0-34.9-.2-3.4-3.6-13.8-14.1-13.4-10.3-.3-14.4 10-14.3 12.7.1 10.2.5 35.1.5 35.1l-13.6.1s-.3-25.7.2-36.2c.6-14.1 12.7-25 27.5-25 14.7 0 26.2 10.4 26.7 24.9.4 10.4.5 36.3.5 36.3z",
|
|
648
642
|
fill: "url(#h)"
|
|
649
643
|
}, null, -1),
|
|
650
|
-
|
|
644
|
+
c("path", {
|
|
651
645
|
d: "m501.9 307.2c6.8 0 13.1 2.2 18.2 5.9v-24.8h13.2v81.1h-31.4c-17.2 0-31.1-13.9-31.1-31.1s13.9-31.1 31.1-31.1zm0 49.3h18.2v-18.2c0-10.1-8.2-18.2-18.2-18.2-10.1 0-18.2 8.2-18.2 18.2 0 10.1 8.1 18.2 18.2 18.2z",
|
|
652
646
|
fill: "url(#i)"
|
|
653
647
|
}, null, -1),
|
|
654
|
-
|
|
648
|
+
c("path", {
|
|
655
649
|
d: "m309.2 180.6h-24v-24c0-12.6 10.2-24.1 22.8-25 14.8-1 27.1 11.3 26.1 26.1-.8 12.7-12.3 22.9-24.9 22.9zm-50.7-48.9c-14.8-1-27.1 11.3-26.1 26.1.8 12.6 12.4 22.8 25 22.8h23.9v-24c0-12.6-10.3-24.1-22.8-24.9zm50.7 51.9h-24v23.9c0 12.6 10.2 24.1 22.8 25 14.8 1 27.1-11.3 26.1-26.1-.8-12.6-12.3-22.8-24.9-22.8zm-52.4 0c-14 0-25.3 11.8-24.4 26 .8 12.2 10.7 22.1 22.9 22.9 14.2.9 26-10.4 26-24.4v-24.5z",
|
|
656
650
|
fill: "url(#j)"
|
|
657
651
|
}, null, -1),
|
|
658
|
-
|
|
652
|
+
c("path", {
|
|
659
653
|
d: "m281.7 183.8h3.6v18.5h-3.6z",
|
|
660
654
|
fill: "url(#k)"
|
|
661
655
|
}, null, -1)
|
|
662
|
-
]], 8,
|
|
656
|
+
]], 8, tt))]),
|
|
663
657
|
_: 1
|
|
664
658
|
});
|
|
665
659
|
};
|
|
666
660
|
}
|
|
667
|
-
}),
|
|
661
|
+
}), rt = /* @__PURE__ */ function(e) {
|
|
668
662
|
return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
|
|
669
|
-
}({}),
|
|
663
|
+
}({}), it = {
|
|
670
664
|
key: 0,
|
|
671
665
|
class: "p-6 text-center"
|
|
672
|
-
},
|
|
666
|
+
}, at = { class: "flex justify-center" }, ot = {
|
|
673
667
|
key: 1,
|
|
674
668
|
class: "p-6 text-center"
|
|
675
|
-
},
|
|
669
|
+
}, st = {
|
|
676
670
|
key: 0,
|
|
677
671
|
class: "mb-5 text-sm text-gray-500"
|
|
678
|
-
},
|
|
672
|
+
}, ct = { class: "flex justify-center" }, lt = /* @__PURE__ */ p({
|
|
679
673
|
__name: "BaseModal",
|
|
680
674
|
props: {
|
|
681
675
|
title: {
|
|
@@ -694,58 +688,58 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
694
688
|
mode: {
|
|
695
689
|
type: String,
|
|
696
690
|
required: !1,
|
|
697
|
-
default:
|
|
691
|
+
default: rt.SUCCESS
|
|
698
692
|
}
|
|
699
693
|
},
|
|
700
694
|
emits: ["closeModal", "confirmModal"],
|
|
701
695
|
setup(t, { emit: n }) {
|
|
702
696
|
let r = n, i = `modal-title-${Math.random().toString(36).slice(2, 9)}`;
|
|
703
|
-
function
|
|
697
|
+
function a(e) {
|
|
704
698
|
e.key === "Escape" && r("closeModal");
|
|
705
699
|
}
|
|
706
|
-
return
|
|
707
|
-
document.addEventListener("keydown",
|
|
708
|
-
}),
|
|
709
|
-
document.removeEventListener("keydown",
|
|
710
|
-
}), (n, r) => (
|
|
700
|
+
return y(() => {
|
|
701
|
+
document.addEventListener("keydown", a);
|
|
702
|
+
}), x(() => {
|
|
703
|
+
document.removeEventListener("keydown", a);
|
|
704
|
+
}), (n, r) => (S(), s(e, null, [c("div", {
|
|
711
705
|
class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
|
|
712
706
|
onClick: r[0] ||= (e) => n.$emit("closeModal")
|
|
713
|
-
}),
|
|
707
|
+
}), c("div", {
|
|
714
708
|
class: "fixed top-[20vh] left-1/2 -translate-x-1/2 w-96 z-50 rounded-xl shadow-lg bg-white overflow-hidden",
|
|
715
709
|
role: "dialog",
|
|
716
710
|
"aria-modal": "true",
|
|
717
711
|
"aria-labelledby": i
|
|
718
|
-
}, [t.mode ===
|
|
719
|
-
|
|
720
|
-
|
|
712
|
+
}, [t.mode === j(rt).DELETE ? (S(), s("div", it, [
|
|
713
|
+
f(j(ge), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
|
|
714
|
+
c("h3", {
|
|
721
715
|
id: i,
|
|
722
716
|
class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
|
|
723
|
-
}, " Are you sure you want to delete this " +
|
|
724
|
-
|
|
725
|
-
color:
|
|
717
|
+
}, " Are you sure you want to delete this " + A(t.title) + "? ", 1),
|
|
718
|
+
c("div", at, [f(Je, {
|
|
719
|
+
color: j(U).RED,
|
|
726
720
|
onClick: r[1] ||= (e) => n.$emit("confirmModal"),
|
|
727
721
|
description: "Yes, I'm sure"
|
|
728
|
-
}, null, 8, ["color"]),
|
|
729
|
-
color:
|
|
722
|
+
}, null, 8, ["color"]), f(Je, {
|
|
723
|
+
color: j(U).WHITE,
|
|
730
724
|
onClick: r[2] ||= (e) => n.$emit("closeModal"),
|
|
731
725
|
description: "No, cancel"
|
|
732
726
|
}, null, 8, ["color"])])
|
|
733
|
-
])) : (
|
|
734
|
-
|
|
735
|
-
|
|
727
|
+
])) : (S(), s("div", ot, [
|
|
728
|
+
f(j(ce), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
|
|
729
|
+
c("h3", {
|
|
736
730
|
id: i,
|
|
737
731
|
class: "mb-2 text-lg font-medium text-gray-900"
|
|
738
|
-
},
|
|
739
|
-
t.description ? (
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
color:
|
|
732
|
+
}, A(t.title), 1),
|
|
733
|
+
t.description ? (S(), s("p", st, A(t.description), 1)) : o("", !0),
|
|
734
|
+
D(n.$slots, "default"),
|
|
735
|
+
c("div", ct, [f(Je, {
|
|
736
|
+
color: j(U).BLUE,
|
|
743
737
|
onClick: r[3] ||= (e) => n.$emit("closeModal"),
|
|
744
738
|
description: "OK"
|
|
745
739
|
}, null, 8, ["color"])])
|
|
746
740
|
]))])], 64));
|
|
747
741
|
}
|
|
748
|
-
}),
|
|
742
|
+
}), ut = /* @__PURE__ */ p({
|
|
749
743
|
__name: "BaseRow",
|
|
750
744
|
props: { bgColor: {
|
|
751
745
|
type: String,
|
|
@@ -757,21 +751,21 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
757
751
|
function n() {
|
|
758
752
|
return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
|
|
759
753
|
}
|
|
760
|
-
return (e, t) => (
|
|
754
|
+
return (e, t) => (S(), s("div", { class: g(n()) }, [D(e.$slots, "default")], 2));
|
|
761
755
|
}
|
|
762
|
-
}),
|
|
756
|
+
}), dt = /* @__PURE__ */ p({
|
|
763
757
|
__name: "BaseSpinner",
|
|
764
758
|
props: {
|
|
765
759
|
size: { default: "sm" },
|
|
766
760
|
color: { default: "blue" }
|
|
767
761
|
},
|
|
768
762
|
setup(e) {
|
|
769
|
-
let t = e, n =
|
|
763
|
+
let t = e, n = i(() => ({
|
|
770
764
|
sm: "w-4 h-4 border-2",
|
|
771
765
|
md: "w-6 h-6 border-2",
|
|
772
766
|
lg: "w-8 h-8 border-4",
|
|
773
767
|
xl: "w-12 h-12 border-4"
|
|
774
|
-
})[t.size]),
|
|
768
|
+
})[t.size]), r = i(() => ({
|
|
775
769
|
blue: "border-t-blue-500",
|
|
776
770
|
emerald: "border-t-emerald-500",
|
|
777
771
|
sky: "border-t-sky-500",
|
|
@@ -781,17 +775,17 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
781
775
|
red: "border-t-red-500",
|
|
782
776
|
amber: "border-t-amber-500"
|
|
783
777
|
})[t.color]);
|
|
784
|
-
return (e, t) => (
|
|
785
|
-
class:
|
|
778
|
+
return (e, t) => (S(), s("div", {
|
|
779
|
+
class: g(["border-gray-200 rounded-full animate-spin", [n.value, r.value]]),
|
|
786
780
|
role: "status",
|
|
787
781
|
"aria-label": "Loading"
|
|
788
782
|
}, null, 2));
|
|
789
783
|
}
|
|
790
|
-
}),
|
|
784
|
+
}), K = /* @__PURE__ */ function(e) {
|
|
791
785
|
return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
|
|
792
|
-
}({}),
|
|
786
|
+
}({}), q = /* @__PURE__ */ function(e) {
|
|
793
787
|
return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
|
|
794
|
-
}({}),
|
|
788
|
+
}({}), ft = { 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" }, pt = { class: "ml-3 text-sm font-normal" }, mt = /* @__PURE__ */ p({
|
|
795
789
|
__name: "BaseToast",
|
|
796
790
|
props: {
|
|
797
791
|
mode: {
|
|
@@ -810,7 +804,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
810
804
|
positioning: {
|
|
811
805
|
type: String,
|
|
812
806
|
required: !1,
|
|
813
|
-
default:
|
|
807
|
+
default: q.TOP_RIGHT
|
|
814
808
|
},
|
|
815
809
|
duration: {
|
|
816
810
|
type: Number,
|
|
@@ -819,78 +813,74 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
819
813
|
}
|
|
820
814
|
},
|
|
821
815
|
setup(e) {
|
|
822
|
-
let t = e, n =
|
|
816
|
+
let t = e, n = T(!0), r = null;
|
|
823
817
|
function i() {
|
|
824
818
|
n.value = !1, r &&= (clearTimeout(r), null);
|
|
825
819
|
}
|
|
826
|
-
|
|
820
|
+
y(() => {
|
|
827
821
|
r = setTimeout(() => n.value = !1, t.duration);
|
|
828
|
-
}),
|
|
822
|
+
}), x(() => {
|
|
829
823
|
r && clearTimeout(r);
|
|
830
824
|
});
|
|
831
|
-
function
|
|
825
|
+
function a() {
|
|
832
826
|
let e = "";
|
|
833
827
|
switch (t.mode) {
|
|
834
|
-
case
|
|
828
|
+
case K.ERROR:
|
|
835
829
|
e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
|
|
836
830
|
break;
|
|
837
|
-
case
|
|
831
|
+
case K.SUCCESS:
|
|
838
832
|
e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
|
|
839
833
|
break;
|
|
840
|
-
case
|
|
834
|
+
case K.WARNING:
|
|
841
835
|
e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
|
|
842
836
|
break;
|
|
843
|
-
default:
|
|
844
|
-
e = "text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-200";
|
|
845
|
-
break;
|
|
837
|
+
default: e = "text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-200";
|
|
846
838
|
}
|
|
847
839
|
return "inline-flex items-center justify-center flex-shrink-0 w-8 h-8 rounded-lg " + e;
|
|
848
840
|
}
|
|
849
841
|
function l() {
|
|
850
842
|
let e = "top-5 right-5";
|
|
851
843
|
switch (t.positioning) {
|
|
852
|
-
case
|
|
844
|
+
case q.BOTTOM_LEFT:
|
|
853
845
|
e = "bottom-5 left-5";
|
|
854
846
|
break;
|
|
855
|
-
case
|
|
847
|
+
case q.TOP_LEFT:
|
|
856
848
|
e = "top-5 left-5";
|
|
857
849
|
break;
|
|
858
|
-
case
|
|
850
|
+
case q.TOP_RIGHT:
|
|
859
851
|
e = "top-5 right-5";
|
|
860
852
|
break;
|
|
861
|
-
case
|
|
862
|
-
e = "bottom-5 right-5";
|
|
863
|
-
break;
|
|
853
|
+
case q.BOTTOM_RIGHT: e = "bottom-5 right-5";
|
|
864
854
|
}
|
|
865
855
|
return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
|
|
866
856
|
}
|
|
867
|
-
return (t, r) => n.value ? (
|
|
857
|
+
return (t, r) => n.value ? (S(), s("div", {
|
|
868
858
|
key: 0,
|
|
869
859
|
id: "toast-top-right",
|
|
870
|
-
class:
|
|
860
|
+
class: g(l()),
|
|
871
861
|
role: "alert"
|
|
872
|
-
}, [
|
|
873
|
-
e.mode ==
|
|
862
|
+
}, [c("div", ft, [
|
|
863
|
+
e.mode == j(K).ERROR ? (S(), s("div", {
|
|
874
864
|
key: 0,
|
|
875
|
-
class:
|
|
876
|
-
}, [
|
|
865
|
+
class: g(a())
|
|
866
|
+
}, [f(j(ge), { class: "h-6 w-6 text-red-500" }), r[0] ||= c("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == j(K).SUCCESS ? (S(), s("div", {
|
|
877
867
|
key: 1,
|
|
878
|
-
class:
|
|
879
|
-
}, [
|
|
868
|
+
class: g(a())
|
|
869
|
+
}, [f(j(ce), { class: "h-6 w-6 text-green-500" }), r[1] ||= c("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == j(K).WARNING ? (S(), s("div", {
|
|
880
870
|
key: 2,
|
|
881
|
-
class:
|
|
882
|
-
}, [
|
|
883
|
-
|
|
884
|
-
e.hasCloseIcon ? (
|
|
871
|
+
class: g(a())
|
|
872
|
+
}, [f(j(_e), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= c("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : o("", !0),
|
|
873
|
+
c("div", pt, A(e.description), 1),
|
|
874
|
+
e.hasCloseIcon ? (S(), s("button", {
|
|
885
875
|
key: 3,
|
|
886
876
|
type: "button",
|
|
887
877
|
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
878
|
"aria-label": "Close",
|
|
889
879
|
onClick: i
|
|
890
|
-
}, [r[3] ||=
|
|
891
|
-
])], 2)) :
|
|
880
|
+
}, [r[3] ||= c("span", { class: "sr-only" }, "Close", -1), f(j(we), { class: "h-6 w-6 text-gray-500" })])) : o("", !0)
|
|
881
|
+
])], 2)) : o("", !0);
|
|
892
882
|
}
|
|
893
|
-
}),
|
|
883
|
+
}), ht = { class: "w-13" }, gt = /* @__PURE__ */ p({
|
|
894
884
|
__name: "ColoredSquares",
|
|
895
885
|
props: { color: {
|
|
896
886
|
type: String,
|
|
@@ -907,29 +897,29 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
907
897
|
"bg-yellow-300",
|
|
908
898
|
"bg-purple-300",
|
|
909
899
|
"bg-pink-300"
|
|
910
|
-
], r =
|
|
900
|
+
], r = T(n[Math.floor(Math.random() * n.length)]);
|
|
911
901
|
function i() {
|
|
912
|
-
let e = "gray";
|
|
902
|
+
let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
|
|
913
903
|
switch (t.color) {
|
|
914
904
|
case H.GREEN:
|
|
915
|
-
|
|
905
|
+
n = "green";
|
|
916
906
|
break;
|
|
917
907
|
case H.RED:
|
|
918
|
-
|
|
908
|
+
n = "red";
|
|
919
909
|
break;
|
|
920
910
|
case H.BLUE:
|
|
921
|
-
|
|
911
|
+
n = "blue";
|
|
922
912
|
break;
|
|
923
913
|
case H.YELLOW:
|
|
924
|
-
|
|
914
|
+
n = "yellow";
|
|
925
915
|
break;
|
|
926
|
-
case H.NONE: return
|
|
916
|
+
case H.NONE: return e;
|
|
927
917
|
}
|
|
928
|
-
return
|
|
918
|
+
return e + " bg-" + n + "-100 text-" + n + "-800";
|
|
929
919
|
}
|
|
930
|
-
return (e, t) => (
|
|
920
|
+
return (e, t) => (S(), s("div", ht, [c("div", { class: g(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [D(e.$slots, "default"), c("div", { class: g(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
|
|
931
921
|
}
|
|
932
|
-
}),
|
|
922
|
+
}), _t = { class: "flex items-start justify-between" }, vt = { class: "min-w-0" }, yt = /* @__PURE__ */ p({
|
|
933
923
|
__name: "EarningsCard",
|
|
934
924
|
props: {
|
|
935
925
|
title: { default: "TOTAL EARNINGS" },
|
|
@@ -949,7 +939,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
949
939
|
}
|
|
950
940
|
},
|
|
951
941
|
setup(t) {
|
|
952
|
-
let n = t,
|
|
942
|
+
let n = t, r = {
|
|
953
943
|
orange: {
|
|
954
944
|
border: "border-orange-300 dark:border-orange-700",
|
|
955
945
|
badge: "bg-orange-100 text-orange-500 dark:bg-orange-900/40 dark:text-orange-400",
|
|
@@ -974,34 +964,34 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
974
964
|
iconBox: "bg-red-50 dark:bg-red-900/30",
|
|
975
965
|
icon: "text-red-500"
|
|
976
966
|
}
|
|
977
|
-
},
|
|
967
|
+
}, a = i(() => {
|
|
978
968
|
let e = Number(n.amount);
|
|
979
969
|
return Number.isFinite(e) ? e : 0;
|
|
980
|
-
}), l =
|
|
970
|
+
}), l = i(() => n.signed && a.value < 0), u = i(() => l.value ? "red" : n.accent), d = i(() => r[u.value]), f = i(() => n.currency + a.value.toLocaleString("en-US", {
|
|
981
971
|
minimumFractionDigits: n.decimals,
|
|
982
972
|
maximumFractionDigits: n.decimals
|
|
983
973
|
}));
|
|
984
|
-
return (n, r) => (
|
|
974
|
+
return (n, r) => (S(), s("div", { class: g(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (S(), s("div", {
|
|
985
975
|
key: 0,
|
|
986
|
-
class:
|
|
987
|
-
},
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
]),
|
|
992
|
-
class:
|
|
976
|
+
class: g(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
|
|
977
|
+
}, A(t.badge), 3)) : o("", !0), c("div", _t, [c("div", vt, [
|
|
978
|
+
c("p", { class: g(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, A(t.title), 3),
|
|
979
|
+
c("p", { class: g(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, A(f.value), 3),
|
|
980
|
+
c("p", { class: g(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, A(t.subtitle), 3)
|
|
981
|
+
]), c("div", { class: g(["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"]]) }, [(S(), s("svg", {
|
|
982
|
+
class: g([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
|
|
993
983
|
viewBox: "0 0 24 24",
|
|
994
984
|
fill: "none",
|
|
995
985
|
stroke: "currentColor",
|
|
996
986
|
"stroke-width": "2.5",
|
|
997
987
|
"stroke-linecap": "round",
|
|
998
988
|
"stroke-linejoin": "round"
|
|
999
|
-
}, [l.value ? (
|
|
989
|
+
}, [l.value ? (S(), s(e, { key: 0 }, [r[0] ||= c("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= c("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (S(), s(e, { key: 1 }, [r[2] ||= c("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= c("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
|
|
1000
990
|
}
|
|
1001
|
-
}),
|
|
991
|
+
}), bt = {
|
|
1002
992
|
key: 0,
|
|
1003
993
|
class: "font-bold text-green-800 dark:text-green-400"
|
|
1004
|
-
},
|
|
994
|
+
}, xt = { key: 0 }, St = { key: 0 }, Ct = "font-bold", wt = /* @__PURE__ */ p({
|
|
1005
995
|
__name: "EuroAmount",
|
|
1006
996
|
props: {
|
|
1007
997
|
amount: {
|
|
@@ -1020,21 +1010,21 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
1020
1010
|
}
|
|
1021
1011
|
},
|
|
1022
1012
|
setup(t) {
|
|
1023
|
-
let n = t,
|
|
1024
|
-
return (n,
|
|
1013
|
+
let n = t, r = i(() => n.amount !== null && n.amount !== void 0), a = i(() => r.value && n.amount < 0), c = i(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = i(() => a.value || c.value), u = i(() => !a.value && !c.value && n.beforeAmount !== null && n.beforeAmount !== void 0);
|
|
1014
|
+
return (n, i) => (S(), s(e, null, [r.value && u.value ? (S(), s("span", bt, [d(A(t.amount) + " ", 1), t.showCurrency ? (S(), s("span", xt, "€")) : o("", !0)])) : o("", !0), r.value && !u.value ? (S(), s("span", {
|
|
1025
1015
|
key: 1,
|
|
1026
|
-
class:
|
|
1027
|
-
}, [
|
|
1016
|
+
class: g([Ct, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
|
|
1017
|
+
}, [d(A(t.amount) + " ", 1), t.showCurrency ? (S(), s("span", St, "€")) : o("", !0)], 2)) : o("", !0)], 64));
|
|
1028
1018
|
}
|
|
1029
|
-
}),
|
|
1019
|
+
}), Tt = { "aria-label": "Pagination" }, Et = { class: "flex list-none p-0 m-0" }, Dt = [
|
|
1030
1020
|
"aria-current",
|
|
1031
1021
|
"aria-label",
|
|
1032
1022
|
"onClick"
|
|
1033
|
-
],
|
|
1023
|
+
], Ot = {
|
|
1034
1024
|
key: 1,
|
|
1035
1025
|
"aria-hidden": "true",
|
|
1036
1026
|
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
|
-
},
|
|
1027
|
+
}, kt = /* @__PURE__ */ p({
|
|
1038
1028
|
__name: "Pagination",
|
|
1039
1029
|
props: {
|
|
1040
1030
|
totalItems: {
|
|
@@ -1048,44 +1038,44 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
1048
1038
|
},
|
|
1049
1039
|
emits: ["page-changed"],
|
|
1050
1040
|
setup(t, { emit: n }) {
|
|
1051
|
-
let r = t, i =
|
|
1041
|
+
let r = t, i = T(1), a = T(0), o = T([]), l = n;
|
|
1052
1042
|
function u(e) {
|
|
1053
1043
|
if (a.value <= 5) {
|
|
1054
|
-
|
|
1044
|
+
o.value = Array.from({ length: a.value }, (e, t) => t + 1);
|
|
1055
1045
|
return;
|
|
1056
1046
|
}
|
|
1057
1047
|
let t = [], n = Math.max(1, e - 2), r = Math.min(a.value, e + 2);
|
|
1058
1048
|
n > 1 && (t.push(1), n > 2 && t.push(0));
|
|
1059
1049
|
for (let e = n; e <= r; e++) t.push(e);
|
|
1060
|
-
r < a.value && (r < a.value - 1 && t.push(0), t.push(a.value)),
|
|
1050
|
+
r < a.value && (r < a.value - 1 && t.push(0), t.push(a.value)), o.value = t;
|
|
1061
1051
|
}
|
|
1062
1052
|
function d(e) {
|
|
1063
1053
|
e === i.value || e < 1 || e > a.value || (i.value = e, u(e), l("page-changed", e));
|
|
1064
1054
|
}
|
|
1065
1055
|
return P(() => [r.totalItems, r.itemsPerPage], () => {
|
|
1066
1056
|
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) => (
|
|
1057
|
+
}, { immediate: !0 }), (t, n) => (S(), s("nav", Tt, [c("ul", Et, [(S(!0), s(e, null, E(o.value, (e, t) => (S(), s("li", {
|
|
1068
1058
|
key: t,
|
|
1069
1059
|
class: "mr-1"
|
|
1070
|
-
}, [e === 0 ? (
|
|
1060
|
+
}, [e === 0 ? (S(), s("span", Ot, "...")) : (S(), s("button", {
|
|
1071
1061
|
key: 0,
|
|
1072
1062
|
type: "button",
|
|
1073
1063
|
"aria-current": e === i.value ? "page" : void 0,
|
|
1074
1064
|
"aria-label": `Go to page ${e}`,
|
|
1075
1065
|
onClick: (t) => d(e),
|
|
1076
|
-
class:
|
|
1077
|
-
},
|
|
1066
|
+
class: g(["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 }])
|
|
1067
|
+
}, A(e), 11, Dt))]))), 128))])]));
|
|
1078
1068
|
}
|
|
1079
|
-
}),
|
|
1069
|
+
}), At = { key: 0 }, jt = {
|
|
1080
1070
|
key: 0,
|
|
1081
1071
|
class: "flex items-center space-x-2"
|
|
1082
|
-
},
|
|
1072
|
+
}, Mt = {
|
|
1083
1073
|
key: 1,
|
|
1084
1074
|
class: "flex items-center space-x-2"
|
|
1085
|
-
},
|
|
1075
|
+
}, Nt = {
|
|
1086
1076
|
key: 2,
|
|
1087
1077
|
class: "flex items-center space-x-2"
|
|
1088
|
-
},
|
|
1078
|
+
}, Pt = /* @__PURE__ */ p({
|
|
1089
1079
|
__name: "TrendArrow",
|
|
1090
1080
|
props: {
|
|
1091
1081
|
number: {
|
|
@@ -1098,58 +1088,58 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
|
|
|
1098
1088
|
}
|
|
1099
1089
|
},
|
|
1100
1090
|
setup(e) {
|
|
1101
|
-
let t = e, n =
|
|
1102
|
-
return (
|
|
1103
|
-
default: F(() => [
|
|
1091
|
+
let t = e, n = i(() => t.number !== null && t.number !== void 0 && t.number < 0), r = i(() => t.number === 0);
|
|
1092
|
+
return (i, a) => e.number !== null && e.number !== void 0 ? (S(), s("div", At, [n.value ? (S(), s("span", jt, [f(Fe, { color: j(H).RED }, {
|
|
1093
|
+
default: F(() => [d(A(e.number) + A(t.icon), 1)]),
|
|
1104
1094
|
_: 1
|
|
1105
|
-
}, 8, ["color"]),
|
|
1106
|
-
default: F(() => [
|
|
1095
|
+
}, 8, ["color"]), f(j(ie), { class: "h-5 w-5 text-red-500" })])) : r.value ? (S(), s("span", Mt, [f(Fe, { color: j(H).GRAY }, {
|
|
1096
|
+
default: F(() => [d(A(e.number) + A(t.icon), 1)]),
|
|
1107
1097
|
_: 1
|
|
1108
|
-
}, 8, ["color"]),
|
|
1109
|
-
default: F(() => [
|
|
1098
|
+
}, 8, ["color"]), f(j(xe), { class: "h-5 w-5 text-gray-400" })])) : (S(), s("span", Nt, [f(Fe, { color: j(H).GREEN }, {
|
|
1099
|
+
default: F(() => [d(A(e.number) + A(t.icon), 1)]),
|
|
1110
1100
|
_: 1
|
|
1111
|
-
}, 8, ["color"]),
|
|
1101
|
+
}, 8, ["color"]), f(j(ae), { class: "h-5 w-5 text-green-500" })]))])) : o("", !0);
|
|
1112
1102
|
}
|
|
1113
1103
|
});
|
|
1114
1104
|
//#endregion
|
|
1115
1105
|
//#region src/composables/useThemeClasses.ts
|
|
1116
|
-
function
|
|
1106
|
+
function J() {
|
|
1117
1107
|
let { isDark: e } = V();
|
|
1118
|
-
return
|
|
1119
|
-
card:
|
|
1120
|
-
cardAlt:
|
|
1121
|
-
pageBg:
|
|
1122
|
-
border:
|
|
1123
|
-
divider:
|
|
1124
|
-
primaryText:
|
|
1125
|
-
primaryTextSoft:
|
|
1126
|
-
bodyText:
|
|
1127
|
-
label:
|
|
1128
|
-
mutedText:
|
|
1129
|
-
subtleText:
|
|
1130
|
-
dimText:
|
|
1131
|
-
dimTextAlt:
|
|
1132
|
-
illustration:
|
|
1133
|
-
input:
|
|
1134
|
-
inputWithPlaceholder:
|
|
1135
|
-
ghostButton:
|
|
1136
|
-
emeraldText:
|
|
1137
|
-
amberText:
|
|
1138
|
-
amberTextStrong:
|
|
1139
|
-
redText:
|
|
1108
|
+
return C({
|
|
1109
|
+
card: i(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
|
|
1110
|
+
cardAlt: i(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
|
|
1111
|
+
pageBg: i(() => e.value ? "bg-gray-900" : "bg-gray-50"),
|
|
1112
|
+
border: i(() => e.value ? "border-gray-700" : "border-gray-200"),
|
|
1113
|
+
divider: i(() => e.value ? "border-gray-800" : "border-gray-100"),
|
|
1114
|
+
primaryText: i(() => e.value ? "text-white" : "text-gray-900"),
|
|
1115
|
+
primaryTextSoft: i(() => e.value ? "text-gray-100" : "text-gray-800"),
|
|
1116
|
+
bodyText: i(() => e.value ? "text-gray-200" : "text-gray-700"),
|
|
1117
|
+
label: i(() => e.value ? "text-gray-300" : "text-gray-700"),
|
|
1118
|
+
mutedText: i(() => e.value ? "text-gray-400" : "text-gray-600"),
|
|
1119
|
+
subtleText: i(() => e.value ? "text-gray-500" : "text-gray-600"),
|
|
1120
|
+
dimText: i(() => e.value ? "text-gray-500" : "text-gray-400"),
|
|
1121
|
+
dimTextAlt: i(() => e.value ? "text-gray-400" : "text-gray-500"),
|
|
1122
|
+
illustration: i(() => e.value ? "text-gray-600" : "text-gray-300"),
|
|
1123
|
+
input: i(() => e.value ? "bg-gray-700 border-gray-600 text-white" : "bg-gray-50 border-gray-300 text-gray-900"),
|
|
1124
|
+
inputWithPlaceholder: i(() => e.value ? "bg-gray-700 border-gray-600 text-white placeholder-gray-400" : "bg-gray-50 border-gray-300 text-gray-900 placeholder-gray-500"),
|
|
1125
|
+
ghostButton: i(() => e.value ? "bg-gray-800 text-gray-200 border-gray-600 hover:bg-gray-700" : "bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),
|
|
1126
|
+
emeraldText: i(() => e.value ? "text-emerald-400" : "text-emerald-600"),
|
|
1127
|
+
amberText: i(() => e.value ? "text-amber-400" : "text-amber-600"),
|
|
1128
|
+
amberTextStrong: i(() => e.value ? "text-amber-300" : "text-amber-700"),
|
|
1129
|
+
redText: i(() => e.value ? "text-red-400" : "text-red-500")
|
|
1140
1130
|
});
|
|
1141
1131
|
}
|
|
1142
1132
|
//#endregion
|
|
1143
1133
|
//#region src/composables/useEscapeKey.ts
|
|
1144
|
-
function
|
|
1134
|
+
function Ft(e) {
|
|
1145
1135
|
function t(t) {
|
|
1146
1136
|
t.key === "Escape" && e();
|
|
1147
1137
|
}
|
|
1148
|
-
|
|
1138
|
+
y(() => document.addEventListener("keydown", t)), v(() => document.removeEventListener("keydown", t));
|
|
1149
1139
|
}
|
|
1150
1140
|
//#endregion
|
|
1151
1141
|
//#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
|
|
1152
|
-
var
|
|
1142
|
+
var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-w-0" }, Rt = { class: "p-6 overflow-y-auto flex-1" }, zt = { class: "p-6" }, Bt = { class: "flex items-start gap-4" }, Vt = { class: "flex-1" }, Ht = { class: "mt-4" }, Ut = { class: "mt-6 flex gap-3 justify-end" }, Wt = /* @__PURE__ */ p({
|
|
1153
1143
|
__name: "BaseModalShell",
|
|
1154
1144
|
props: {
|
|
1155
1145
|
title: {},
|
|
@@ -1169,55 +1159,55 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
|
|
|
1169
1159
|
},
|
|
1170
1160
|
emits: ["cancel", "backdrop"],
|
|
1171
1161
|
setup(e, { emit: n }) {
|
|
1172
|
-
let
|
|
1173
|
-
function
|
|
1174
|
-
l("backdrop"),
|
|
1162
|
+
let r = e, l = n, { isDark: u } = V(), d = J(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = i(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = i(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
|
|
1163
|
+
function h() {
|
|
1164
|
+
l("backdrop"), r.manualClose || l("cancel");
|
|
1175
1165
|
}
|
|
1176
|
-
return
|
|
1177
|
-
|
|
1178
|
-
}), (n, r) => (
|
|
1166
|
+
return Ft(() => {
|
|
1167
|
+
r.manualClose || l("cancel");
|
|
1168
|
+
}), (n, r) => (S(), a(t, { to: "body" }, [c("div", {
|
|
1179
1169
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
1180
1170
|
role: "dialog",
|
|
1181
1171
|
"aria-modal": "true",
|
|
1182
1172
|
"aria-labelledby": f,
|
|
1183
|
-
onClick:
|
|
1184
|
-
}, [e.scrollable ? (
|
|
1173
|
+
onClick: h
|
|
1174
|
+
}, [e.scrollable ? (S(), s("div", {
|
|
1185
1175
|
key: 0,
|
|
1186
|
-
class:
|
|
1176
|
+
class: g(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
|
|
1187
1177
|
onClick: r[0] ||= L(() => {}, ["stop"])
|
|
1188
1178
|
}, [
|
|
1189
|
-
|
|
1190
|
-
class:
|
|
1179
|
+
c("div", { class: g(["flex items-start justify-between gap-4 p-6 border-b shrink-0", j(d).border]) }, [c("div", It, [D(n.$slots, "icon", {}, () => [c("div", { class: g(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(S(), a(k(e.icon), {
|
|
1180
|
+
class: g(["h-6 w-6", e.iconClass]),
|
|
1191
1181
|
"aria-hidden": "true"
|
|
1192
|
-
}, null, 8, ["class"]))], 2)]),
|
|
1182
|
+
}, null, 8, ["class"]))], 2)]), c("div", Lt, [c("h3", {
|
|
1193
1183
|
id: f,
|
|
1194
|
-
class:
|
|
1195
|
-
},
|
|
1184
|
+
class: g(["text-lg font-medium", j(d).primaryText])
|
|
1185
|
+
}, A(e.title), 3), e.subtitle ? (S(), s("p", {
|
|
1196
1186
|
key: 0,
|
|
1197
|
-
class:
|
|
1198
|
-
},
|
|
1199
|
-
|
|
1200
|
-
n.$slots.footer ? (
|
|
1187
|
+
class: g(["text-sm mt-1 break-all", j(d).mutedText])
|
|
1188
|
+
}, A(e.subtitle), 3)) : o("", !0)])]), D(n.$slots, "header-actions")], 2),
|
|
1189
|
+
c("div", Rt, [D(n.$slots, "default")]),
|
|
1190
|
+
n.$slots.footer ? (S(), s("div", {
|
|
1201
1191
|
key: 0,
|
|
1202
|
-
class:
|
|
1203
|
-
}, [
|
|
1204
|
-
], 2)) : (
|
|
1192
|
+
class: g(["flex gap-3 justify-end p-6 border-t shrink-0", j(d).border])
|
|
1193
|
+
}, [D(n.$slots, "footer")], 2)) : o("", !0)
|
|
1194
|
+
], 2)) : (S(), s("div", {
|
|
1205
1195
|
key: 1,
|
|
1206
|
-
class:
|
|
1196
|
+
class: g(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
|
|
1207
1197
|
onClick: r[1] ||= L(() => {}, ["stop"])
|
|
1208
|
-
}, [
|
|
1209
|
-
|
|
1210
|
-
class:
|
|
1198
|
+
}, [c("div", zt, [
|
|
1199
|
+
c("div", Bt, [D(n.$slots, "icon", {}, () => [c("div", { class: g(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(S(), a(k(e.icon), {
|
|
1200
|
+
class: g(["h-6 w-6", e.iconClass]),
|
|
1211
1201
|
"aria-hidden": "true"
|
|
1212
|
-
}, null, 8, ["class"]))], 2)]),
|
|
1202
|
+
}, null, 8, ["class"]))], 2)]), c("div", Vt, [c("h3", {
|
|
1213
1203
|
id: f,
|
|
1214
|
-
class:
|
|
1215
|
-
},
|
|
1216
|
-
|
|
1217
|
-
|
|
1204
|
+
class: g(["text-lg font-medium", j(d).primaryText])
|
|
1205
|
+
}, A(e.title), 3)])]),
|
|
1206
|
+
c("div", Ht, [D(n.$slots, "default")]),
|
|
1207
|
+
c("div", Ut, [D(n.$slots, "footer")])
|
|
1218
1208
|
])], 2))])]));
|
|
1219
1209
|
}
|
|
1220
|
-
}),
|
|
1210
|
+
}), Gt = ["aria-expanded"], Kt = { class: "flex items-center gap-3" }, qt = /* @__PURE__ */ p({
|
|
1221
1211
|
__name: "BaseCollapsibleSection",
|
|
1222
1212
|
props: {
|
|
1223
1213
|
title: {},
|
|
@@ -1227,35 +1217,35 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
|
|
|
1227
1217
|
},
|
|
1228
1218
|
emits: ["toggle"],
|
|
1229
1219
|
setup(e, { emit: t }) {
|
|
1230
|
-
let n = e,
|
|
1231
|
-
return (t, n) => (
|
|
1220
|
+
let n = e, r = t, { isDark: a } = V(), l = J(), u = i(() => a.value ? "text-gray-100" : "text-gray-700"), d = i(() => a.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = i(() => a.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = i(() => n.bodyClass === void 0 ? a.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
|
|
1221
|
+
return (t, n) => (S(), s("section", { class: g(["rounded-xl border transition-colors", j(l).cardAlt]) }, [c("button", {
|
|
1232
1222
|
type: "button",
|
|
1233
|
-
class:
|
|
1223
|
+
class: g(["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
1224
|
"aria-expanded": !e.collapsed,
|
|
1235
|
-
onClick: n[0] ||= (e) =>
|
|
1236
|
-
}, [
|
|
1225
|
+
onClick: n[0] ||= (e) => r("toggle")
|
|
1226
|
+
}, [c("div", Kt, [c("h2", { class: g(["text-base font-semibold", u.value]) }, A(e.title), 3), e.badge ? (S(), s("span", {
|
|
1237
1227
|
key: 0,
|
|
1238
|
-
class:
|
|
1239
|
-
},
|
|
1240
|
-
class:
|
|
1228
|
+
class: g(["text-xs px-2 py-0.5 rounded-full", f.value])
|
|
1229
|
+
}, A(e.badge), 3)) : o("", !0)]), (S(), s("svg", {
|
|
1230
|
+
class: g(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", j(l).dimTextAlt]]),
|
|
1241
1231
|
fill: "none",
|
|
1242
1232
|
viewBox: "0 0 24 24",
|
|
1243
1233
|
stroke: "currentColor",
|
|
1244
1234
|
"stroke-width": "2",
|
|
1245
1235
|
"aria-hidden": "true"
|
|
1246
|
-
}, [...n[1] ||= [
|
|
1236
|
+
}, [...n[1] ||= [c("path", {
|
|
1247
1237
|
"stroke-linecap": "round",
|
|
1248
1238
|
"stroke-linejoin": "round",
|
|
1249
1239
|
d: "M19 9l-7 7-7-7"
|
|
1250
|
-
}, null, -1)]], 2))], 10,
|
|
1240
|
+
}, null, -1)]], 2))], 10, Gt), I(c("div", { class: g(["p-6 border-t rounded-b-xl", [j(l).border, p.value]]) }, [D(t.$slots, "default")], 2), [[ne, !e.collapsed]])], 2));
|
|
1251
1241
|
}
|
|
1252
|
-
}),
|
|
1242
|
+
}), Jt = ["disabled"], Yt = ["disabled"], Xt = {
|
|
1253
1243
|
key: 0,
|
|
1254
1244
|
class: "w-4 h-4 animate-spin",
|
|
1255
1245
|
fill: "none",
|
|
1256
1246
|
viewBox: "0 0 24 24",
|
|
1257
1247
|
"aria-hidden": "true"
|
|
1258
|
-
},
|
|
1248
|
+
}, Zt = /* @__PURE__ */ p({
|
|
1259
1249
|
__name: "BaseConfirmModal",
|
|
1260
1250
|
props: {
|
|
1261
1251
|
title: {},
|
|
@@ -1271,44 +1261,44 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
|
|
|
1271
1261
|
},
|
|
1272
1262
|
emits: ["confirm", "cancel"],
|
|
1273
1263
|
setup(e, { emit: t }) {
|
|
1274
|
-
let n = e, r = t, { isDark:
|
|
1275
|
-
function
|
|
1264
|
+
let n = e, r = t, { isDark: i } = V(), l = J();
|
|
1265
|
+
function u() {
|
|
1276
1266
|
n.submitting || r("confirm");
|
|
1277
1267
|
}
|
|
1278
1268
|
function f() {
|
|
1279
1269
|
n.submitting || r("cancel");
|
|
1280
1270
|
}
|
|
1281
|
-
return (t, n) => (
|
|
1271
|
+
return (t, n) => (S(), a(Wt, {
|
|
1282
1272
|
title: e.title,
|
|
1283
|
-
icon:
|
|
1284
|
-
"icon-bg-class": e.variant === "danger" ?
|
|
1273
|
+
icon: j(_e),
|
|
1274
|
+
"icon-bg-class": e.variant === "danger" ? j(i) ? "bg-red-900/30" : "bg-red-50" : j(i) ? "bg-amber-900/30" : "bg-amber-50",
|
|
1285
1275
|
"icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
|
|
1286
1276
|
"manual-close": e.submitting,
|
|
1287
1277
|
onCancel: f
|
|
1288
1278
|
}, {
|
|
1289
|
-
footer: F(() => [
|
|
1279
|
+
footer: F(() => [c("button", {
|
|
1290
1280
|
type: "button",
|
|
1291
1281
|
disabled: e.submitting,
|
|
1292
|
-
class:
|
|
1282
|
+
class: g(["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", [j(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
|
|
1293
1283
|
onClick: f
|
|
1294
|
-
},
|
|
1284
|
+
}, A(e.cancelText), 11, Jt), c("button", {
|
|
1295
1285
|
type: "button",
|
|
1296
1286
|
disabled: e.submitting,
|
|
1297
|
-
class:
|
|
1298
|
-
onClick:
|
|
1299
|
-
}, [e.submitting ? (
|
|
1287
|
+
class: g(["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"]]),
|
|
1288
|
+
onClick: u
|
|
1289
|
+
}, [e.submitting ? (S(), s("svg", Xt, [...n[0] ||= [c("circle", {
|
|
1300
1290
|
class: "opacity-25",
|
|
1301
1291
|
cx: "12",
|
|
1302
1292
|
cy: "12",
|
|
1303
1293
|
r: "10",
|
|
1304
1294
|
stroke: "currentColor",
|
|
1305
1295
|
"stroke-width": "4"
|
|
1306
|
-
}, null, -1),
|
|
1296
|
+
}, null, -1), c("path", {
|
|
1307
1297
|
class: "opacity-75",
|
|
1308
1298
|
fill: "currentColor",
|
|
1309
1299
|
d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
|
|
1310
|
-
}, null, -1)]])) :
|
|
1311
|
-
default: F(() => [
|
|
1300
|
+
}, null, -1)]])) : o("", !0), d(" " + A(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Yt)]),
|
|
1301
|
+
default: F(() => [D(t.$slots, "message", {}, () => [c("p", { class: g(["text-sm", j(i) ? "text-gray-300" : "text-gray-600"]) }, A(e.message), 3)]), D(t.$slots, "default")]),
|
|
1312
1302
|
_: 3
|
|
1313
1303
|
}, 8, [
|
|
1314
1304
|
"title",
|
|
@@ -1318,7 +1308,7 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
|
|
|
1318
1308
|
"manual-close"
|
|
1319
1309
|
]));
|
|
1320
1310
|
}
|
|
1321
|
-
}),
|
|
1311
|
+
}), Qt = { class: "mt-4" }, $t = ["placeholder"], en = ["disabled"], tn = /* @__PURE__ */ p({
|
|
1322
1312
|
__name: "BaseTextInputModal",
|
|
1323
1313
|
props: {
|
|
1324
1314
|
title: {},
|
|
@@ -1336,52 +1326,52 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
|
|
|
1336
1326
|
},
|
|
1337
1327
|
emits: ["confirm", "cancel"],
|
|
1338
1328
|
setup(e, { emit: t }) {
|
|
1339
|
-
let n = e, r = t, { isDark:
|
|
1340
|
-
|
|
1341
|
-
await
|
|
1329
|
+
let n = e, r = t, { isDark: i } = V(), o = J(), s = T(n.initialValue), u = T(null);
|
|
1330
|
+
y(async () => {
|
|
1331
|
+
await h(), u.value?.focus();
|
|
1342
1332
|
});
|
|
1343
1333
|
function d() {
|
|
1344
|
-
|
|
1334
|
+
s.value.trim() && !n.submitting && r("confirm", s.value.trim());
|
|
1345
1335
|
}
|
|
1346
1336
|
function f() {
|
|
1347
1337
|
r("cancel");
|
|
1348
1338
|
}
|
|
1349
1339
|
function p() {
|
|
1350
|
-
|
|
1340
|
+
s.value.trim() === (n.initialValue ?? "").trim() && f();
|
|
1351
1341
|
}
|
|
1352
|
-
return
|
|
1342
|
+
return Ft(f), (t, n) => (S(), a(Wt, {
|
|
1353
1343
|
title: e.title,
|
|
1354
|
-
icon:
|
|
1344
|
+
icon: j(he),
|
|
1355
1345
|
"manual-close": "",
|
|
1356
1346
|
onBackdrop: p
|
|
1357
|
-
},
|
|
1358
|
-
footer: F(() => [
|
|
1347
|
+
}, l({
|
|
1348
|
+
footer: F(() => [c("button", {
|
|
1359
1349
|
type: "button",
|
|
1360
|
-
class:
|
|
1350
|
+
class: g(["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", j(o).ghostButton]),
|
|
1361
1351
|
onClick: f
|
|
1362
|
-
},
|
|
1352
|
+
}, A(e.cancelText), 3), c("button", {
|
|
1363
1353
|
type: "button",
|
|
1364
|
-
disabled: !
|
|
1365
|
-
class:
|
|
1354
|
+
disabled: !s.value.trim() || e.submitting,
|
|
1355
|
+
class: g(["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", [!s.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
|
|
1366
1356
|
onClick: d
|
|
1367
|
-
},
|
|
1368
|
-
default: F(() => [
|
|
1357
|
+
}, A(e.submitting ? e.submittingText : e.confirmText), 11, en)]),
|
|
1358
|
+
default: F(() => [c("p", { class: g(["text-sm", j(i) ? "text-gray-300" : "text-gray-600"]) }, A(e.message), 3), c("div", Qt, [c("label", { class: g(["block text-sm font-medium mb-1", j(o).label]) }, A(e.inputLabel), 3), I(c("input", {
|
|
1369
1359
|
ref_key: "nameInput",
|
|
1370
1360
|
ref: u,
|
|
1371
|
-
"onUpdate:modelValue": n[0] ||= (e) =>
|
|
1361
|
+
"onUpdate:modelValue": n[0] ||= (e) => s.value = e,
|
|
1372
1362
|
type: "text",
|
|
1373
1363
|
placeholder: e.placeholder,
|
|
1374
|
-
class:
|
|
1375
|
-
onKeyup:
|
|
1376
|
-
}, null, 42,
|
|
1364
|
+
class: g(["w-full px-3 py-2 rounded-md border text-sm transition-colors", j(i) ? "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"]),
|
|
1365
|
+
onKeyup: re(d, ["enter"])
|
|
1366
|
+
}, null, 42, $t), [[N, s.value]])])]),
|
|
1377
1367
|
_: 2
|
|
1378
1368
|
}, [t.$slots.icon ? {
|
|
1379
1369
|
name: "icon",
|
|
1380
|
-
fn: F(() => [
|
|
1370
|
+
fn: F(() => [D(t.$slots, "icon")]),
|
|
1381
1371
|
key: "0"
|
|
1382
1372
|
} : void 0]), 1032, ["title", "icon"]));
|
|
1383
1373
|
}
|
|
1384
|
-
}),
|
|
1374
|
+
}), nn = { class: "flex items-center justify-center min-h-[60vh]" }, rn = { class: "text-center px-6" }, an = /* @__PURE__ */ p({
|
|
1385
1375
|
__name: "BaseNotFoundPage",
|
|
1386
1376
|
props: {
|
|
1387
1377
|
code: { default: "404" },
|
|
@@ -1390,33 +1380,33 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
|
|
|
1390
1380
|
homeLabel: { default: "Go home" }
|
|
1391
1381
|
},
|
|
1392
1382
|
setup(e) {
|
|
1393
|
-
let t = e, n =
|
|
1383
|
+
let t = e, n = De(), { isDark: r } = V(), i = J();
|
|
1394
1384
|
function a() {
|
|
1395
1385
|
n.push({ name: t.homeRouteName });
|
|
1396
1386
|
}
|
|
1397
|
-
return (t, n) => (
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1387
|
+
return (t, n) => (S(), s("div", nn, [c("div", rn, [
|
|
1388
|
+
f(j(_e), { class: g(["w-16 h-16 mx-auto mb-4", j(i).illustration]) }, null, 8, ["class"]),
|
|
1389
|
+
c("h1", { class: g(["text-4xl font-bold mb-2", j(r) ? "text-gray-200" : "text-gray-800"]) }, A(e.code), 3),
|
|
1390
|
+
c("p", { class: g(["text-lg mb-6", j(i).dimTextAlt]) }, A(e.message), 3),
|
|
1391
|
+
c("button", {
|
|
1402
1392
|
onClick: a,
|
|
1403
|
-
class:
|
|
1404
|
-
},
|
|
1393
|
+
class: g(["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", j(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
|
|
1394
|
+
}, A(e.homeLabel), 3)
|
|
1405
1395
|
])]));
|
|
1406
1396
|
}
|
|
1407
|
-
}),
|
|
1408
|
-
function
|
|
1397
|
+
}), on = T(!1);
|
|
1398
|
+
function sn() {
|
|
1409
1399
|
function e() {
|
|
1410
|
-
|
|
1400
|
+
on.value = !0;
|
|
1411
1401
|
}
|
|
1412
1402
|
function t() {
|
|
1413
|
-
|
|
1403
|
+
on.value = !1;
|
|
1414
1404
|
}
|
|
1415
1405
|
function n() {
|
|
1416
|
-
|
|
1406
|
+
on.value = !on.value;
|
|
1417
1407
|
}
|
|
1418
1408
|
return {
|
|
1419
|
-
mobileOpen:
|
|
1409
|
+
mobileOpen: on,
|
|
1420
1410
|
open: e,
|
|
1421
1411
|
close: t,
|
|
1422
1412
|
toggle: n
|
|
@@ -1424,30 +1414,30 @@ function an() {
|
|
|
1424
1414
|
}
|
|
1425
1415
|
//#endregion
|
|
1426
1416
|
//#region src/composables/useSidebarCollapse.ts
|
|
1427
|
-
var
|
|
1428
|
-
function
|
|
1429
|
-
if (!
|
|
1430
|
-
let e = window.localStorage?.getItem(
|
|
1431
|
-
e && (
|
|
1432
|
-
P(
|
|
1433
|
-
window.localStorage?.setItem(
|
|
1417
|
+
var Y = T(!1), cn = !1, ln = "mgv-sidebar-collapsed";
|
|
1418
|
+
function un(e) {
|
|
1419
|
+
if (!cn && (cn = !0, ln = e, typeof window < "u")) {
|
|
1420
|
+
let e = window.localStorage?.getItem(ln);
|
|
1421
|
+
e && (Y.value = e === "true"), m(!0).run(() => {
|
|
1422
|
+
P(Y, (e) => {
|
|
1423
|
+
window.localStorage?.setItem(ln, String(e));
|
|
1434
1424
|
});
|
|
1435
1425
|
});
|
|
1436
1426
|
}
|
|
1437
1427
|
}
|
|
1438
|
-
function
|
|
1439
|
-
|
|
1428
|
+
function dn(e) {
|
|
1429
|
+
un(e?.storageKey ?? ln);
|
|
1440
1430
|
function t() {
|
|
1441
|
-
|
|
1431
|
+
Y.value = !0;
|
|
1442
1432
|
}
|
|
1443
1433
|
function n() {
|
|
1444
|
-
|
|
1434
|
+
Y.value = !1;
|
|
1445
1435
|
}
|
|
1446
1436
|
function r() {
|
|
1447
|
-
|
|
1437
|
+
Y.value = !Y.value;
|
|
1448
1438
|
}
|
|
1449
1439
|
return {
|
|
1450
|
-
collapsed:
|
|
1440
|
+
collapsed: Y,
|
|
1451
1441
|
collapse: t,
|
|
1452
1442
|
expand: n,
|
|
1453
1443
|
toggle: r
|
|
@@ -1455,45 +1445,45 @@ function ln(e) {
|
|
|
1455
1445
|
}
|
|
1456
1446
|
//#endregion
|
|
1457
1447
|
//#region src/composables/useNotifications.ts
|
|
1458
|
-
var
|
|
1459
|
-
function
|
|
1448
|
+
var X = T([]), Z = T(!1), fn = i(() => X.value.filter((e) => !e.read).length);
|
|
1449
|
+
function pn() {
|
|
1460
1450
|
function e() {
|
|
1461
|
-
|
|
1451
|
+
Z.value = !0;
|
|
1462
1452
|
}
|
|
1463
1453
|
function t() {
|
|
1464
|
-
|
|
1454
|
+
Z.value = !1;
|
|
1465
1455
|
}
|
|
1466
1456
|
function n() {
|
|
1467
|
-
|
|
1457
|
+
Z.value = !Z.value;
|
|
1468
1458
|
}
|
|
1469
1459
|
function r(e) {
|
|
1470
|
-
|
|
1460
|
+
X.value = e;
|
|
1471
1461
|
}
|
|
1472
1462
|
function i(e) {
|
|
1473
|
-
|
|
1463
|
+
X.value = [e, ...X.value];
|
|
1474
1464
|
}
|
|
1475
1465
|
function a(e) {
|
|
1476
|
-
|
|
1466
|
+
X.value = X.value.filter((t) => t.id !== e);
|
|
1477
1467
|
}
|
|
1478
1468
|
function o(e) {
|
|
1479
|
-
|
|
1469
|
+
X.value = X.value.map((t) => t.id === e ? {
|
|
1480
1470
|
...t,
|
|
1481
1471
|
read: !0
|
|
1482
1472
|
} : t);
|
|
1483
1473
|
}
|
|
1484
1474
|
function s() {
|
|
1485
|
-
|
|
1475
|
+
X.value = X.value.map((e) => e.read ? e : {
|
|
1486
1476
|
...e,
|
|
1487
1477
|
read: !0
|
|
1488
1478
|
});
|
|
1489
1479
|
}
|
|
1490
1480
|
function c() {
|
|
1491
|
-
|
|
1481
|
+
X.value = [];
|
|
1492
1482
|
}
|
|
1493
1483
|
return {
|
|
1494
|
-
notifications:
|
|
1495
|
-
unreadCount:
|
|
1496
|
-
open:
|
|
1484
|
+
notifications: X,
|
|
1485
|
+
unreadCount: fn,
|
|
1486
|
+
open: Z,
|
|
1497
1487
|
openPanel: e,
|
|
1498
1488
|
closePanel: t,
|
|
1499
1489
|
togglePanel: n,
|
|
@@ -1507,26 +1497,26 @@ function fn() {
|
|
|
1507
1497
|
}
|
|
1508
1498
|
//#endregion
|
|
1509
1499
|
//#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
|
|
1510
|
-
var
|
|
1500
|
+
var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }, gn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, _n = { class: "space-y-0.5" }, vn = [
|
|
1511
1501
|
"aria-current",
|
|
1512
1502
|
"title",
|
|
1513
1503
|
"onClick"
|
|
1514
|
-
],
|
|
1504
|
+
], yn = ["aria-label"], bn = { class: "relative shrink-0" }, xn = {
|
|
1515
1505
|
key: 0,
|
|
1516
1506
|
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
|
-
},
|
|
1507
|
+
}, Sn = [
|
|
1518
1508
|
"title",
|
|
1519
1509
|
"aria-label",
|
|
1520
1510
|
"aria-pressed"
|
|
1521
|
-
],
|
|
1511
|
+
], Cn = [
|
|
1522
1512
|
"title",
|
|
1523
1513
|
"aria-label",
|
|
1524
1514
|
"aria-pressed"
|
|
1525
|
-
],
|
|
1515
|
+
], wn = /*#__PURE__*/ ((e, t) => {
|
|
1526
1516
|
let n = e.__vccOpts || e;
|
|
1527
1517
|
for (let [e, r] of t) n[e] = r;
|
|
1528
1518
|
return n;
|
|
1529
|
-
})(/* @__PURE__ */
|
|
1519
|
+
})(/* @__PURE__ */ p({
|
|
1530
1520
|
__name: "BaseSidebar",
|
|
1531
1521
|
props: {
|
|
1532
1522
|
sections: {},
|
|
@@ -1547,151 +1537,151 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1547
1537
|
}
|
|
1548
1538
|
},
|
|
1549
1539
|
setup(t) {
|
|
1550
|
-
let n = t,
|
|
1551
|
-
P(
|
|
1552
|
-
e ? (
|
|
1540
|
+
let n = t, r = De(), l = Ee(), { isDark: u, toggleTheme: p } = V(), { mobileOpen: m, close: _, toggle: v } = sn(), { collapsed: y, toggle: b } = dn(), { unreadCount: x, togglePanel: C } = pn(), w = i(() => n.collapsible && y.value), O = T(null), ee = null;
|
|
1541
|
+
P(m, async (e) => {
|
|
1542
|
+
e ? (ee = document.activeElement instanceof HTMLElement ? document.activeElement : null, await h(), O.value?.focus()) : (ee?.focus(), ee = null);
|
|
1553
1543
|
});
|
|
1554
1544
|
function M() {
|
|
1555
|
-
|
|
1545
|
+
r.push({ name: n.homeRouteName }), _();
|
|
1556
1546
|
}
|
|
1557
|
-
function
|
|
1547
|
+
function te(e) {
|
|
1558
1548
|
return l.name === e;
|
|
1559
1549
|
}
|
|
1560
|
-
function
|
|
1561
|
-
|
|
1550
|
+
function N(e) {
|
|
1551
|
+
r.push({ name: e }), _();
|
|
1562
1552
|
}
|
|
1563
|
-
return (n, r) => (
|
|
1564
|
-
|
|
1553
|
+
return (n, r) => (S(), s("div", null, [
|
|
1554
|
+
c("div", { class: g(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", j(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [c("button", {
|
|
1565
1555
|
type: "button",
|
|
1566
1556
|
onClick: M,
|
|
1567
1557
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1568
1558
|
"aria-label": "Go to home"
|
|
1569
|
-
}, [
|
|
1559
|
+
}, [D(n.$slots, "logo", { size: 28 }, void 0, !0)]), c("button", {
|
|
1570
1560
|
type: "button",
|
|
1571
|
-
onClick: r[0] ||= (...e) =>
|
|
1572
|
-
class:
|
|
1573
|
-
"aria-label":
|
|
1574
|
-
"aria-expanded":
|
|
1575
|
-
}, [
|
|
1561
|
+
onClick: r[0] ||= (...e) => j(v) && j(v)(...e),
|
|
1562
|
+
class: g(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", j(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
|
|
1563
|
+
"aria-label": j(m) ? "Close navigation menu" : "Open navigation menu",
|
|
1564
|
+
"aria-expanded": j(m)
|
|
1565
|
+
}, [j(m) ? (S(), a(j(we), {
|
|
1576
1566
|
key: 1,
|
|
1577
1567
|
class: "w-6 h-6",
|
|
1578
1568
|
"aria-hidden": "true"
|
|
1579
|
-
})) : (
|
|
1569
|
+
})) : (S(), a(j(oe), {
|
|
1580
1570
|
key: 0,
|
|
1581
1571
|
class: "w-6 h-6",
|
|
1582
1572
|
"aria-hidden": "true"
|
|
1583
|
-
}))], 10,
|
|
1584
|
-
|
|
1573
|
+
}))], 10, mn)], 2),
|
|
1574
|
+
j(m) ? (S(), s("div", {
|
|
1585
1575
|
key: 0,
|
|
1586
1576
|
class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
|
|
1587
1577
|
"aria-hidden": "true",
|
|
1588
|
-
onClick: r[1] ||= (...e) =>
|
|
1589
|
-
})) :
|
|
1590
|
-
|
|
1578
|
+
onClick: r[1] ||= (...e) => j(_) && j(_)(...e)
|
|
1579
|
+
})) : o("", !0),
|
|
1580
|
+
c("aside", {
|
|
1591
1581
|
role: "navigation",
|
|
1592
1582
|
"aria-label": "Main navigation",
|
|
1593
|
-
class:
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
t.collapsible &&
|
|
1583
|
+
class: g(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
|
|
1584
|
+
j(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
|
|
1585
|
+
j(m) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
|
|
1586
|
+
t.collapsible && j(y) ? "lg:w-16" : "lg:w-60"
|
|
1597
1587
|
]])
|
|
1598
|
-
}, [
|
|
1599
|
-
|
|
1588
|
+
}, [c("div", hn, [
|
|
1589
|
+
c("div", { class: g(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": w.value }]) }, [c("button", {
|
|
1600
1590
|
type: "button",
|
|
1601
1591
|
onClick: M,
|
|
1602
1592
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1603
1593
|
"aria-label": "Go to home"
|
|
1604
|
-
}, [
|
|
1594
|
+
}, [D(n.$slots, "logo", { size: w.value ? 36 : 52 }, void 0, !0)]), c("button", {
|
|
1605
1595
|
ref_key: "closeMobileButton",
|
|
1606
|
-
ref:
|
|
1596
|
+
ref: O,
|
|
1607
1597
|
type: "button",
|
|
1608
|
-
onClick: r[2] ||= (...e) =>
|
|
1609
|
-
class:
|
|
1598
|
+
onClick: r[2] ||= (...e) => j(_) && j(_)(...e),
|
|
1599
|
+
class: g(["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", j(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
|
|
1610
1600
|
"aria-label": "Close navigation menu"
|
|
1611
|
-
}, [
|
|
1601
|
+
}, [f(j(we), {
|
|
1612
1602
|
class: "w-5 h-5",
|
|
1613
1603
|
"aria-hidden": "true"
|
|
1614
1604
|
})], 2)], 2),
|
|
1615
|
-
|
|
1605
|
+
c("nav", gn, [(S(!0), s(e, null, E(t.sections, (t) => (S(), s("div", { key: t.title }, [c("p", { class: g(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": w.value }]) }, A(t.title), 3), c("ul", _n, [(S(!0), s(e, null, E(t.items, (e) => (S(), s("li", { key: e.name }, [c("button", {
|
|
1616
1606
|
type: "button",
|
|
1617
|
-
"aria-current":
|
|
1618
|
-
title:
|
|
1619
|
-
onClick: (t) =>
|
|
1620
|
-
class:
|
|
1621
|
-
}, [(
|
|
1622
|
-
|
|
1623
|
-
t.showNotifications ? (
|
|
1607
|
+
"aria-current": te(e.name) ? "page" : void 0,
|
|
1608
|
+
title: w.value ? e.label : void 0,
|
|
1609
|
+
onClick: (t) => N(e.name),
|
|
1610
|
+
class: g(["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", [te(e.name) ? j(u) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : j(u) ? "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": w.value }]])
|
|
1611
|
+
}, [(S(), a(k(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), c("span", { class: g({ "lg:hidden": w.value }) }, A(e.label), 3)], 10, vn)]))), 128))])]))), 128))]),
|
|
1612
|
+
c("div", { class: g(["px-4 py-4 border-t transition-colors space-y-3", j(u) ? "border-gray-800" : "border-gray-200"]) }, [
|
|
1613
|
+
t.showNotifications ? (S(), s("button", {
|
|
1624
1614
|
key: 0,
|
|
1625
1615
|
type: "button",
|
|
1626
|
-
onClick: r[3] ||= (...e) =>
|
|
1616
|
+
onClick: r[3] ||= (...e) => j(C) && j(C)(...e),
|
|
1627
1617
|
title: "Notifications",
|
|
1628
|
-
"aria-label":
|
|
1629
|
-
class:
|
|
1630
|
-
}, [
|
|
1618
|
+
"aria-label": j(x) > 0 ? `Notifications, ${j(x)} unread` : "Notifications",
|
|
1619
|
+
class: g(["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", [j(u) ? "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": w.value }]])
|
|
1620
|
+
}, [c("span", bn, [f(j(se), {
|
|
1631
1621
|
class: "w-[18px] h-[18px]",
|
|
1632
1622
|
"aria-hidden": "true"
|
|
1633
|
-
}),
|
|
1634
|
-
t.showThemeToggle ? (
|
|
1623
|
+
}), j(x) > 0 ? (S(), s("span", xn, A(j(x) > 99 ? "99+" : j(x)), 1)) : o("", !0)]), c("span", { class: g({ "lg:hidden": w.value }) }, "Notifications", 2)], 10, yn)) : o("", !0),
|
|
1624
|
+
t.showThemeToggle ? (S(), s("button", {
|
|
1635
1625
|
key: 1,
|
|
1636
1626
|
type: "button",
|
|
1637
|
-
onClick: r[4] ||= (...e) =>
|
|
1638
|
-
title:
|
|
1639
|
-
"aria-label":
|
|
1640
|
-
"aria-pressed":
|
|
1641
|
-
class:
|
|
1627
|
+
onClick: r[4] ||= (...e) => j(p) && j(p)(...e),
|
|
1628
|
+
title: j(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1629
|
+
"aria-label": j(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1630
|
+
"aria-pressed": j(u),
|
|
1631
|
+
class: g(["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", [j(u) ? "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": w.value }]])
|
|
1642
1632
|
}, [
|
|
1643
|
-
(
|
|
1644
|
-
class:
|
|
1633
|
+
(S(), a(k(j(u) ? j(Ce) : j(Se)), {
|
|
1634
|
+
class: g(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": w.value }]),
|
|
1645
1635
|
"aria-hidden": "true"
|
|
1646
1636
|
}, null, 8, ["class"])),
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
], 10,
|
|
1650
|
-
t.collapsible ? (
|
|
1637
|
+
c("span", { class: g({ "lg:hidden": w.value }) }, A(j(u) ? "Switch to light" : "Switch to dark"), 3),
|
|
1638
|
+
c("span", { class: g(["ml-auto relative w-9 h-5 rounded-full transition-colors", [j(u) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": w.value }]]) }, [c("span", { class: g(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", j(u) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
|
|
1639
|
+
], 10, Sn)) : o("", !0),
|
|
1640
|
+
t.collapsible ? (S(), s("button", {
|
|
1651
1641
|
key: 2,
|
|
1652
1642
|
type: "button",
|
|
1653
|
-
onClick: r[5] ||= (...e) =>
|
|
1654
|
-
title:
|
|
1655
|
-
"aria-label":
|
|
1656
|
-
"aria-pressed":
|
|
1657
|
-
class:
|
|
1658
|
-
}, [(
|
|
1643
|
+
onClick: r[5] ||= (...e) => j(b) && j(b)(...e),
|
|
1644
|
+
title: j(y) ? "Expand sidebar" : "Collapse sidebar",
|
|
1645
|
+
"aria-label": j(y) ? "Expand sidebar" : "Collapse sidebar",
|
|
1646
|
+
"aria-pressed": j(y),
|
|
1647
|
+
class: g(["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", [j(u) ? "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": w.value }]])
|
|
1648
|
+
}, [(S(), a(k(j(y) ? j(ue) : j(le)), {
|
|
1659
1649
|
class: "w-[18px] h-[18px] shrink-0",
|
|
1660
1650
|
"aria-hidden": "true"
|
|
1661
|
-
})),
|
|
1662
|
-
|
|
1663
|
-
|
|
1651
|
+
})), c("span", { class: g({ "lg:hidden": w.value }) }, "Collapse", 2)], 10, Cn)) : o("", !0),
|
|
1652
|
+
c("div", { class: g({ "lg:hidden": w.value }) }, [D(n.$slots, "status", {}, void 0, !0)], 2),
|
|
1653
|
+
c("div", { class: g({ "lg:hidden": w.value }) }, [D(n.$slots, "footer", {}, () => [t.appName || t.version ? (S(), s("div", {
|
|
1664
1654
|
key: 0,
|
|
1665
|
-
class:
|
|
1666
|
-
}, [
|
|
1667
|
-
|
|
1668
|
-
t.appName && t.version ? (
|
|
1669
|
-
t.version ? (
|
|
1670
|
-
])], 2)) :
|
|
1655
|
+
class: g(["flex items-center justify-center gap-2 text-xs", (j(u), "text-gray-500")])
|
|
1656
|
+
}, [c("span", null, [
|
|
1657
|
+
d(A(t.appName), 1),
|
|
1658
|
+
t.appName && t.version ? (S(), s(e, { key: 0 }, [d(A(" "))], 64)) : o("", !0),
|
|
1659
|
+
t.version ? (S(), s(e, { key: 1 }, [d("v" + A(t.version), 1)], 64)) : o("", !0)
|
|
1660
|
+
])], 2)) : o("", !0)], !0)], 2)
|
|
1671
1661
|
], 2)
|
|
1672
1662
|
])], 2)
|
|
1673
1663
|
]));
|
|
1674
1664
|
}
|
|
1675
|
-
}), [["__scopeId", "data-v-
|
|
1665
|
+
}), [["__scopeId", "data-v-bfce9dd7"]]), Tn = {
|
|
1676
1666
|
key: 1,
|
|
1677
1667
|
class: "mt-4 flex justify-center py-6"
|
|
1678
|
-
},
|
|
1668
|
+
}, En = {
|
|
1679
1669
|
key: 2,
|
|
1680
1670
|
class: "mt-4 text-sm text-red-500",
|
|
1681
1671
|
role: "alert"
|
|
1682
|
-
},
|
|
1672
|
+
}, Dn = {
|
|
1683
1673
|
key: 3,
|
|
1684
1674
|
class: "mt-4"
|
|
1685
|
-
},
|
|
1675
|
+
}, On = { class: "relative" }, kn = ["placeholder"], An = {
|
|
1686
1676
|
key: 4,
|
|
1687
1677
|
class: "mt-3 max-h-64 overflow-y-auto"
|
|
1688
|
-
},
|
|
1678
|
+
}, jn = ["aria-pressed", "onClick"], Mn = { class: "flex-1 min-w-0" }, Nn = {
|
|
1689
1679
|
key: 0,
|
|
1690
1680
|
class: "text-center py-6"
|
|
1691
|
-
},
|
|
1681
|
+
}, Pn = {
|
|
1692
1682
|
key: 1,
|
|
1693
1683
|
class: "text-center py-6"
|
|
1694
|
-
},
|
|
1684
|
+
}, Fn = ["disabled"], In = ["disabled"], Ln = /* @__PURE__ */ p({
|
|
1695
1685
|
__name: "BaseEntityPickerModal",
|
|
1696
1686
|
props: {
|
|
1697
1687
|
title: {},
|
|
@@ -1713,10 +1703,10 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1713
1703
|
},
|
|
1714
1704
|
emits: ["confirm", "cancel"],
|
|
1715
1705
|
setup(t, { emit: n }) {
|
|
1716
|
-
let
|
|
1717
|
-
let e =
|
|
1718
|
-
return
|
|
1719
|
-
}), O =
|
|
1706
|
+
let r = t, u = n, { isDark: d } = V(), p = J(), m = T([]), _ = T(!1), v = T(""), b = T(null), x = T(""), C = T(null), w = i(() => {
|
|
1707
|
+
let e = r.loader ? m.value : r.items;
|
|
1708
|
+
return r.excludeId ? e.filter((e) => e.id !== r.excludeId) : e;
|
|
1709
|
+
}), O = i(() => w.value.filter((e) => e.label.toLowerCase().includes(x.value.toLowerCase()))), k = {
|
|
1720
1710
|
emerald: {
|
|
1721
1711
|
iconBg: "bg-emerald-50",
|
|
1722
1712
|
iconText: "text-emerald-600",
|
|
@@ -1762,7 +1752,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1762
1752
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1763
1753
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1764
1754
|
}
|
|
1765
|
-
},
|
|
1755
|
+
}, ee = {
|
|
1766
1756
|
emerald: {
|
|
1767
1757
|
iconBg: "bg-emerald-900/30",
|
|
1768
1758
|
iconText: "text-emerald-400",
|
|
@@ -1808,92 +1798,92 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1808
1798
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1809
1799
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1810
1800
|
}
|
|
1811
|
-
}, M =
|
|
1812
|
-
|
|
1813
|
-
if (
|
|
1801
|
+
}, M = i(() => (d.value ? ee : k)[r.variant]);
|
|
1802
|
+
y(async () => {
|
|
1803
|
+
if (r.loader) {
|
|
1814
1804
|
_.value = !0;
|
|
1815
1805
|
try {
|
|
1816
|
-
|
|
1806
|
+
m.value = await r.loader();
|
|
1817
1807
|
} catch {
|
|
1818
|
-
|
|
1808
|
+
v.value = "Failed to load items";
|
|
1819
1809
|
} finally {
|
|
1820
1810
|
_.value = !1;
|
|
1821
1811
|
}
|
|
1822
1812
|
}
|
|
1823
|
-
await
|
|
1813
|
+
await h(), C.value?.focus();
|
|
1824
1814
|
});
|
|
1825
1815
|
function te() {
|
|
1826
|
-
|
|
1816
|
+
b.value && !r.submitting && u("confirm", b.value);
|
|
1827
1817
|
}
|
|
1828
|
-
function
|
|
1829
|
-
|
|
1818
|
+
function ne() {
|
|
1819
|
+
r.submitting || u("cancel");
|
|
1830
1820
|
}
|
|
1831
|
-
return (n, r) => (
|
|
1821
|
+
return (n, r) => (S(), a(Wt, {
|
|
1832
1822
|
title: t.title,
|
|
1833
|
-
icon:
|
|
1823
|
+
icon: j(ve),
|
|
1834
1824
|
"icon-bg-class": M.value.iconBg,
|
|
1835
1825
|
"icon-class": M.value.iconText,
|
|
1836
1826
|
"manual-close": t.submitting,
|
|
1837
|
-
onCancel:
|
|
1838
|
-
},
|
|
1839
|
-
footer: F(() => [
|
|
1827
|
+
onCancel: ne
|
|
1828
|
+
}, l({
|
|
1829
|
+
footer: F(() => [c("button", {
|
|
1840
1830
|
type: "button",
|
|
1841
1831
|
disabled: t.submitting,
|
|
1842
|
-
class:
|
|
1843
|
-
onClick:
|
|
1844
|
-
},
|
|
1832
|
+
class: g(["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", j(p).ghostButton]),
|
|
1833
|
+
onClick: ne
|
|
1834
|
+
}, A(t.cancelText), 11, Fn), c("button", {
|
|
1845
1835
|
type: "button",
|
|
1846
1836
|
disabled: !b.value || t.submitting,
|
|
1847
|
-
class:
|
|
1837
|
+
class: g(["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
1838
|
onClick: te
|
|
1849
|
-
},
|
|
1839
|
+
}, A(t.submitting ? t.submittingText : t.confirmText), 11, In)]),
|
|
1850
1840
|
default: F(() => [
|
|
1851
|
-
t.message ? (
|
|
1841
|
+
t.message ? (S(), s("p", {
|
|
1852
1842
|
key: 0,
|
|
1853
|
-
class:
|
|
1854
|
-
},
|
|
1855
|
-
_.value ? (
|
|
1856
|
-
!_.value && !
|
|
1857
|
-
class:
|
|
1843
|
+
class: g(["text-sm", j(d) ? "text-gray-300" : "text-gray-600"])
|
|
1844
|
+
}, A(t.message), 3)) : o("", !0),
|
|
1845
|
+
_.value ? (S(), s("div", Tn, [f(dt, { color: "emerald" })])) : v.value ? (S(), s("div", En, A(v.value), 1)) : o("", !0),
|
|
1846
|
+
!_.value && !v.value && w.value.length > 0 ? (S(), s("div", Dn, [c("div", On, [f(j(be), {
|
|
1847
|
+
class: g(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", j(p).dimText]),
|
|
1858
1848
|
"aria-hidden": "true"
|
|
1859
|
-
}, null, 8, ["class"]), I(
|
|
1849
|
+
}, null, 8, ["class"]), I(c("input", {
|
|
1860
1850
|
ref_key: "searchInputRef",
|
|
1861
1851
|
ref: C,
|
|
1862
|
-
"onUpdate:modelValue": r[0] ||= (e) =>
|
|
1852
|
+
"onUpdate:modelValue": r[0] ||= (e) => x.value = e,
|
|
1863
1853
|
type: "text",
|
|
1864
1854
|
placeholder: t.searchPlaceholder,
|
|
1865
|
-
class:
|
|
1866
|
-
}, null, 10,
|
|
1867
|
-
!_.value && !
|
|
1855
|
+
class: g(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [j(d) ? "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]])
|
|
1856
|
+
}, null, 10, kn), [[N, x.value]])])])) : o("", !0),
|
|
1857
|
+
!_.value && !v.value ? (S(), s("div", An, [(S(!0), s(e, null, E(O.value, (e) => (S(), s("button", {
|
|
1868
1858
|
key: e.id,
|
|
1869
1859
|
type: "button",
|
|
1870
1860
|
"aria-pressed": b.value === e.id,
|
|
1871
|
-
class:
|
|
1861
|
+
class: g(["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 : j(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
|
|
1872
1862
|
onClick: (t) => b.value = e.id
|
|
1873
1863
|
}, [
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
b.value === e.id ? (
|
|
1864
|
+
f(j(ve), { class: g(["w-5 h-5 flex-shrink-0", j(p).dimText]) }, null, 8, ["class"]),
|
|
1865
|
+
c("div", Mn, [c("p", { class: g(["text-sm font-medium truncate", j(p).bodyText]) }, A(e.label), 3)]),
|
|
1866
|
+
b.value === e.id ? (S(), s("div", {
|
|
1877
1867
|
key: 0,
|
|
1878
|
-
class:
|
|
1879
|
-
}, [...r[1] ||= [
|
|
1868
|
+
class: g(["w-5 h-5 rounded-full flex items-center justify-center", M.value.checkBg])
|
|
1869
|
+
}, [...r[1] ||= [c("svg", {
|
|
1880
1870
|
class: "w-3 h-3 text-white",
|
|
1881
1871
|
fill: "none",
|
|
1882
1872
|
viewBox: "0 0 24 24",
|
|
1883
1873
|
stroke: "currentColor",
|
|
1884
1874
|
"stroke-width": "3",
|
|
1885
1875
|
"aria-hidden": "true"
|
|
1886
|
-
}, [
|
|
1876
|
+
}, [c("path", {
|
|
1887
1877
|
"stroke-linecap": "round",
|
|
1888
1878
|
"stroke-linejoin": "round",
|
|
1889
1879
|
d: "M5 13l4 4L19 7"
|
|
1890
|
-
})], -1)]], 2)) :
|
|
1891
|
-
], 10,
|
|
1880
|
+
})], -1)]], 2)) : o("", !0)
|
|
1881
|
+
], 10, jn))), 128)), w.value.length === 0 ? (S(), s("div", Nn, [c("p", { class: g(["text-sm", j(p).dimText]) }, A(t.emptyMessage), 3)])) : O.value.length === 0 ? (S(), s("div", Pn, [c("p", { class: g(["text-sm", j(p).dimText]) }, A(t.noMatchMessage), 3)])) : o("", !0)])) : o("", !0)
|
|
1892
1882
|
]),
|
|
1893
1883
|
_: 2
|
|
1894
1884
|
}, [n.$slots.icon ? {
|
|
1895
1885
|
name: "icon",
|
|
1896
|
-
fn: F(() => [
|
|
1886
|
+
fn: F(() => [D(n.$slots, "icon")]),
|
|
1897
1887
|
key: "0"
|
|
1898
1888
|
} : void 0]), 1032, [
|
|
1899
1889
|
"title",
|
|
@@ -1903,10 +1893,10 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1903
1893
|
"manual-close"
|
|
1904
1894
|
]));
|
|
1905
1895
|
}
|
|
1906
|
-
}),
|
|
1896
|
+
}), Rn = {
|
|
1907
1897
|
href: "#main-content",
|
|
1908
1898
|
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
|
-
},
|
|
1899
|
+
}, zn = ["inert"], Bn = /* @__PURE__ */ p({
|
|
1910
1900
|
__name: "BaseAppLayout",
|
|
1911
1901
|
props: {
|
|
1912
1902
|
showSidebar: {
|
|
@@ -1916,19 +1906,19 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1916
1906
|
skipLinkLabel: { default: "Skip to main content" }
|
|
1917
1907
|
},
|
|
1918
1908
|
setup(e) {
|
|
1919
|
-
let t = e, { isDark: n } = V(), { mobileOpen:
|
|
1920
|
-
return (t,
|
|
1921
|
-
|
|
1922
|
-
l.value ?
|
|
1923
|
-
|
|
1909
|
+
let t = e, { isDark: n } = V(), { mobileOpen: r } = sn(), { collapsed: a } = dn(), l = i(() => t.showSidebar);
|
|
1910
|
+
return (t, i) => (S(), s("div", { class: g(["min-h-screen transition-colors duration-300", j(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
|
|
1911
|
+
c("a", Rn, A(e.skipLinkLabel), 1),
|
|
1912
|
+
l.value ? D(t.$slots, "sidebar", {}, void 0, void 0, 0) : o("", !0),
|
|
1913
|
+
c("main", {
|
|
1924
1914
|
id: "main-content",
|
|
1925
1915
|
tabindex: "-1",
|
|
1926
|
-
inert: l.value &&
|
|
1927
|
-
class:
|
|
1928
|
-
}, [
|
|
1916
|
+
inert: l.value && j(r) ? !0 : void 0,
|
|
1917
|
+
class: g(["transition-all duration-300", l.value ? j(a) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
|
|
1918
|
+
}, [D(t.$slots, "default")], 10, zn)
|
|
1929
1919
|
], 2));
|
|
1930
1920
|
}
|
|
1931
|
-
}),
|
|
1921
|
+
}), Vn = { class: "flex items-center gap-3 min-w-0" }, Hn = { class: "flex items-center gap-2" }, Un = /* @__PURE__ */ p({
|
|
1932
1922
|
__name: "BasePageHeader",
|
|
1933
1923
|
props: {
|
|
1934
1924
|
title: {},
|
|
@@ -1939,7 +1929,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1939
1929
|
marginClass: { default: "mb-8" }
|
|
1940
1930
|
},
|
|
1941
1931
|
setup(e) {
|
|
1942
|
-
let t = e, { isDark: n } = V(),
|
|
1932
|
+
let t = e, { isDark: n } = V(), r = J(), a = i(() => {
|
|
1943
1933
|
let e = {
|
|
1944
1934
|
emerald: {
|
|
1945
1935
|
dark: "bg-emerald-500/10",
|
|
@@ -1959,7 +1949,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1959
1949
|
}
|
|
1960
1950
|
}[t.iconColor];
|
|
1961
1951
|
return n.value ? e.dark : e.light;
|
|
1962
|
-
}), l =
|
|
1952
|
+
}), l = i(() => {
|
|
1963
1953
|
let e = {
|
|
1964
1954
|
emerald: {
|
|
1965
1955
|
dark: "text-emerald-400",
|
|
@@ -1980,19 +1970,19 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
1980
1970
|
}[t.iconColor];
|
|
1981
1971
|
return n.value ? e.dark : e.light;
|
|
1982
1972
|
});
|
|
1983
|
-
return (t, n) => (
|
|
1973
|
+
return (t, n) => (S(), s("header", { class: g(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [c("div", { class: g(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [c("div", Vn, [t.$slots.icon ? (S(), s("div", {
|
|
1984
1974
|
key: 0,
|
|
1985
|
-
class:
|
|
1986
|
-
}, [
|
|
1975
|
+
class: g(["w-10 h-10 rounded-lg flex items-center justify-center", a.value])
|
|
1976
|
+
}, [D(t.$slots, "icon", { iconClass: l.value })], 2)) : o("", !0), c("div", null, [c("h1", { class: g(["text-2xl font-bold", j(r).primaryTextSoft]) }, A(e.title), 3), e.subtitle || t.$slots.subtitle ? (S(), s("p", {
|
|
1987
1977
|
key: 0,
|
|
1988
|
-
class:
|
|
1989
|
-
}, [
|
|
1978
|
+
class: g(["text-sm", j(r).dimTextAlt])
|
|
1979
|
+
}, [D(t.$slots, "subtitle", {}, () => [d(A(e.subtitle), 1)])], 2)) : o("", !0)])]), c("div", Hn, [D(t.$slots, "actions")])], 2)], 2));
|
|
1990
1980
|
}
|
|
1991
|
-
}),
|
|
1981
|
+
}), Wn = [
|
|
1992
1982
|
"type",
|
|
1993
1983
|
"disabled",
|
|
1994
1984
|
"title"
|
|
1995
|
-
],
|
|
1985
|
+
], Gn = { key: 0 }, Kn = /* @__PURE__ */ p({
|
|
1996
1986
|
__name: "BaseToolbarButton",
|
|
1997
1987
|
props: {
|
|
1998
1988
|
label: { default: "" },
|
|
@@ -2006,11 +1996,11 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2006
1996
|
},
|
|
2007
1997
|
emits: ["click"],
|
|
2008
1998
|
setup(e) {
|
|
2009
|
-
let t = e, { isDark: n } = V(),
|
|
1999
|
+
let t = e, { isDark: n } = V(), r = {
|
|
2010
2000
|
neutral: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2011
2001
|
danger: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2012
2002
|
ghost: "h-9 px-4 rounded-md font-semibold disabled:opacity-40 disabled:hover:bg-slate-50 dark:disabled:hover:bg-slate-900"
|
|
2013
|
-
},
|
|
2003
|
+
}, a = i(() => {
|
|
2014
2004
|
let e = {
|
|
2015
2005
|
neutral: {
|
|
2016
2006
|
dark: "bg-gray-800 text-gray-100 border-gray-700 hover:bg-gray-700",
|
|
@@ -2025,22 +2015,22 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2025
2015
|
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"
|
|
2026
2016
|
}
|
|
2027
2017
|
}[t.variant];
|
|
2028
|
-
return [
|
|
2018
|
+
return [r[t.variant], n.value ? e.dark : e.light];
|
|
2029
2019
|
});
|
|
2030
|
-
return (t, n) => (
|
|
2020
|
+
return (t, n) => (S(), s("button", {
|
|
2031
2021
|
type: e.type,
|
|
2032
2022
|
disabled: e.disabled,
|
|
2033
2023
|
title: e.title,
|
|
2034
|
-
class:
|
|
2024
|
+
class: g(["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", a.value]),
|
|
2035
2025
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2036
|
-
}, [
|
|
2026
|
+
}, [D(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (S(), s("span", Gn, A(e.label), 1)) : o("", !0)], 10, Wn));
|
|
2037
2027
|
}
|
|
2038
|
-
}),
|
|
2028
|
+
}), qn = [
|
|
2039
2029
|
"type",
|
|
2040
2030
|
"disabled",
|
|
2041
2031
|
"title",
|
|
2042
2032
|
"aria-label"
|
|
2043
|
-
],
|
|
2033
|
+
], Jn = { key: 0 }, Yn = /* @__PURE__ */ p({
|
|
2044
2034
|
__name: "BaseActionButton",
|
|
2045
2035
|
props: {
|
|
2046
2036
|
label: { default: "" },
|
|
@@ -2059,7 +2049,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2059
2049
|
},
|
|
2060
2050
|
emits: ["click"],
|
|
2061
2051
|
setup(e) {
|
|
2062
|
-
let t = e, { isDark: n } = V(),
|
|
2052
|
+
let t = e, { isDark: n } = V(), r = i(() => {
|
|
2063
2053
|
let e = {
|
|
2064
2054
|
emerald: {
|
|
2065
2055
|
dark: "text-emerald-400 hover:bg-emerald-500/10",
|
|
@@ -2095,7 +2085,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2095
2085
|
}
|
|
2096
2086
|
}[t.color];
|
|
2097
2087
|
return n.value ? e.dark : e.light;
|
|
2098
|
-
}),
|
|
2088
|
+
}), a = i(() => {
|
|
2099
2089
|
let e = {
|
|
2100
2090
|
emerald: {
|
|
2101
2091
|
dark: "text-emerald-400",
|
|
@@ -2131,17 +2121,17 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2131
2121
|
}
|
|
2132
2122
|
}[t.color];
|
|
2133
2123
|
return n.value ? e.dark : e.light;
|
|
2134
|
-
}), c =
|
|
2135
|
-
return (t, n) => (
|
|
2124
|
+
}), c = i(() => t.disabled ? `${a.value} opacity-50 cursor-not-allowed` : `${r.value} cursor-pointer`);
|
|
2125
|
+
return (t, n) => (S(), s("button", {
|
|
2136
2126
|
type: e.type,
|
|
2137
2127
|
disabled: e.disabled,
|
|
2138
2128
|
title: e.title,
|
|
2139
2129
|
"aria-label": e.ariaLabel,
|
|
2140
|
-
class:
|
|
2130
|
+
class: g(["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]]),
|
|
2141
2131
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2142
|
-
}, [
|
|
2132
|
+
}, [D(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (S(), s("span", Jn, A(e.label), 1)) : o("", !0)], 10, qn));
|
|
2143
2133
|
}
|
|
2144
|
-
}),
|
|
2134
|
+
}), Xn = ["title", "aria-label"], Zn = /* @__PURE__ */ p({
|
|
2145
2135
|
__name: "BaseCopyButton",
|
|
2146
2136
|
props: {
|
|
2147
2137
|
text: {},
|
|
@@ -2152,7 +2142,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2152
2142
|
},
|
|
2153
2143
|
emits: ["copied", "error"],
|
|
2154
2144
|
setup(e, { emit: t }) {
|
|
2155
|
-
let n = e,
|
|
2145
|
+
let n = e, r = t, { isDark: o } = V(), c = T(!1), l = null, u = i(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = i(() => n.label ? `Copy ${n.label}` : "Copy"), f = i(() => 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 ? o.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : o.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 ${o.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
|
|
2156
2146
|
async function p(e) {
|
|
2157
2147
|
try {
|
|
2158
2148
|
if (navigator.clipboard?.writeText) {
|
|
@@ -2169,41 +2159,41 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2169
2159
|
try {
|
|
2170
2160
|
await p(n.text), c.value = !0, l && clearTimeout(l), l = setTimeout(() => {
|
|
2171
2161
|
c.value = !1;
|
|
2172
|
-
}, n.resetMs),
|
|
2162
|
+
}, n.resetMs), r("copied");
|
|
2173
2163
|
} catch (e) {
|
|
2174
|
-
|
|
2164
|
+
r("error", e);
|
|
2175
2165
|
}
|
|
2176
2166
|
}
|
|
2177
|
-
return
|
|
2167
|
+
return x(() => {
|
|
2178
2168
|
l && clearTimeout(l);
|
|
2179
|
-
}), (t, n) => (
|
|
2169
|
+
}), (t, n) => (S(), s("button", {
|
|
2180
2170
|
type: "button",
|
|
2181
2171
|
title: u.value,
|
|
2182
2172
|
"aria-label": d.value,
|
|
2183
|
-
class:
|
|
2173
|
+
class: g(f.value),
|
|
2184
2174
|
onClick: m
|
|
2185
|
-
}, [c.value ? (
|
|
2175
|
+
}, [c.value ? (S(), a(j(pe), {
|
|
2186
2176
|
key: 0,
|
|
2187
|
-
class:
|
|
2177
|
+
class: g(e.iconClass),
|
|
2188
2178
|
"aria-hidden": "true"
|
|
2189
|
-
}, null, 8, ["class"])) : (
|
|
2179
|
+
}, null, 8, ["class"])) : (S(), a(j(me), {
|
|
2190
2180
|
key: 1,
|
|
2191
|
-
class:
|
|
2181
|
+
class: g(e.iconClass),
|
|
2192
2182
|
"aria-hidden": "true"
|
|
2193
|
-
}, null, 8, ["class"]))], 10,
|
|
2183
|
+
}, null, 8, ["class"]))], 10, Xn));
|
|
2194
2184
|
}
|
|
2195
|
-
}),
|
|
2185
|
+
}), Qn = ["disabled", "aria-busy"], $n = {
|
|
2196
2186
|
key: 0,
|
|
2197
2187
|
class: "w-5 h-5 animate-spin shrink-0",
|
|
2198
2188
|
viewBox: "0 0 24 24",
|
|
2199
2189
|
fill: "none",
|
|
2200
2190
|
"aria-hidden": "true"
|
|
2201
|
-
},
|
|
2191
|
+
}, er = {
|
|
2202
2192
|
key: 1,
|
|
2203
2193
|
class: "w-5 h-5 shrink-0",
|
|
2204
2194
|
viewBox: "0 0 48 48",
|
|
2205
2195
|
"aria-hidden": "true"
|
|
2206
|
-
},
|
|
2196
|
+
}, tr = /* @__PURE__ */ p({
|
|
2207
2197
|
__name: "BaseGoogleSignInButton",
|
|
2208
2198
|
props: {
|
|
2209
2199
|
label: { default: "Sign in with Google" },
|
|
@@ -2222,39 +2212,39 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2222
2212
|
},
|
|
2223
2213
|
emits: ["click"],
|
|
2224
2214
|
setup(e, { emit: t }) {
|
|
2225
|
-
let n = e,
|
|
2226
|
-
function
|
|
2227
|
-
|
|
2215
|
+
let n = e, r = t, { isDark: a } = V(), o = i(() => n.disabled || n.loading);
|
|
2216
|
+
function l() {
|
|
2217
|
+
o.value || r("click");
|
|
2228
2218
|
}
|
|
2229
|
-
return (t, n) => (
|
|
2219
|
+
return (t, n) => (S(), s("button", {
|
|
2230
2220
|
type: "button",
|
|
2231
|
-
disabled:
|
|
2221
|
+
disabled: o.value,
|
|
2232
2222
|
"aria-busy": e.loading,
|
|
2233
|
-
onClick:
|
|
2234
|
-
class:
|
|
2235
|
-
}, [e.loading ? (
|
|
2223
|
+
onClick: l,
|
|
2224
|
+
class: g(["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" : "", j(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"]])
|
|
2225
|
+
}, [e.loading ? (S(), s("svg", $n, [...n[0] ||= [c("circle", {
|
|
2236
2226
|
class: "opacity-25",
|
|
2237
2227
|
cx: "12",
|
|
2238
2228
|
cy: "12",
|
|
2239
2229
|
r: "10",
|
|
2240
2230
|
stroke: "currentColor",
|
|
2241
2231
|
"stroke-width": "4"
|
|
2242
|
-
}, null, -1),
|
|
2232
|
+
}, null, -1), c("path", {
|
|
2243
2233
|
class: "opacity-75",
|
|
2244
2234
|
fill: "currentColor",
|
|
2245
2235
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2246
|
-
}, null, -1)]])) : (
|
|
2236
|
+
}, null, -1)]])) : (S(), s("svg", er, [...n[1] ||= [u("<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)]])), c("span", null, A(e.label), 1)], 10, Qn));
|
|
2247
2237
|
}
|
|
2248
|
-
}),
|
|
2238
|
+
}), nr = {
|
|
2249
2239
|
key: 0,
|
|
2250
2240
|
class: "flex justify-center mb-6"
|
|
2251
|
-
},
|
|
2241
|
+
}, rr = { class: "mb-6 text-center" }, ir = { class: "flex items-center gap-3 my-5" }, ar = ["disabled"], or = { class: "flex items-center justify-between mb-1.5" }, sr = { class: "relative" }, cr = ["type", "disabled"], lr = ["aria-label", "aria-pressed"], ur = ["disabled"], dr = ["disabled", "aria-busy"], fr = {
|
|
2252
2242
|
key: 0,
|
|
2253
2243
|
class: "w-4 h-4 animate-spin",
|
|
2254
2244
|
viewBox: "0 0 24 24",
|
|
2255
2245
|
fill: "none",
|
|
2256
2246
|
"aria-hidden": "true"
|
|
2257
|
-
},
|
|
2247
|
+
}, pr = /* @__PURE__ */ p({
|
|
2258
2248
|
__name: "BaseLoginForm",
|
|
2259
2249
|
props: {
|
|
2260
2250
|
title: { default: "Sign in" },
|
|
@@ -2280,42 +2270,42 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2280
2270
|
},
|
|
2281
2271
|
emits: ["submit", "google-sign-in"],
|
|
2282
2272
|
setup(t, { emit: n }) {
|
|
2283
|
-
let
|
|
2273
|
+
let r = t, a = n, { isDark: l } = V(), u = J(), p = T(""), m = T(""), h = T(!1), _ = T(!1), v = i(() => r.loading || r.googleLoading);
|
|
2284
2274
|
function y() {
|
|
2285
|
-
v.value ||
|
|
2275
|
+
v.value || a("submit", {
|
|
2286
2276
|
email: p.value,
|
|
2287
2277
|
password: m.value,
|
|
2288
|
-
...
|
|
2278
|
+
...r.showRemember ? { remember: h.value } : {}
|
|
2289
2279
|
});
|
|
2290
2280
|
}
|
|
2291
|
-
return (n, r) => (
|
|
2292
|
-
n.$slots.logo ? (
|
|
2293
|
-
|
|
2281
|
+
return (n, r) => (S(), s("div", { class: g(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", j(u).card]) }, [
|
|
2282
|
+
n.$slots.logo ? (S(), s("div", nr, [D(n.$slots, "logo")])) : o("", !0),
|
|
2283
|
+
c("div", rr, [c("h1", { class: g(["text-xl font-semibold", j(u).primaryText]) }, A(t.title), 3), t.subtitle ? (S(), s("p", {
|
|
2294
2284
|
key: 0,
|
|
2295
|
-
class:
|
|
2296
|
-
},
|
|
2297
|
-
t.error ? (
|
|
2285
|
+
class: g(["mt-1 text-sm", j(u).mutedText])
|
|
2286
|
+
}, A(t.subtitle), 3)) : o("", !0)]),
|
|
2287
|
+
t.error ? (S(), s("div", {
|
|
2298
2288
|
key: 1,
|
|
2299
2289
|
role: "alert",
|
|
2300
|
-
class:
|
|
2301
|
-
},
|
|
2302
|
-
t.showGoogle ? (
|
|
2290
|
+
class: g(["mb-4 rounded-lg border px-3 py-2 text-sm", j(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
|
|
2291
|
+
}, A(t.error), 3)) : o("", !0),
|
|
2292
|
+
t.showGoogle ? (S(), s(e, { key: 2 }, [f(tr, {
|
|
2303
2293
|
loading: t.googleLoading,
|
|
2304
2294
|
disabled: t.loading,
|
|
2305
|
-
onClick: r[0] ||= (e) =>
|
|
2306
|
-
}, null, 8, ["loading", "disabled"]),
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
])], 64)) :
|
|
2311
|
-
|
|
2295
|
+
onClick: r[0] ||= (e) => a("google-sign-in")
|
|
2296
|
+
}, null, 8, ["loading", "disabled"]), c("div", ir, [
|
|
2297
|
+
c("span", { class: g(["h-px flex-1", j(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
|
|
2298
|
+
c("span", { class: g(["text-xs uppercase tracking-wider", j(u).dimTextAlt]) }, "or", 2),
|
|
2299
|
+
c("span", { class: g(["h-px flex-1", j(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
|
|
2300
|
+
])], 64)) : o("", !0),
|
|
2301
|
+
c("form", {
|
|
2312
2302
|
class: "space-y-4",
|
|
2313
2303
|
onSubmit: L(y, ["prevent"])
|
|
2314
2304
|
}, [
|
|
2315
|
-
|
|
2305
|
+
c("div", null, [c("label", {
|
|
2316
2306
|
for: "login-email",
|
|
2317
|
-
class:
|
|
2318
|
-
}, " Email ", 2), I(
|
|
2307
|
+
class: g(["block mb-1.5 text-sm font-medium", j(u).label])
|
|
2308
|
+
}, " Email ", 2), I(c("input", {
|
|
2319
2309
|
id: "login-email",
|
|
2320
2310
|
"onUpdate:modelValue": r[1] ||= (e) => p.value = e,
|
|
2321
2311
|
type: "email",
|
|
@@ -2324,12 +2314,12 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2324
2314
|
required: "",
|
|
2325
2315
|
disabled: v.value,
|
|
2326
2316
|
placeholder: "you@example.com",
|
|
2327
|
-
class:
|
|
2328
|
-
}, null, 10,
|
|
2329
|
-
|
|
2317
|
+
class: g(["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", j(u).inputWithPlaceholder])
|
|
2318
|
+
}, null, 10, ar), [[N, p.value]])]),
|
|
2319
|
+
c("div", null, [c("div", or, [c("label", {
|
|
2330
2320
|
for: "login-password",
|
|
2331
|
-
class:
|
|
2332
|
-
}, " Password ", 2),
|
|
2321
|
+
class: g(["block text-sm font-medium", j(u).label])
|
|
2322
|
+
}, " Password ", 2), D(n.$slots, "forgot")]), c("div", sr, [I(c("input", {
|
|
2333
2323
|
id: "login-password",
|
|
2334
2324
|
"onUpdate:modelValue": r[2] ||= (e) => m.value = e,
|
|
2335
2325
|
type: _.value ? "text" : "password",
|
|
@@ -2338,51 +2328,51 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2338
2328
|
required: "",
|
|
2339
2329
|
disabled: v.value,
|
|
2340
2330
|
placeholder: "••••••••",
|
|
2341
|
-
class:
|
|
2342
|
-
}, null, 10,
|
|
2331
|
+
class: g(["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", j(u).inputWithPlaceholder])
|
|
2332
|
+
}, null, 10, cr), [[te, m.value]]), c("button", {
|
|
2343
2333
|
type: "button",
|
|
2344
2334
|
onClick: r[3] ||= (e) => _.value = !_.value,
|
|
2345
2335
|
"aria-label": _.value ? "Hide password" : "Show password",
|
|
2346
2336
|
"aria-pressed": _.value,
|
|
2347
|
-
class:
|
|
2348
|
-
},
|
|
2349
|
-
t.showRemember ? (
|
|
2337
|
+
class: g(["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", j(u).mutedText])
|
|
2338
|
+
}, A(_.value ? "Hide" : "Show"), 11, lr)])]),
|
|
2339
|
+
t.showRemember ? (S(), s("label", {
|
|
2350
2340
|
key: 0,
|
|
2351
|
-
class:
|
|
2352
|
-
}, [I(
|
|
2353
|
-
"onUpdate:modelValue": r[4] ||= (e) =>
|
|
2341
|
+
class: g(["flex items-center gap-2 text-sm cursor-pointer select-none", j(u).bodyText])
|
|
2342
|
+
}, [I(c("input", {
|
|
2343
|
+
"onUpdate:modelValue": r[4] ||= (e) => h.value = e,
|
|
2354
2344
|
type: "checkbox",
|
|
2355
2345
|
disabled: v.value,
|
|
2356
2346
|
class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
|
|
2357
|
-
}, null, 8,
|
|
2358
|
-
|
|
2347
|
+
}, null, 8, ur), [[M, h.value]]), r[5] ||= d(" Remember me ", -1)], 2)) : o("", !0),
|
|
2348
|
+
c("button", {
|
|
2359
2349
|
type: "submit",
|
|
2360
2350
|
disabled: v.value,
|
|
2361
2351
|
"aria-busy": t.loading,
|
|
2362
2352
|
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"
|
|
2363
|
-
}, [t.loading ? (
|
|
2353
|
+
}, [t.loading ? (S(), s("svg", fr, [...r[6] ||= [c("circle", {
|
|
2364
2354
|
class: "opacity-25",
|
|
2365
2355
|
cx: "12",
|
|
2366
2356
|
cy: "12",
|
|
2367
2357
|
r: "10",
|
|
2368
2358
|
stroke: "currentColor",
|
|
2369
2359
|
"stroke-width": "4"
|
|
2370
|
-
}, null, -1),
|
|
2360
|
+
}, null, -1), c("path", {
|
|
2371
2361
|
class: "opacity-75",
|
|
2372
2362
|
fill: "currentColor",
|
|
2373
2363
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2374
|
-
}, null, -1)]])) :
|
|
2364
|
+
}, null, -1)]])) : o("", !0), d(" " + A(t.submitLabel), 1)], 8, dr)
|
|
2375
2365
|
], 32),
|
|
2376
|
-
n.$slots.footer ? (
|
|
2366
|
+
n.$slots.footer ? (S(), s("div", {
|
|
2377
2367
|
key: 3,
|
|
2378
|
-
class:
|
|
2379
|
-
}, [
|
|
2368
|
+
class: g(["mt-6 text-center text-sm", j(u).mutedText])
|
|
2369
|
+
}, [D(n.$slots, "footer")], 2)) : o("", !0)
|
|
2380
2370
|
], 2));
|
|
2381
2371
|
}
|
|
2382
|
-
}),
|
|
2372
|
+
}), mr = ["aria-label"], hr = { class: "flex-1 overflow-y-auto" }, gr = {
|
|
2383
2373
|
key: 0,
|
|
2384
2374
|
class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
|
|
2385
|
-
},
|
|
2375
|
+
}, _r = ["onClick"], vr = { class: "min-w-0 flex-1" }, yr = { class: "flex items-baseline justify-between gap-2" }, br = /* @__PURE__ */ p({
|
|
2386
2376
|
__name: "BaseNotificationPanel",
|
|
2387
2377
|
props: {
|
|
2388
2378
|
title: { default: "Notifications" },
|
|
@@ -2393,86 +2383,86 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2393
2383
|
}
|
|
2394
2384
|
},
|
|
2395
2385
|
emits: ["select"],
|
|
2396
|
-
setup(
|
|
2397
|
-
let
|
|
2386
|
+
setup(n, { emit: l }) {
|
|
2387
|
+
let u = l, { isDark: p } = V(), m = J(), { notifications: h, unreadCount: _, open: v, closePanel: y, markAllRead: b, markRead: x } = pn(), C = {
|
|
2398
2388
|
info: "bg-sky-500",
|
|
2399
2389
|
success: "bg-emerald-500",
|
|
2400
2390
|
warning: "bg-amber-500",
|
|
2401
2391
|
error: "bg-red-500"
|
|
2402
|
-
}, w =
|
|
2403
|
-
function
|
|
2404
|
-
|
|
2392
|
+
}, w = i(() => h.value.length);
|
|
2393
|
+
function T(e) {
|
|
2394
|
+
x(e), u("select", e);
|
|
2405
2395
|
}
|
|
2406
|
-
return
|
|
2396
|
+
return Ft(() => {
|
|
2407
2397
|
v.value && y();
|
|
2408
|
-
}), (
|
|
2398
|
+
}), (i, l) => (S(), a(t, { to: "body" }, [f(r, {
|
|
2409
2399
|
"enter-active-class": "transition-opacity duration-200",
|
|
2410
2400
|
"enter-from-class": "opacity-0",
|
|
2411
2401
|
"leave-active-class": "transition-opacity duration-200",
|
|
2412
2402
|
"leave-to-class": "opacity-0"
|
|
2413
2403
|
}, {
|
|
2414
|
-
default: F(() => [
|
|
2404
|
+
default: F(() => [j(v) ? (S(), s("div", {
|
|
2415
2405
|
key: 0,
|
|
2416
2406
|
class: "fixed inset-0 z-[60] bg-black/50",
|
|
2417
2407
|
"aria-hidden": "true",
|
|
2418
|
-
onClick: l[0] ||= (...e) =>
|
|
2419
|
-
})) :
|
|
2408
|
+
onClick: l[0] ||= (...e) => j(y) && j(y)(...e)
|
|
2409
|
+
})) : o("", !0)]),
|
|
2420
2410
|
_: 1
|
|
2421
|
-
}),
|
|
2411
|
+
}), f(r, {
|
|
2422
2412
|
"enter-active-class": "transition-transform duration-300 ease-out",
|
|
2423
2413
|
"enter-from-class": "-translate-x-full",
|
|
2424
2414
|
"leave-active-class": "transition-transform duration-300 ease-in",
|
|
2425
2415
|
"leave-to-class": "-translate-x-full"
|
|
2426
2416
|
}, {
|
|
2427
|
-
default: F(() => [
|
|
2417
|
+
default: F(() => [j(v) ? (S(), s("aside", {
|
|
2428
2418
|
key: 0,
|
|
2429
2419
|
role: "dialog",
|
|
2430
2420
|
"aria-modal": "true",
|
|
2431
|
-
"aria-label":
|
|
2432
|
-
class:
|
|
2421
|
+
"aria-label": n.title,
|
|
2422
|
+
class: g(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", j(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
|
|
2433
2423
|
}, [
|
|
2434
|
-
|
|
2424
|
+
c("div", { class: g(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", j(m).border]) }, [c("h2", { class: g(["text-lg font-semibold flex items-center gap-2", j(m).primaryText]) }, [d(A(n.title) + " ", 1), c("span", { class: g(["text-sm font-normal", j(m).dimTextAlt]) }, "— " + A(w.value), 3)], 2), c("button", {
|
|
2435
2425
|
type: "button",
|
|
2436
|
-
onClick: l[1] ||= (...e) =>
|
|
2426
|
+
onClick: l[1] ||= (...e) => j(y) && j(y)(...e),
|
|
2437
2427
|
"aria-label": "Close notifications",
|
|
2438
|
-
class:
|
|
2439
|
-
}, [
|
|
2428
|
+
class: g(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", j(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
|
|
2429
|
+
}, [f(j(we), {
|
|
2440
2430
|
class: "w-5 h-5",
|
|
2441
2431
|
"aria-hidden": "true"
|
|
2442
2432
|
})], 2)], 2),
|
|
2443
|
-
|
|
2433
|
+
n.showMarkAllRead && j(_) > 0 ? (S(), s("div", {
|
|
2444
2434
|
key: 0,
|
|
2445
|
-
class:
|
|
2446
|
-
}, [
|
|
2435
|
+
class: g(["px-5 py-2 border-b shrink-0 flex justify-end", j(m).border])
|
|
2436
|
+
}, [c("button", {
|
|
2447
2437
|
type: "button",
|
|
2448
|
-
onClick: l[2] ||= (...e) =>
|
|
2449
|
-
class:
|
|
2450
|
-
}, " Mark all as read ", 2)], 2)) :
|
|
2451
|
-
|
|
2452
|
-
class:
|
|
2438
|
+
onClick: l[2] ||= (...e) => j(b) && j(b)(...e),
|
|
2439
|
+
class: g(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", j(m).emeraldText])
|
|
2440
|
+
}, " Mark all as read ", 2)], 2)) : o("", !0),
|
|
2441
|
+
c("div", hr, [w.value === 0 ? (S(), s("div", gr, [f(j(se), {
|
|
2442
|
+
class: g(["w-10 h-10", j(m).illustration]),
|
|
2453
2443
|
"aria-hidden": "true"
|
|
2454
|
-
}, null, 8, ["class"]),
|
|
2444
|
+
}, null, 8, ["class"]), c("p", { class: g(["text-sm", j(m).mutedText]) }, A(n.emptyText), 3)])) : (S(), s("ul", {
|
|
2455
2445
|
key: 1,
|
|
2456
|
-
class:
|
|
2457
|
-
}, [(
|
|
2446
|
+
class: g(["divide-y", j(p) ? "divide-gray-800" : "divide-gray-100"])
|
|
2447
|
+
}, [(S(!0), s(e, null, E(j(h), (e) => (S(), s("li", { key: e.id }, [c("button", {
|
|
2458
2448
|
type: "button",
|
|
2459
|
-
onClick: (t) =>
|
|
2460
|
-
class:
|
|
2461
|
-
}, [
|
|
2462
|
-
class:
|
|
2449
|
+
onClick: (t) => T(e.id),
|
|
2450
|
+
class: g(["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 ? "" : j(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", j(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
|
|
2451
|
+
}, [c("span", {
|
|
2452
|
+
class: g(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? j(p) ? "bg-gray-700" : "bg-gray-300" : C[e.type ?? "info"]]),
|
|
2463
2453
|
"aria-hidden": "true"
|
|
2464
|
-
}, null, 2),
|
|
2454
|
+
}, null, 2), c("span", vr, [c("span", yr, [c("span", { class: g(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", j(m).primaryTextSoft]]) }, A(e.title), 3), e.time ? (S(), s("span", {
|
|
2465
2455
|
key: 0,
|
|
2466
|
-
class:
|
|
2467
|
-
},
|
|
2456
|
+
class: g(["text-xs shrink-0", j(m).dimText])
|
|
2457
|
+
}, A(e.time), 3)) : o("", !0)]), e.message ? (S(), s("span", {
|
|
2468
2458
|
key: 0,
|
|
2469
|
-
class:
|
|
2470
|
-
},
|
|
2471
|
-
], 10,
|
|
2459
|
+
class: g(["mt-0.5 block text-sm", j(m).mutedText])
|
|
2460
|
+
}, A(e.message), 3)) : o("", !0)])], 10, _r)]))), 128))], 2))])
|
|
2461
|
+
], 10, mr)) : o("", !0)]),
|
|
2472
2462
|
_: 1
|
|
2473
2463
|
})]));
|
|
2474
2464
|
}
|
|
2475
|
-
}),
|
|
2465
|
+
}), xr = ["disabled"], Sr = /* @__PURE__ */ p({
|
|
2476
2466
|
__name: "BaseChipButton",
|
|
2477
2467
|
props: {
|
|
2478
2468
|
size: { default: "sm" },
|
|
@@ -2484,55 +2474,55 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2484
2474
|
emits: ["click"],
|
|
2485
2475
|
setup(e, { emit: t }) {
|
|
2486
2476
|
let n = t, { isDark: r } = V();
|
|
2487
|
-
return (t, i) => (
|
|
2477
|
+
return (t, i) => (S(), s("button", {
|
|
2488
2478
|
type: "button",
|
|
2489
2479
|
disabled: e.disabled,
|
|
2490
|
-
class:
|
|
2480
|
+
class: g(["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", j(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"]]),
|
|
2491
2481
|
onClick: i[0] ||= (e) => n("click")
|
|
2492
|
-
}, [
|
|
2482
|
+
}, [D(t.$slots, "default")], 10, xr));
|
|
2493
2483
|
}
|
|
2494
|
-
}),
|
|
2484
|
+
}), Cr = /* @__PURE__ */ p({
|
|
2495
2485
|
__name: "BaseRemoveButton",
|
|
2496
2486
|
emits: ["click"],
|
|
2497
2487
|
setup(e, { emit: t }) {
|
|
2498
2488
|
let n = t;
|
|
2499
|
-
return (e, t) => (
|
|
2489
|
+
return (e, t) => (S(), s("button", {
|
|
2500
2490
|
type: "button",
|
|
2501
2491
|
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",
|
|
2502
2492
|
onClick: t[0] ||= (e) => n("click")
|
|
2503
2493
|
}, " × "));
|
|
2504
2494
|
}
|
|
2505
|
-
}),
|
|
2495
|
+
}), wr = { class: "relative flex h-2 w-2" }, Tr = {
|
|
2506
2496
|
key: 0,
|
|
2507
2497
|
class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
|
|
2508
2498
|
"aria-hidden": "true"
|
|
2509
|
-
},
|
|
2499
|
+
}, Er = /* @__PURE__ */ p({
|
|
2510
2500
|
__name: "BaseStatusPill",
|
|
2511
2501
|
props: {
|
|
2512
2502
|
status: {},
|
|
2513
2503
|
label: {}
|
|
2514
2504
|
},
|
|
2515
2505
|
setup(e) {
|
|
2516
|
-
let t = e, { isDark: n } = V(),
|
|
2506
|
+
let t = e, { isDark: n } = V(), r = i(() => {
|
|
2517
2507
|
switch (t.status) {
|
|
2518
2508
|
case "ok": return n.value ? "bg-emerald-500/10 text-emerald-400" : "bg-emerald-50 text-emerald-700";
|
|
2519
2509
|
case "error": return n.value ? "bg-red-500/10 text-red-400" : "bg-red-50 text-red-700";
|
|
2520
2510
|
default: return n.value ? "bg-gray-700 text-gray-400" : "bg-gray-100 text-gray-500";
|
|
2521
2511
|
}
|
|
2522
|
-
}),
|
|
2512
|
+
}), a = i(() => {
|
|
2523
2513
|
switch (t.status) {
|
|
2524
2514
|
case "ok": return "bg-emerald-500";
|
|
2525
2515
|
case "error": return "bg-red-500";
|
|
2526
2516
|
default: return "bg-gray-400";
|
|
2527
2517
|
}
|
|
2528
2518
|
});
|
|
2529
|
-
return (t, n) => (
|
|
2519
|
+
return (t, n) => (S(), s("div", { class: g(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [c("span", wr, [e.status === "ok" ? (S(), s("span", Tr)) : o("", !0), c("span", { class: g(["relative inline-flex rounded-full h-2 w-2", a.value]) }, null, 2)]), d(" " + A(e.label), 1)], 2));
|
|
2530
2520
|
}
|
|
2531
|
-
}),
|
|
2521
|
+
}), Dr = { class: "text-sm font-medium" }, Or = [
|
|
2532
2522
|
"accept",
|
|
2533
2523
|
"multiple",
|
|
2534
2524
|
"disabled"
|
|
2535
|
-
],
|
|
2525
|
+
], kr = /* @__PURE__ */ p({
|
|
2536
2526
|
__name: "BaseFileDropzone",
|
|
2537
2527
|
props: {
|
|
2538
2528
|
label: {},
|
|
@@ -2549,53 +2539,53 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2549
2539
|
},
|
|
2550
2540
|
emits: ["files"],
|
|
2551
2541
|
setup(e, { emit: t }) {
|
|
2552
|
-
let n = e, r = t, { isDark: i } = V(),
|
|
2542
|
+
let n = e, r = t, { isDark: i } = V(), a = T(!1);
|
|
2553
2543
|
function l(e) {
|
|
2554
2544
|
let t = e.target, n = Array.from(t.files ?? []);
|
|
2555
2545
|
t.value = "", n.length && r("files", n);
|
|
2556
2546
|
}
|
|
2557
2547
|
function u() {
|
|
2558
|
-
n.disabled || (
|
|
2548
|
+
n.disabled || (a.value = !0);
|
|
2559
2549
|
}
|
|
2560
2550
|
function d(e) {
|
|
2561
|
-
if (
|
|
2551
|
+
if (a.value = !1, n.disabled) return;
|
|
2562
2552
|
let t = Array.from(e.dataTransfer?.files ?? []);
|
|
2563
2553
|
t.length && r("files", n.multiple ? t : t.slice(0, 1));
|
|
2564
2554
|
}
|
|
2565
|
-
return (t, n) => (
|
|
2566
|
-
class:
|
|
2555
|
+
return (t, n) => (S(), s("label", {
|
|
2556
|
+
class: g(["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", a.value ? j(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : j(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"]]),
|
|
2567
2557
|
onDragover: L(u, ["prevent"]),
|
|
2568
|
-
onDragleave: n[0] ||= L((e) =>
|
|
2558
|
+
onDragleave: n[0] ||= L((e) => a.value = !1, ["prevent"]),
|
|
2569
2559
|
onDrop: L(d, ["prevent"])
|
|
2570
2560
|
}, [
|
|
2571
|
-
|
|
2561
|
+
D(t.$slots, "icon", {}, () => [n[1] ||= c("svg", {
|
|
2572
2562
|
class: "w-10 h-10",
|
|
2573
2563
|
fill: "none",
|
|
2574
2564
|
viewBox: "0 0 24 24",
|
|
2575
2565
|
stroke: "currentColor",
|
|
2576
2566
|
"stroke-width": "1.5",
|
|
2577
2567
|
"aria-hidden": "true"
|
|
2578
|
-
}, [
|
|
2568
|
+
}, [c("path", {
|
|
2579
2569
|
"stroke-linecap": "round",
|
|
2580
2570
|
"stroke-linejoin": "round",
|
|
2581
2571
|
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"
|
|
2582
2572
|
})], -1)]),
|
|
2583
|
-
|
|
2584
|
-
e.hint ? (
|
|
2573
|
+
c("p", Dr, A(e.label), 1),
|
|
2574
|
+
e.hint ? (S(), s("p", {
|
|
2585
2575
|
key: 0,
|
|
2586
|
-
class:
|
|
2587
|
-
},
|
|
2588
|
-
|
|
2576
|
+
class: g(["text-xs", j(i) ? "text-gray-500" : "text-gray-400"])
|
|
2577
|
+
}, A(e.hint), 3)) : o("", !0),
|
|
2578
|
+
c("input", {
|
|
2589
2579
|
type: "file",
|
|
2590
2580
|
class: "hidden",
|
|
2591
2581
|
accept: e.accept,
|
|
2592
2582
|
multiple: e.multiple,
|
|
2593
2583
|
disabled: e.disabled,
|
|
2594
2584
|
onChange: l
|
|
2595
|
-
}, null, 40,
|
|
2585
|
+
}, null, 40, Or)
|
|
2596
2586
|
], 34));
|
|
2597
2587
|
}
|
|
2598
|
-
}),
|
|
2588
|
+
}), Ar = /* @__PURE__ */ p({
|
|
2599
2589
|
__name: "BaseCodeBlock",
|
|
2600
2590
|
props: {
|
|
2601
2591
|
code: {},
|
|
@@ -2604,7 +2594,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2604
2594
|
maxHeightClass: { default: "" }
|
|
2605
2595
|
},
|
|
2606
2596
|
setup(e) {
|
|
2607
|
-
let t = e, { isDark: n } = V(),
|
|
2597
|
+
let t = e, { isDark: n } = V(), r = {
|
|
2608
2598
|
soft: {
|
|
2609
2599
|
dark: "bg-gray-800/70 text-gray-300",
|
|
2610
2600
|
light: "bg-gray-100 text-gray-700"
|
|
@@ -2616,17 +2606,17 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2616
2606
|
}, a = {
|
|
2617
2607
|
sm: "text-sm px-5 py-4 rounded-lg",
|
|
2618
2608
|
xs: "text-xs p-3 rounded-lg"
|
|
2619
|
-
},
|
|
2620
|
-
let e =
|
|
2609
|
+
}, o = i(() => {
|
|
2610
|
+
let e = r[t.variant];
|
|
2621
2611
|
return n.value ? e.dark : e.light;
|
|
2622
|
-
}), c =
|
|
2623
|
-
return (t, n) => (
|
|
2612
|
+
}), c = i(() => a[t.size]);
|
|
2613
|
+
return (t, n) => (S(), s("pre", { class: g(["font-mono overflow-auto", [
|
|
2624
2614
|
c.value,
|
|
2625
|
-
|
|
2615
|
+
o.value,
|
|
2626
2616
|
e.maxHeightClass
|
|
2627
|
-
]]) },
|
|
2617
|
+
]]) }, A(e.code), 3));
|
|
2628
2618
|
}
|
|
2629
|
-
}),
|
|
2619
|
+
}), jr = ["value", "type"], Q = /* @__PURE__ */ p({
|
|
2630
2620
|
__name: "BaseInput",
|
|
2631
2621
|
props: {
|
|
2632
2622
|
modelValue: { default: "" },
|
|
@@ -2643,14 +2633,14 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2643
2633
|
function r(e) {
|
|
2644
2634
|
n("update:modelValue", e.target.value);
|
|
2645
2635
|
}
|
|
2646
|
-
return (t, n) => (
|
|
2636
|
+
return (t, n) => (S(), s("input", {
|
|
2647
2637
|
value: e.modelValue,
|
|
2648
2638
|
type: e.type,
|
|
2649
|
-
class:
|
|
2639
|
+
class: g(["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"]]),
|
|
2650
2640
|
onInput: r
|
|
2651
|
-
}, null, 42,
|
|
2641
|
+
}, null, 42, jr));
|
|
2652
2642
|
}
|
|
2653
|
-
}),
|
|
2643
|
+
}), Mr = ["value"], Nr = /* @__PURE__ */ p({
|
|
2654
2644
|
__name: "BaseSelect",
|
|
2655
2645
|
props: {
|
|
2656
2646
|
modelValue: { default: void 0 },
|
|
@@ -2666,17 +2656,17 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2666
2656
|
function r(e) {
|
|
2667
2657
|
n("update:modelValue", e.target.value);
|
|
2668
2658
|
}
|
|
2669
|
-
return (t, n) => (
|
|
2659
|
+
return (t, n) => (S(), s("select", {
|
|
2670
2660
|
value: e.modelValue,
|
|
2671
|
-
class:
|
|
2661
|
+
class: g(["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"]]),
|
|
2672
2662
|
onChange: r
|
|
2673
|
-
}, [
|
|
2663
|
+
}, [D(t.$slots, "default")], 42, Mr));
|
|
2674
2664
|
}
|
|
2675
|
-
}),
|
|
2665
|
+
}), Pr = [
|
|
2676
2666
|
"disabled",
|
|
2677
2667
|
"aria-label",
|
|
2678
2668
|
"aria-expanded"
|
|
2679
|
-
],
|
|
2669
|
+
], Fr = ["aria-label"], Ir = ["aria-selected", "title"], Lr = ["disabled", "onClick"], Rr = /* @__PURE__ */ p({
|
|
2680
2670
|
__name: "BaseDropdown",
|
|
2681
2671
|
props: {
|
|
2682
2672
|
options: {},
|
|
@@ -2697,59 +2687,64 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2697
2687
|
},
|
|
2698
2688
|
emits: ["update:modelValue"],
|
|
2699
2689
|
setup(t, { emit: n }) {
|
|
2700
|
-
let
|
|
2690
|
+
let r = t, a = n, l = T(!1), u = T(null), d = i(() => r.options.find((e) => e.value === r.modelValue) ?? null), p = i(() => {
|
|
2691
|
+
let e = "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 ";
|
|
2692
|
+
if (r.triggerClass) return e + r.triggerClass;
|
|
2693
|
+
let t = r.size === "sm" ? "px-3 py-2" : "px-4 py-2.5";
|
|
2694
|
+
return e + "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 " + t;
|
|
2695
|
+
});
|
|
2701
2696
|
function m(e) {
|
|
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 ===
|
|
2697
|
+
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 === r.modelValue ? "bg-emerald-500 text-white" : "text-slate-700 dark:text-slate-200 hover:bg-slate-100 dark:hover:bg-slate-800"}`;
|
|
2703
2698
|
}
|
|
2704
|
-
function
|
|
2705
|
-
|
|
2699
|
+
function h() {
|
|
2700
|
+
r.disabled || (l.value = !l.value);
|
|
2706
2701
|
}
|
|
2707
|
-
function
|
|
2708
|
-
e.disabled || (
|
|
2702
|
+
function _(e) {
|
|
2703
|
+
e.disabled || (a("update:modelValue", e.value), l.value = !1);
|
|
2709
2704
|
}
|
|
2710
|
-
|
|
2705
|
+
Ft(() => {
|
|
2711
2706
|
l.value = !1;
|
|
2712
2707
|
});
|
|
2713
2708
|
function b(e) {
|
|
2714
2709
|
l.value && u.value && !u.value.contains(e.target) && (l.value = !1);
|
|
2715
2710
|
}
|
|
2716
|
-
return
|
|
2711
|
+
return y(() => document.addEventListener("click", b)), v(() => document.removeEventListener("click", b)), (n, r) => (S(), s("div", {
|
|
2717
2712
|
ref_key: "rootEl",
|
|
2718
2713
|
ref: u,
|
|
2719
|
-
class:
|
|
2720
|
-
}, [
|
|
2714
|
+
class: g(t.block ? "relative w-full" : "relative inline-block")
|
|
2715
|
+
}, [c("button", {
|
|
2721
2716
|
type: "button",
|
|
2722
|
-
class:
|
|
2717
|
+
class: g([p.value, t.block ? "w-full" : ""]),
|
|
2723
2718
|
disabled: t.disabled,
|
|
2724
2719
|
"aria-label": t.ariaLabel || void 0,
|
|
2725
2720
|
"aria-haspopup": "listbox",
|
|
2726
2721
|
"aria-expanded": l.value,
|
|
2727
|
-
onClick:
|
|
2728
|
-
}, [
|
|
2729
|
-
class:
|
|
2722
|
+
onClick: h
|
|
2723
|
+
}, [c("span", { class: g(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, A(d.value ? d.value.label : t.placeholder), 3), f(j(de), {
|
|
2724
|
+
class: g(["shrink-0 transition-transform", [t.chevronClass, l.value ? "rotate-180" : ""]]),
|
|
2730
2725
|
"aria-hidden": "true"
|
|
2731
|
-
}, null, 8, ["class"])], 10,
|
|
2726
|
+
}, null, 8, ["class"])], 10, Pr), l.value ? (S(), s("ul", {
|
|
2732
2727
|
key: 0,
|
|
2733
2728
|
role: "listbox",
|
|
2734
2729
|
"aria-label": t.ariaLabel || t.placeholder,
|
|
2735
2730
|
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"
|
|
2736
|
-
}, [(
|
|
2731
|
+
}, [(S(!0), s(e, null, E(t.options, (e) => (S(), s("li", {
|
|
2737
2732
|
key: String(e.value),
|
|
2738
2733
|
role: "option",
|
|
2739
2734
|
"aria-selected": e.value === t.modelValue,
|
|
2740
2735
|
title: e.title
|
|
2741
|
-
}, [
|
|
2736
|
+
}, [c("button", {
|
|
2742
2737
|
type: "button",
|
|
2743
2738
|
disabled: e.disabled,
|
|
2744
|
-
class:
|
|
2745
|
-
onClick: (t) =>
|
|
2746
|
-
},
|
|
2739
|
+
class: g(m(e)),
|
|
2740
|
+
onClick: (t) => _(e)
|
|
2741
|
+
}, A(e.label), 11, Lr)], 8, Ir))), 128))], 8, Fr)) : o("", !0)], 2));
|
|
2747
2742
|
}
|
|
2748
|
-
}),
|
|
2743
|
+
}), zr = ["role", "aria-label"], Br = [
|
|
2749
2744
|
"aria-pressed",
|
|
2750
2745
|
"title",
|
|
2751
2746
|
"onClick"
|
|
2752
|
-
],
|
|
2747
|
+
], Vr = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Hr = /* @__PURE__ */ p({
|
|
2753
2748
|
__name: "BaseSegmentedControl",
|
|
2754
2749
|
props: {
|
|
2755
2750
|
options: {},
|
|
@@ -2763,25 +2758,25 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2763
2758
|
},
|
|
2764
2759
|
emits: ["update:modelValue"],
|
|
2765
2760
|
setup(t, { emit: n }) {
|
|
2766
|
-
let
|
|
2761
|
+
let r = t, a = n, o = i(() => r.variant === "toolbar" ? "inline-flex h-9 divide-x divide-slate-300 dark:divide-slate-600 rounded-md border border-slate-300 dark:border-slate-600 overflow-hidden" : "inline-flex rounded border border-slate-300 dark:border-slate-600 overflow-hidden"), c = i(() => r.variant === "toolbar" ? "flex items-center px-3.5 text-xs font-semibold uppercase tracking-wide transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500" : `${r.variant === "wide" ? "px-4 py-2" : "px-3 py-2"} text-sm font-medium transition-colors cursor-pointer border-l first:border-l-0 border-slate-300 dark:border-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500`), l = i(() => r.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
|
|
2767
2762
|
function u(e) {
|
|
2768
|
-
let t = e.value ===
|
|
2769
|
-
return
|
|
2763
|
+
let t = e.value === r.modelValue;
|
|
2764
|
+
return r.optionClass ? r.optionClass(e, t) : t ? l.value : Vr;
|
|
2770
2765
|
}
|
|
2771
|
-
return (n, r) => (
|
|
2766
|
+
return (n, r) => (S(), s("div", {
|
|
2772
2767
|
role: t.ariaLabel ? "group" : void 0,
|
|
2773
2768
|
"aria-label": t.ariaLabel || void 0,
|
|
2774
|
-
class:
|
|
2775
|
-
}, [(
|
|
2769
|
+
class: g(o.value)
|
|
2770
|
+
}, [(S(!0), s(e, null, E(t.options, (e) => (S(), s("button", {
|
|
2776
2771
|
key: String(e.value),
|
|
2777
2772
|
type: "button",
|
|
2778
|
-
class:
|
|
2773
|
+
class: g([c.value, u(e)]),
|
|
2779
2774
|
"aria-pressed": e.value === t.modelValue,
|
|
2780
2775
|
title: e.title,
|
|
2781
2776
|
onClick: (t) => a("update:modelValue", e.value)
|
|
2782
|
-
},
|
|
2777
|
+
}, A(e.label), 11, Br))), 128))], 10, zr));
|
|
2783
2778
|
}
|
|
2784
|
-
}),
|
|
2779
|
+
}), Ur = { class: "w-full text-sm" }, Wr = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Gr = { class: "text-left" }, Kr = { key: 0 }, qr = ["colspan"], Jr = /* @__PURE__ */ p({
|
|
2785
2780
|
__name: "BaseTable",
|
|
2786
2781
|
props: {
|
|
2787
2782
|
columns: {},
|
|
@@ -2792,24 +2787,24 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2792
2787
|
emptyText: { default: "No rows." }
|
|
2793
2788
|
},
|
|
2794
2789
|
setup(t) {
|
|
2795
|
-
return (n, r) => (
|
|
2790
|
+
return (n, r) => (S(), s("table", Ur, [c("thead", Wr, [c("tr", Gr, [(S(!0), s(e, null, E(t.columns, (e, t) => (S(), s("th", {
|
|
2796
2791
|
key: t,
|
|
2797
|
-
class:
|
|
2798
|
-
},
|
|
2792
|
+
class: g(["px-4 py-3", e.align === "right" ? "text-right" : ""])
|
|
2793
|
+
}, A(e.label), 3))), 128))])]), c("tbody", null, [t.empty ? (S(), s("tr", Kr, [c("td", {
|
|
2799
2794
|
colspan: t.columns.length,
|
|
2800
2795
|
class: "px-4 py-12 text-center text-slate-500"
|
|
2801
|
-
}, [
|
|
2796
|
+
}, [D(n.$slots, "empty", {}, () => [d(A(t.emptyText), 1)])], 8, qr)])) : o("", !0), D(n.$slots, "default")])]));
|
|
2802
2797
|
}
|
|
2803
|
-
}),
|
|
2798
|
+
}), Yr = { class: "grid gap-3 md:grid-cols-2" }, Xr = {
|
|
2804
2799
|
key: 0,
|
|
2805
2800
|
class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
|
|
2806
|
-
},
|
|
2801
|
+
}, Zr = ["value"], Qr = {
|
|
2807
2802
|
key: 2,
|
|
2808
2803
|
class: "flex items-center gap-2 mt-4"
|
|
2809
|
-
},
|
|
2804
|
+
}, $r = ["checked", "onChange"], ei = { class: "text-sm text-slate-900 dark:text-slate-100" }, ti = {
|
|
2810
2805
|
key: 4,
|
|
2811
2806
|
class: "text-[11px] text-slate-400 mt-1"
|
|
2812
|
-
},
|
|
2807
|
+
}, ni = /* @__PURE__ */ p({
|
|
2813
2808
|
__name: "BaseSpecFields",
|
|
2814
2809
|
props: {
|
|
2815
2810
|
specs: {},
|
|
@@ -2818,7 +2813,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2818
2813
|
emits: ["update"],
|
|
2819
2814
|
setup(t, { emit: n }) {
|
|
2820
2815
|
let r = n;
|
|
2821
|
-
function
|
|
2816
|
+
function i(e, t) {
|
|
2822
2817
|
r("update", e, t.target.checked);
|
|
2823
2818
|
}
|
|
2824
2819
|
function l(e, t) {
|
|
@@ -2836,24 +2831,24 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2836
2831
|
let t = e.clipboardData?.getData("text") ?? "";
|
|
2837
2832
|
/^-?\d*$/.test(t.trim()) || e.preventDefault();
|
|
2838
2833
|
}
|
|
2839
|
-
return (n, f) => (
|
|
2840
|
-
f.type === "boolean" ?
|
|
2841
|
-
f.type === "select" ? (
|
|
2834
|
+
return (n, f) => (S(), s("div", Yr, [(S(!0), s(e, null, E(t.specs, (f) => (S(), s("div", { key: f.key }, [
|
|
2835
|
+
f.type === "boolean" ? o("", !0) : (S(), s("label", Xr, A(f.label), 1)),
|
|
2836
|
+
f.type === "select" ? (S(), a(Nr, {
|
|
2842
2837
|
key: 1,
|
|
2843
2838
|
modelValue: String(t.params[f.key] ?? ""),
|
|
2844
2839
|
"onUpdate:modelValue": (e) => r("update", f.key, e)
|
|
2845
2840
|
}, {
|
|
2846
|
-
default: F(() => [(
|
|
2841
|
+
default: F(() => [(S(!0), s(e, null, E(f.options ?? [], (e) => (S(), s("option", {
|
|
2847
2842
|
key: e,
|
|
2848
2843
|
value: e
|
|
2849
|
-
},
|
|
2844
|
+
}, A(e), 9, Zr))), 128))]),
|
|
2850
2845
|
_: 2
|
|
2851
|
-
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (
|
|
2846
|
+
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (S(), s("label", Qr, [c("input", {
|
|
2852
2847
|
checked: !!t.params[f.key],
|
|
2853
2848
|
type: "checkbox",
|
|
2854
2849
|
class: "h-4 w-4",
|
|
2855
|
-
onChange: (e) =>
|
|
2856
|
-
}, null, 40,
|
|
2850
|
+
onChange: (e) => i(f.key, e)
|
|
2851
|
+
}, null, 40, $r), c("span", ei, A(f.label), 1)])) : (S(), a(Q, {
|
|
2857
2852
|
key: 3,
|
|
2858
2853
|
modelValue: t.params[f.key],
|
|
2859
2854
|
type: "number",
|
|
@@ -2872,11 +2867,11 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2872
2867
|
"onPaste",
|
|
2873
2868
|
"onUpdate:modelValue"
|
|
2874
2869
|
])),
|
|
2875
|
-
f.help ? (
|
|
2876
|
-
|
|
2870
|
+
f.help ? (S(), s("p", ti, A(f.help), 1)) : o("", !0),
|
|
2871
|
+
D(n.$slots, "after", { spec: f })
|
|
2877
2872
|
]))), 128))]));
|
|
2878
2873
|
}
|
|
2879
|
-
}),
|
|
2874
|
+
}), ri = { class: "mt-1.5 space-y-0.5 px-1" }, ii = { class: "text-slate-400 dark:text-slate-500" }, ai = /* @__PURE__ */ p({
|
|
2880
2875
|
__name: "BaseStatBreakdown",
|
|
2881
2876
|
props: {
|
|
2882
2877
|
items: {},
|
|
@@ -2895,16 +2890,16 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2895
2890
|
function i(e) {
|
|
2896
2891
|
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";
|
|
2897
2892
|
}
|
|
2898
|
-
return (n, a) => (
|
|
2893
|
+
return (n, a) => (S(), s("div", ri, [(S(!0), s(e, null, E(t.items, (e) => (S(), s("div", {
|
|
2899
2894
|
key: e.label,
|
|
2900
2895
|
class: "flex items-center justify-between text-[11px]"
|
|
2901
|
-
}, [
|
|
2896
|
+
}, [c("span", ii, A(e.label), 1), c("span", { class: g(["font-mono tabular-nums font-medium", i(e.value)]) }, A(r(e.value)), 3)]))), 128))]));
|
|
2902
2897
|
}
|
|
2903
|
-
}),
|
|
2898
|
+
}), oi = [
|
|
2904
2899
|
"disabled",
|
|
2905
2900
|
"title",
|
|
2906
2901
|
"aria-pressed"
|
|
2907
|
-
],
|
|
2902
|
+
], si = /* @__PURE__ */ p({
|
|
2908
2903
|
__name: "BaseFilterChip",
|
|
2909
2904
|
props: {
|
|
2910
2905
|
label: { default: "" },
|
|
@@ -2933,21 +2928,21 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2933
2928
|
red: "border-red-500 bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-500",
|
|
2934
2929
|
slate: "border-slate-600 bg-slate-600 text-white hover:bg-slate-700 focus-visible:ring-emerald-500"
|
|
2935
2930
|
};
|
|
2936
|
-
return (r, i) => (
|
|
2931
|
+
return (r, i) => (S(), s("button", {
|
|
2937
2932
|
type: "button",
|
|
2938
2933
|
disabled: e.disabled,
|
|
2939
2934
|
title: e.title,
|
|
2940
2935
|
"aria-pressed": e.active,
|
|
2941
|
-
class:
|
|
2942
|
-
}, [
|
|
2936
|
+
class: g(["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]])
|
|
2937
|
+
}, [D(r.$slots, "default", {}, () => [d(A(e.label), 1)])], 10, oi));
|
|
2943
2938
|
}
|
|
2944
|
-
}),
|
|
2939
|
+
}), ci = { class: "flex items-center justify-between mb-4" }, li = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, ui = {
|
|
2945
2940
|
key: 0,
|
|
2946
2941
|
class: "text-xs text-slate-500 dark:text-slate-400"
|
|
2947
|
-
},
|
|
2942
|
+
}, di = {
|
|
2948
2943
|
key: 0,
|
|
2949
2944
|
class: "inline-flex items-center gap-2 text-xs text-slate-500"
|
|
2950
|
-
},
|
|
2945
|
+
}, fi = { class: "grid gap-4 md:grid-cols-2" }, pi = { class: "md:col-span-2" }, mi = ["for"], hi = { class: "md:col-span-2" }, gi = ["for"], _i = { class: "text-[11px] text-slate-500 mt-1" }, vi = { class: "md:col-span-2" }, yi = ["for"], bi = { class: "md:col-span-2" }, xi = ["for"], Si = { class: "md:col-span-2" }, Ci = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", wi = /* @__PURE__ */ p({
|
|
2951
2946
|
__name: "BaseCredentialsForm",
|
|
2952
2947
|
props: {
|
|
2953
2948
|
title: {},
|
|
@@ -2973,16 +2968,16 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2973
2968
|
"load-error"
|
|
2974
2969
|
],
|
|
2975
2970
|
setup(t, { expose: n, emit: r }) {
|
|
2976
|
-
let
|
|
2971
|
+
let i = t, l = r, u = T(!1), p = T(!1), m = C({
|
|
2977
2972
|
keyId: "",
|
|
2978
2973
|
secretKey: "",
|
|
2979
|
-
baseUrl:
|
|
2980
|
-
dataUrl:
|
|
2974
|
+
baseUrl: i.defaults.baseUrl,
|
|
2975
|
+
dataUrl: i.defaults.dataUrl
|
|
2981
2976
|
});
|
|
2982
|
-
async function
|
|
2977
|
+
async function h() {
|
|
2983
2978
|
try {
|
|
2984
|
-
let e = await
|
|
2985
|
-
m.keyId = e.keyId ?? "", m.baseUrl = e.baseUrl ||
|
|
2979
|
+
let e = await i.fetchFn();
|
|
2980
|
+
m.keyId = e.keyId ?? "", m.baseUrl = e.baseUrl || i.defaults.baseUrl, m.dataUrl = e.dataUrl || i.defaults.dataUrl, m.secretKey = "", p.value = e.hasSecret;
|
|
2986
2981
|
} catch (e) {
|
|
2987
2982
|
l("load-error", e instanceof Error ? e.message : "");
|
|
2988
2983
|
}
|
|
@@ -2990,105 +2985,106 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
2990
2985
|
function _(e) {
|
|
2991
2986
|
return !e || !e.trim();
|
|
2992
2987
|
}
|
|
2993
|
-
async function
|
|
2994
|
-
if (!
|
|
2988
|
+
async function v() {
|
|
2989
|
+
if (!u.value) {
|
|
2995
2990
|
if (_(m.keyId)) {
|
|
2996
|
-
l("error",
|
|
2991
|
+
l("error", i.requiredKeyMessage);
|
|
2997
2992
|
return;
|
|
2998
2993
|
}
|
|
2999
2994
|
if (!p.value && _(m.secretKey)) {
|
|
3000
|
-
l("error",
|
|
2995
|
+
l("error", i.requiredSecretMessage);
|
|
3001
2996
|
return;
|
|
3002
2997
|
}
|
|
3003
2998
|
if (_(m.baseUrl) || _(m.dataUrl)) {
|
|
3004
2999
|
l("error", "Base URL and Data URL are required.");
|
|
3005
3000
|
return;
|
|
3006
3001
|
}
|
|
3007
|
-
|
|
3002
|
+
u.value = !0;
|
|
3008
3003
|
try {
|
|
3009
|
-
|
|
3004
|
+
let e = await i.updateFn({
|
|
3010
3005
|
keyId: m.keyId.trim(),
|
|
3011
3006
|
secretKey: _(m.secretKey) ? void 0 : m.secretKey.trim(),
|
|
3012
3007
|
baseUrl: m.baseUrl.trim(),
|
|
3013
3008
|
dataUrl: m.dataUrl.trim()
|
|
3014
|
-
})
|
|
3009
|
+
});
|
|
3010
|
+
p.value = e.hasSecret, m.secretKey = "", l("saved", i.savedMessage);
|
|
3015
3011
|
} catch (e) {
|
|
3016
3012
|
l("error", e instanceof Error ? e.message : "Failed to save");
|
|
3017
3013
|
} finally {
|
|
3018
|
-
|
|
3014
|
+
u.value = !1;
|
|
3019
3015
|
}
|
|
3020
3016
|
}
|
|
3021
3017
|
}
|
|
3022
|
-
return
|
|
3018
|
+
return y(h), n({ load: h }), (n, r) => (S(), a(ut, { class: "!p-6" }, {
|
|
3023
3019
|
default: F(() => [
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3020
|
+
c("div", ci, [c("div", null, [c("h2", li, A(t.title), 1), t.subtitle ? (S(), s("p", ui, A(t.subtitle), 1)) : o("", !0)]), u.value ? (S(), s("span", di, [f(dt, { class: "!h-4 !w-4" }), r[4] ||= d(" Saving… ", -1)])) : o("", !0)]),
|
|
3021
|
+
c("div", fi, [
|
|
3022
|
+
c("div", pi, [c("label", {
|
|
3027
3023
|
for: `${t.idPrefix}-key-id`,
|
|
3028
3024
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3029
|
-
},
|
|
3025
|
+
}, A(t.keyLabel), 9, mi), f(Q, {
|
|
3030
3026
|
id: `${t.idPrefix}-key-id`,
|
|
3031
3027
|
modelValue: m.keyId,
|
|
3032
3028
|
"onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
|
|
3033
3029
|
type: "text",
|
|
3034
3030
|
autocomplete: "off",
|
|
3035
3031
|
placeholder: t.keyPlaceholder,
|
|
3036
|
-
class:
|
|
3032
|
+
class: g(Ci)
|
|
3037
3033
|
}, null, 8, [
|
|
3038
3034
|
"id",
|
|
3039
3035
|
"modelValue",
|
|
3040
3036
|
"placeholder"
|
|
3041
3037
|
])]),
|
|
3042
|
-
|
|
3043
|
-
|
|
3038
|
+
c("div", hi, [
|
|
3039
|
+
c("label", {
|
|
3044
3040
|
for: `${t.idPrefix}-secret`,
|
|
3045
3041
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3046
|
-
},
|
|
3047
|
-
|
|
3042
|
+
}, A(t.secretLabel), 9, gi),
|
|
3043
|
+
f(Q, {
|
|
3048
3044
|
id: `${t.idPrefix}-secret`,
|
|
3049
3045
|
modelValue: m.secretKey,
|
|
3050
3046
|
"onUpdate:modelValue": r[1] ||= (e) => m.secretKey = e,
|
|
3051
3047
|
type: "password",
|
|
3052
3048
|
autocomplete: "new-password",
|
|
3053
3049
|
placeholder: p.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
|
|
3054
|
-
class:
|
|
3050
|
+
class: g(Ci)
|
|
3055
3051
|
}, null, 8, [
|
|
3056
3052
|
"id",
|
|
3057
3053
|
"modelValue",
|
|
3058
3054
|
"placeholder"
|
|
3059
3055
|
]),
|
|
3060
|
-
|
|
3056
|
+
c("p", _i, [p.value ? (S(), s(e, { key: 0 }, [d(A(t.secretSetHint), 1)], 64)) : D(n.$slots, "no-secret-hint", {}, () => [d(A(t.permissionsHint), 1)], void 0, 1)])
|
|
3061
3057
|
]),
|
|
3062
|
-
|
|
3063
|
-
|
|
3058
|
+
c("div", vi, [
|
|
3059
|
+
c("label", {
|
|
3064
3060
|
for: `${t.idPrefix}-base-url`,
|
|
3065
3061
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3066
|
-
}, "Base URL (trading)", 8,
|
|
3067
|
-
|
|
3062
|
+
}, "Base URL (trading)", 8, yi),
|
|
3063
|
+
f(Q, {
|
|
3068
3064
|
id: `${t.idPrefix}-base-url`,
|
|
3069
3065
|
modelValue: m.baseUrl,
|
|
3070
3066
|
"onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
|
|
3071
3067
|
type: "text",
|
|
3072
|
-
class:
|
|
3068
|
+
class: g(Ci)
|
|
3073
3069
|
}, null, 8, ["id", "modelValue"]),
|
|
3074
|
-
|
|
3070
|
+
D(n.$slots, "base-url-extra", { form: m })
|
|
3075
3071
|
]),
|
|
3076
|
-
|
|
3072
|
+
c("div", bi, [c("label", {
|
|
3077
3073
|
for: `${t.idPrefix}-data-url`,
|
|
3078
3074
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3079
|
-
}, "Data URL (market data)", 8,
|
|
3075
|
+
}, "Data URL (market data)", 8, xi), f(Q, {
|
|
3080
3076
|
id: `${t.idPrefix}-data-url`,
|
|
3081
3077
|
modelValue: m.dataUrl,
|
|
3082
3078
|
"onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
|
|
3083
3079
|
type: "text",
|
|
3084
|
-
class:
|
|
3080
|
+
class: g(Ci)
|
|
3085
3081
|
}, null, 8, ["id", "modelValue"])]),
|
|
3086
|
-
|
|
3087
|
-
color:
|
|
3082
|
+
c("div", Si, [f(Je, {
|
|
3083
|
+
color: j(U).GREEN,
|
|
3088
3084
|
description: t.saveLabel,
|
|
3089
|
-
isDisable:
|
|
3090
|
-
isLoading:
|
|
3091
|
-
onClick:
|
|
3085
|
+
isDisable: u.value,
|
|
3086
|
+
isLoading: u.value,
|
|
3087
|
+
onClick: v
|
|
3092
3088
|
}, null, 8, [
|
|
3093
3089
|
"color",
|
|
3094
3090
|
"description",
|
|
@@ -3096,21 +3092,21 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
3096
3092
|
"isLoading"
|
|
3097
3093
|
])])
|
|
3098
3094
|
]),
|
|
3099
|
-
|
|
3095
|
+
D(n.$slots, "footer")
|
|
3100
3096
|
]),
|
|
3101
3097
|
_: 3
|
|
3102
3098
|
}));
|
|
3103
3099
|
}
|
|
3104
|
-
}),
|
|
3100
|
+
}), Ti = {
|
|
3105
3101
|
key: 0,
|
|
3106
3102
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3107
|
-
},
|
|
3103
|
+
}, Ei = { class: "mb-3 flex flex-wrap items-center gap-2" }, Di = { class: "relative min-w-[200px] flex-1" }, Oi = ["placeholder"], ki = {
|
|
3108
3104
|
key: 0,
|
|
3109
3105
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3110
|
-
},
|
|
3106
|
+
}, Ai = {
|
|
3111
3107
|
key: 1,
|
|
3112
3108
|
class: "flex flex-wrap gap-2"
|
|
3113
|
-
},
|
|
3109
|
+
}, ji = ["title", "onClick"], Mi = "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", Ni = "\0all", Pi = /* @__PURE__ */ p({
|
|
3114
3110
|
__name: "BasePillPickerModal",
|
|
3115
3111
|
props: {
|
|
3116
3112
|
title: {},
|
|
@@ -3132,11 +3128,11 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
3132
3128
|
},
|
|
3133
3129
|
emits: ["pick", "close"],
|
|
3134
3130
|
setup(t, { emit: n }) {
|
|
3135
|
-
let
|
|
3136
|
-
value:
|
|
3137
|
-
label:
|
|
3138
|
-
}, ...
|
|
3139
|
-
return (n, r) => (
|
|
3131
|
+
let r = t, l = n, u = i(() => r.icon ?? be), d = T(""), p = T(Ni), m = i(() => r.groups && r.groups.length > 0 ? [{
|
|
3132
|
+
value: Ni,
|
|
3133
|
+
label: r.allLabel
|
|
3134
|
+
}, ...r.groups] : []), h = i(() => r.items.filter((e) => (p.value === Ni || e.group === p.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
|
|
3135
|
+
return (n, r) => (S(), a(Wt, {
|
|
3140
3136
|
title: t.title,
|
|
3141
3137
|
icon: u.value,
|
|
3142
3138
|
subtitle: t.subtitle,
|
|
@@ -3144,32 +3140,32 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
3144
3140
|
"max-width-class": t.maxWidthClass,
|
|
3145
3141
|
onCancel: r[4] ||= (e) => l("close")
|
|
3146
3142
|
}, {
|
|
3147
|
-
footer: F(() => [
|
|
3143
|
+
footer: F(() => [f(Kn, {
|
|
3148
3144
|
variant: "ghost",
|
|
3149
3145
|
label: t.closeText,
|
|
3150
3146
|
onClick: r[3] ||= (e) => l("close")
|
|
3151
3147
|
}, null, 8, ["label"])]),
|
|
3152
|
-
default: F(() => [t.items.length === 0 ? (
|
|
3153
|
-
|
|
3154
|
-
I(
|
|
3155
|
-
"onUpdate:modelValue": r[0] ||= (e) =>
|
|
3148
|
+
default: F(() => [t.items.length === 0 ? (S(), s("p", Ti, A(t.emptyMessage), 1)) : (S(), s(e, { key: 1 }, [c("div", Ei, [c("div", Di, [
|
|
3149
|
+
f(j(be), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
|
|
3150
|
+
I(c("input", {
|
|
3151
|
+
"onUpdate:modelValue": r[0] ||= (e) => d.value = e,
|
|
3156
3152
|
type: "text",
|
|
3157
3153
|
placeholder: t.searchPlaceholder,
|
|
3158
3154
|
autocomplete: "off",
|
|
3159
|
-
class:
|
|
3160
|
-
|
|
3155
|
+
class: g([
|
|
3156
|
+
Mi,
|
|
3161
3157
|
"w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
|
|
3162
3158
|
t.mono ? "font-mono" : ""
|
|
3163
3159
|
])
|
|
3164
|
-
}, null, 10,
|
|
3165
|
-
|
|
3160
|
+
}, null, 10, Oi), [[N, d.value]]),
|
|
3161
|
+
d.value ? (S(), s("button", {
|
|
3166
3162
|
key: 0,
|
|
3167
3163
|
type: "button",
|
|
3168
3164
|
"aria-label": "Clear the filter",
|
|
3169
3165
|
class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
|
|
3170
|
-
onClick: r[1] ||= (e) =>
|
|
3171
|
-
}, " ✕ ")) :
|
|
3172
|
-
]), m.value.length > 0 ? (
|
|
3166
|
+
onClick: r[1] ||= (e) => d.value = ""
|
|
3167
|
+
}, " ✕ ")) : o("", !0)
|
|
3168
|
+
]), m.value.length > 0 ? (S(), a(Hr, {
|
|
3173
3169
|
key: 0,
|
|
3174
3170
|
modelValue: p.value,
|
|
3175
3171
|
"onUpdate:modelValue": r[2] ||= (e) => p.value = e,
|
|
@@ -3179,13 +3175,13 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
3179
3175
|
"modelValue",
|
|
3180
3176
|
"options",
|
|
3181
3177
|
"aria-label"
|
|
3182
|
-
])) :
|
|
3178
|
+
])) : o("", !0)]), h.value.length === 0 ? (S(), s("p", ki, A(t.noMatchMessage), 1)) : (S(), s("div", Ai, [(S(!0), s(e, null, E(h.value, (e) => (S(), s("button", {
|
|
3183
3179
|
key: e.id,
|
|
3184
3180
|
type: "button",
|
|
3185
3181
|
title: e.title,
|
|
3186
|
-
class:
|
|
3182
|
+
class: g(["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" : ""]),
|
|
3187
3183
|
onClick: (t) => l("pick", e)
|
|
3188
|
-
},
|
|
3184
|
+
}, A(e.label), 11, ji))), 128))]))], 64))]),
|
|
3189
3185
|
_: 1
|
|
3190
3186
|
}, 8, [
|
|
3191
3187
|
"title",
|
|
@@ -3194,7 +3190,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
3194
3190
|
"max-width-class"
|
|
3195
3191
|
]));
|
|
3196
3192
|
}
|
|
3197
|
-
}),
|
|
3193
|
+
}), Fi = ["aria-label"], Ii = ["title"], Li = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, Ri = ["title"], zi = /* @__PURE__ */ p({
|
|
3198
3194
|
__name: "BaseBarDistribution",
|
|
3199
3195
|
props: {
|
|
3200
3196
|
bars: {},
|
|
@@ -3205,53 +3201,53 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
|
|
|
3205
3201
|
barClass: { default: "bg-emerald-500/80 dark:bg-emerald-400/80" }
|
|
3206
3202
|
},
|
|
3207
3203
|
setup(t) {
|
|
3208
|
-
let n = t,
|
|
3209
|
-
return (n, r) => (
|
|
3204
|
+
let n = t, r = i(() => Math.max(1, ...n.bars.map((e) => e.count))), a = (e) => Math.max(3, Math.round(e.count / r.value * n.maxBarHeight)), o = (e) => `${n.titlePrefix ? `${n.titlePrefix} ` : ""}${e.label}: ${e.count} ${n.countNoun}${e.count === 1 ? "" : "s"}`;
|
|
3205
|
+
return (n, r) => (S(), s("div", {
|
|
3210
3206
|
class: "flex items-end gap-1.5 overflow-x-auto pb-1",
|
|
3211
3207
|
role: "img",
|
|
3212
3208
|
"aria-label": t.ariaLabel
|
|
3213
|
-
}, [(
|
|
3209
|
+
}, [(S(!0), s(e, null, E(t.bars, (e) => (S(), s("div", {
|
|
3214
3210
|
key: e.label,
|
|
3215
3211
|
class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
|
|
3216
|
-
title:
|
|
3212
|
+
title: o(e)
|
|
3217
3213
|
}, [
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
class:
|
|
3221
|
-
style:
|
|
3214
|
+
c("span", Li, A(e.count), 1),
|
|
3215
|
+
c("div", {
|
|
3216
|
+
class: g(["w-full max-w-8 rounded-t", t.barClass]),
|
|
3217
|
+
style: _({ height: `${a(e)}px` })
|
|
3222
3218
|
}, null, 6),
|
|
3223
|
-
|
|
3219
|
+
c("span", {
|
|
3224
3220
|
class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
|
|
3225
3221
|
title: e.label
|
|
3226
|
-
},
|
|
3227
|
-
], 8,
|
|
3222
|
+
}, A(e.label), 9, Ri)
|
|
3223
|
+
], 8, Ii))), 128))], 8, Fi));
|
|
3228
3224
|
}
|
|
3229
3225
|
});
|
|
3230
3226
|
//#endregion
|
|
3231
3227
|
//#region src/composables/useDebounce.ts
|
|
3232
|
-
function
|
|
3233
|
-
let n =
|
|
3228
|
+
function Bi(e, t = 300) {
|
|
3229
|
+
let n = T(e.value), r = null;
|
|
3234
3230
|
return P(e, (e) => {
|
|
3235
3231
|
r && clearTimeout(r), r = setTimeout(() => {
|
|
3236
3232
|
n.value = e, r = null;
|
|
3237
3233
|
}, t);
|
|
3238
|
-
}),
|
|
3234
|
+
}), b(() => {
|
|
3239
3235
|
r &&= (clearTimeout(r), null);
|
|
3240
3236
|
}), n;
|
|
3241
3237
|
}
|
|
3242
3238
|
//#endregion
|
|
3243
3239
|
//#region src/composables/useToast.ts
|
|
3244
|
-
function
|
|
3245
|
-
let t =
|
|
3240
|
+
function Vi(e = 3e3) {
|
|
3241
|
+
let t = T(!1), n = T(""), r = T(K.SUCCESS), i = null;
|
|
3246
3242
|
function a() {
|
|
3247
3243
|
i &&= (clearTimeout(i), null);
|
|
3248
3244
|
}
|
|
3249
|
-
function o(o, s =
|
|
3245
|
+
function o(o, s = K.SUCCESS, c = e) {
|
|
3250
3246
|
n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
|
|
3251
3247
|
t.value = !1, i = null;
|
|
3252
3248
|
}, c);
|
|
3253
3249
|
}
|
|
3254
|
-
return
|
|
3250
|
+
return b(() => {
|
|
3255
3251
|
a();
|
|
3256
3252
|
}), {
|
|
3257
3253
|
showToast: t,
|
|
@@ -3262,8 +3258,8 @@ function Bi(e = 3e3) {
|
|
|
3262
3258
|
}
|
|
3263
3259
|
//#endregion
|
|
3264
3260
|
//#region src/composables/useQueryParamSync.ts
|
|
3265
|
-
function
|
|
3266
|
-
let e =
|
|
3261
|
+
function Hi() {
|
|
3262
|
+
let e = Ee(), t = De();
|
|
3267
3263
|
function n(t) {
|
|
3268
3264
|
let n = e.query[t];
|
|
3269
3265
|
return typeof n == "string" ? n : "";
|
|
@@ -3284,23 +3280,23 @@ function Vi() {
|
|
|
3284
3280
|
}
|
|
3285
3281
|
//#endregion
|
|
3286
3282
|
//#region src/composables/useFieldClasses.ts
|
|
3287
|
-
function
|
|
3288
|
-
let { isDark: e } = V(), t =
|
|
3289
|
-
function
|
|
3283
|
+
function Ui() {
|
|
3284
|
+
let { isDark: e } = V(), t = i(() => e.value ? "text-gray-300" : "text-gray-600"), n = i(() => 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");
|
|
3285
|
+
function r(t) {
|
|
3290
3286
|
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;
|
|
3291
3287
|
}
|
|
3292
3288
|
return {
|
|
3293
3289
|
label: t,
|
|
3294
3290
|
input: n,
|
|
3295
|
-
requiredInput:
|
|
3291
|
+
requiredInput: r
|
|
3296
3292
|
};
|
|
3297
3293
|
}
|
|
3298
3294
|
//#endregion
|
|
3299
3295
|
//#region src/composables/usePolling.ts
|
|
3300
|
-
function
|
|
3301
|
-
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o =
|
|
3296
|
+
function Wi(e, t, n = {}) {
|
|
3297
|
+
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = T(!1), s = !1;
|
|
3302
3298
|
function c() {
|
|
3303
|
-
a
|
|
3299
|
+
a === null && t !== null && (a = setInterval(() => void e(), t));
|
|
3304
3300
|
}
|
|
3305
3301
|
function l() {
|
|
3306
3302
|
a !== null && (clearInterval(a), a = null);
|
|
@@ -3320,24 +3316,24 @@ function Ui(e, t, n = {}) {
|
|
|
3320
3316
|
o.value = !1, l(), s = !0;
|
|
3321
3317
|
}
|
|
3322
3318
|
}
|
|
3323
|
-
return
|
|
3319
|
+
return y(() => {
|
|
3324
3320
|
u(), i && document.addEventListener("visibilitychange", f);
|
|
3325
|
-
}),
|
|
3321
|
+
}), x(() => {
|
|
3326
3322
|
d(), i && document.removeEventListener("visibilitychange", f);
|
|
3327
3323
|
}), {
|
|
3328
3324
|
start: u,
|
|
3329
3325
|
stop: d,
|
|
3330
|
-
active:
|
|
3326
|
+
active: w(o)
|
|
3331
3327
|
};
|
|
3332
3328
|
}
|
|
3333
3329
|
//#endregion
|
|
3334
3330
|
//#region src/enums/BaseBadgeEnum.ts
|
|
3335
|
-
var
|
|
3331
|
+
var Gi = /* @__PURE__ */ function(e) {
|
|
3336
3332
|
return e.WIN = "WIN", e.LOSE = "LOSE", e;
|
|
3337
3333
|
}({});
|
|
3338
3334
|
//#endregion
|
|
3339
3335
|
//#region src/utils/util.ts
|
|
3340
|
-
function
|
|
3336
|
+
function Ki(e) {
|
|
3341
3337
|
let t = "red";
|
|
3342
3338
|
switch (e) {
|
|
3343
3339
|
case R.ERROR:
|
|
@@ -3349,13 +3345,11 @@ function Gi(e) {
|
|
|
3349
3345
|
case R.INFO:
|
|
3350
3346
|
t = "gray";
|
|
3351
3347
|
break;
|
|
3352
|
-
case R.WARNING:
|
|
3353
|
-
t = "yellow";
|
|
3354
|
-
break;
|
|
3348
|
+
case R.WARNING: t = "yellow";
|
|
3355
3349
|
}
|
|
3356
3350
|
return t;
|
|
3357
3351
|
}
|
|
3358
|
-
function
|
|
3352
|
+
function qi(e) {
|
|
3359
3353
|
let t = "red";
|
|
3360
3354
|
switch (e) {
|
|
3361
3355
|
case H.GREEN:
|
|
@@ -3376,22 +3370,20 @@ function Ki(e) {
|
|
|
3376
3370
|
case H.GRAY:
|
|
3377
3371
|
t = "gray";
|
|
3378
3372
|
break;
|
|
3379
|
-
case H.NONE:
|
|
3380
|
-
t = "";
|
|
3381
|
-
break;
|
|
3373
|
+
case H.NONE: t = "";
|
|
3382
3374
|
}
|
|
3383
3375
|
return t;
|
|
3384
3376
|
}
|
|
3385
3377
|
//#endregion
|
|
3386
3378
|
//#region src/utils/httpColors.ts
|
|
3387
|
-
var
|
|
3379
|
+
var Ji = {
|
|
3388
3380
|
GET: "bg-blue-600",
|
|
3389
3381
|
POST: "bg-emerald-600",
|
|
3390
3382
|
PUT: "bg-amber-600",
|
|
3391
3383
|
DELETE: "bg-red-600",
|
|
3392
3384
|
PATCH: "bg-purple-600",
|
|
3393
3385
|
HEAD: "bg-gray-600"
|
|
3394
|
-
},
|
|
3386
|
+
}, Yi = {
|
|
3395
3387
|
GET: "bg-blue-500",
|
|
3396
3388
|
POST: "bg-green-500",
|
|
3397
3389
|
PUT: "bg-yellow-500",
|
|
@@ -3399,39 +3391,39 @@ var qi = {
|
|
|
3399
3391
|
PATCH: "bg-purple-500",
|
|
3400
3392
|
HEAD: "bg-gray-500"
|
|
3401
3393
|
};
|
|
3402
|
-
function Yi(e) {
|
|
3403
|
-
return e ? qi[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
3404
|
-
}
|
|
3405
3394
|
function Xi(e) {
|
|
3406
|
-
return e ? Ji[e.toUpperCase()] ?? "bg-gray-
|
|
3395
|
+
return e ? Ji[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
3407
3396
|
}
|
|
3408
3397
|
function Zi(e) {
|
|
3398
|
+
return e ? Yi[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
|
|
3399
|
+
}
|
|
3400
|
+
function Qi(e) {
|
|
3409
3401
|
let t = e ?? 0;
|
|
3410
3402
|
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";
|
|
3411
3403
|
}
|
|
3412
|
-
function
|
|
3404
|
+
function $i(e, t) {
|
|
3413
3405
|
let n = (e || "ANY").toUpperCase();
|
|
3414
3406
|
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";
|
|
3415
3407
|
}
|
|
3416
|
-
function
|
|
3408
|
+
function ea(e, t) {
|
|
3417
3409
|
let n = e ?? 200;
|
|
3418
3410
|
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";
|
|
3419
3411
|
}
|
|
3420
|
-
function
|
|
3412
|
+
function ta(e, t) {
|
|
3421
3413
|
let n = e ?? 200;
|
|
3422
3414
|
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";
|
|
3423
3415
|
}
|
|
3424
3416
|
//#endregion
|
|
3425
3417
|
//#region src/utils/kvRows.ts
|
|
3426
|
-
function
|
|
3418
|
+
function na(e) {
|
|
3427
3419
|
return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
|
|
3428
3420
|
}
|
|
3429
|
-
function
|
|
3421
|
+
function ra(e) {
|
|
3430
3422
|
return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
|
|
3431
3423
|
}
|
|
3432
3424
|
//#endregion
|
|
3433
3425
|
//#region src/utils/sanitizeHtml.ts
|
|
3434
|
-
var
|
|
3426
|
+
var ia = /* @__PURE__ */ new Set([
|
|
3435
3427
|
"A",
|
|
3436
3428
|
"B",
|
|
3437
3429
|
"STRONG",
|
|
@@ -3446,7 +3438,7 @@ var ra = /* @__PURE__ */ new Set([
|
|
|
3446
3438
|
"LI",
|
|
3447
3439
|
"SPAN",
|
|
3448
3440
|
"DIV"
|
|
3449
|
-
]),
|
|
3441
|
+
]), aa = /* @__PURE__ */ new Set([
|
|
3450
3442
|
"SCRIPT",
|
|
3451
3443
|
"STYLE",
|
|
3452
3444
|
"IFRAME",
|
|
@@ -3454,40 +3446,40 @@ var ra = /* @__PURE__ */ new Set([
|
|
|
3454
3446
|
"EMBED",
|
|
3455
3447
|
"NOSCRIPT",
|
|
3456
3448
|
"TEMPLATE"
|
|
3457
|
-
]),
|
|
3458
|
-
function
|
|
3449
|
+
]), oa = { A: /* @__PURE__ */ new Set(["href", "title"]) };
|
|
3450
|
+
function sa(e) {
|
|
3459
3451
|
let t = e.trim().toLowerCase();
|
|
3460
3452
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
|
|
3461
3453
|
}
|
|
3462
|
-
function
|
|
3454
|
+
function ca(e) {
|
|
3463
3455
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
3464
3456
|
let t = e, n = t.tagName.toUpperCase();
|
|
3465
|
-
if (!
|
|
3466
|
-
|
|
3457
|
+
if (!ia.has(n)) {
|
|
3458
|
+
aa.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
|
|
3467
3459
|
return;
|
|
3468
3460
|
}
|
|
3469
|
-
let r =
|
|
3461
|
+
let r = oa[n] ?? /* @__PURE__ */ new Set();
|
|
3470
3462
|
for (let e of Array.from(t.attributes)) {
|
|
3471
3463
|
if (!r.has(e.name.toLowerCase())) {
|
|
3472
3464
|
t.removeAttribute(e.name);
|
|
3473
3465
|
continue;
|
|
3474
3466
|
}
|
|
3475
|
-
n === "A" && e.name.toLowerCase() === "href" && !
|
|
3467
|
+
n === "A" && e.name.toLowerCase() === "href" && !sa(e.value) && t.removeAttribute(e.name);
|
|
3476
3468
|
}
|
|
3477
3469
|
n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
|
|
3478
|
-
for (let e of Array.from(t.childNodes))
|
|
3470
|
+
for (let e of Array.from(t.childNodes)) ca(e);
|
|
3479
3471
|
}
|
|
3480
|
-
function
|
|
3472
|
+
function la(e) {
|
|
3481
3473
|
if (!e) return "";
|
|
3482
3474
|
let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
|
|
3483
3475
|
if (!t) return "";
|
|
3484
|
-
for (let e of Array.from(t.childNodes))
|
|
3476
|
+
for (let e of Array.from(t.childNodes)) ca(e);
|
|
3485
3477
|
return t.innerHTML;
|
|
3486
3478
|
}
|
|
3487
3479
|
//#endregion
|
|
3488
3480
|
//#region src/utils/format.ts
|
|
3489
3481
|
var $ = "—";
|
|
3490
|
-
function
|
|
3482
|
+
function ua(e, t = 4) {
|
|
3491
3483
|
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
3492
3484
|
let n = typeof e == "string" ? Number(e) : e;
|
|
3493
3485
|
return isFinite(n) ? n.toLocaleString(void 0, {
|
|
@@ -3495,12 +3487,12 @@ function la(e, t = 4) {
|
|
|
3495
3487
|
maximumFractionDigits: t
|
|
3496
3488
|
}) : $;
|
|
3497
3489
|
}
|
|
3498
|
-
function
|
|
3490
|
+
function da(e) {
|
|
3499
3491
|
if (e == null || e === "") return $;
|
|
3500
3492
|
let t = new Date(e);
|
|
3501
3493
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
|
|
3502
3494
|
}
|
|
3503
|
-
function
|
|
3495
|
+
function fa(e) {
|
|
3504
3496
|
return new Date(e).toLocaleString(void 0, {
|
|
3505
3497
|
month: "short",
|
|
3506
3498
|
day: "numeric",
|
|
@@ -3508,13 +3500,13 @@ function da(e) {
|
|
|
3508
3500
|
minute: "2-digit"
|
|
3509
3501
|
});
|
|
3510
3502
|
}
|
|
3511
|
-
function
|
|
3503
|
+
function pa(e) {
|
|
3512
3504
|
return new Date(e).toLocaleDateString(void 0, {
|
|
3513
3505
|
month: "short",
|
|
3514
3506
|
day: "numeric"
|
|
3515
3507
|
});
|
|
3516
3508
|
}
|
|
3517
|
-
function
|
|
3509
|
+
function ma(e) {
|
|
3518
3510
|
try {
|
|
3519
3511
|
return new Date(e).toLocaleString(void 0, {
|
|
3520
3512
|
year: "numeric",
|
|
@@ -3530,7 +3522,7 @@ function pa(e) {
|
|
|
3530
3522
|
return String(e);
|
|
3531
3523
|
}
|
|
3532
3524
|
}
|
|
3533
|
-
function
|
|
3525
|
+
function ha(e) {
|
|
3534
3526
|
if (!isFinite(e) || e === 0) return e.toFixed(2);
|
|
3535
3527
|
let t = Math.abs(e), n = 2;
|
|
3536
3528
|
return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
|
|
@@ -3538,13 +3530,13 @@ function ma(e) {
|
|
|
3538
3530
|
maximumFractionDigits: n
|
|
3539
3531
|
});
|
|
3540
3532
|
}
|
|
3541
|
-
function
|
|
3533
|
+
function ga(e, t = 2) {
|
|
3542
3534
|
return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
|
|
3543
3535
|
}
|
|
3544
|
-
function
|
|
3536
|
+
function _a(e) {
|
|
3545
3537
|
return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
|
|
3546
3538
|
}
|
|
3547
|
-
function
|
|
3539
|
+
function va(e) {
|
|
3548
3540
|
if (e == null || e === "") return $;
|
|
3549
3541
|
let t = new Date(e);
|
|
3550
3542
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -3553,7 +3545,7 @@ function _a(e) {
|
|
|
3553
3545
|
day: "numeric"
|
|
3554
3546
|
});
|
|
3555
3547
|
}
|
|
3556
|
-
function
|
|
3548
|
+
function ya(e) {
|
|
3557
3549
|
if (e == null || e === "") return $;
|
|
3558
3550
|
let t = new Date(e);
|
|
3559
3551
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -3564,22 +3556,22 @@ function va(e) {
|
|
|
3564
3556
|
minute: "2-digit"
|
|
3565
3557
|
});
|
|
3566
3558
|
}
|
|
3567
|
-
function
|
|
3559
|
+
function ba(e) {
|
|
3568
3560
|
if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
|
|
3569
3561
|
let t = e / 1e3, n = t < 1 ? 3 : 2;
|
|
3570
3562
|
return `= ${t.toFixed(n)} s`;
|
|
3571
3563
|
}
|
|
3572
|
-
function ba(e) {
|
|
3573
|
-
return e ? e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB` : "";
|
|
3574
|
-
}
|
|
3575
3564
|
function xa(e) {
|
|
3565
|
+
return e ? e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1048576).toFixed(1)} MB` : "";
|
|
3566
|
+
}
|
|
3567
|
+
function Sa(e) {
|
|
3576
3568
|
try {
|
|
3577
3569
|
return JSON.stringify(JSON.parse(e), null, 2);
|
|
3578
3570
|
} catch {
|
|
3579
3571
|
return e;
|
|
3580
3572
|
}
|
|
3581
3573
|
}
|
|
3582
|
-
function
|
|
3574
|
+
function Ca(e) {
|
|
3583
3575
|
if (e == null) return "";
|
|
3584
3576
|
if (typeof e == "string") return e;
|
|
3585
3577
|
try {
|
|
@@ -3588,14 +3580,14 @@ function Sa(e) {
|
|
|
3588
3580
|
return String(e);
|
|
3589
3581
|
}
|
|
3590
3582
|
}
|
|
3591
|
-
function
|
|
3583
|
+
function wa(e, t = 2) {
|
|
3592
3584
|
if (e == null || !isFinite(e)) return $;
|
|
3593
3585
|
let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
|
|
3594
3586
|
return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
|
|
3595
3587
|
}
|
|
3596
3588
|
//#endregion
|
|
3597
3589
|
//#region src/utils/validate.ts
|
|
3598
|
-
function
|
|
3590
|
+
function Ta(e) {
|
|
3599
3591
|
let t = (e ?? "").trim();
|
|
3600
3592
|
if (!t) return !1;
|
|
3601
3593
|
try {
|
|
@@ -3605,7 +3597,7 @@ function wa(e) {
|
|
|
3605
3597
|
return !1;
|
|
3606
3598
|
}
|
|
3607
3599
|
}
|
|
3608
|
-
function
|
|
3600
|
+
function Ea(e) {
|
|
3609
3601
|
if (!e.trim()) return !0;
|
|
3610
3602
|
try {
|
|
3611
3603
|
return JSON.parse(e), !0;
|
|
@@ -3613,7 +3605,7 @@ function Ta(e) {
|
|
|
3613
3605
|
return !1;
|
|
3614
3606
|
}
|
|
3615
3607
|
}
|
|
3616
|
-
function
|
|
3608
|
+
function Da(e) {
|
|
3617
3609
|
if (!e.trim()) return !0;
|
|
3618
3610
|
try {
|
|
3619
3611
|
return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
|
|
@@ -3621,7 +3613,7 @@ function Ea(e) {
|
|
|
3621
3613
|
return !1;
|
|
3622
3614
|
}
|
|
3623
3615
|
}
|
|
3624
|
-
function
|
|
3616
|
+
function Oa(e) {
|
|
3625
3617
|
if (!e.trim()) return !0;
|
|
3626
3618
|
let t = e.replace(/\s+/g, "");
|
|
3627
3619
|
if (!t) return !0;
|
|
@@ -3634,7 +3626,7 @@ function Da(e) {
|
|
|
3634
3626
|
}
|
|
3635
3627
|
//#endregion
|
|
3636
3628
|
//#region src/utils/specForm.ts
|
|
3637
|
-
function
|
|
3629
|
+
function ka(e, t) {
|
|
3638
3630
|
let n = {};
|
|
3639
3631
|
if (!e) return n;
|
|
3640
3632
|
for (let r of e) {
|
|
@@ -3643,7 +3635,7 @@ function Oa(e, t) {
|
|
|
3643
3635
|
}
|
|
3644
3636
|
return n;
|
|
3645
3637
|
}
|
|
3646
|
-
function
|
|
3638
|
+
function Aa(e, t) {
|
|
3647
3639
|
if (!e) return null;
|
|
3648
3640
|
for (let n of e) if (n.type === "decimal" || n.type === "integer") {
|
|
3649
3641
|
let e = t[n.key], r = e === "" || e == null;
|
|
@@ -3654,7 +3646,7 @@ function ka(e, t) {
|
|
|
3654
3646
|
}
|
|
3655
3647
|
//#endregion
|
|
3656
3648
|
//#region src/utils/pnl.ts
|
|
3657
|
-
function
|
|
3649
|
+
function ja(e) {
|
|
3658
3650
|
if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
|
|
3659
3651
|
pnlUsd: null,
|
|
3660
3652
|
pnlPct: null
|
|
@@ -3669,4 +3661,4 @@ function Aa(e) {
|
|
|
3669
3661
|
};
|
|
3670
3662
|
}
|
|
3671
3663
|
//#endregion
|
|
3672
|
-
export { R as AlertEnum,
|
|
3664
|
+
export { R as AlertEnum, Yn as BaseActionButton, Ne as BaseAlert, Bn as BaseAppLayout, Fe as BaseBadge, Gi as BaseBadgeEnum, zi as BaseBarDistribution, ze as BaseBreadcrumb, Je as BaseButton, U as BaseButtonEnum, W as BaseButtonSizeEnum, Sr as BaseChipButton, Ar as BaseCodeBlock, qt as BaseCollapsibleSection, Zt as BaseConfirmModal, Zn as BaseCopyButton, wi as BaseCredentialsForm, Rr as BaseDropdown, Ln as BaseEntityPickerModal, kr as BaseFileDropzone, si as BaseFilterChip, tr as BaseGoogleSignInButton, Q as BaseInput, $e as BaseLine, et as BaseLoginEnum, pr as BaseLoginForm, nt as BaseLogo, G as BaseLogoEnum, lt as BaseModal, rt as BaseModalEnum, Wt as BaseModalShell, an as BaseNotFoundPage, br as BaseNotificationPanel, Un as BasePageHeader, Pi as BasePillPickerModal, Cr as BaseRemoveButton, ut as BaseRow, Hr as BaseSegmentedControl, Nr as BaseSelect, wn as BaseSidebar, ni as BaseSpecFields, dt as BaseSpinner, ai as BaseStatBreakdown, Er as BaseStatusPill, Jr as BaseTable, tn as BaseTextInputModal, mt as BaseToast, K as BaseToastEnum, Kn as BaseToolbarButton, gt as ColoredSquares, H as ColorsEnums, yt as EarningsCard, wt as EuroAmount, Ye as LineEnum, kt as Pagination, q as PositioningEnum, Pt as TrendArrow, ka as buildSpecParams, ja as computePnL, Aa as firstInvalidNumericSpec, xa as fmtBytes, va as fmtCalendarDate, ya as fmtCalendarDateTime, da as fmtDate, pa as fmtDateShort, fa as fmtDateTime, ma as fmtDateTimeMs, wa as fmtDuration, ba as fmtMsAsSeconds, ua as fmtNumber, ga as fmtPct, ha as fmtPrice, _a as fmtUsd, Sa as formatJson, Ki as getBaseColor, qi as getBaseColorOf, Ae as initTheme, sa as isSafeHref, Ta as isValidAbsoluteUrl, Oa as isValidBase64, Ea as isValidJson, Da as isValidXml, Zi as methodBadgeBright, Xi as methodBadgeSolid, $i as methodBadgeTinted, ra as rowKeyMissing, na as rowValueMissing, la as sanitizeHtml, ea as statusBadgeSoft, Qi as statusBadgeSolid, ta as statusBadgeTinted, Ca as stringifyValue, Bi as useDebouncedRef, Ft as useEscapeKey, Ui as useFieldClasses, sn as useMobileSidebar, pn as useNotifications, Wi as usePolling, Hi as useQueryParamSync, dn as useSidebarCollapse, V as useTheme, J as useThemeClasses, Vi as useToast };
|