mgv-backoffice 1.47.0 → 1.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2099 -2072
- package/dist/components/BaseBooleanIcon.vue.d.ts +14 -0
- package/dist/components/BaseDetailList.vue.d.ts +13 -1
- package/dist/components/BasePageHeader.vue.d.ts +1 -1
- package/dist/components/BasePhotoViewer.vue.d.ts +24 -0
- package/dist/components/BaseRating.vue.d.ts +9 -0
- package/dist/components/BaseRowButton.vue.d.ts +18 -0
- package/dist/components/BaseSelect.vue.d.ts +15 -3
- package/dist/components/BaseSidebarUser.vue.d.ts +3 -0
- package/dist/components/BaseStatCard.vue.d.ts +6 -4
- package/dist/components/BaseTextarea.vue.d.ts +12 -0
- package/dist/composables/useRefreshOnReturn.d.ts +7 -0
- package/dist/index.d.ts +8 -1
- package/dist/types/photoViewer.d.ts +6 -0
- package/dist/ui-lib.css +1 -1
- package/dist/ui-lib.js +1050 -851
- package/dist/ui-lib.umd.cjs +1 -1
- package/dist/utils/format.d.ts +9 -0
- package/package.json +1 -1
- package/src/components/BaseBadge.vue +7 -7
- package/src/components/BaseBooleanIcon.vue +22 -0
- package/src/components/BaseDetailList.vue +50 -47
- package/src/components/BaseField.label.test.ts +30 -0
- package/src/components/BaseField.vue +19 -3
- package/src/components/BasePageHeader.test.ts +29 -0
- package/src/components/BasePageHeader.vue +137 -131
- package/src/components/BasePhotoViewer.test.ts +22 -0
- package/src/components/BasePhotoViewer.vue +93 -0
- package/src/components/BaseRating.test.ts +19 -0
- package/src/components/BaseRating.vue +21 -0
- package/src/components/BaseRowButton.vue +24 -0
- package/src/components/BaseSelect.vue +4 -2
- package/src/components/BaseSidebarUser.vue +85 -75
- package/src/components/BaseStatCard.vue +11 -3
- package/src/components/BaseTextarea.test.ts +17 -0
- package/src/components/BaseTextarea.vue +24 -0
- package/src/composables/useRefreshOnReturn.test.ts +47 -0
- package/src/composables/useRefreshOnReturn.ts +24 -0
- package/src/index.ts +10 -0
- package/src/style.css +132 -36
- package/src/types/photoViewer.ts +6 -0
- package/src/utils/format.test.ts +342 -322
- package/src/utils/format.ts +23 -0
package/dist/ui-lib.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { Fragment as e, Teleport as t, Text as n, Transition as r, cloneVNode as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as u, createStaticVNode as d, createTextVNode as f, createVNode as p, defineComponent as m, effectScope as h, getCurrentScope as g, guardReactiveProps as _,
|
|
2
|
-
import { ArrowDownIcon as
|
|
3
|
-
import { HomeIcon as
|
|
4
|
-
import { RouterLink as
|
|
5
|
-
import { VueDatePicker as
|
|
1
|
+
import { Fragment as e, Teleport as t, Text as n, Transition as r, cloneVNode as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as u, createStaticVNode as d, createTextVNode as f, createVNode as p, defineComponent as m, effectScope as h, getCurrentScope as g, guardReactiveProps as _, mergeModels as v, mergeProps as y, nextTick as b, normalizeClass as x, normalizeProps as S, normalizeStyle as C, onBeforeUnmount as w, onMounted as T, onScopeDispose as E, onUnmounted as D, openBlock as O, reactive as ee, readonly as k, ref as A, renderList as j, renderSlot as M, resolveComponent as te, resolveDynamicComponent as N, toDisplayString as P, unref as F, useId as ne, useModel as re, useSlots as ie, vModelCheckbox as ae, vModelDynamic as oe, vModelText as se, vShow as ce, watch as le, withCtx as I, withDirectives as L, withKeys as ue, withModifiers as R } from "vue";
|
|
2
|
+
import { ArrowDownIcon as de, ArrowRightStartOnRectangleIcon as fe, ArrowUpIcon as pe, Bars3Icon as me, BellIcon as he, CheckCircleIcon as ge, CheckIcon as _e, ChevronDoubleLeftIcon as ve, ChevronDoubleRightIcon as ye, ChevronDownIcon as be, ChevronLeftIcon as xe, ChevronRightIcon as Se, ClipboardDocumentCheckIcon as Ce, ClipboardDocumentIcon as we, DocumentDuplicateIcon as Te, ExclamationCircleIcon as Ee, ExclamationTriangleIcon as De, FolderIcon as Oe, InformationCircleIcon as ke, MagnifyingGlassIcon as Ae, MinusIcon as je, MoonIcon as Me, StarIcon as Ne, SunIcon as Pe, XMarkIcon as z } from "@heroicons/vue/24/outline";
|
|
3
|
+
import { HomeIcon as Fe, StarIcon as Ie } from "@heroicons/vue/24/solid";
|
|
4
|
+
import { RouterLink as Le, useRoute as Re, useRouter as ze } from "vue-router";
|
|
5
|
+
import { VueDatePicker as Be } from "@vuepic/vue-datepicker";
|
|
6
6
|
//#region src/enums/AlertEnum.ts
|
|
7
7
|
var B = /* @__PURE__ */ function(e) {
|
|
8
8
|
return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
|
|
9
|
-
}({}), V =
|
|
10
|
-
function
|
|
11
|
-
if (
|
|
9
|
+
}({}), V = A(!1), Ve = !1, H = "mgv-theme";
|
|
10
|
+
function He(e) {
|
|
11
|
+
if (Ve) {
|
|
12
12
|
e !== H && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${H}". Call initTheme({ storageKey }) before mounting any component.`);
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
|
-
if (
|
|
15
|
+
if (Ve = !0, H = e, typeof window < "u") {
|
|
16
16
|
let e = window.localStorage?.getItem(H);
|
|
17
17
|
e ? V.value = e === "dark" : typeof window.matchMedia == "function" && (V.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
18
18
|
}
|
|
19
19
|
typeof document < "u" && h(!0).run(() => {
|
|
20
|
-
|
|
20
|
+
le(V, (e) => {
|
|
21
21
|
document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(H, e ? "dark" : "light");
|
|
22
22
|
}, { immediate: !0 });
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
-
function
|
|
26
|
-
|
|
25
|
+
function Ue(e) {
|
|
26
|
+
He(e?.storageKey ?? H);
|
|
27
27
|
}
|
|
28
28
|
function U(e) {
|
|
29
|
-
|
|
29
|
+
He(e?.storageKey ?? H);
|
|
30
30
|
function t() {
|
|
31
31
|
V.value = !V.value;
|
|
32
32
|
}
|
|
@@ -37,10 +37,10 @@ function U(e) {
|
|
|
37
37
|
}
|
|
38
38
|
//#endregion
|
|
39
39
|
//#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
|
|
40
|
-
var
|
|
40
|
+
var We = { class: "min-w-0 flex-1" }, Ge = {
|
|
41
41
|
key: 0,
|
|
42
42
|
class: "font-medium"
|
|
43
|
-
},
|
|
43
|
+
}, Ke = /* @__PURE__ */ m({
|
|
44
44
|
__name: "BaseAlert",
|
|
45
45
|
props: {
|
|
46
46
|
title: { default: "" },
|
|
@@ -70,10 +70,10 @@ var ze = { class: "min-w-0 flex-1" }, Be = {
|
|
|
70
70
|
}
|
|
71
71
|
}, i = a(() => n.value ? r[t.color].dark : r[t.color].light), u = a(() => {
|
|
72
72
|
switch (t.color) {
|
|
73
|
-
case B.SUCCESS: return
|
|
74
|
-
case B.WARNING: return
|
|
75
|
-
case B.INFO: return
|
|
76
|
-
default: return
|
|
73
|
+
case B.SUCCESS: return ge;
|
|
74
|
+
case B.WARNING: return De;
|
|
75
|
+
case B.INFO: return ke;
|
|
76
|
+
default: return Ee;
|
|
77
77
|
}
|
|
78
78
|
}), d = a(() => {
|
|
79
79
|
switch (t.color) {
|
|
@@ -83,39 +83,39 @@ var ze = { class: "min-w-0 flex-1" }, Be = {
|
|
|
83
83
|
default: return "text-red-500";
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
|
-
return (t, n) => (
|
|
86
|
+
return (t, n) => (O(), c("div", {
|
|
87
87
|
role: "alert",
|
|
88
|
-
class:
|
|
89
|
-
}, [(
|
|
90
|
-
class:
|
|
88
|
+
class: x(["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", i.value]])
|
|
89
|
+
}, [(O(), o(N(u.value), {
|
|
90
|
+
class: x(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
|
|
91
91
|
"aria-hidden": "true"
|
|
92
|
-
}, null, 8, ["class"])), l("div",
|
|
92
|
+
}, null, 8, ["class"])), l("div", We, [e.title ? (O(), c("p", Ge, P(e.title), 1)) : s("", !0), M(t.$slots, "default")])], 2));
|
|
93
93
|
}
|
|
94
94
|
}), W = /* @__PURE__ */ function(e) {
|
|
95
95
|
return e.NONE = "NONE", e.RED = "RED", e.YELLOW = "YELLOW", e.BLACK = "BLACK", e.GRAY = "GRAY", e.GREEN = "GREEN", e.BLUE = "BLUE", e;
|
|
96
96
|
}({});
|
|
97
97
|
//#endregion
|
|
98
98
|
//#region src/utils/humanize.ts
|
|
99
|
-
function
|
|
99
|
+
function qe(e) {
|
|
100
100
|
return e == null ? "" : String(e).replace(/_/g, " ");
|
|
101
101
|
}
|
|
102
|
-
function
|
|
102
|
+
function Je(t, r = []) {
|
|
103
103
|
return t.map((t) => {
|
|
104
|
-
if (t.type === n && typeof t.children == "string") return f(
|
|
104
|
+
if (t.type === n && typeof t.children == "string") return f(qe(t.children));
|
|
105
105
|
if (t.type === e && Array.isArray(t.children)) {
|
|
106
106
|
let e = i(t);
|
|
107
|
-
return e.children =
|
|
107
|
+
return e.children = Je(t.children, r), e;
|
|
108
108
|
}
|
|
109
109
|
if (typeof t.type == "string" && r.includes(t.type)) {
|
|
110
110
|
let e = i(t);
|
|
111
|
-
return typeof t.children == "string" ? e.children =
|
|
111
|
+
return typeof t.children == "string" ? e.children = qe(t.children) : Array.isArray(t.children) && (e.children = Je(t.children, r)), e;
|
|
112
112
|
}
|
|
113
113
|
return t;
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
116
|
//#endregion
|
|
117
|
-
//#region src/components/BaseBadge.vue
|
|
118
|
-
var
|
|
117
|
+
//#region src/components/BaseBadge.vue
|
|
118
|
+
var Ye = /* @__PURE__ */ m({
|
|
119
119
|
__name: "BaseBadge",
|
|
120
120
|
props: {
|
|
121
121
|
color: {
|
|
@@ -128,27 +128,27 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
130
|
setup(e) {
|
|
131
|
-
let t =
|
|
132
|
-
[W.RED]: "bg-red-100 text-red-700 border-red-200",
|
|
133
|
-
[W.GREEN]: "bg-green-100 text-green-700 border-green-200",
|
|
134
|
-
[W.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
|
|
135
|
-
[W.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
|
|
136
|
-
[W.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
|
|
131
|
+
let t = ie(), n = a(() => !!t.default), r = () => Je(t.default?.() ?? []), i = e, o = {
|
|
132
|
+
[W.RED]: "bg-red-100 text-red-700 border-red-200 dark:bg-red-500/15 dark:text-red-300 dark:border-red-500/30",
|
|
133
|
+
[W.GREEN]: "bg-green-100 text-green-700 border-green-200 dark:bg-green-500/15 dark:text-green-300 dark:border-green-500/30",
|
|
134
|
+
[W.BLUE]: "bg-blue-100 text-blue-700 border-blue-200 dark:bg-blue-500/15 dark:text-blue-300 dark:border-blue-500/30",
|
|
135
|
+
[W.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200 dark:bg-yellow-500/15 dark:text-yellow-300 dark:border-yellow-500/30",
|
|
136
|
+
[W.GRAY]: "bg-gray-100 text-gray-700 border-gray-200 dark:bg-gray-500/15 dark:text-gray-300 dark:border-gray-500/30",
|
|
137
137
|
[W.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
|
|
138
|
-
[W.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
|
|
139
|
-
}, l = a(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && o[i.color] ||
|
|
140
|
-
return (e, t) => n.value ? (
|
|
138
|
+
[W.NONE]: "bg-gray-50 text-gray-600 border-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:border-gray-700"
|
|
139
|
+
}, l = o[W.RED], u = a(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && o[i.color] || l}${i.blink ? " animate-pulse motion-reduce:animate-none" : ""}`);
|
|
140
|
+
return (e, t) => n.value ? (O(), c("span", {
|
|
141
141
|
key: 0,
|
|
142
|
-
class:
|
|
142
|
+
class: x(u.value)
|
|
143
143
|
}, [p(r)], 2)) : s("", !0);
|
|
144
144
|
}
|
|
145
|
-
}),
|
|
145
|
+
}), Xe = {
|
|
146
146
|
class: "flex overflow-x-auto px-5 py-3 text-gray-700 border border-slate-200 rounded-xl bg-white shadow-sm dark:bg-slate-900 dark:border-slate-700",
|
|
147
147
|
"aria-label": "Breadcrumb"
|
|
148
|
-
},
|
|
148
|
+
}, Ze = { class: "inline-flex items-center whitespace-nowrap space-x-1 md:space-x-3" }, Qe = {
|
|
149
149
|
class: "inline-flex items-center",
|
|
150
150
|
style: { "margin-left": "0" }
|
|
151
|
-
},
|
|
151
|
+
}, $e = /* @__PURE__ */ m({
|
|
152
152
|
__name: "BaseBreadcrumb",
|
|
153
153
|
props: {
|
|
154
154
|
items: {
|
|
@@ -172,22 +172,22 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
172
172
|
}));
|
|
173
173
|
});
|
|
174
174
|
return (t, n) => {
|
|
175
|
-
let i =
|
|
176
|
-
return
|
|
175
|
+
let i = te("router-link");
|
|
176
|
+
return O(), c("nav", Xe, [l("ol", Ze, [l("li", Qe, [p(i, {
|
|
177
177
|
to: "/",
|
|
178
178
|
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"
|
|
179
179
|
}, {
|
|
180
|
-
default:
|
|
180
|
+
default: I(() => [p(F(Fe), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= f(" Home ", -1)]),
|
|
181
181
|
_: 1
|
|
182
|
-
})]), (
|
|
182
|
+
})]), (O(!0), c(e, null, j(r.value, (e, t) => (O(), c("li", {
|
|
183
183
|
key: t,
|
|
184
184
|
class: "inline-flex items-center",
|
|
185
185
|
style: { "margin-left": "0" }
|
|
186
|
-
}, [p(F(
|
|
186
|
+
}, [p(F(Se), { class: "h-4 w-4 text-gray-500" }), p(i, {
|
|
187
187
|
to: e.url,
|
|
188
188
|
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"
|
|
189
189
|
}, {
|
|
190
|
-
default:
|
|
190
|
+
default: I(() => [f(P(e.name), 1)]),
|
|
191
191
|
_: 2
|
|
192
192
|
}, 1032, ["to"])]))), 128))])]);
|
|
193
193
|
};
|
|
@@ -196,17 +196,17 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
196
196
|
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;
|
|
197
197
|
}({}), K = /* @__PURE__ */ function(e) {
|
|
198
198
|
return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
|
|
199
|
-
}({}),
|
|
199
|
+
}({}), et = [
|
|
200
200
|
"type",
|
|
201
201
|
"disabled",
|
|
202
202
|
"onClick"
|
|
203
|
-
],
|
|
203
|
+
], tt = {
|
|
204
204
|
key: 0,
|
|
205
205
|
class: "inline-flex items-center"
|
|
206
|
-
},
|
|
206
|
+
}, nt = { key: 1 }, rt = { key: 2 }, it = ["type", "disabled"], at = {
|
|
207
207
|
key: 0,
|
|
208
208
|
class: "inline-flex items-center"
|
|
209
|
-
},
|
|
209
|
+
}, ot = { key: 1 }, st = { key: 2 }, q = /* @__PURE__ */ m({
|
|
210
210
|
__name: "BaseButton",
|
|
211
211
|
props: {
|
|
212
212
|
description: {
|
|
@@ -420,19 +420,19 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
420
420
|
return n.isRounded && (s = "rounded-full"), t + " " + o + " " + a + " font-medium " + s;
|
|
421
421
|
}
|
|
422
422
|
return (t, r) => {
|
|
423
|
-
let i =
|
|
424
|
-
return e.to ? (
|
|
423
|
+
let i = te("router-link");
|
|
424
|
+
return e.to ? (O(), o(i, {
|
|
425
425
|
key: 0,
|
|
426
426
|
to: e.to,
|
|
427
427
|
custom: ""
|
|
428
428
|
}, {
|
|
429
|
-
default:
|
|
429
|
+
default: I(({ navigate: i }) => [l("button", {
|
|
430
430
|
type: n.type,
|
|
431
|
-
class:
|
|
431
|
+
class: x(a()),
|
|
432
432
|
disabled: e.isDisable || e.isLoading,
|
|
433
433
|
onClick: i
|
|
434
434
|
}, [
|
|
435
|
-
e.isLoading ? (
|
|
435
|
+
e.isLoading ? (O(), c("div", tt, [...r[0] ||= [l("svg", {
|
|
436
436
|
"aria-hidden": "true",
|
|
437
437
|
role: "status",
|
|
438
438
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -446,18 +446,18 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
446
446
|
d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
|
|
447
447
|
fill: "currentColor"
|
|
448
448
|
})], -1)]])) : s("", !0),
|
|
449
|
-
e.iconLeft ? s("", !0) : (
|
|
450
|
-
|
|
451
|
-
e.iconLeft ? (
|
|
452
|
-
], 10,
|
|
449
|
+
e.iconLeft ? s("", !0) : (O(), c("span", nt, P(e.description), 1)),
|
|
450
|
+
M(t.$slots, "default"),
|
|
451
|
+
e.iconLeft ? (O(), c("span", rt, P(e.description), 1)) : s("", !0)
|
|
452
|
+
], 10, et)]),
|
|
453
453
|
_: 3
|
|
454
|
-
}, 8, ["to"])) : (
|
|
454
|
+
}, 8, ["to"])) : (O(), c("button", {
|
|
455
455
|
key: 1,
|
|
456
456
|
type: n.type,
|
|
457
|
-
class:
|
|
457
|
+
class: x(a()),
|
|
458
458
|
disabled: e.isDisable || e.isLoading
|
|
459
459
|
}, [
|
|
460
|
-
e.isLoading ? (
|
|
460
|
+
e.isLoading ? (O(), c("div", at, [...r[1] ||= [l("svg", {
|
|
461
461
|
"aria-hidden": "true",
|
|
462
462
|
role: "status",
|
|
463
463
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -471,40 +471,40 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
471
471
|
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",
|
|
472
472
|
fill: "currentColor"
|
|
473
473
|
})], -1)]])) : s("", !0),
|
|
474
|
-
e.iconLeft ? s("", !0) : (
|
|
475
|
-
|
|
476
|
-
e.iconLeft ? (
|
|
477
|
-
], 10,
|
|
474
|
+
e.iconLeft ? s("", !0) : (O(), c("span", ot, P(e.description), 1)),
|
|
475
|
+
M(t.$slots, "default"),
|
|
476
|
+
e.iconLeft ? (O(), c("span", st, P(e.description), 1)) : s("", !0)
|
|
477
|
+
], 10, it));
|
|
478
478
|
};
|
|
479
479
|
}
|
|
480
|
-
}),
|
|
480
|
+
}), ct = /* @__PURE__ */ function(e) {
|
|
481
481
|
return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
|
|
482
|
-
}({}),
|
|
482
|
+
}({}), lt = {
|
|
483
483
|
key: 0,
|
|
484
484
|
class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
|
|
485
|
-
},
|
|
485
|
+
}, ut = {
|
|
486
486
|
key: 1,
|
|
487
487
|
class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
|
|
488
|
-
},
|
|
488
|
+
}, dt = {
|
|
489
489
|
key: 2,
|
|
490
490
|
class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
|
|
491
|
-
},
|
|
491
|
+
}, ft = /* @__PURE__ */ m({
|
|
492
492
|
__name: "BaseLine",
|
|
493
493
|
props: { mode: {
|
|
494
494
|
type: String,
|
|
495
495
|
required: !1,
|
|
496
|
-
default:
|
|
496
|
+
default: ct.BASE
|
|
497
497
|
} },
|
|
498
498
|
setup(t) {
|
|
499
|
-
return (n, r) => (
|
|
500
|
-
t.mode === F(
|
|
501
|
-
t.mode === F(
|
|
502
|
-
t.mode === F(
|
|
499
|
+
return (n, r) => (O(), c(e, null, [
|
|
500
|
+
t.mode === F(ct).BASE ? (O(), c("hr", lt)) : s("", !0),
|
|
501
|
+
t.mode === F(ct).BASE_SHORTER ? (O(), c("hr", ut)) : s("", !0),
|
|
502
|
+
t.mode === F(ct).SQUARE ? (O(), c("hr", dt)) : s("", !0)
|
|
503
503
|
], 64));
|
|
504
504
|
}
|
|
505
505
|
}), J = /* @__PURE__ */ function(e) {
|
|
506
506
|
return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
|
|
507
|
-
}({}),
|
|
507
|
+
}({}), pt = J, mt = ["height", "width"], ht = ["id"], gt = ["id", "href"], _t = ["id", "href"], vt = ["id", "href"], yt = ["id", "href"], bt = ["id", "href"], xt = ["id", "href"], St = ["id", "href"], Ct = ["id", "href"], wt = ["id", "href"], Tt = ["id"], Et = ["fill"], Dt = ["fill"], Ot = ["fill"], kt = ["fill"], At = ["fill"], jt = ["fill"], Mt = ["fill"], Nt = ["fill"], Pt = ["fill"], Ft = ["fill"], It = /* @__PURE__ */ m({
|
|
508
508
|
__name: "BaseLogo",
|
|
509
509
|
props: { size: {
|
|
510
510
|
type: String,
|
|
@@ -512,7 +512,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
512
512
|
default: J.MEDIUM
|
|
513
513
|
} },
|
|
514
514
|
setup(e) {
|
|
515
|
-
let t = `logo-${
|
|
515
|
+
let t = `logo-${ne()}`, n = e;
|
|
516
516
|
function r() {
|
|
517
517
|
let e = "";
|
|
518
518
|
switch (n.size) {
|
|
@@ -527,12 +527,12 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
527
527
|
return e;
|
|
528
528
|
}
|
|
529
529
|
return (e, n) => {
|
|
530
|
-
let i =
|
|
531
|
-
return
|
|
530
|
+
let i = te("router-link");
|
|
531
|
+
return O(), o(i, {
|
|
532
532
|
to: "/",
|
|
533
533
|
class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
|
|
534
534
|
}, {
|
|
535
|
-
default:
|
|
535
|
+
default: I(() => [(O(), c("svg", {
|
|
536
536
|
height: r(),
|
|
537
537
|
width: r(),
|
|
538
538
|
viewBox: "33.6 130.6 499.7 242.9",
|
|
@@ -545,7 +545,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
545
545
|
}, null, -1), l("stop", {
|
|
546
546
|
offset: "1",
|
|
547
547
|
"stop-color": "#132d13"
|
|
548
|
-
}, null, -1)]], 8,
|
|
548
|
+
}, null, -1)]], 8, ht),
|
|
549
549
|
l("linearGradient", {
|
|
550
550
|
id: `${t}-b`,
|
|
551
551
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -554,7 +554,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
554
554
|
href: `#${t}-a`,
|
|
555
555
|
y1: "288.291",
|
|
556
556
|
y2: "369.4"
|
|
557
|
-
}, null, 8,
|
|
557
|
+
}, null, 8, gt),
|
|
558
558
|
l("linearGradient", {
|
|
559
559
|
id: `${t}-c`,
|
|
560
560
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -563,7 +563,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
563
563
|
href: `#${t}-a`,
|
|
564
564
|
y1: "308.454",
|
|
565
565
|
y2: "370.601"
|
|
566
|
-
}, null, 8,
|
|
566
|
+
}, null, 8, _t),
|
|
567
567
|
l("linearGradient", {
|
|
568
568
|
id: `${t}-d`,
|
|
569
569
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -572,7 +572,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
572
572
|
href: `#${t}-a`,
|
|
573
573
|
y1: "288.291",
|
|
574
574
|
y2: "369.85"
|
|
575
|
-
}, null, 8,
|
|
575
|
+
}, null, 8, vt),
|
|
576
576
|
l("linearGradient", {
|
|
577
577
|
id: `${t}-e`,
|
|
578
578
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -581,7 +581,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
581
581
|
href: `#${t}-a`,
|
|
582
582
|
y1: "307.312",
|
|
583
583
|
y2: "369.511"
|
|
584
|
-
}, null, 8,
|
|
584
|
+
}, null, 8, yt),
|
|
585
585
|
l("linearGradient", {
|
|
586
586
|
id: `${t}-f`,
|
|
587
587
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -590,7 +590,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
590
590
|
href: `#${t}-a`,
|
|
591
591
|
y1: "288.291",
|
|
592
592
|
y2: "367.857"
|
|
593
|
-
}, null, 8,
|
|
593
|
+
}, null, 8, bt),
|
|
594
594
|
l("linearGradient", {
|
|
595
595
|
id: `${t}-g`,
|
|
596
596
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -599,7 +599,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
599
599
|
href: `#${t}-a`,
|
|
600
600
|
y1: "307.312",
|
|
601
601
|
y2: "369.511"
|
|
602
|
-
}, null, 8,
|
|
602
|
+
}, null, 8, xt),
|
|
603
603
|
l("linearGradient", {
|
|
604
604
|
id: `${t}-h`,
|
|
605
605
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -608,7 +608,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
608
608
|
href: `#${t}-a`,
|
|
609
609
|
y1: "306.156",
|
|
610
610
|
y2: "367.742"
|
|
611
|
-
}, null, 8,
|
|
611
|
+
}, null, 8, St),
|
|
612
612
|
l("linearGradient", {
|
|
613
613
|
id: `${t}-i`,
|
|
614
614
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -617,7 +617,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
617
617
|
href: `#${t}-a`,
|
|
618
618
|
y1: "288.291",
|
|
619
619
|
y2: "369.4"
|
|
620
|
-
}, null, 8,
|
|
620
|
+
}, null, 8, Ct),
|
|
621
621
|
l("linearGradient", {
|
|
622
622
|
id: `${t}-j`,
|
|
623
623
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -626,7 +626,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
626
626
|
href: `#${t}-a`,
|
|
627
627
|
y1: "131.629",
|
|
628
628
|
y2: "232.559"
|
|
629
|
-
}, null, 8,
|
|
629
|
+
}, null, 8, wt),
|
|
630
630
|
l("linearGradient", {
|
|
631
631
|
id: `${t}-k`,
|
|
632
632
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -641,64 +641,64 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
641
641
|
}, null, -1), l("stop", {
|
|
642
642
|
offset: "1",
|
|
643
643
|
"stop-color": "#808183"
|
|
644
|
-
}, null, -1)]], 8,
|
|
644
|
+
}, null, -1)]], 8, Tt),
|
|
645
645
|
l("path", {
|
|
646
646
|
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",
|
|
647
647
|
fill: `url(#${t}-b)`
|
|
648
|
-
}, null, 8,
|
|
648
|
+
}, null, 8, Et),
|
|
649
649
|
l("path", {
|
|
650
650
|
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",
|
|
651
651
|
fill: `url(#${t}-c)`
|
|
652
|
-
}, null, 8,
|
|
652
|
+
}, null, 8, Dt),
|
|
653
653
|
l("path", {
|
|
654
654
|
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",
|
|
655
655
|
fill: `url(#${t}-d)`
|
|
656
|
-
}, null, 8,
|
|
656
|
+
}, null, 8, Ot),
|
|
657
657
|
l("path", {
|
|
658
658
|
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",
|
|
659
659
|
fill: `url(#${t}-e)`
|
|
660
|
-
}, null, 8,
|
|
660
|
+
}, null, 8, kt),
|
|
661
661
|
l("path", {
|
|
662
662
|
d: "m296.4 288.3h13v79.6h-13z",
|
|
663
663
|
fill: `url(#${t}-f)`
|
|
664
|
-
}, null, 8,
|
|
664
|
+
}, null, 8, At),
|
|
665
665
|
l("path", {
|
|
666
666
|
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",
|
|
667
667
|
fill: `url(#${t}-g)`
|
|
668
|
-
}, null, 8,
|
|
668
|
+
}, null, 8, jt),
|
|
669
669
|
l("path", {
|
|
670
670
|
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",
|
|
671
671
|
fill: `url(#${t}-h)`
|
|
672
|
-
}, null, 8,
|
|
672
|
+
}, null, 8, Mt),
|
|
673
673
|
l("path", {
|
|
674
674
|
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",
|
|
675
675
|
fill: `url(#${t}-i)`
|
|
676
|
-
}, null, 8,
|
|
676
|
+
}, null, 8, Nt),
|
|
677
677
|
l("path", {
|
|
678
678
|
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",
|
|
679
679
|
fill: `url(#${t}-j)`
|
|
680
|
-
}, null, 8,
|
|
680
|
+
}, null, 8, Pt),
|
|
681
681
|
l("path", {
|
|
682
682
|
d: "m281.7 183.8h3.6v18.5h-3.6z",
|
|
683
683
|
fill: `url(#${t}-k)`
|
|
684
|
-
}, null, 8,
|
|
685
|
-
], 8,
|
|
684
|
+
}, null, 8, Ft)
|
|
685
|
+
], 8, mt))]),
|
|
686
686
|
_: 1
|
|
687
687
|
});
|
|
688
688
|
};
|
|
689
689
|
}
|
|
690
|
-
}),
|
|
690
|
+
}), Lt = /* @__PURE__ */ function(e) {
|
|
691
691
|
return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
|
|
692
|
-
}({}),
|
|
692
|
+
}({}), Rt = {
|
|
693
693
|
key: 0,
|
|
694
694
|
class: "p-6 text-center"
|
|
695
|
-
},
|
|
695
|
+
}, zt = { class: "flex justify-center" }, Bt = {
|
|
696
696
|
key: 1,
|
|
697
697
|
class: "p-6 text-center"
|
|
698
|
-
},
|
|
698
|
+
}, Vt = {
|
|
699
699
|
key: 0,
|
|
700
700
|
class: "mb-5 text-sm text-gray-500"
|
|
701
|
-
},
|
|
701
|
+
}, Ht = { class: "flex justify-center" }, Ut = /* @__PURE__ */ m({
|
|
702
702
|
__name: "BaseModal",
|
|
703
703
|
props: {
|
|
704
704
|
title: {
|
|
@@ -717,7 +717,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
717
717
|
mode: {
|
|
718
718
|
type: String,
|
|
719
719
|
required: !1,
|
|
720
|
-
default:
|
|
720
|
+
default: Lt.SUCCESS
|
|
721
721
|
}
|
|
722
722
|
},
|
|
723
723
|
emits: ["closeModal", "confirmModal"],
|
|
@@ -726,11 +726,11 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
726
726
|
function a(e) {
|
|
727
727
|
e.key === "Escape" && r("closeModal");
|
|
728
728
|
}
|
|
729
|
-
return
|
|
729
|
+
return T(() => {
|
|
730
730
|
document.addEventListener("keydown", a);
|
|
731
|
-
}),
|
|
731
|
+
}), D(() => {
|
|
732
732
|
document.removeEventListener("keydown", a);
|
|
733
|
-
}), (n, r) => (
|
|
733
|
+
}), (n, r) => (O(), c(e, null, [l("div", {
|
|
734
734
|
class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
|
|
735
735
|
onClick: r[0] ||= (e) => n.$emit("closeModal")
|
|
736
736
|
}), l("div", {
|
|
@@ -738,13 +738,13 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
738
738
|
role: "dialog",
|
|
739
739
|
"aria-modal": "true",
|
|
740
740
|
"aria-labelledby": i
|
|
741
|
-
}, [t.mode === F(
|
|
742
|
-
p(F(
|
|
741
|
+
}, [t.mode === F(Lt).DELETE ? (O(), c("div", Rt, [
|
|
742
|
+
p(F(Ee), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
|
|
743
743
|
l("h3", {
|
|
744
744
|
id: i,
|
|
745
745
|
class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
|
|
746
746
|
}, " Are you sure you want to delete this " + P(t.title) + "? ", 1),
|
|
747
|
-
l("div",
|
|
747
|
+
l("div", zt, [p(q, {
|
|
748
748
|
color: F(G).RED,
|
|
749
749
|
onClick: r[1] ||= (e) => n.$emit("confirmModal"),
|
|
750
750
|
description: "Yes, I'm sure"
|
|
@@ -753,22 +753,22 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
753
753
|
onClick: r[2] ||= (e) => n.$emit("closeModal"),
|
|
754
754
|
description: "No, cancel"
|
|
755
755
|
}, null, 8, ["color"])])
|
|
756
|
-
])) : (
|
|
757
|
-
p(F(
|
|
756
|
+
])) : (O(), c("div", Bt, [
|
|
757
|
+
p(F(ge), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
|
|
758
758
|
l("h3", {
|
|
759
759
|
id: i,
|
|
760
760
|
class: "mb-2 text-lg font-medium text-gray-900"
|
|
761
761
|
}, P(t.title), 1),
|
|
762
|
-
t.description ? (
|
|
763
|
-
|
|
764
|
-
l("div",
|
|
762
|
+
t.description ? (O(), c("p", Vt, P(t.description), 1)) : s("", !0),
|
|
763
|
+
M(n.$slots, "default"),
|
|
764
|
+
l("div", Ht, [p(q, {
|
|
765
765
|
color: F(G).BLUE,
|
|
766
766
|
onClick: r[3] ||= (e) => n.$emit("closeModal"),
|
|
767
767
|
description: "OK"
|
|
768
768
|
}, null, 8, ["color"])])
|
|
769
769
|
]))])], 64));
|
|
770
770
|
}
|
|
771
|
-
}),
|
|
771
|
+
}), Wt = /* @__PURE__ */ m({
|
|
772
772
|
__name: "BaseRow",
|
|
773
773
|
props: { bgColor: {
|
|
774
774
|
type: String,
|
|
@@ -780,9 +780,9 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
780
780
|
function n() {
|
|
781
781
|
return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
|
|
782
782
|
}
|
|
783
|
-
return (e, t) => (
|
|
783
|
+
return (e, t) => (O(), c("div", { class: x(n()) }, [M(e.$slots, "default")], 2));
|
|
784
784
|
}
|
|
785
|
-
}),
|
|
785
|
+
}), Gt = /* @__PURE__ */ m({
|
|
786
786
|
__name: "BaseSpinner",
|
|
787
787
|
props: {
|
|
788
788
|
size: { default: "sm" },
|
|
@@ -804,17 +804,17 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
804
804
|
red: "border-t-red-500",
|
|
805
805
|
amber: "border-t-amber-500"
|
|
806
806
|
})[t.color]);
|
|
807
|
-
return (e, t) => (
|
|
808
|
-
class:
|
|
807
|
+
return (e, t) => (O(), c("div", {
|
|
808
|
+
class: x(["border-gray-200 dark:border-slate-700 rounded-full animate-spin", [n.value, r.value]]),
|
|
809
809
|
role: "status",
|
|
810
810
|
"aria-label": "Loading"
|
|
811
811
|
}, null, 2));
|
|
812
812
|
}
|
|
813
813
|
}), Y = /* @__PURE__ */ function(e) {
|
|
814
814
|
return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
|
|
815
|
-
}({}),
|
|
815
|
+
}({}), Kt = /* @__PURE__ */ function(e) {
|
|
816
816
|
return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
|
|
817
|
-
}({}),
|
|
817
|
+
}({}), qt = { 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" }, Jt = { class: "ml-3 text-sm font-normal" }, Yt = /* @__PURE__ */ m({
|
|
818
818
|
__name: "BaseToast",
|
|
819
819
|
props: {
|
|
820
820
|
mode: {
|
|
@@ -833,7 +833,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
833
833
|
positioning: {
|
|
834
834
|
type: String,
|
|
835
835
|
required: !1,
|
|
836
|
-
default:
|
|
836
|
+
default: Kt.TOP_RIGHT
|
|
837
837
|
},
|
|
838
838
|
duration: {
|
|
839
839
|
type: Number,
|
|
@@ -842,13 +842,13 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
842
842
|
}
|
|
843
843
|
},
|
|
844
844
|
setup(e) {
|
|
845
|
-
let t = e, n =
|
|
845
|
+
let t = e, n = A(!0), r = null;
|
|
846
846
|
function i() {
|
|
847
847
|
n.value = !1, r &&= (clearTimeout(r), null);
|
|
848
848
|
}
|
|
849
|
-
|
|
849
|
+
T(() => {
|
|
850
850
|
r = setTimeout(() => n.value = !1, t.duration);
|
|
851
|
-
}),
|
|
851
|
+
}), D(() => {
|
|
852
852
|
r && clearTimeout(r);
|
|
853
853
|
});
|
|
854
854
|
function a() {
|
|
@@ -870,46 +870,46 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
870
870
|
function o() {
|
|
871
871
|
let e = "top-5 right-5";
|
|
872
872
|
switch (t.positioning) {
|
|
873
|
-
case
|
|
873
|
+
case Kt.BOTTOM_LEFT:
|
|
874
874
|
e = "bottom-5 left-5";
|
|
875
875
|
break;
|
|
876
|
-
case
|
|
876
|
+
case Kt.TOP_LEFT:
|
|
877
877
|
e = "top-5 left-5";
|
|
878
878
|
break;
|
|
879
|
-
case
|
|
879
|
+
case Kt.TOP_RIGHT:
|
|
880
880
|
e = "top-5 right-5";
|
|
881
881
|
break;
|
|
882
|
-
case
|
|
882
|
+
case Kt.BOTTOM_RIGHT: e = "bottom-5 right-5";
|
|
883
883
|
}
|
|
884
884
|
return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
|
|
885
885
|
}
|
|
886
|
-
return (t, r) => n.value ? (
|
|
886
|
+
return (t, r) => n.value ? (O(), c("div", {
|
|
887
887
|
key: 0,
|
|
888
888
|
id: "toast-top-right",
|
|
889
|
-
class:
|
|
889
|
+
class: x(o()),
|
|
890
890
|
role: "alert"
|
|
891
|
-
}, [l("div",
|
|
892
|
-
e.mode == F(Y).ERROR ? (
|
|
891
|
+
}, [l("div", qt, [
|
|
892
|
+
e.mode == F(Y).ERROR ? (O(), c("div", {
|
|
893
893
|
key: 0,
|
|
894
|
-
class:
|
|
895
|
-
}, [p(F(
|
|
894
|
+
class: x(a())
|
|
895
|
+
}, [p(F(Ee), { class: "h-6 w-6 text-red-500" }), r[0] ||= l("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == F(Y).SUCCESS ? (O(), c("div", {
|
|
896
896
|
key: 1,
|
|
897
|
-
class:
|
|
898
|
-
}, [p(F(
|
|
897
|
+
class: x(a())
|
|
898
|
+
}, [p(F(ge), { class: "h-6 w-6 text-green-500" }), r[1] ||= l("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == F(Y).WARNING ? (O(), c("div", {
|
|
899
899
|
key: 2,
|
|
900
|
-
class:
|
|
901
|
-
}, [p(F(
|
|
902
|
-
l("div",
|
|
903
|
-
e.hasCloseIcon ? (
|
|
900
|
+
class: x(a())
|
|
901
|
+
}, [p(F(De), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= l("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : s("", !0),
|
|
902
|
+
l("div", Jt, P(e.description), 1),
|
|
903
|
+
e.hasCloseIcon ? (O(), c("button", {
|
|
904
904
|
key: 3,
|
|
905
905
|
type: "button",
|
|
906
906
|
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",
|
|
907
907
|
"aria-label": "Close",
|
|
908
908
|
onClick: i
|
|
909
|
-
}, [r[3] ||= l("span", { class: "sr-only" }, "Close", -1), p(F(
|
|
909
|
+
}, [r[3] ||= l("span", { class: "sr-only" }, "Close", -1), p(F(z), { class: "h-6 w-6 text-gray-500" })])) : s("", !0)
|
|
910
910
|
])], 2)) : s("", !0);
|
|
911
911
|
}
|
|
912
|
-
}),
|
|
912
|
+
}), Xt = { class: "w-13" }, Zt = /* @__PURE__ */ m({
|
|
913
913
|
__name: "ColoredSquares",
|
|
914
914
|
props: { color: {
|
|
915
915
|
type: String,
|
|
@@ -926,7 +926,7 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
926
926
|
"bg-yellow-300",
|
|
927
927
|
"bg-purple-300",
|
|
928
928
|
"bg-pink-300"
|
|
929
|
-
], r =
|
|
929
|
+
], r = A(n[Math.floor(Math.random() * n.length)]);
|
|
930
930
|
function i() {
|
|
931
931
|
let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
|
|
932
932
|
switch (t.color) {
|
|
@@ -946,9 +946,9 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
946
946
|
}
|
|
947
947
|
return e + " bg-" + n + "-100 text-" + n + "-800";
|
|
948
948
|
}
|
|
949
|
-
return (e, t) => (
|
|
949
|
+
return (e, t) => (O(), c("div", Xt, [l("div", { class: x(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [M(e.$slots, "default"), l("div", { class: x(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
|
|
950
950
|
}
|
|
951
|
-
}),
|
|
951
|
+
}), Qt = { class: "flex items-start justify-between" }, $t = { class: "min-w-0" }, en = /* @__PURE__ */ m({
|
|
952
952
|
__name: "EarningsCard",
|
|
953
953
|
props: {
|
|
954
954
|
title: { default: "TOTAL EARNINGS" },
|
|
@@ -1000,27 +1000,27 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
1000
1000
|
minimumFractionDigits: n.decimals,
|
|
1001
1001
|
maximumFractionDigits: n.decimals
|
|
1002
1002
|
}));
|
|
1003
|
-
return (n, r) => (
|
|
1003
|
+
return (n, r) => (O(), c("div", { class: x(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (O(), c("div", {
|
|
1004
1004
|
key: 0,
|
|
1005
|
-
class:
|
|
1006
|
-
}, P(t.badge), 3)) : s("", !0), l("div",
|
|
1007
|
-
l("p", { class:
|
|
1008
|
-
l("p", { class:
|
|
1009
|
-
l("p", { class:
|
|
1010
|
-
]), l("div", { class:
|
|
1011
|
-
class:
|
|
1005
|
+
class: x(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
|
|
1006
|
+
}, P(t.badge), 3)) : s("", !0), l("div", Qt, [l("div", $t, [
|
|
1007
|
+
l("p", { class: x(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, P(t.title), 3),
|
|
1008
|
+
l("p", { class: x(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, P(f.value), 3),
|
|
1009
|
+
l("p", { class: x(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, P(t.subtitle), 3)
|
|
1010
|
+
]), l("div", { class: x(["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"]]) }, [(O(), c("svg", {
|
|
1011
|
+
class: x([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
|
|
1012
1012
|
viewBox: "0 0 24 24",
|
|
1013
1013
|
fill: "none",
|
|
1014
1014
|
stroke: "currentColor",
|
|
1015
1015
|
"stroke-width": "2.5",
|
|
1016
1016
|
"stroke-linecap": "round",
|
|
1017
1017
|
"stroke-linejoin": "round"
|
|
1018
|
-
}, [o.value ? (
|
|
1018
|
+
}, [o.value ? (O(), c(e, { key: 0 }, [r[0] ||= l("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= l("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (O(), c(e, { key: 1 }, [r[2] ||= l("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= l("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
|
|
1019
1019
|
}
|
|
1020
|
-
}),
|
|
1020
|
+
}), tn = {
|
|
1021
1021
|
key: 0,
|
|
1022
1022
|
class: "font-bold text-green-800 dark:text-green-400"
|
|
1023
|
-
},
|
|
1023
|
+
}, nn = { key: 0 }, rn = { key: 0 }, an = "font-bold", on = /* @__PURE__ */ m({
|
|
1024
1024
|
__name: "EuroAmount",
|
|
1025
1025
|
props: {
|
|
1026
1026
|
amount: {
|
|
@@ -1040,20 +1040,20 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
1040
1040
|
},
|
|
1041
1041
|
setup(t) {
|
|
1042
1042
|
let n = t, r = a(() => n.amount !== null && n.amount !== void 0), i = a(() => r.value && n.amount < 0), o = a(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = a(() => i.value || o.value), u = a(() => !i.value && !o.value && n.beforeAmount !== null && n.beforeAmount !== void 0);
|
|
1043
|
-
return (n, i) => (
|
|
1043
|
+
return (n, i) => (O(), c(e, null, [r.value && u.value ? (O(), c("span", tn, [f(P(t.amount) + " ", 1), t.showCurrency ? (O(), c("span", nn, "€")) : s("", !0)])) : s("", !0), r.value && !u.value ? (O(), c("span", {
|
|
1044
1044
|
key: 1,
|
|
1045
|
-
class:
|
|
1046
|
-
}, [f(P(t.amount) + " ", 1), t.showCurrency ? (
|
|
1045
|
+
class: x([an, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
|
|
1046
|
+
}, [f(P(t.amount) + " ", 1), t.showCurrency ? (O(), c("span", rn, "€")) : s("", !0)], 2)) : s("", !0)], 64));
|
|
1047
1047
|
}
|
|
1048
|
-
}),
|
|
1048
|
+
}), sn = { "aria-label": "Pagination" }, cn = { class: "flex list-none p-0 m-0" }, ln = [
|
|
1049
1049
|
"aria-current",
|
|
1050
1050
|
"aria-label",
|
|
1051
1051
|
"onClick"
|
|
1052
|
-
],
|
|
1052
|
+
], un = {
|
|
1053
1053
|
key: 1,
|
|
1054
1054
|
"aria-hidden": "true",
|
|
1055
1055
|
class: "inline-block border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-not-allowed"
|
|
1056
|
-
},
|
|
1056
|
+
}, dn = /* @__PURE__ */ m({
|
|
1057
1057
|
__name: "Pagination",
|
|
1058
1058
|
props: {
|
|
1059
1059
|
totalItems: {
|
|
@@ -1078,8 +1078,8 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
1078
1078
|
function s(e) {
|
|
1079
1079
|
return Math.min(Math.max(e, 1), Math.max(o.value, 1));
|
|
1080
1080
|
}
|
|
1081
|
-
let u =
|
|
1082
|
-
|
|
1081
|
+
let u = A(1);
|
|
1082
|
+
le(o, () => {
|
|
1083
1083
|
u.value = s(u.value);
|
|
1084
1084
|
});
|
|
1085
1085
|
let d = a(() => r.page != null && Number.isFinite(r.page) ? s(r.page) : u.value), f = a(() => {
|
|
@@ -1093,28 +1093,28 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
1093
1093
|
function p(e) {
|
|
1094
1094
|
e === d.value || e < 1 || e > o.value || (u.value = e, i("page-changed", e));
|
|
1095
1095
|
}
|
|
1096
|
-
return (t, n) => (
|
|
1096
|
+
return (t, n) => (O(), c("nav", sn, [l("ul", cn, [(O(!0), c(e, null, j(f.value, (e, t) => (O(), c("li", {
|
|
1097
1097
|
key: t,
|
|
1098
1098
|
class: "mr-1"
|
|
1099
|
-
}, [e === 0 ? (
|
|
1099
|
+
}, [e === 0 ? (O(), c("span", un, "...")) : (O(), c("button", {
|
|
1100
1100
|
key: 0,
|
|
1101
1101
|
type: "button",
|
|
1102
1102
|
"aria-current": e === d.value ? "page" : void 0,
|
|
1103
1103
|
"aria-label": `Go to page ${e}`,
|
|
1104
1104
|
onClick: (t) => p(e),
|
|
1105
|
-
class:
|
|
1106
|
-
}, P(e), 11,
|
|
1105
|
+
class: x(["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 === d.value }])
|
|
1106
|
+
}, P(e), 11, ln))]))), 128))])]));
|
|
1107
1107
|
}
|
|
1108
|
-
}),
|
|
1108
|
+
}), fn = { key: 0 }, pn = {
|
|
1109
1109
|
key: 0,
|
|
1110
1110
|
class: "flex items-center space-x-2"
|
|
1111
|
-
},
|
|
1111
|
+
}, mn = {
|
|
1112
1112
|
key: 1,
|
|
1113
1113
|
class: "flex items-center space-x-2"
|
|
1114
|
-
},
|
|
1114
|
+
}, hn = {
|
|
1115
1115
|
key: 2,
|
|
1116
1116
|
class: "flex items-center space-x-2"
|
|
1117
|
-
},
|
|
1117
|
+
}, gn = /* @__PURE__ */ m({
|
|
1118
1118
|
__name: "TrendArrow",
|
|
1119
1119
|
props: {
|
|
1120
1120
|
number: {
|
|
@@ -1128,23 +1128,23 @@ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
|
1128
1128
|
},
|
|
1129
1129
|
setup(e) {
|
|
1130
1130
|
let t = e, n = a(() => t.number !== null && t.number !== void 0 && t.number < 0), r = a(() => t.number === 0);
|
|
1131
|
-
return (i, a) => e.number !== null && e.number !== void 0 ? (
|
|
1132
|
-
default:
|
|
1131
|
+
return (i, a) => e.number !== null && e.number !== void 0 ? (O(), c("div", fn, [n.value ? (O(), c("span", pn, [p(Ye, { color: F(W).RED }, {
|
|
1132
|
+
default: I(() => [f(P(e.number) + P(t.icon), 1)]),
|
|
1133
1133
|
_: 1
|
|
1134
|
-
}, 8, ["color"]), p(F(
|
|
1135
|
-
default:
|
|
1134
|
+
}, 8, ["color"]), p(F(de), { class: "h-5 w-5 text-red-500" })])) : r.value ? (O(), c("span", mn, [p(Ye, { color: F(W).GRAY }, {
|
|
1135
|
+
default: I(() => [f(P(e.number) + P(t.icon), 1)]),
|
|
1136
1136
|
_: 1
|
|
1137
|
-
}, 8, ["color"]), p(F(
|
|
1138
|
-
default:
|
|
1137
|
+
}, 8, ["color"]), p(F(je), { class: "h-5 w-5 text-gray-400" })])) : (O(), c("span", hn, [p(Ye, { color: F(W).GREEN }, {
|
|
1138
|
+
default: I(() => [f(P(e.number) + P(t.icon), 1)]),
|
|
1139
1139
|
_: 1
|
|
1140
|
-
}, 8, ["color"]), p(F(
|
|
1140
|
+
}, 8, ["color"]), p(F(pe), { class: "h-5 w-5 text-green-500" })]))])) : s("", !0);
|
|
1141
1141
|
}
|
|
1142
1142
|
});
|
|
1143
1143
|
//#endregion
|
|
1144
1144
|
//#region src/composables/useThemeClasses.ts
|
|
1145
1145
|
function X() {
|
|
1146
1146
|
let { isDark: e } = U();
|
|
1147
|
-
return
|
|
1147
|
+
return ee({
|
|
1148
1148
|
card: a(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
|
|
1149
1149
|
cardAlt: a(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
|
|
1150
1150
|
pageBg: a(() => e.value ? "bg-gray-900" : "bg-gray-50"),
|
|
@@ -1170,15 +1170,15 @@ function X() {
|
|
|
1170
1170
|
}
|
|
1171
1171
|
//#endregion
|
|
1172
1172
|
//#region src/composables/useEscapeKey.ts
|
|
1173
|
-
function
|
|
1173
|
+
function _n(e) {
|
|
1174
1174
|
function t(t) {
|
|
1175
1175
|
t.key === "Escape" && e();
|
|
1176
1176
|
}
|
|
1177
|
-
|
|
1177
|
+
T(() => document.addEventListener("keydown", t)), w(() => document.removeEventListener("keydown", t));
|
|
1178
1178
|
}
|
|
1179
1179
|
//#endregion
|
|
1180
1180
|
//#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
|
|
1181
|
-
var
|
|
1181
|
+
var vn = { class: "flex items-start gap-4 min-w-0" }, yn = { class: "flex-1 min-w-0" }, bn = { class: "p-6 overflow-y-auto flex-1" }, xn = { class: "p-6" }, Sn = { class: "flex items-start gap-4" }, Cn = { class: "flex-1" }, wn = { class: "mt-4" }, Tn = { class: "mt-6 flex gap-3 justify-end" }, En = /* @__PURE__ */ m({
|
|
1182
1182
|
__name: "BaseModalShell",
|
|
1183
1183
|
props: {
|
|
1184
1184
|
title: {},
|
|
@@ -1202,51 +1202,51 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1202
1202
|
function h() {
|
|
1203
1203
|
i("backdrop"), r.manualClose || i("cancel");
|
|
1204
1204
|
}
|
|
1205
|
-
return
|
|
1205
|
+
return _n(() => {
|
|
1206
1206
|
r.manualClose || i("cancel");
|
|
1207
|
-
}), (n, r) => (
|
|
1207
|
+
}), (n, r) => (O(), o(t, { to: "body" }, [l("div", {
|
|
1208
1208
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
1209
1209
|
role: "dialog",
|
|
1210
1210
|
"aria-modal": "true",
|
|
1211
1211
|
"aria-labelledby": f,
|
|
1212
1212
|
onClick: h
|
|
1213
|
-
}, [e.scrollable ? (
|
|
1213
|
+
}, [e.scrollable ? (O(), c("div", {
|
|
1214
1214
|
key: 0,
|
|
1215
|
-
class:
|
|
1216
|
-
onClick: r[0] ||=
|
|
1215
|
+
class: x(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
|
|
1216
|
+
onClick: r[0] ||= R(() => {}, ["stop"])
|
|
1217
1217
|
}, [
|
|
1218
|
-
l("div", { class:
|
|
1219
|
-
class:
|
|
1218
|
+
l("div", { class: x(["flex items-start justify-between gap-4 p-6 border-b shrink-0", F(d).border]) }, [l("div", vn, [M(n.$slots, "icon", {}, () => [l("div", { class: x(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(O(), o(N(e.icon), {
|
|
1219
|
+
class: x(["h-6 w-6", e.iconClass]),
|
|
1220
1220
|
"aria-hidden": "true"
|
|
1221
|
-
}, null, 8, ["class"]))], 2)]), l("div",
|
|
1221
|
+
}, null, 8, ["class"]))], 2)]), l("div", yn, [l("h3", {
|
|
1222
1222
|
id: f,
|
|
1223
|
-
class:
|
|
1224
|
-
}, P(e.title), 3), e.subtitle ? (
|
|
1223
|
+
class: x(["text-lg font-medium", F(d).primaryText])
|
|
1224
|
+
}, P(e.title), 3), e.subtitle ? (O(), c("p", {
|
|
1225
1225
|
key: 0,
|
|
1226
|
-
class:
|
|
1227
|
-
}, P(e.subtitle), 3)) : s("", !0)])]),
|
|
1228
|
-
l("div",
|
|
1229
|
-
n.$slots.footer ? (
|
|
1226
|
+
class: x(["text-sm mt-1 break-all", F(d).mutedText])
|
|
1227
|
+
}, P(e.subtitle), 3)) : s("", !0)])]), M(n.$slots, "header-actions")], 2),
|
|
1228
|
+
l("div", bn, [M(n.$slots, "default")]),
|
|
1229
|
+
n.$slots.footer ? (O(), c("div", {
|
|
1230
1230
|
key: 0,
|
|
1231
|
-
class:
|
|
1232
|
-
}, [
|
|
1233
|
-
], 2)) : (
|
|
1231
|
+
class: x(["flex gap-3 justify-end p-6 border-t shrink-0", F(d).border])
|
|
1232
|
+
}, [M(n.$slots, "footer")], 2)) : s("", !0)
|
|
1233
|
+
], 2)) : (O(), c("div", {
|
|
1234
1234
|
key: 1,
|
|
1235
|
-
class:
|
|
1236
|
-
onClick: r[1] ||=
|
|
1237
|
-
}, [l("div",
|
|
1238
|
-
l("div",
|
|
1239
|
-
class:
|
|
1235
|
+
class: x(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
|
|
1236
|
+
onClick: r[1] ||= R(() => {}, ["stop"])
|
|
1237
|
+
}, [l("div", xn, [
|
|
1238
|
+
l("div", Sn, [M(n.$slots, "icon", {}, () => [l("div", { class: x(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(O(), o(N(e.icon), {
|
|
1239
|
+
class: x(["h-6 w-6", e.iconClass]),
|
|
1240
1240
|
"aria-hidden": "true"
|
|
1241
|
-
}, null, 8, ["class"]))], 2)]), l("div",
|
|
1241
|
+
}, null, 8, ["class"]))], 2)]), l("div", Cn, [l("h3", {
|
|
1242
1242
|
id: f,
|
|
1243
|
-
class:
|
|
1243
|
+
class: x(["text-lg font-medium", F(d).primaryText])
|
|
1244
1244
|
}, P(e.title), 3)])]),
|
|
1245
|
-
l("div",
|
|
1246
|
-
l("div",
|
|
1245
|
+
l("div", wn, [M(n.$slots, "default")]),
|
|
1246
|
+
l("div", Tn, [M(n.$slots, "footer")])
|
|
1247
1247
|
])], 2))])]));
|
|
1248
1248
|
}
|
|
1249
|
-
}),
|
|
1249
|
+
}), Dn = ["aria-expanded"], On = { class: "flex items-center gap-3" }, kn = /* @__PURE__ */ m({
|
|
1250
1250
|
__name: "BaseCollapsibleSection",
|
|
1251
1251
|
props: {
|
|
1252
1252
|
title: {},
|
|
@@ -1257,16 +1257,16 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1257
1257
|
emits: ["toggle"],
|
|
1258
1258
|
setup(e, { emit: t }) {
|
|
1259
1259
|
let n = e, r = t, { isDark: i } = U(), o = X(), u = a(() => i.value ? "text-gray-100" : "text-gray-700"), d = a(() => i.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = a(() => i.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = a(() => n.bodyClass === void 0 ? i.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
|
|
1260
|
-
return (t, n) => (
|
|
1260
|
+
return (t, n) => (O(), c("section", { class: x(["rounded-xl border transition-colors", F(o).cardAlt]) }, [l("button", {
|
|
1261
1261
|
type: "button",
|
|
1262
|
-
class:
|
|
1262
|
+
class: x(["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"]]),
|
|
1263
1263
|
"aria-expanded": !e.collapsed,
|
|
1264
1264
|
onClick: n[0] ||= (e) => r("toggle")
|
|
1265
|
-
}, [l("div",
|
|
1265
|
+
}, [l("div", On, [l("h2", { class: x(["text-base font-semibold", u.value]) }, P(e.title), 3), e.badge ? (O(), c("span", {
|
|
1266
1266
|
key: 0,
|
|
1267
|
-
class:
|
|
1268
|
-
}, P(e.badge), 3)) : s("", !0)]), (
|
|
1269
|
-
class:
|
|
1267
|
+
class: x(["text-xs px-2 py-0.5 rounded-full", f.value])
|
|
1268
|
+
}, P(e.badge), 3)) : s("", !0)]), (O(), c("svg", {
|
|
1269
|
+
class: x(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", F(o).dimTextAlt]]),
|
|
1270
1270
|
fill: "none",
|
|
1271
1271
|
viewBox: "0 0 24 24",
|
|
1272
1272
|
stroke: "currentColor",
|
|
@@ -1276,15 +1276,15 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1276
1276
|
"stroke-linecap": "round",
|
|
1277
1277
|
"stroke-linejoin": "round",
|
|
1278
1278
|
d: "M19 9l-7 7-7-7"
|
|
1279
|
-
}, null, -1)]], 2))], 10,
|
|
1279
|
+
}, null, -1)]], 2))], 10, Dn), L(l("div", { class: x(["p-6 border-t rounded-b-xl", [F(o).border, p.value]]) }, [M(t.$slots, "default")], 2), [[ce, !e.collapsed]])], 2));
|
|
1280
1280
|
}
|
|
1281
|
-
}),
|
|
1281
|
+
}), An = ["disabled"], jn = ["disabled"], Mn = {
|
|
1282
1282
|
key: 0,
|
|
1283
1283
|
class: "w-4 h-4 animate-spin",
|
|
1284
1284
|
fill: "none",
|
|
1285
1285
|
viewBox: "0 0 24 24",
|
|
1286
1286
|
"aria-hidden": "true"
|
|
1287
|
-
},
|
|
1287
|
+
}, Nn = /* @__PURE__ */ m({
|
|
1288
1288
|
__name: "BaseConfirmModal",
|
|
1289
1289
|
props: {
|
|
1290
1290
|
title: {},
|
|
@@ -1307,25 +1307,25 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1307
1307
|
function d() {
|
|
1308
1308
|
n.submitting || r("cancel");
|
|
1309
1309
|
}
|
|
1310
|
-
return (t, n) => (
|
|
1310
|
+
return (t, n) => (O(), o(En, {
|
|
1311
1311
|
title: e.title,
|
|
1312
|
-
icon: F(
|
|
1312
|
+
icon: F(De),
|
|
1313
1313
|
"icon-bg-class": e.variant === "danger" ? F(i) ? "bg-red-900/30" : "bg-red-50" : F(i) ? "bg-amber-900/30" : "bg-amber-50",
|
|
1314
1314
|
"icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
|
|
1315
1315
|
"manual-close": e.submitting,
|
|
1316
1316
|
onCancel: d
|
|
1317
1317
|
}, {
|
|
1318
|
-
footer:
|
|
1318
|
+
footer: I(() => [l("button", {
|
|
1319
1319
|
type: "button",
|
|
1320
1320
|
disabled: e.submitting,
|
|
1321
|
-
class:
|
|
1321
|
+
class: x(["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", [F(a).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
|
|
1322
1322
|
onClick: d
|
|
1323
|
-
}, P(e.cancelText), 11,
|
|
1323
|
+
}, P(e.cancelText), 11, An), l("button", {
|
|
1324
1324
|
type: "button",
|
|
1325
1325
|
disabled: e.submitting,
|
|
1326
|
-
class:
|
|
1326
|
+
class: x(["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"]]),
|
|
1327
1327
|
onClick: u
|
|
1328
|
-
}, [e.submitting ? (
|
|
1328
|
+
}, [e.submitting ? (O(), c("svg", Mn, [...n[0] ||= [l("circle", {
|
|
1329
1329
|
class: "opacity-25",
|
|
1330
1330
|
cx: "12",
|
|
1331
1331
|
cy: "12",
|
|
@@ -1336,8 +1336,8 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1336
1336
|
class: "opacity-75",
|
|
1337
1337
|
fill: "currentColor",
|
|
1338
1338
|
d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
|
|
1339
|
-
}, null, -1)]])) : s("", !0), f(" " + P(e.submitting ? e.submittingText : e.confirmText), 1)], 10,
|
|
1340
|
-
default:
|
|
1339
|
+
}, null, -1)]])) : s("", !0), f(" " + P(e.submitting ? e.submittingText : e.confirmText), 1)], 10, jn)]),
|
|
1340
|
+
default: I(() => [M(t.$slots, "message", {}, () => [l("p", { class: x(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3)]), M(t.$slots, "default")]),
|
|
1341
1341
|
_: 3
|
|
1342
1342
|
}, 8, [
|
|
1343
1343
|
"title",
|
|
@@ -1347,7 +1347,7 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1347
1347
|
"manual-close"
|
|
1348
1348
|
]));
|
|
1349
1349
|
}
|
|
1350
|
-
}),
|
|
1350
|
+
}), Pn = { class: "mt-4" }, Fn = ["placeholder"], In = ["disabled"], Ln = /* @__PURE__ */ m({
|
|
1351
1351
|
__name: "BaseTextInputModal",
|
|
1352
1352
|
props: {
|
|
1353
1353
|
title: {},
|
|
@@ -1365,9 +1365,9 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1365
1365
|
},
|
|
1366
1366
|
emits: ["confirm", "cancel"],
|
|
1367
1367
|
setup(e, { emit: t }) {
|
|
1368
|
-
let n = e, r = t, { isDark: i } = U(), a = X(), s =
|
|
1369
|
-
|
|
1370
|
-
await
|
|
1368
|
+
let n = e, r = t, { isDark: i } = U(), a = X(), s = A(n.initialValue), c = A(null);
|
|
1369
|
+
T(async () => {
|
|
1370
|
+
await b(), c.value?.focus();
|
|
1371
1371
|
});
|
|
1372
1372
|
function d() {
|
|
1373
1373
|
s.value.trim() && !n.submitting && r("confirm", s.value.trim());
|
|
@@ -1378,39 +1378,39 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1378
1378
|
function p() {
|
|
1379
1379
|
s.value.trim() === (n.initialValue ?? "").trim() && f();
|
|
1380
1380
|
}
|
|
1381
|
-
return
|
|
1381
|
+
return _n(f), (t, n) => (O(), o(En, {
|
|
1382
1382
|
title: e.title,
|
|
1383
|
-
icon: F(
|
|
1383
|
+
icon: F(Te),
|
|
1384
1384
|
"manual-close": "",
|
|
1385
1385
|
onBackdrop: p
|
|
1386
1386
|
}, u({
|
|
1387
|
-
footer:
|
|
1387
|
+
footer: I(() => [l("button", {
|
|
1388
1388
|
type: "button",
|
|
1389
|
-
class:
|
|
1389
|
+
class: x(["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", F(a).ghostButton]),
|
|
1390
1390
|
onClick: f
|
|
1391
1391
|
}, P(e.cancelText), 3), l("button", {
|
|
1392
1392
|
type: "button",
|
|
1393
1393
|
disabled: !s.value.trim() || e.submitting,
|
|
1394
|
-
class:
|
|
1394
|
+
class: x(["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"]]),
|
|
1395
1395
|
onClick: d
|
|
1396
|
-
}, P(e.submitting ? e.submittingText : e.confirmText), 11,
|
|
1397
|
-
default:
|
|
1396
|
+
}, P(e.submitting ? e.submittingText : e.confirmText), 11, In)]),
|
|
1397
|
+
default: I(() => [l("p", { class: x(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3), l("div", Pn, [l("label", { class: x(["block text-sm font-medium mb-1", F(a).label]) }, P(e.inputLabel), 3), L(l("input", {
|
|
1398
1398
|
ref_key: "nameInput",
|
|
1399
1399
|
ref: c,
|
|
1400
1400
|
"onUpdate:modelValue": n[0] ||= (e) => s.value = e,
|
|
1401
1401
|
type: "text",
|
|
1402
1402
|
placeholder: e.placeholder,
|
|
1403
|
-
class:
|
|
1404
|
-
onKeyup:
|
|
1405
|
-
}, null, 42,
|
|
1403
|
+
class: x(["w-full px-3 py-2 rounded-md border text-sm transition-colors", F(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"]),
|
|
1404
|
+
onKeyup: ue(d, ["enter"])
|
|
1405
|
+
}, null, 42, Fn), [[se, s.value]])])]),
|
|
1406
1406
|
_: 2
|
|
1407
1407
|
}, [t.$slots.icon ? {
|
|
1408
1408
|
name: "icon",
|
|
1409
|
-
fn:
|
|
1409
|
+
fn: I(() => [M(t.$slots, "icon")]),
|
|
1410
1410
|
key: "0"
|
|
1411
1411
|
} : void 0]), 1032, ["title", "icon"]));
|
|
1412
1412
|
}
|
|
1413
|
-
}),
|
|
1413
|
+
}), Rn = { class: "flex items-center justify-center min-h-[60vh]" }, zn = { class: "text-center px-6" }, Bn = /* @__PURE__ */ m({
|
|
1414
1414
|
__name: "BaseNotFoundPage",
|
|
1415
1415
|
props: {
|
|
1416
1416
|
code: { default: "404" },
|
|
@@ -1419,33 +1419,33 @@ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-
|
|
|
1419
1419
|
homeLabel: { default: "Go home" }
|
|
1420
1420
|
},
|
|
1421
1421
|
setup(e) {
|
|
1422
|
-
let t = e, n =
|
|
1422
|
+
let t = e, n = ze(), { isDark: r } = U(), i = X();
|
|
1423
1423
|
function a() {
|
|
1424
1424
|
n.push({ name: t.homeRouteName });
|
|
1425
1425
|
}
|
|
1426
|
-
return (t, n) => (
|
|
1427
|
-
p(F(
|
|
1428
|
-
l("h1", { class:
|
|
1429
|
-
l("p", { class:
|
|
1426
|
+
return (t, n) => (O(), c("div", Rn, [l("div", zn, [
|
|
1427
|
+
p(F(De), { class: x(["w-16 h-16 mx-auto mb-4", F(i).illustration]) }, null, 8, ["class"]),
|
|
1428
|
+
l("h1", { class: x(["text-4xl font-bold mb-2", F(r) ? "text-gray-200" : "text-gray-800"]) }, P(e.code), 3),
|
|
1429
|
+
l("p", { class: x(["text-lg mb-6", F(i).dimTextAlt]) }, P(e.message), 3),
|
|
1430
1430
|
l("button", {
|
|
1431
1431
|
onClick: a,
|
|
1432
|
-
class:
|
|
1432
|
+
class: x(["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", F(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
|
|
1433
1433
|
}, P(e.homeLabel), 3)
|
|
1434
1434
|
])]));
|
|
1435
1435
|
}
|
|
1436
|
-
}),
|
|
1437
|
-
function
|
|
1436
|
+
}), Vn = A(!1);
|
|
1437
|
+
function Hn() {
|
|
1438
1438
|
function e() {
|
|
1439
|
-
|
|
1439
|
+
Vn.value = !0;
|
|
1440
1440
|
}
|
|
1441
1441
|
function t() {
|
|
1442
|
-
|
|
1442
|
+
Vn.value = !1;
|
|
1443
1443
|
}
|
|
1444
1444
|
function n() {
|
|
1445
|
-
|
|
1445
|
+
Vn.value = !Vn.value;
|
|
1446
1446
|
}
|
|
1447
1447
|
return {
|
|
1448
|
-
mobileOpen:
|
|
1448
|
+
mobileOpen: Vn,
|
|
1449
1449
|
open: e,
|
|
1450
1450
|
close: t,
|
|
1451
1451
|
toggle: n
|
|
@@ -1453,19 +1453,19 @@ function Rn() {
|
|
|
1453
1453
|
}
|
|
1454
1454
|
//#endregion
|
|
1455
1455
|
//#region src/composables/useSidebarCollapse.ts
|
|
1456
|
-
var Z =
|
|
1457
|
-
function
|
|
1458
|
-
if (!
|
|
1459
|
-
let e = window.localStorage?.getItem(
|
|
1456
|
+
var Z = A(!1), Un = !1, Wn = "mgv-sidebar-collapsed";
|
|
1457
|
+
function Gn(e) {
|
|
1458
|
+
if (!Un && (Un = !0, Wn = e, typeof window < "u")) {
|
|
1459
|
+
let e = window.localStorage?.getItem(Wn);
|
|
1460
1460
|
e && (Z.value = e === "true"), h(!0).run(() => {
|
|
1461
|
-
|
|
1462
|
-
window.localStorage?.setItem(
|
|
1461
|
+
le(Z, (e) => {
|
|
1462
|
+
window.localStorage?.setItem(Wn, String(e));
|
|
1463
1463
|
});
|
|
1464
1464
|
});
|
|
1465
1465
|
}
|
|
1466
1466
|
}
|
|
1467
|
-
function
|
|
1468
|
-
|
|
1467
|
+
function Kn(e) {
|
|
1468
|
+
Gn(e?.storageKey ?? Wn);
|
|
1469
1469
|
function t() {
|
|
1470
1470
|
Z.value = !0;
|
|
1471
1471
|
}
|
|
@@ -1484,16 +1484,16 @@ function Hn(e) {
|
|
|
1484
1484
|
}
|
|
1485
1485
|
//#endregion
|
|
1486
1486
|
//#region src/composables/useNotifications.ts
|
|
1487
|
-
var Q =
|
|
1488
|
-
function
|
|
1487
|
+
var Q = A([]), qn = A(!1), Jn = a(() => Q.value.filter((e) => !e.read).length);
|
|
1488
|
+
function Yn() {
|
|
1489
1489
|
function e() {
|
|
1490
|
-
|
|
1490
|
+
qn.value = !0;
|
|
1491
1491
|
}
|
|
1492
1492
|
function t() {
|
|
1493
|
-
|
|
1493
|
+
qn.value = !1;
|
|
1494
1494
|
}
|
|
1495
1495
|
function n() {
|
|
1496
|
-
|
|
1496
|
+
qn.value = !qn.value;
|
|
1497
1497
|
}
|
|
1498
1498
|
function r(e) {
|
|
1499
1499
|
Q.value = e;
|
|
@@ -1521,8 +1521,8 @@ function Gn() {
|
|
|
1521
1521
|
}
|
|
1522
1522
|
return {
|
|
1523
1523
|
notifications: Q,
|
|
1524
|
-
unreadCount:
|
|
1525
|
-
open:
|
|
1524
|
+
unreadCount: Jn,
|
|
1525
|
+
open: qn,
|
|
1526
1526
|
openPanel: e,
|
|
1527
1527
|
closePanel: t,
|
|
1528
1528
|
togglePanel: n,
|
|
@@ -1536,22 +1536,22 @@ function Gn() {
|
|
|
1536
1536
|
}
|
|
1537
1537
|
//#endregion
|
|
1538
1538
|
//#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
|
|
1539
|
-
var
|
|
1539
|
+
var Xn = ["aria-label", "aria-expanded"], Zn = { class: "flex flex-col h-full" }, Qn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, $n = { class: "space-y-0.5" }, er = [
|
|
1540
1540
|
"aria-current",
|
|
1541
1541
|
"title",
|
|
1542
1542
|
"onClick"
|
|
1543
|
-
],
|
|
1543
|
+
], tr = ["aria-label"], nr = { class: "relative shrink-0" }, rr = {
|
|
1544
1544
|
key: 0,
|
|
1545
1545
|
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"
|
|
1546
|
-
},
|
|
1546
|
+
}, ir = [
|
|
1547
1547
|
"title",
|
|
1548
1548
|
"aria-label",
|
|
1549
1549
|
"aria-pressed"
|
|
1550
|
-
],
|
|
1550
|
+
], ar = [
|
|
1551
1551
|
"title",
|
|
1552
1552
|
"aria-label",
|
|
1553
1553
|
"aria-pressed"
|
|
1554
|
-
],
|
|
1554
|
+
], or = /*#__PURE__*/ ((e, t) => {
|
|
1555
1555
|
let n = e.__vccOpts || e;
|
|
1556
1556
|
for (let [e, r] of t) n[e] = r;
|
|
1557
1557
|
return n;
|
|
@@ -1576,41 +1576,41 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1576
1576
|
}
|
|
1577
1577
|
},
|
|
1578
1578
|
setup(t) {
|
|
1579
|
-
let n = t, r =
|
|
1580
|
-
|
|
1581
|
-
e ? (T = document.activeElement instanceof HTMLElement ? document.activeElement : null, await
|
|
1579
|
+
let n = t, r = ze(), i = Re(), { isDark: u, toggleTheme: d } = U(), { mobileOpen: m, close: h, toggle: g } = Hn(), { collapsed: _, toggle: v } = Kn(), { unreadCount: y, togglePanel: S } = Yn(), C = a(() => n.collapsible && _.value), w = A(null), T = null;
|
|
1580
|
+
le(m, async (e) => {
|
|
1581
|
+
e ? (T = document.activeElement instanceof HTMLElement ? document.activeElement : null, await b(), w.value?.focus()) : (T?.focus(), T = null);
|
|
1582
1582
|
});
|
|
1583
1583
|
function E() {
|
|
1584
1584
|
r.push({ name: n.homeRouteName }), h();
|
|
1585
1585
|
}
|
|
1586
|
-
function
|
|
1586
|
+
function D(e) {
|
|
1587
1587
|
return i.name === e;
|
|
1588
1588
|
}
|
|
1589
1589
|
function ee(e) {
|
|
1590
1590
|
r.push({ name: e }), h();
|
|
1591
1591
|
}
|
|
1592
|
-
return (n, r) => (
|
|
1593
|
-
l("div", { class:
|
|
1592
|
+
return (n, r) => (O(), c("div", null, [
|
|
1593
|
+
l("div", { class: x(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", F(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [l("button", {
|
|
1594
1594
|
type: "button",
|
|
1595
1595
|
onClick: E,
|
|
1596
1596
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1597
1597
|
"aria-label": "Go to home"
|
|
1598
|
-
}, [
|
|
1598
|
+
}, [M(n.$slots, "logo", { size: 28 }, void 0, !0)]), l("button", {
|
|
1599
1599
|
type: "button",
|
|
1600
1600
|
onClick: r[0] ||= (...e) => F(g) && F(g)(...e),
|
|
1601
|
-
class:
|
|
1601
|
+
class: x(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", F(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
|
|
1602
1602
|
"aria-label": F(m) ? "Close navigation menu" : "Open navigation menu",
|
|
1603
1603
|
"aria-expanded": F(m)
|
|
1604
|
-
}, [F(m) ? (
|
|
1604
|
+
}, [F(m) ? (O(), o(F(z), {
|
|
1605
1605
|
key: 1,
|
|
1606
1606
|
class: "w-6 h-6",
|
|
1607
1607
|
"aria-hidden": "true"
|
|
1608
|
-
})) : (
|
|
1608
|
+
})) : (O(), o(F(me), {
|
|
1609
1609
|
key: 0,
|
|
1610
1610
|
class: "w-6 h-6",
|
|
1611
1611
|
"aria-hidden": "true"
|
|
1612
|
-
}))], 10,
|
|
1613
|
-
F(m) ? (
|
|
1612
|
+
}))], 10, Xn)], 2),
|
|
1613
|
+
F(m) ? (O(), c("div", {
|
|
1614
1614
|
key: 0,
|
|
1615
1615
|
class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
|
|
1616
1616
|
"aria-hidden": "true",
|
|
@@ -1619,108 +1619,108 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1619
1619
|
l("aside", {
|
|
1620
1620
|
role: "navigation",
|
|
1621
1621
|
"aria-label": "Main navigation",
|
|
1622
|
-
class:
|
|
1622
|
+
class: x(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
|
|
1623
1623
|
F(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
|
|
1624
1624
|
F(m) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
|
|
1625
1625
|
t.collapsible && F(_) ? "lg:w-16" : "lg:w-60"
|
|
1626
1626
|
]])
|
|
1627
|
-
}, [l("div",
|
|
1628
|
-
l("div", { class:
|
|
1627
|
+
}, [l("div", Zn, [
|
|
1628
|
+
l("div", { class: x(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": C.value }]) }, [l("button", {
|
|
1629
1629
|
type: "button",
|
|
1630
1630
|
onClick: E,
|
|
1631
1631
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1632
1632
|
"aria-label": "Go to home"
|
|
1633
|
-
}, [
|
|
1633
|
+
}, [M(n.$slots, "logo", { size: C.value ? 36 : 52 }, void 0, !0)]), l("button", {
|
|
1634
1634
|
ref_key: "closeMobileButton",
|
|
1635
1635
|
ref: w,
|
|
1636
1636
|
type: "button",
|
|
1637
1637
|
onClick: r[2] ||= (...e) => F(h) && F(h)(...e),
|
|
1638
|
-
class:
|
|
1638
|
+
class: x(["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", F(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
|
|
1639
1639
|
"aria-label": "Close navigation menu"
|
|
1640
|
-
}, [p(F(
|
|
1640
|
+
}, [p(F(z), {
|
|
1641
1641
|
class: "w-5 h-5",
|
|
1642
1642
|
"aria-hidden": "true"
|
|
1643
1643
|
})], 2)], 2),
|
|
1644
|
-
l("nav",
|
|
1644
|
+
l("nav", Qn, [(O(!0), c(e, null, j(t.sections, (t) => (O(), c("div", { key: t.title }, [l("p", { class: x(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": C.value }]) }, P(t.title), 3), l("ul", $n, [(O(!0), c(e, null, j(t.items, (e) => (O(), c("li", { key: e.name }, [l("button", {
|
|
1645
1645
|
type: "button",
|
|
1646
|
-
"aria-current":
|
|
1646
|
+
"aria-current": D(e.name) ? "page" : void 0,
|
|
1647
1647
|
title: C.value ? e.label : void 0,
|
|
1648
1648
|
onClick: (t) => ee(e.name),
|
|
1649
|
-
class:
|
|
1650
|
-
}, [(
|
|
1651
|
-
l("div", { class:
|
|
1652
|
-
t.showNotifications ? (
|
|
1649
|
+
class: x(["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", [D(e.name) ? F(u) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : F(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": C.value }]])
|
|
1650
|
+
}, [(O(), o(N(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), l("span", { class: x({ "lg:hidden": C.value }) }, P(e.label), 3)], 10, er)]))), 128))])]))), 128))]),
|
|
1651
|
+
l("div", { class: x(["px-4 py-4 border-t transition-colors space-y-3", F(u) ? "border-gray-800" : "border-gray-200"]) }, [
|
|
1652
|
+
t.showNotifications ? (O(), c("button", {
|
|
1653
1653
|
key: 0,
|
|
1654
1654
|
type: "button",
|
|
1655
1655
|
onClick: r[3] ||= (...e) => F(S) && F(S)(...e),
|
|
1656
1656
|
title: "Notifications",
|
|
1657
|
-
"aria-label": F(
|
|
1658
|
-
class:
|
|
1659
|
-
}, [l("span",
|
|
1657
|
+
"aria-label": F(y) > 0 ? `Notifications, ${F(y)} unread` : "Notifications",
|
|
1658
|
+
class: x(["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", [F(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": C.value }]])
|
|
1659
|
+
}, [l("span", nr, [p(F(he), {
|
|
1660
1660
|
class: "w-[18px] h-[18px]",
|
|
1661
1661
|
"aria-hidden": "true"
|
|
1662
|
-
}), F(
|
|
1663
|
-
t.showThemeToggle ? (
|
|
1662
|
+
}), F(y) > 0 ? (O(), c("span", rr, P(F(y) > 99 ? "99+" : F(y)), 1)) : s("", !0)]), l("span", { class: x({ "lg:hidden": C.value }) }, "Notifications", 2)], 10, tr)) : s("", !0),
|
|
1663
|
+
t.showThemeToggle ? (O(), c("button", {
|
|
1664
1664
|
key: 1,
|
|
1665
1665
|
type: "button",
|
|
1666
1666
|
onClick: r[4] ||= (...e) => F(d) && F(d)(...e),
|
|
1667
1667
|
title: F(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1668
1668
|
"aria-label": F(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1669
1669
|
"aria-pressed": F(u),
|
|
1670
|
-
class:
|
|
1670
|
+
class: x(["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", [F(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": C.value }]])
|
|
1671
1671
|
}, [
|
|
1672
|
-
(
|
|
1673
|
-
class:
|
|
1672
|
+
(O(), o(N(F(u) ? F(Pe) : F(Me)), {
|
|
1673
|
+
class: x(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": C.value }]),
|
|
1674
1674
|
"aria-hidden": "true"
|
|
1675
1675
|
}, null, 8, ["class"])),
|
|
1676
|
-
l("span", { class:
|
|
1677
|
-
l("span", { class:
|
|
1678
|
-
], 10,
|
|
1679
|
-
t.collapsible ? (
|
|
1676
|
+
l("span", { class: x({ "lg:hidden": C.value }) }, P(F(u) ? "Switch to light" : "Switch to dark"), 3),
|
|
1677
|
+
l("span", { class: x(["ml-auto relative w-9 h-5 rounded-full transition-colors", [F(u) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": C.value }]]) }, [l("span", { class: x(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", F(u) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
|
|
1678
|
+
], 10, ir)) : s("", !0),
|
|
1679
|
+
t.collapsible ? (O(), c("button", {
|
|
1680
1680
|
key: 2,
|
|
1681
1681
|
type: "button",
|
|
1682
1682
|
onClick: r[5] ||= (...e) => F(v) && F(v)(...e),
|
|
1683
1683
|
title: F(_) ? "Expand sidebar" : "Collapse sidebar",
|
|
1684
1684
|
"aria-label": F(_) ? "Expand sidebar" : "Collapse sidebar",
|
|
1685
1685
|
"aria-pressed": F(_),
|
|
1686
|
-
class:
|
|
1687
|
-
}, [(
|
|
1686
|
+
class: x(["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", [F(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": C.value }]])
|
|
1687
|
+
}, [(O(), o(N(F(_) ? F(ye) : F(ve)), {
|
|
1688
1688
|
class: "w-[18px] h-[18px] shrink-0",
|
|
1689
1689
|
"aria-hidden": "true"
|
|
1690
|
-
})), l("span", { class:
|
|
1691
|
-
l("div", { class:
|
|
1692
|
-
l("div", { class:
|
|
1690
|
+
})), l("span", { class: x({ "lg:hidden": C.value }) }, "Collapse", 2)], 10, ar)) : s("", !0),
|
|
1691
|
+
l("div", { class: x({ "lg:hidden": C.value }) }, [M(n.$slots, "status", {}, void 0, !0)], 2),
|
|
1692
|
+
l("div", { class: x({ "lg:hidden": C.value }) }, [M(n.$slots, "footer", {}, () => [t.appName || t.version ? (O(), c("div", {
|
|
1693
1693
|
key: 0,
|
|
1694
|
-
class:
|
|
1694
|
+
class: x(["flex items-center justify-center gap-2 text-xs", (F(u), "text-gray-500")])
|
|
1695
1695
|
}, [l("span", null, [
|
|
1696
1696
|
f(P(t.appName), 1),
|
|
1697
|
-
t.appName && t.version ? (
|
|
1698
|
-
t.version ? (
|
|
1697
|
+
t.appName && t.version ? (O(), c(e, { key: 0 }, [f(P(" "))], 64)) : s("", !0),
|
|
1698
|
+
t.version ? (O(), c(e, { key: 1 }, [f("v" + P(t.version), 1)], 64)) : s("", !0)
|
|
1699
1699
|
])], 2)) : s("", !0)], !0)], 2)
|
|
1700
1700
|
], 2)
|
|
1701
1701
|
])], 2)
|
|
1702
1702
|
]));
|
|
1703
1703
|
}
|
|
1704
|
-
}), [["__scopeId", "data-v-bfce9dd7"]]),
|
|
1704
|
+
}), [["__scopeId", "data-v-bfce9dd7"]]), sr = {
|
|
1705
1705
|
key: 1,
|
|
1706
1706
|
class: "mt-4 flex justify-center py-6"
|
|
1707
|
-
},
|
|
1707
|
+
}, cr = {
|
|
1708
1708
|
key: 2,
|
|
1709
1709
|
class: "mt-4 text-sm text-red-500",
|
|
1710
1710
|
role: "alert"
|
|
1711
|
-
},
|
|
1711
|
+
}, lr = {
|
|
1712
1712
|
key: 3,
|
|
1713
1713
|
class: "mt-4"
|
|
1714
|
-
},
|
|
1714
|
+
}, ur = { class: "relative" }, dr = ["placeholder"], fr = {
|
|
1715
1715
|
key: 4,
|
|
1716
1716
|
class: "mt-3 max-h-64 overflow-y-auto"
|
|
1717
|
-
},
|
|
1717
|
+
}, pr = ["aria-pressed", "onClick"], mr = { class: "flex-1 min-w-0" }, hr = {
|
|
1718
1718
|
key: 0,
|
|
1719
1719
|
class: "text-center py-6"
|
|
1720
|
-
},
|
|
1720
|
+
}, gr = {
|
|
1721
1721
|
key: 1,
|
|
1722
1722
|
class: "text-center py-6"
|
|
1723
|
-
},
|
|
1723
|
+
}, _r = ["disabled"], vr = ["disabled"], yr = /* @__PURE__ */ m({
|
|
1724
1724
|
__name: "BaseEntityPickerModal",
|
|
1725
1725
|
props: {
|
|
1726
1726
|
title: {},
|
|
@@ -1742,10 +1742,10 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1742
1742
|
},
|
|
1743
1743
|
emits: ["confirm", "cancel"],
|
|
1744
1744
|
setup(t, { emit: n }) {
|
|
1745
|
-
let r = t, i = n, { isDark: d } = U(), f = X(), m =
|
|
1745
|
+
let r = t, i = n, { isDark: d } = U(), f = X(), m = A([]), h = A(!1), g = A(""), _ = A(null), v = A(""), y = A(null), S = a(() => {
|
|
1746
1746
|
let e = r.loader ? m.value : r.items;
|
|
1747
1747
|
return r.excludeId ? e.filter((e) => e.id !== r.excludeId) : e;
|
|
1748
|
-
}), C = a(() => S.value.filter((e) => e.label.toLowerCase().includes(v.value.toLowerCase()))),
|
|
1748
|
+
}), C = a(() => S.value.filter((e) => e.label.toLowerCase().includes(v.value.toLowerCase()))), w = {
|
|
1749
1749
|
emerald: {
|
|
1750
1750
|
iconBg: "bg-emerald-50",
|
|
1751
1751
|
iconText: "text-emerald-600",
|
|
@@ -1837,8 +1837,8 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1837
1837
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1838
1838
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1839
1839
|
}
|
|
1840
|
-
},
|
|
1841
|
-
|
|
1840
|
+
}, D = a(() => (d.value ? E : w)[r.variant]);
|
|
1841
|
+
T(async () => {
|
|
1842
1842
|
if (r.loader) {
|
|
1843
1843
|
h.value = !0;
|
|
1844
1844
|
try {
|
|
@@ -1849,62 +1849,62 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1849
1849
|
h.value = !1;
|
|
1850
1850
|
}
|
|
1851
1851
|
}
|
|
1852
|
-
await
|
|
1852
|
+
await b(), y.value?.focus();
|
|
1853
1853
|
});
|
|
1854
1854
|
function ee() {
|
|
1855
1855
|
_.value && !r.submitting && i("confirm", _.value);
|
|
1856
1856
|
}
|
|
1857
|
-
function
|
|
1857
|
+
function k() {
|
|
1858
1858
|
r.submitting || i("cancel");
|
|
1859
1859
|
}
|
|
1860
|
-
return (n, r) => (
|
|
1860
|
+
return (n, r) => (O(), o(En, {
|
|
1861
1861
|
title: t.title,
|
|
1862
|
-
icon: F(
|
|
1863
|
-
"icon-bg-class":
|
|
1864
|
-
"icon-class":
|
|
1862
|
+
icon: F(Oe),
|
|
1863
|
+
"icon-bg-class": D.value.iconBg,
|
|
1864
|
+
"icon-class": D.value.iconText,
|
|
1865
1865
|
"manual-close": t.submitting,
|
|
1866
|
-
onCancel:
|
|
1866
|
+
onCancel: k
|
|
1867
1867
|
}, u({
|
|
1868
|
-
footer:
|
|
1868
|
+
footer: I(() => [l("button", {
|
|
1869
1869
|
type: "button",
|
|
1870
1870
|
disabled: t.submitting,
|
|
1871
|
-
class:
|
|
1872
|
-
onClick:
|
|
1873
|
-
}, P(t.cancelText), 11,
|
|
1871
|
+
class: x(["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", F(f).ghostButton]),
|
|
1872
|
+
onClick: k
|
|
1873
|
+
}, P(t.cancelText), 11, _r), l("button", {
|
|
1874
1874
|
type: "button",
|
|
1875
1875
|
disabled: !_.value || t.submitting,
|
|
1876
|
-
class:
|
|
1876
|
+
class: x(["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", !_.value || t.submitting ? D.value.confirmDisabled : D.value.confirmActive]),
|
|
1877
1877
|
onClick: ee
|
|
1878
|
-
}, P(t.submitting ? t.submittingText : t.confirmText), 11,
|
|
1879
|
-
default:
|
|
1880
|
-
t.message ? (
|
|
1878
|
+
}, P(t.submitting ? t.submittingText : t.confirmText), 11, vr)]),
|
|
1879
|
+
default: I(() => [
|
|
1880
|
+
t.message ? (O(), c("p", {
|
|
1881
1881
|
key: 0,
|
|
1882
|
-
class:
|
|
1882
|
+
class: x(["text-sm", F(d) ? "text-gray-300" : "text-gray-600"])
|
|
1883
1883
|
}, P(t.message), 3)) : s("", !0),
|
|
1884
|
-
h.value ? (
|
|
1885
|
-
!h.value && !g.value && S.value.length > 0 ? (
|
|
1886
|
-
class:
|
|
1884
|
+
h.value ? (O(), c("div", sr, [p(Gt, { color: "emerald" })])) : g.value ? (O(), c("div", cr, P(g.value), 1)) : s("", !0),
|
|
1885
|
+
!h.value && !g.value && S.value.length > 0 ? (O(), c("div", lr, [l("div", ur, [p(F(Ae), {
|
|
1886
|
+
class: x(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", F(f).dimText]),
|
|
1887
1887
|
"aria-hidden": "true"
|
|
1888
|
-
}, null, 8, ["class"]),
|
|
1888
|
+
}, null, 8, ["class"]), L(l("input", {
|
|
1889
1889
|
ref_key: "searchInputRef",
|
|
1890
|
-
ref:
|
|
1890
|
+
ref: y,
|
|
1891
1891
|
"onUpdate:modelValue": r[0] ||= (e) => v.value = e,
|
|
1892
1892
|
type: "text",
|
|
1893
1893
|
placeholder: t.searchPlaceholder,
|
|
1894
|
-
class:
|
|
1895
|
-
}, null, 10,
|
|
1896
|
-
!h.value && !g.value ? (
|
|
1894
|
+
class: x(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [F(d) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", D.value.inputFocus]])
|
|
1895
|
+
}, null, 10, dr), [[se, v.value]])])])) : s("", !0),
|
|
1896
|
+
!h.value && !g.value ? (O(), c("div", fr, [(O(!0), c(e, null, j(C.value, (e) => (O(), c("button", {
|
|
1897
1897
|
key: e.id,
|
|
1898
1898
|
type: "button",
|
|
1899
1899
|
"aria-pressed": _.value === e.id,
|
|
1900
|
-
class:
|
|
1900
|
+
class: x(["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", [_.value === e.id ? D.value.selectedRow : F(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
|
|
1901
1901
|
onClick: (t) => _.value = e.id
|
|
1902
1902
|
}, [
|
|
1903
|
-
p(F(
|
|
1904
|
-
l("div",
|
|
1905
|
-
_.value === e.id ? (
|
|
1903
|
+
p(F(Oe), { class: x(["w-5 h-5 flex-shrink-0", F(f).dimText]) }, null, 8, ["class"]),
|
|
1904
|
+
l("div", mr, [l("p", { class: x(["text-sm font-medium truncate", F(f).bodyText]) }, P(e.label), 3)]),
|
|
1905
|
+
_.value === e.id ? (O(), c("div", {
|
|
1906
1906
|
key: 0,
|
|
1907
|
-
class:
|
|
1907
|
+
class: x(["w-5 h-5 rounded-full flex items-center justify-center", D.value.checkBg])
|
|
1908
1908
|
}, [...r[1] ||= [l("svg", {
|
|
1909
1909
|
class: "w-3 h-3 text-white",
|
|
1910
1910
|
fill: "none",
|
|
@@ -1917,12 +1917,12 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1917
1917
|
"stroke-linejoin": "round",
|
|
1918
1918
|
d: "M5 13l4 4L19 7"
|
|
1919
1919
|
})], -1)]], 2)) : s("", !0)
|
|
1920
|
-
], 10,
|
|
1920
|
+
], 10, pr))), 128)), S.value.length === 0 ? (O(), c("div", hr, [l("p", { class: x(["text-sm", F(f).dimText]) }, P(t.emptyMessage), 3)])) : C.value.length === 0 ? (O(), c("div", gr, [l("p", { class: x(["text-sm", F(f).dimText]) }, P(t.noMatchMessage), 3)])) : s("", !0)])) : s("", !0)
|
|
1921
1921
|
]),
|
|
1922
1922
|
_: 2
|
|
1923
1923
|
}, [n.$slots.icon ? {
|
|
1924
1924
|
name: "icon",
|
|
1925
|
-
fn:
|
|
1925
|
+
fn: I(() => [M(n.$slots, "icon")]),
|
|
1926
1926
|
key: "0"
|
|
1927
1927
|
} : void 0]), 1032, [
|
|
1928
1928
|
"title",
|
|
@@ -1932,10 +1932,10 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1932
1932
|
"manual-close"
|
|
1933
1933
|
]));
|
|
1934
1934
|
}
|
|
1935
|
-
}),
|
|
1935
|
+
}), br = {
|
|
1936
1936
|
href: "#main-content",
|
|
1937
1937
|
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"
|
|
1938
|
-
},
|
|
1938
|
+
}, xr = ["inert"], Sr = /* @__PURE__ */ m({
|
|
1939
1939
|
__name: "BaseAppLayout",
|
|
1940
1940
|
props: {
|
|
1941
1941
|
showSidebar: {
|
|
@@ -1945,23 +1945,23 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1945
1945
|
skipLinkLabel: { default: "Skip to main content" }
|
|
1946
1946
|
},
|
|
1947
1947
|
setup(e) {
|
|
1948
|
-
let t = e, { isDark: n } = U(), { mobileOpen: r } =
|
|
1949
|
-
return (t, a) => (
|
|
1950
|
-
l("a",
|
|
1951
|
-
o.value ?
|
|
1948
|
+
let t = e, { isDark: n } = U(), { mobileOpen: r } = Hn(), { collapsed: i } = Kn(), o = a(() => t.showSidebar);
|
|
1949
|
+
return (t, a) => (O(), c("div", { class: x(["min-h-screen transition-colors duration-300", F(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
|
|
1950
|
+
l("a", br, P(e.skipLinkLabel), 1),
|
|
1951
|
+
o.value ? M(t.$slots, "sidebar", {}, void 0, void 0, 0) : s("", !0),
|
|
1952
1952
|
l("main", {
|
|
1953
1953
|
id: "main-content",
|
|
1954
1954
|
tabindex: "-1",
|
|
1955
1955
|
inert: o.value && F(r) ? !0 : void 0,
|
|
1956
|
-
class:
|
|
1957
|
-
}, [
|
|
1956
|
+
class: x(["transition-all duration-300", o.value ? F(i) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
|
|
1957
|
+
}, [M(t.$slots, "default")], 10, xr)
|
|
1958
1958
|
], 2));
|
|
1959
1959
|
}
|
|
1960
|
-
}),
|
|
1960
|
+
}), Cr = { class: "flex items-center gap-3 min-w-0" }, wr = {
|
|
1961
1961
|
key: 0,
|
|
1962
1962
|
class: "absolute left-0 top-[0.14em] h-[1.1em] w-1 rounded-full bg-gradient-to-b from-emerald-400 to-emerald-600",
|
|
1963
1963
|
"aria-hidden": "true"
|
|
1964
|
-
},
|
|
1964
|
+
}, Tr = { class: "flex items-center gap-2" }, Er = /* @__PURE__ */ m({
|
|
1965
1965
|
__name: "BasePageHeader",
|
|
1966
1966
|
props: {
|
|
1967
1967
|
title: {},
|
|
@@ -1972,11 +1972,11 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1972
1972
|
marginClass: { default: "mb-8" },
|
|
1973
1973
|
accent: {
|
|
1974
1974
|
type: Boolean,
|
|
1975
|
-
default:
|
|
1975
|
+
default: void 0
|
|
1976
1976
|
}
|
|
1977
1977
|
},
|
|
1978
1978
|
setup(e) {
|
|
1979
|
-
let t = e, { isDark: n } = U(), r = X(), i = a(() => {
|
|
1979
|
+
let t = e, { isDark: n } = U(), r = X(), i = ie(), o = a(() => t.accent ?? !i.icon), u = a(() => {
|
|
1980
1980
|
let e = {
|
|
1981
1981
|
emerald: {
|
|
1982
1982
|
dark: "bg-emerald-500/10",
|
|
@@ -1996,7 +1996,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
1996
1996
|
}
|
|
1997
1997
|
}[t.iconColor];
|
|
1998
1998
|
return n.value ? e.dark : e.light;
|
|
1999
|
-
}),
|
|
1999
|
+
}), d = a(() => {
|
|
2000
2000
|
let e = {
|
|
2001
2001
|
emerald: {
|
|
2002
2002
|
dark: "text-emerald-400",
|
|
@@ -2017,19 +2017,19 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2017
2017
|
}[t.iconColor];
|
|
2018
2018
|
return n.value ? e.dark : e.light;
|
|
2019
2019
|
});
|
|
2020
|
-
return (t, n) => (
|
|
2020
|
+
return (t, n) => (O(), c("header", { class: x(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [l("div", { class: x(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [l("div", Cr, [t.$slots.icon ? (O(), c("div", {
|
|
2021
2021
|
key: 0,
|
|
2022
|
-
class:
|
|
2023
|
-
}, [
|
|
2022
|
+
class: x(["w-10 h-10 rounded-lg flex items-center justify-center", u.value])
|
|
2023
|
+
}, [M(t.$slots, "icon", { iconClass: d.value })], 2)) : s("", !0), l("div", null, [l("h1", { class: x(["text-2xl font-bold", [F(r).primaryTextSoft, o.value ? "relative pl-3.5 tracking-tight" : ""]]) }, [o.value ? (O(), c("span", wr)) : s("", !0), f(" " + P(e.title), 1)], 2), e.subtitle || t.$slots.subtitle ? (O(), c("p", {
|
|
2024
2024
|
key: 0,
|
|
2025
|
-
class:
|
|
2026
|
-
}, [
|
|
2025
|
+
class: x(["max-w-[72ch] text-sm", F(r).dimTextAlt])
|
|
2026
|
+
}, [M(t.$slots, "subtitle", {}, () => [f(P(e.subtitle), 1)])], 2)) : s("", !0)])]), l("div", Tr, [M(t.$slots, "actions")])], 2)], 2));
|
|
2027
2027
|
}
|
|
2028
|
-
}),
|
|
2028
|
+
}), Dr = [
|
|
2029
2029
|
"type",
|
|
2030
2030
|
"disabled",
|
|
2031
2031
|
"title"
|
|
2032
|
-
],
|
|
2032
|
+
], Or = { key: 0 }, kr = /* @__PURE__ */ m({
|
|
2033
2033
|
__name: "BaseToolbarButton",
|
|
2034
2034
|
props: {
|
|
2035
2035
|
label: { default: "" },
|
|
@@ -2064,20 +2064,20 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2064
2064
|
}[t.variant];
|
|
2065
2065
|
return [r[t.variant], n.value ? e.dark : e.light];
|
|
2066
2066
|
});
|
|
2067
|
-
return (t, n) => (
|
|
2067
|
+
return (t, n) => (O(), c("button", {
|
|
2068
2068
|
type: e.type,
|
|
2069
2069
|
disabled: e.disabled,
|
|
2070
2070
|
title: e.title,
|
|
2071
|
-
class:
|
|
2071
|
+
class: x(["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", i.value]),
|
|
2072
2072
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2073
|
-
}, [
|
|
2073
|
+
}, [M(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (O(), c("span", Or, P(e.label), 1)) : s("", !0)], 10, Dr));
|
|
2074
2074
|
}
|
|
2075
|
-
}),
|
|
2075
|
+
}), Ar = [
|
|
2076
2076
|
"type",
|
|
2077
2077
|
"disabled",
|
|
2078
2078
|
"title",
|
|
2079
2079
|
"aria-label"
|
|
2080
|
-
],
|
|
2080
|
+
], jr = { key: 0 }, Mr = /* @__PURE__ */ m({
|
|
2081
2081
|
__name: "BaseActionButton",
|
|
2082
2082
|
props: {
|
|
2083
2083
|
label: { default: "" },
|
|
@@ -2169,16 +2169,16 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2169
2169
|
}[t.color];
|
|
2170
2170
|
return n.value ? e.dark : e.light;
|
|
2171
2171
|
}), o = a(() => t.disabled ? `${i.value} opacity-50 cursor-not-allowed` : `${r.value} cursor-pointer`);
|
|
2172
|
-
return (t, n) => (
|
|
2172
|
+
return (t, n) => (O(), c("button", {
|
|
2173
2173
|
type: e.type,
|
|
2174
2174
|
disabled: e.disabled,
|
|
2175
2175
|
title: e.title,
|
|
2176
2176
|
"aria-label": e.ariaLabel,
|
|
2177
|
-
class:
|
|
2177
|
+
class: x(["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" : "", o.value]]),
|
|
2178
2178
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2179
|
-
}, [
|
|
2179
|
+
}, [M(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (O(), c("span", jr, P(e.label), 1)) : s("", !0)], 10, Ar));
|
|
2180
2180
|
}
|
|
2181
|
-
}),
|
|
2181
|
+
}), Nr = ["title", "aria-label"], Pr = /* @__PURE__ */ m({
|
|
2182
2182
|
__name: "BaseCopyButton",
|
|
2183
2183
|
props: {
|
|
2184
2184
|
text: {},
|
|
@@ -2189,7 +2189,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2189
2189
|
},
|
|
2190
2190
|
emits: ["copied", "error"],
|
|
2191
2191
|
setup(e, { emit: t }) {
|
|
2192
|
-
let n = e, r = t, { isDark: i } = U(), s =
|
|
2192
|
+
let n = e, r = t, { isDark: i } = U(), s = A(!1), l = null, u = a(() => s.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = a(() => n.label ? `Copy ${n.label}` : "Copy"), f = a(() => 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 ${s.value ? i.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : i.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 ${i.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
|
|
2193
2193
|
async function p(e) {
|
|
2194
2194
|
try {
|
|
2195
2195
|
if (navigator.clipboard?.writeText) {
|
|
@@ -2211,36 +2211,36 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2211
2211
|
r("error", e);
|
|
2212
2212
|
}
|
|
2213
2213
|
}
|
|
2214
|
-
return
|
|
2214
|
+
return D(() => {
|
|
2215
2215
|
l && clearTimeout(l);
|
|
2216
|
-
}), (t, n) => (
|
|
2216
|
+
}), (t, n) => (O(), c("button", {
|
|
2217
2217
|
type: "button",
|
|
2218
2218
|
title: u.value,
|
|
2219
2219
|
"aria-label": d.value,
|
|
2220
|
-
class:
|
|
2220
|
+
class: x(f.value),
|
|
2221
2221
|
onClick: m
|
|
2222
|
-
}, [s.value ? (
|
|
2222
|
+
}, [s.value ? (O(), o(F(Ce), {
|
|
2223
2223
|
key: 0,
|
|
2224
|
-
class:
|
|
2224
|
+
class: x(e.iconClass),
|
|
2225
2225
|
"aria-hidden": "true"
|
|
2226
|
-
}, null, 8, ["class"])) : (
|
|
2226
|
+
}, null, 8, ["class"])) : (O(), o(F(we), {
|
|
2227
2227
|
key: 1,
|
|
2228
|
-
class:
|
|
2228
|
+
class: x(e.iconClass),
|
|
2229
2229
|
"aria-hidden": "true"
|
|
2230
|
-
}, null, 8, ["class"]))], 10,
|
|
2230
|
+
}, null, 8, ["class"]))], 10, Nr));
|
|
2231
2231
|
}
|
|
2232
|
-
}),
|
|
2232
|
+
}), Fr = ["disabled", "aria-busy"], Ir = {
|
|
2233
2233
|
key: 0,
|
|
2234
2234
|
class: "w-5 h-5 animate-spin shrink-0",
|
|
2235
2235
|
viewBox: "0 0 24 24",
|
|
2236
2236
|
fill: "none",
|
|
2237
2237
|
"aria-hidden": "true"
|
|
2238
|
-
},
|
|
2238
|
+
}, Lr = {
|
|
2239
2239
|
key: 1,
|
|
2240
2240
|
class: "w-5 h-5 shrink-0",
|
|
2241
2241
|
viewBox: "0 0 48 48",
|
|
2242
2242
|
"aria-hidden": "true"
|
|
2243
|
-
},
|
|
2243
|
+
}, Rr = /* @__PURE__ */ m({
|
|
2244
2244
|
__name: "BaseGoogleSignInButton",
|
|
2245
2245
|
props: {
|
|
2246
2246
|
label: { default: "Sign in with Google" },
|
|
@@ -2263,13 +2263,13 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2263
2263
|
function s() {
|
|
2264
2264
|
o.value || r("click");
|
|
2265
2265
|
}
|
|
2266
|
-
return (t, n) => (
|
|
2266
|
+
return (t, n) => (O(), c("button", {
|
|
2267
2267
|
type: "button",
|
|
2268
2268
|
disabled: o.value,
|
|
2269
2269
|
"aria-busy": e.loading,
|
|
2270
2270
|
onClick: s,
|
|
2271
|
-
class:
|
|
2272
|
-
}, [e.loading ? (
|
|
2271
|
+
class: x(["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" : "", F(i) ? "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"]])
|
|
2272
|
+
}, [e.loading ? (O(), c("svg", Ir, [...n[0] ||= [l("circle", {
|
|
2273
2273
|
class: "opacity-25",
|
|
2274
2274
|
cx: "12",
|
|
2275
2275
|
cy: "12",
|
|
@@ -2280,18 +2280,18 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2280
2280
|
class: "opacity-75",
|
|
2281
2281
|
fill: "currentColor",
|
|
2282
2282
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2283
|
-
}, null, -1)]])) : (
|
|
2283
|
+
}, null, -1)]])) : (O(), c("svg", Lr, [...n[1] ||= [d("<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)]])), l("span", null, P(e.label), 1)], 10, Fr));
|
|
2284
2284
|
}
|
|
2285
|
-
}),
|
|
2285
|
+
}), zr = {
|
|
2286
2286
|
key: 0,
|
|
2287
2287
|
class: "flex justify-center mb-6"
|
|
2288
|
-
},
|
|
2288
|
+
}, Br = { class: "mb-6 text-center" }, Vr = { class: "flex items-center gap-3 my-5" }, Hr = ["disabled"], Ur = { class: "flex items-center justify-between mb-1.5" }, Wr = { class: "relative" }, Gr = ["type", "disabled"], Kr = ["aria-label", "aria-pressed"], qr = ["disabled"], Jr = ["disabled", "aria-busy"], Yr = {
|
|
2289
2289
|
key: 0,
|
|
2290
2290
|
class: "w-4 h-4 animate-spin",
|
|
2291
2291
|
viewBox: "0 0 24 24",
|
|
2292
2292
|
fill: "none",
|
|
2293
2293
|
"aria-hidden": "true"
|
|
2294
|
-
},
|
|
2294
|
+
}, Xr = /* @__PURE__ */ m({
|
|
2295
2295
|
__name: "BaseLoginForm",
|
|
2296
2296
|
props: {
|
|
2297
2297
|
title: { default: "Sign in" },
|
|
@@ -2317,7 +2317,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2317
2317
|
},
|
|
2318
2318
|
emits: ["submit", "google-sign-in"],
|
|
2319
2319
|
setup(t, { emit: n }) {
|
|
2320
|
-
let r = t, i = n, { isDark: o } = U(), u = X(), d =
|
|
2320
|
+
let r = t, i = n, { isDark: o } = U(), u = X(), d = A(""), m = A(""), h = A(!1), g = A(!1), _ = a(() => r.loading || r.googleLoading);
|
|
2321
2321
|
function v() {
|
|
2322
2322
|
_.value || i("submit", {
|
|
2323
2323
|
email: d.value,
|
|
@@ -2325,34 +2325,34 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2325
2325
|
...r.showRemember ? { remember: h.value } : {}
|
|
2326
2326
|
});
|
|
2327
2327
|
}
|
|
2328
|
-
return (n, r) => (
|
|
2329
|
-
n.$slots.logo ? (
|
|
2330
|
-
l("div",
|
|
2328
|
+
return (n, r) => (O(), c("div", { class: x(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", F(u).card]) }, [
|
|
2329
|
+
n.$slots.logo ? (O(), c("div", zr, [M(n.$slots, "logo")])) : s("", !0),
|
|
2330
|
+
l("div", Br, [l("h1", { class: x(["text-xl font-semibold", F(u).primaryText]) }, P(t.title), 3), t.subtitle ? (O(), c("p", {
|
|
2331
2331
|
key: 0,
|
|
2332
|
-
class:
|
|
2332
|
+
class: x(["mt-1 text-sm", F(u).mutedText])
|
|
2333
2333
|
}, P(t.subtitle), 3)) : s("", !0)]),
|
|
2334
|
-
t.error ? (
|
|
2334
|
+
t.error ? (O(), c("div", {
|
|
2335
2335
|
key: 1,
|
|
2336
2336
|
role: "alert",
|
|
2337
|
-
class:
|
|
2337
|
+
class: x(["mb-4 rounded-lg border px-3 py-2 text-sm", F(o) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
|
|
2338
2338
|
}, P(t.error), 3)) : s("", !0),
|
|
2339
|
-
t.showGoogle ? (
|
|
2339
|
+
t.showGoogle ? (O(), c(e, { key: 2 }, [p(Rr, {
|
|
2340
2340
|
loading: t.googleLoading,
|
|
2341
2341
|
disabled: t.loading,
|
|
2342
2342
|
onClick: r[0] ||= (e) => i("google-sign-in")
|
|
2343
|
-
}, null, 8, ["loading", "disabled"]), l("div",
|
|
2344
|
-
l("span", { class:
|
|
2345
|
-
l("span", { class:
|
|
2346
|
-
l("span", { class:
|
|
2343
|
+
}, null, 8, ["loading", "disabled"]), l("div", Vr, [
|
|
2344
|
+
l("span", { class: x(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
|
|
2345
|
+
l("span", { class: x(["text-xs uppercase tracking-wider", F(u).dimTextAlt]) }, "or", 2),
|
|
2346
|
+
l("span", { class: x(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
|
|
2347
2347
|
])], 64)) : s("", !0),
|
|
2348
2348
|
l("form", {
|
|
2349
2349
|
class: "space-y-4",
|
|
2350
|
-
onSubmit:
|
|
2350
|
+
onSubmit: R(v, ["prevent"])
|
|
2351
2351
|
}, [
|
|
2352
2352
|
l("div", null, [l("label", {
|
|
2353
2353
|
for: "login-email",
|
|
2354
|
-
class:
|
|
2355
|
-
}, " Email ", 2),
|
|
2354
|
+
class: x(["block mb-1.5 text-sm font-medium", F(u).label])
|
|
2355
|
+
}, " Email ", 2), L(l("input", {
|
|
2356
2356
|
id: "login-email",
|
|
2357
2357
|
"onUpdate:modelValue": r[1] ||= (e) => d.value = e,
|
|
2358
2358
|
type: "email",
|
|
@@ -2361,12 +2361,12 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2361
2361
|
required: "",
|
|
2362
2362
|
disabled: _.value,
|
|
2363
2363
|
placeholder: "you@example.com",
|
|
2364
|
-
class:
|
|
2365
|
-
}, null, 10,
|
|
2366
|
-
l("div", null, [l("div",
|
|
2364
|
+
class: x(["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", F(u).inputWithPlaceholder])
|
|
2365
|
+
}, null, 10, Hr), [[se, d.value]])]),
|
|
2366
|
+
l("div", null, [l("div", Ur, [l("label", {
|
|
2367
2367
|
for: "login-password",
|
|
2368
|
-
class:
|
|
2369
|
-
}, " Password ", 2),
|
|
2368
|
+
class: x(["block text-sm font-medium", F(u).label])
|
|
2369
|
+
}, " Password ", 2), M(n.$slots, "forgot")]), l("div", Wr, [L(l("input", {
|
|
2370
2370
|
id: "login-password",
|
|
2371
2371
|
"onUpdate:modelValue": r[2] ||= (e) => m.value = e,
|
|
2372
2372
|
type: g.value ? "text" : "password",
|
|
@@ -2375,29 +2375,29 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2375
2375
|
required: "",
|
|
2376
2376
|
disabled: _.value,
|
|
2377
2377
|
placeholder: "••••••••",
|
|
2378
|
-
class:
|
|
2379
|
-
}, null, 10,
|
|
2378
|
+
class: x(["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", F(u).inputWithPlaceholder])
|
|
2379
|
+
}, null, 10, Gr), [[oe, m.value]]), l("button", {
|
|
2380
2380
|
type: "button",
|
|
2381
2381
|
onClick: r[3] ||= (e) => g.value = !g.value,
|
|
2382
2382
|
"aria-label": g.value ? "Hide password" : "Show password",
|
|
2383
2383
|
"aria-pressed": g.value,
|
|
2384
|
-
class:
|
|
2385
|
-
}, P(g.value ? "Hide" : "Show"), 11,
|
|
2386
|
-
t.showRemember ? (
|
|
2384
|
+
class: x(["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", F(u).mutedText])
|
|
2385
|
+
}, P(g.value ? "Hide" : "Show"), 11, Kr)])]),
|
|
2386
|
+
t.showRemember ? (O(), c("label", {
|
|
2387
2387
|
key: 0,
|
|
2388
|
-
class:
|
|
2389
|
-
}, [
|
|
2388
|
+
class: x(["flex items-center gap-2 text-sm cursor-pointer select-none", F(u).bodyText])
|
|
2389
|
+
}, [L(l("input", {
|
|
2390
2390
|
"onUpdate:modelValue": r[4] ||= (e) => h.value = e,
|
|
2391
2391
|
type: "checkbox",
|
|
2392
2392
|
disabled: _.value,
|
|
2393
2393
|
class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
|
|
2394
|
-
}, null, 8,
|
|
2394
|
+
}, null, 8, qr), [[ae, h.value]]), r[5] ||= f(" Remember me ", -1)], 2)) : s("", !0),
|
|
2395
2395
|
l("button", {
|
|
2396
2396
|
type: "submit",
|
|
2397
2397
|
disabled: _.value,
|
|
2398
2398
|
"aria-busy": t.loading,
|
|
2399
2399
|
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"
|
|
2400
|
-
}, [t.loading ? (
|
|
2400
|
+
}, [t.loading ? (O(), c("svg", Yr, [...r[6] ||= [l("circle", {
|
|
2401
2401
|
class: "opacity-25",
|
|
2402
2402
|
cx: "12",
|
|
2403
2403
|
cy: "12",
|
|
@@ -2408,18 +2408,18 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2408
2408
|
class: "opacity-75",
|
|
2409
2409
|
fill: "currentColor",
|
|
2410
2410
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2411
|
-
}, null, -1)]])) : s("", !0), f(" " + P(t.submitLabel), 1)], 8,
|
|
2411
|
+
}, null, -1)]])) : s("", !0), f(" " + P(t.submitLabel), 1)], 8, Jr)
|
|
2412
2412
|
], 32),
|
|
2413
|
-
n.$slots.footer ? (
|
|
2413
|
+
n.$slots.footer ? (O(), c("div", {
|
|
2414
2414
|
key: 3,
|
|
2415
|
-
class:
|
|
2416
|
-
}, [
|
|
2415
|
+
class: x(["mt-6 text-center text-sm", F(u).mutedText])
|
|
2416
|
+
}, [M(n.$slots, "footer")], 2)) : s("", !0)
|
|
2417
2417
|
], 2));
|
|
2418
2418
|
}
|
|
2419
|
-
}),
|
|
2419
|
+
}), Zr = ["aria-label"], Qr = { class: "flex-1 overflow-y-auto" }, $r = {
|
|
2420
2420
|
key: 0,
|
|
2421
2421
|
class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
|
|
2422
|
-
},
|
|
2422
|
+
}, ei = ["onClick"], ti = { class: "min-w-0 flex-1" }, ni = { class: "flex items-baseline justify-between gap-2" }, ri = /* @__PURE__ */ m({
|
|
2423
2423
|
__name: "BaseNotificationPanel",
|
|
2424
2424
|
props: {
|
|
2425
2425
|
title: { default: "Notifications" },
|
|
@@ -2431,24 +2431,24 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2431
2431
|
},
|
|
2432
2432
|
emits: ["select"],
|
|
2433
2433
|
setup(n, { emit: i }) {
|
|
2434
|
-
let u = i, { isDark: d } = U(), m = X(), { notifications: h, unreadCount: g, open: _, closePanel: v, markAllRead: y, markRead:
|
|
2434
|
+
let u = i, { isDark: d } = U(), m = X(), { notifications: h, unreadCount: g, open: _, closePanel: v, markAllRead: y, markRead: b } = Yn(), S = {
|
|
2435
2435
|
info: "bg-sky-500",
|
|
2436
2436
|
success: "bg-emerald-500",
|
|
2437
2437
|
warning: "bg-amber-500",
|
|
2438
2438
|
error: "bg-red-500"
|
|
2439
2439
|
}, C = a(() => h.value.length);
|
|
2440
2440
|
function w(e) {
|
|
2441
|
-
|
|
2441
|
+
b(e), u("select", e);
|
|
2442
2442
|
}
|
|
2443
|
-
return
|
|
2443
|
+
return _n(() => {
|
|
2444
2444
|
_.value && v();
|
|
2445
|
-
}), (i, a) => (
|
|
2445
|
+
}), (i, a) => (O(), o(t, { to: "body" }, [p(r, {
|
|
2446
2446
|
"enter-active-class": "transition-opacity duration-200",
|
|
2447
2447
|
"enter-from-class": "opacity-0",
|
|
2448
2448
|
"leave-active-class": "transition-opacity duration-200",
|
|
2449
2449
|
"leave-to-class": "opacity-0"
|
|
2450
2450
|
}, {
|
|
2451
|
-
default:
|
|
2451
|
+
default: I(() => [F(_) ? (O(), c("div", {
|
|
2452
2452
|
key: 0,
|
|
2453
2453
|
class: "fixed inset-0 z-[60] bg-black/50",
|
|
2454
2454
|
"aria-hidden": "true",
|
|
@@ -2461,55 +2461,55 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2461
2461
|
"leave-active-class": "transition-transform duration-300 ease-in",
|
|
2462
2462
|
"leave-to-class": "-translate-x-full"
|
|
2463
2463
|
}, {
|
|
2464
|
-
default:
|
|
2464
|
+
default: I(() => [F(_) ? (O(), c("aside", {
|
|
2465
2465
|
key: 0,
|
|
2466
2466
|
role: "dialog",
|
|
2467
2467
|
"aria-modal": "true",
|
|
2468
2468
|
"aria-label": n.title,
|
|
2469
|
-
class:
|
|
2469
|
+
class: x(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", F(d) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
|
|
2470
2470
|
}, [
|
|
2471
|
-
l("div", { class:
|
|
2471
|
+
l("div", { class: x(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", F(m).border]) }, [l("h2", { class: x(["text-lg font-semibold flex items-center gap-2", F(m).primaryText]) }, [f(P(n.title) + " ", 1), l("span", { class: x(["text-sm font-normal", F(m).dimTextAlt]) }, "— " + P(C.value), 3)], 2), l("button", {
|
|
2472
2472
|
type: "button",
|
|
2473
2473
|
onClick: a[1] ||= (...e) => F(v) && F(v)(...e),
|
|
2474
2474
|
"aria-label": "Close notifications",
|
|
2475
|
-
class:
|
|
2476
|
-
}, [p(F(
|
|
2475
|
+
class: x(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", F(d) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
|
|
2476
|
+
}, [p(F(z), {
|
|
2477
2477
|
class: "w-5 h-5",
|
|
2478
2478
|
"aria-hidden": "true"
|
|
2479
2479
|
})], 2)], 2),
|
|
2480
|
-
n.showMarkAllRead && F(g) > 0 ? (
|
|
2480
|
+
n.showMarkAllRead && F(g) > 0 ? (O(), c("div", {
|
|
2481
2481
|
key: 0,
|
|
2482
|
-
class:
|
|
2482
|
+
class: x(["px-5 py-2 border-b shrink-0 flex justify-end", F(m).border])
|
|
2483
2483
|
}, [l("button", {
|
|
2484
2484
|
type: "button",
|
|
2485
2485
|
onClick: a[2] ||= (...e) => F(y) && F(y)(...e),
|
|
2486
|
-
class:
|
|
2486
|
+
class: x(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", F(m).emeraldText])
|
|
2487
2487
|
}, " Mark all as read ", 2)], 2)) : s("", !0),
|
|
2488
|
-
l("div",
|
|
2489
|
-
class:
|
|
2488
|
+
l("div", Qr, [C.value === 0 ? (O(), c("div", $r, [p(F(he), {
|
|
2489
|
+
class: x(["w-10 h-10", F(m).illustration]),
|
|
2490
2490
|
"aria-hidden": "true"
|
|
2491
|
-
}, null, 8, ["class"]), l("p", { class:
|
|
2491
|
+
}, null, 8, ["class"]), l("p", { class: x(["text-sm", F(m).mutedText]) }, P(n.emptyText), 3)])) : (O(), c("ul", {
|
|
2492
2492
|
key: 1,
|
|
2493
|
-
class:
|
|
2494
|
-
}, [(
|
|
2493
|
+
class: x(["divide-y", F(d) ? "divide-gray-800" : "divide-gray-100"])
|
|
2494
|
+
}, [(O(!0), c(e, null, j(F(h), (e) => (O(), c("li", { key: e.id }, [l("button", {
|
|
2495
2495
|
type: "button",
|
|
2496
2496
|
onClick: (t) => w(e.id),
|
|
2497
|
-
class:
|
|
2497
|
+
class: x(["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 ? "" : F(d) ? "bg-emerald-500/5" : "bg-emerald-50/60", F(d) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
|
|
2498
2498
|
}, [l("span", {
|
|
2499
|
-
class:
|
|
2499
|
+
class: x(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? F(d) ? "bg-gray-700" : "bg-gray-300" : S[e.type ?? "info"]]),
|
|
2500
2500
|
"aria-hidden": "true"
|
|
2501
|
-
}, null, 2), l("span",
|
|
2501
|
+
}, null, 2), l("span", ti, [l("span", ni, [l("span", { class: x(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", F(m).primaryTextSoft]]) }, P(e.title), 3), e.time ? (O(), c("span", {
|
|
2502
2502
|
key: 0,
|
|
2503
|
-
class:
|
|
2504
|
-
}, P(e.time), 3)) : s("", !0)]), e.message ? (
|
|
2503
|
+
class: x(["text-xs shrink-0", F(m).dimText])
|
|
2504
|
+
}, P(e.time), 3)) : s("", !0)]), e.message ? (O(), c("span", {
|
|
2505
2505
|
key: 0,
|
|
2506
|
-
class:
|
|
2507
|
-
}, P(e.message), 3)) : s("", !0)])], 10,
|
|
2508
|
-
], 10,
|
|
2506
|
+
class: x(["mt-0.5 block text-sm", F(m).mutedText])
|
|
2507
|
+
}, P(e.message), 3)) : s("", !0)])], 10, ei)]))), 128))], 2))])
|
|
2508
|
+
], 10, Zr)) : s("", !0)]),
|
|
2509
2509
|
_: 1
|
|
2510
2510
|
})]));
|
|
2511
2511
|
}
|
|
2512
|
-
}),
|
|
2512
|
+
}), ii = ["disabled"], ai = /* @__PURE__ */ m({
|
|
2513
2513
|
__name: "BaseChipButton",
|
|
2514
2514
|
props: {
|
|
2515
2515
|
size: { default: "sm" },
|
|
@@ -2521,29 +2521,29 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2521
2521
|
emits: ["click"],
|
|
2522
2522
|
setup(e, { emit: t }) {
|
|
2523
2523
|
let n = t, { isDark: r } = U();
|
|
2524
|
-
return (t, i) => (
|
|
2524
|
+
return (t, i) => (O(), c("button", {
|
|
2525
2525
|
type: "button",
|
|
2526
2526
|
disabled: e.disabled,
|
|
2527
|
-
class:
|
|
2527
|
+
class: x(["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", F(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"]]),
|
|
2528
2528
|
onClick: i[0] ||= (e) => n("click")
|
|
2529
|
-
}, [
|
|
2529
|
+
}, [M(t.$slots, "default")], 10, ii));
|
|
2530
2530
|
}
|
|
2531
|
-
}),
|
|
2531
|
+
}), oi = /* @__PURE__ */ m({
|
|
2532
2532
|
__name: "BaseRemoveButton",
|
|
2533
2533
|
emits: ["click"],
|
|
2534
2534
|
setup(e, { emit: t }) {
|
|
2535
2535
|
let n = t;
|
|
2536
|
-
return (e, t) => (
|
|
2536
|
+
return (e, t) => (O(), c("button", {
|
|
2537
2537
|
type: "button",
|
|
2538
2538
|
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",
|
|
2539
2539
|
onClick: t[0] ||= (e) => n("click")
|
|
2540
2540
|
}, " × "));
|
|
2541
2541
|
}
|
|
2542
|
-
}),
|
|
2542
|
+
}), si = { class: "relative flex h-2 w-2" }, ci = {
|
|
2543
2543
|
key: 0,
|
|
2544
2544
|
class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
|
|
2545
2545
|
"aria-hidden": "true"
|
|
2546
|
-
},
|
|
2546
|
+
}, li = /* @__PURE__ */ m({
|
|
2547
2547
|
__name: "BaseStatusPill",
|
|
2548
2548
|
props: {
|
|
2549
2549
|
status: {},
|
|
@@ -2563,13 +2563,13 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2563
2563
|
default: return "bg-gray-400";
|
|
2564
2564
|
}
|
|
2565
2565
|
});
|
|
2566
|
-
return (t, n) => (
|
|
2566
|
+
return (t, n) => (O(), c("div", { class: x(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [l("span", si, [e.status === "ok" ? (O(), c("span", ci)) : s("", !0), l("span", { class: x(["relative inline-flex rounded-full h-2 w-2", i.value]) }, null, 2)]), f(" " + P(e.label), 1)], 2));
|
|
2567
2567
|
}
|
|
2568
|
-
}),
|
|
2568
|
+
}), ui = { class: "text-sm font-medium" }, di = [
|
|
2569
2569
|
"accept",
|
|
2570
2570
|
"multiple",
|
|
2571
2571
|
"disabled"
|
|
2572
|
-
],
|
|
2572
|
+
], fi = /* @__PURE__ */ m({
|
|
2573
2573
|
__name: "BaseFileDropzone",
|
|
2574
2574
|
props: {
|
|
2575
2575
|
label: {},
|
|
@@ -2586,7 +2586,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2586
2586
|
},
|
|
2587
2587
|
emits: ["files"],
|
|
2588
2588
|
setup(e, { emit: t }) {
|
|
2589
|
-
let n = e, r = t, { isDark: i } = U(), a =
|
|
2589
|
+
let n = e, r = t, { isDark: i } = U(), a = A(!1);
|
|
2590
2590
|
function o(e) {
|
|
2591
2591
|
let t = e.target, n = Array.from(t.files ?? []);
|
|
2592
2592
|
t.value = "", n.length && r("files", n);
|
|
@@ -2599,13 +2599,13 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2599
2599
|
let t = Array.from(e.dataTransfer?.files ?? []);
|
|
2600
2600
|
t.length && r("files", n.multiple ? t : t.slice(0, 1));
|
|
2601
2601
|
}
|
|
2602
|
-
return (t, n) => (
|
|
2603
|
-
class:
|
|
2604
|
-
onDragover:
|
|
2605
|
-
onDragleave: n[0] ||=
|
|
2606
|
-
onDrop:
|
|
2602
|
+
return (t, n) => (O(), c("label", {
|
|
2603
|
+
class: x(["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 ? F(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : F(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"]]),
|
|
2604
|
+
onDragover: R(u, ["prevent"]),
|
|
2605
|
+
onDragleave: n[0] ||= R((e) => a.value = !1, ["prevent"]),
|
|
2606
|
+
onDrop: R(d, ["prevent"])
|
|
2607
2607
|
}, [
|
|
2608
|
-
|
|
2608
|
+
M(t.$slots, "icon", {}, () => [n[1] ||= l("svg", {
|
|
2609
2609
|
class: "w-10 h-10",
|
|
2610
2610
|
fill: "none",
|
|
2611
2611
|
viewBox: "0 0 24 24",
|
|
@@ -2617,10 +2617,10 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2617
2617
|
"stroke-linejoin": "round",
|
|
2618
2618
|
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"
|
|
2619
2619
|
})], -1)]),
|
|
2620
|
-
l("p",
|
|
2621
|
-
e.hint ? (
|
|
2620
|
+
l("p", ui, P(e.label), 1),
|
|
2621
|
+
e.hint ? (O(), c("p", {
|
|
2622
2622
|
key: 0,
|
|
2623
|
-
class:
|
|
2623
|
+
class: x(["text-xs", F(i) ? "text-gray-500" : "text-gray-400"])
|
|
2624
2624
|
}, P(e.hint), 3)) : s("", !0),
|
|
2625
2625
|
l("input", {
|
|
2626
2626
|
type: "file",
|
|
@@ -2629,10 +2629,10 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2629
2629
|
multiple: e.multiple,
|
|
2630
2630
|
disabled: e.disabled,
|
|
2631
2631
|
onChange: o
|
|
2632
|
-
}, null, 40,
|
|
2632
|
+
}, null, 40, di)
|
|
2633
2633
|
], 34));
|
|
2634
2634
|
}
|
|
2635
|
-
}),
|
|
2635
|
+
}), pi = /* @__PURE__ */ m({
|
|
2636
2636
|
__name: "BaseCodeBlock",
|
|
2637
2637
|
props: {
|
|
2638
2638
|
code: {},
|
|
@@ -2657,13 +2657,13 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2657
2657
|
let e = r[t.variant];
|
|
2658
2658
|
return n.value ? e.dark : e.light;
|
|
2659
2659
|
}), s = a(() => i[t.size]);
|
|
2660
|
-
return (t, n) => (
|
|
2660
|
+
return (t, n) => (O(), c("pre", { class: x(["font-mono overflow-auto", [
|
|
2661
2661
|
s.value,
|
|
2662
2662
|
o.value,
|
|
2663
2663
|
e.maxHeightClass
|
|
2664
2664
|
]]) }, P(e.code), 3));
|
|
2665
2665
|
}
|
|
2666
|
-
}),
|
|
2666
|
+
}), mi = ["value", "type"], hi = /* @__PURE__ */ m({
|
|
2667
2667
|
__name: "BaseInput",
|
|
2668
2668
|
props: {
|
|
2669
2669
|
modelValue: { default: "" },
|
|
@@ -2680,14 +2680,14 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2680
2680
|
function r(e) {
|
|
2681
2681
|
n("update:modelValue", e.target.value);
|
|
2682
2682
|
}
|
|
2683
|
-
return (t, n) => (
|
|
2683
|
+
return (t, n) => (O(), c("input", {
|
|
2684
2684
|
value: e.modelValue,
|
|
2685
2685
|
type: e.type,
|
|
2686
|
-
class:
|
|
2686
|
+
class: x(["rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors hover:border-slate-400 dark:hover:border-slate-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500/40 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"]]),
|
|
2687
2687
|
onInput: r
|
|
2688
|
-
}, null, 42,
|
|
2688
|
+
}, null, 42, mi));
|
|
2689
2689
|
}
|
|
2690
|
-
}),
|
|
2690
|
+
}), gi = ["value"], _i = /* @__PURE__ */ m({
|
|
2691
2691
|
inheritAttrs: !1,
|
|
2692
2692
|
__name: "BaseSelect",
|
|
2693
2693
|
props: {
|
|
@@ -2704,27 +2704,31 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2704
2704
|
},
|
|
2705
2705
|
emits: ["update:modelValue"],
|
|
2706
2706
|
setup(e, { emit: t }) {
|
|
2707
|
-
let n = e, r =
|
|
2707
|
+
let n = e, r = ie(), i = () => {
|
|
2708
2708
|
let e = r.default?.() ?? [];
|
|
2709
|
-
return n.humanize ?
|
|
2709
|
+
return n.humanize ? Je(e, ["option", "optgroup"]) : e;
|
|
2710
2710
|
}, a = t;
|
|
2711
2711
|
function o(e) {
|
|
2712
2712
|
a("update:modelValue", e.target.value);
|
|
2713
2713
|
}
|
|
2714
|
-
return (t, n) => (
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
"
|
|
2721
|
-
|
|
2714
|
+
return (t, n) => (O(), c("div", { class: x(["relative", e.block ? "w-full" : "inline-block"]) }, [
|
|
2715
|
+
l("select", y(t.$attrs, {
|
|
2716
|
+
value: e.modelValue,
|
|
2717
|
+
class: ["base-select w-full appearance-none bg-none rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm cursor-pointer transition-colors hover:border-slate-400 dark:hover:border-slate-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500/40 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.size === "md" ? "py-2 pr-9" : "py-1.5 pr-8", t.$slots.icon ? "pl-8" : e.size === "md" ? "pl-3" : "pl-2.5"]],
|
|
2718
|
+
onChange: o
|
|
2719
|
+
}), [p(i)], 16, gi),
|
|
2720
|
+
M(t.$slots, "icon", { iconClass: "pointer-events-none absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
|
|
2721
|
+
p(F(be), {
|
|
2722
|
+
class: x(["pointer-events-none absolute top-1/2 h-4 w-4 -translate-y-1/2 text-slate-500 dark:text-slate-400", e.size === "md" ? "right-3" : "right-2.5"]),
|
|
2723
|
+
"aria-hidden": "true"
|
|
2724
|
+
}, null, 8, ["class"])
|
|
2725
|
+
], 2));
|
|
2722
2726
|
}
|
|
2723
|
-
}),
|
|
2727
|
+
}), vi = [
|
|
2724
2728
|
"disabled",
|
|
2725
2729
|
"aria-label",
|
|
2726
2730
|
"aria-expanded"
|
|
2727
|
-
],
|
|
2731
|
+
], yi = ["aria-label"], bi = ["aria-selected", "title"], xi = ["disabled", "onClick"], Si = /* @__PURE__ */ m({
|
|
2728
2732
|
__name: "BaseDropdown",
|
|
2729
2733
|
props: {
|
|
2730
2734
|
options: {},
|
|
@@ -2746,7 +2750,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2746
2750
|
},
|
|
2747
2751
|
emits: ["update:modelValue"],
|
|
2748
2752
|
setup(t, { emit: n }) {
|
|
2749
|
-
let r = t, i = n, o =
|
|
2753
|
+
let r = t, i = n, o = A(!1), u = A(null), d = a(() => r.options.find((e) => e.value === r.modelValue) ?? null), f = a(() => {
|
|
2750
2754
|
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 ";
|
|
2751
2755
|
if (r.triggerClass) return e + r.triggerClass;
|
|
2752
2756
|
let t = r.size === "sm" ? "px-3 py-2" : "px-4 py-2.5";
|
|
@@ -2765,33 +2769,33 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2765
2769
|
function _(e) {
|
|
2766
2770
|
e.disabled || (i("update:modelValue", e.value), o.value = !1);
|
|
2767
2771
|
}
|
|
2768
|
-
|
|
2772
|
+
_n(() => {
|
|
2769
2773
|
o.value = !1;
|
|
2770
2774
|
});
|
|
2771
2775
|
function v(e) {
|
|
2772
2776
|
o.value && u.value && !u.value.contains(e.target) && (o.value = !1);
|
|
2773
2777
|
}
|
|
2774
|
-
return
|
|
2778
|
+
return T(() => document.addEventListener("click", v)), w(() => document.removeEventListener("click", v)), (n, r) => (O(), c("div", {
|
|
2775
2779
|
ref_key: "rootEl",
|
|
2776
2780
|
ref: u,
|
|
2777
|
-
class:
|
|
2781
|
+
class: x(t.block ? "relative w-full" : "relative inline-block")
|
|
2778
2782
|
}, [l("button", {
|
|
2779
2783
|
type: "button",
|
|
2780
|
-
class:
|
|
2784
|
+
class: x([f.value, t.block ? "w-full" : ""]),
|
|
2781
2785
|
disabled: t.disabled,
|
|
2782
2786
|
"aria-label": t.ariaLabel || void 0,
|
|
2783
2787
|
"aria-haspopup": "listbox",
|
|
2784
2788
|
"aria-expanded": o.value,
|
|
2785
2789
|
onClick: g
|
|
2786
|
-
}, [l("span", { class:
|
|
2787
|
-
class:
|
|
2790
|
+
}, [l("span", { class: x(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, P(d.value ? d.value.label : t.placeholder), 3), p(F(be), {
|
|
2791
|
+
class: x(["shrink-0 transition-transform", [t.chevronClass, o.value ? "rotate-180" : ""]]),
|
|
2788
2792
|
"aria-hidden": "true"
|
|
2789
|
-
}, null, 8, ["class"])], 10,
|
|
2793
|
+
}, null, 8, ["class"])], 10, vi), o.value ? (O(), c("ul", {
|
|
2790
2794
|
key: 0,
|
|
2791
2795
|
role: "listbox",
|
|
2792
2796
|
"aria-label": t.ariaLabel || t.placeholder,
|
|
2793
2797
|
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"
|
|
2794
|
-
}, [(
|
|
2798
|
+
}, [(O(!0), c(e, null, j(t.options, (e) => (O(), c("li", {
|
|
2795
2799
|
key: String(e.value),
|
|
2796
2800
|
role: "option",
|
|
2797
2801
|
"aria-selected": e.value === t.modelValue,
|
|
@@ -2799,15 +2803,15 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2799
2803
|
}, [l("button", {
|
|
2800
2804
|
type: "button",
|
|
2801
2805
|
disabled: e.disabled,
|
|
2802
|
-
class:
|
|
2806
|
+
class: x(h(e)),
|
|
2803
2807
|
onClick: (t) => _(e)
|
|
2804
|
-
}, P(e.label), 11,
|
|
2808
|
+
}, P(e.label), 11, xi)], 8, bi))), 128))], 8, yi)) : s("", !0)], 2));
|
|
2805
2809
|
}
|
|
2806
|
-
}),
|
|
2810
|
+
}), Ci = ["role", "aria-label"], wi = [
|
|
2807
2811
|
"aria-pressed",
|
|
2808
2812
|
"title",
|
|
2809
2813
|
"onClick"
|
|
2810
|
-
],
|
|
2814
|
+
], Ti = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Ei = /* @__PURE__ */ m({
|
|
2811
2815
|
__name: "BaseSegmentedControl",
|
|
2812
2816
|
props: {
|
|
2813
2817
|
options: {},
|
|
@@ -2824,22 +2828,22 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2824
2828
|
let r = t, i = n, o = a(() => 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"), s = a(() => 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 = a(() => r.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
|
|
2825
2829
|
function u(e) {
|
|
2826
2830
|
let t = e.value === r.modelValue;
|
|
2827
|
-
return r.optionClass ? r.optionClass(e, t) : t ? l.value :
|
|
2831
|
+
return r.optionClass ? r.optionClass(e, t) : t ? l.value : Ti;
|
|
2828
2832
|
}
|
|
2829
|
-
return (n, r) => (
|
|
2833
|
+
return (n, r) => (O(), c("div", {
|
|
2830
2834
|
role: t.ariaLabel ? "group" : void 0,
|
|
2831
2835
|
"aria-label": t.ariaLabel || void 0,
|
|
2832
|
-
class:
|
|
2833
|
-
}, [(
|
|
2836
|
+
class: x(o.value)
|
|
2837
|
+
}, [(O(!0), c(e, null, j(t.options, (e) => (O(), c("button", {
|
|
2834
2838
|
key: String(e.value),
|
|
2835
2839
|
type: "button",
|
|
2836
|
-
class:
|
|
2840
|
+
class: x([s.value, u(e)]),
|
|
2837
2841
|
"aria-pressed": e.value === t.modelValue,
|
|
2838
2842
|
title: e.title,
|
|
2839
2843
|
onClick: (t) => i("update:modelValue", e.value)
|
|
2840
|
-
}, P(e.label), 11,
|
|
2844
|
+
}, P(e.label), 11, wi))), 128))], 10, Ci));
|
|
2841
2845
|
}
|
|
2842
|
-
}),
|
|
2846
|
+
}), Di = { class: "w-full text-sm" }, Oi = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, ki = { class: "text-left border-b border-slate-200 dark:border-slate-700" }, Ai = { class: "divide-y divide-slate-200 dark:divide-slate-700 [&>tr]:transition-colors [&>tr:hover]:bg-slate-50 dark:[&>tr:hover]:bg-slate-800/40" }, ji = { key: 0 }, Mi = ["colspan"], Ni = "overflow-x-auto rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700 dark:bg-slate-900", Pi = /* @__PURE__ */ m({
|
|
2843
2847
|
__name: "BaseTable",
|
|
2844
2848
|
props: {
|
|
2845
2849
|
columns: {},
|
|
@@ -2854,24 +2858,24 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2854
2858
|
}
|
|
2855
2859
|
},
|
|
2856
2860
|
setup(t) {
|
|
2857
|
-
return (n, r) => (
|
|
2861
|
+
return (n, r) => (O(), c("div", { class: x(t.card ? Ni : void 0) }, [l("table", Di, [l("thead", Oi, [l("tr", ki, [(O(!0), c(e, null, j(t.columns, (e, t) => (O(), c("th", {
|
|
2858
2862
|
key: t,
|
|
2859
|
-
class:
|
|
2860
|
-
}, P(e.label), 3))), 128))])]), l("tbody",
|
|
2863
|
+
class: x(["px-4 py-3", e.align === "right" ? "text-right" : ""])
|
|
2864
|
+
}, P(e.label), 3))), 128))])]), l("tbody", Ai, [t.empty ? (O(), c("tr", ji, [l("td", {
|
|
2861
2865
|
colspan: t.columns.length,
|
|
2862
2866
|
class: "px-4 py-12 text-center text-slate-500"
|
|
2863
|
-
}, [
|
|
2867
|
+
}, [M(n.$slots, "empty", {}, () => [f(P(t.emptyText), 1)])], 8, Mi)])) : s("", !0), M(n.$slots, "default")])])], 2));
|
|
2864
2868
|
}
|
|
2865
|
-
}),
|
|
2869
|
+
}), Fi = { class: "grid gap-3 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, Ii = {
|
|
2866
2870
|
key: 0,
|
|
2867
2871
|
class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
|
|
2868
|
-
},
|
|
2872
|
+
}, Li = ["value"], Ri = {
|
|
2869
2873
|
key: 2,
|
|
2870
2874
|
class: "flex items-center gap-2 mt-4"
|
|
2871
|
-
},
|
|
2875
|
+
}, zi = ["checked", "onChange"], Bi = { class: "text-sm text-slate-900 dark:text-slate-100" }, Vi = {
|
|
2872
2876
|
key: 4,
|
|
2873
2877
|
class: "text-[11px] text-slate-400 mt-1"
|
|
2874
|
-
},
|
|
2878
|
+
}, Hi = /* @__PURE__ */ m({
|
|
2875
2879
|
__name: "BaseSpecFields",
|
|
2876
2880
|
props: {
|
|
2877
2881
|
specs: {},
|
|
@@ -2898,24 +2902,24 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2898
2902
|
let t = e.clipboardData?.getData("text") ?? "";
|
|
2899
2903
|
/^-?\d*$/.test(t.trim()) || e.preventDefault();
|
|
2900
2904
|
}
|
|
2901
|
-
return (n, f) => (
|
|
2902
|
-
f.type === "boolean" ? s("", !0) : (
|
|
2903
|
-
f.type === "select" ? (
|
|
2905
|
+
return (n, f) => (O(), c("div", Fi, [(O(!0), c(e, null, j(t.specs, (f) => (O(), c("div", { key: f.key }, [
|
|
2906
|
+
f.type === "boolean" ? s("", !0) : (O(), c("label", Ii, P(f.label), 1)),
|
|
2907
|
+
f.type === "select" ? (O(), o(_i, {
|
|
2904
2908
|
key: 1,
|
|
2905
2909
|
modelValue: String(t.params[f.key] ?? ""),
|
|
2906
2910
|
"onUpdate:modelValue": (e) => r("update", f.key, e)
|
|
2907
2911
|
}, {
|
|
2908
|
-
default:
|
|
2912
|
+
default: I(() => [(O(!0), c(e, null, j(f.options ?? [], (e) => (O(), c("option", {
|
|
2909
2913
|
key: e,
|
|
2910
2914
|
value: e
|
|
2911
|
-
}, P(e), 9,
|
|
2915
|
+
}, P(e), 9, Li))), 128))]),
|
|
2912
2916
|
_: 2
|
|
2913
|
-
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (
|
|
2917
|
+
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (O(), c("label", Ri, [l("input", {
|
|
2914
2918
|
checked: !!t.params[f.key],
|
|
2915
2919
|
type: "checkbox",
|
|
2916
2920
|
class: "h-4 w-4",
|
|
2917
2921
|
onChange: (e) => i(f.key, e)
|
|
2918
|
-
}, null, 40,
|
|
2922
|
+
}, null, 40, zi), l("span", Bi, P(f.label), 1)])) : (O(), o(hi, {
|
|
2919
2923
|
key: 3,
|
|
2920
2924
|
modelValue: t.params[f.key],
|
|
2921
2925
|
type: "number",
|
|
@@ -2934,11 +2938,11 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2934
2938
|
"onPaste",
|
|
2935
2939
|
"onUpdate:modelValue"
|
|
2936
2940
|
])),
|
|
2937
|
-
f.help ? (
|
|
2938
|
-
|
|
2941
|
+
f.help ? (O(), c("p", Vi, P(f.help), 1)) : s("", !0),
|
|
2942
|
+
M(n.$slots, "after", { spec: f })
|
|
2939
2943
|
]))), 128))]));
|
|
2940
2944
|
}
|
|
2941
|
-
}),
|
|
2945
|
+
}), Ui = { class: "mt-1.5 space-y-0.5 px-1" }, Wi = { class: "text-slate-400 dark:text-slate-500" }, Gi = /* @__PURE__ */ m({
|
|
2942
2946
|
__name: "BaseStatBreakdown",
|
|
2943
2947
|
props: {
|
|
2944
2948
|
items: {},
|
|
@@ -2957,16 +2961,16 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2957
2961
|
function i(e) {
|
|
2958
2962
|
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";
|
|
2959
2963
|
}
|
|
2960
|
-
return (n, a) => (
|
|
2964
|
+
return (n, a) => (O(), c("div", Ui, [(O(!0), c(e, null, j(t.items, (e) => (O(), c("div", {
|
|
2961
2965
|
key: e.label,
|
|
2962
2966
|
class: "flex items-center justify-between text-[11px]"
|
|
2963
|
-
}, [l("span",
|
|
2967
|
+
}, [l("span", Wi, P(e.label), 1), l("span", { class: x(["font-mono tabular-nums font-medium", i(e.value)]) }, P(r(e.value)), 3)]))), 128))]));
|
|
2964
2968
|
}
|
|
2965
|
-
}),
|
|
2969
|
+
}), Ki = [
|
|
2966
2970
|
"disabled",
|
|
2967
2971
|
"title",
|
|
2968
2972
|
"aria-pressed"
|
|
2969
|
-
],
|
|
2973
|
+
], qi = /* @__PURE__ */ m({
|
|
2970
2974
|
__name: "BaseFilterChip",
|
|
2971
2975
|
props: {
|
|
2972
2976
|
label: { default: "" },
|
|
@@ -2995,21 +2999,21 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
2995
2999
|
red: "border-red-500 bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-500",
|
|
2996
3000
|
slate: "border-slate-600 bg-slate-600 text-white hover:bg-slate-700 focus-visible:ring-emerald-500"
|
|
2997
3001
|
};
|
|
2998
|
-
return (r, i) => (
|
|
3002
|
+
return (r, i) => (O(), c("button", {
|
|
2999
3003
|
type: "button",
|
|
3000
3004
|
disabled: e.disabled,
|
|
3001
3005
|
title: e.title,
|
|
3002
3006
|
"aria-pressed": e.active,
|
|
3003
|
-
class:
|
|
3004
|
-
}, [
|
|
3007
|
+
class: x(["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]])
|
|
3008
|
+
}, [M(r.$slots, "default", {}, () => [f(P(e.label), 1)])], 10, Ki));
|
|
3005
3009
|
}
|
|
3006
|
-
}),
|
|
3010
|
+
}), Ji = { class: "flex items-center justify-between mb-4" }, Yi = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, Xi = {
|
|
3007
3011
|
key: 0,
|
|
3008
3012
|
class: "text-xs text-slate-500 dark:text-slate-400"
|
|
3009
|
-
},
|
|
3013
|
+
}, Zi = {
|
|
3010
3014
|
key: 0,
|
|
3011
3015
|
class: "inline-flex items-center gap-2 text-xs text-slate-500"
|
|
3012
|
-
},
|
|
3016
|
+
}, Qi = { class: "grid gap-4 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, $i = { class: "md:col-span-2" }, ea = ["for"], ta = { class: "md:col-span-2" }, na = ["for"], ra = { class: "text-[11px] text-slate-500 mt-1" }, ia = { class: "md:col-span-2" }, aa = ["for"], oa = { class: "md:col-span-2" }, sa = ["for"], ca = { class: "md:col-span-2" }, la = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", ua = /* @__PURE__ */ m({
|
|
3013
3017
|
__name: "BaseCredentialsForm",
|
|
3014
3018
|
props: {
|
|
3015
3019
|
title: {},
|
|
@@ -3035,7 +3039,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3035
3039
|
"load-error"
|
|
3036
3040
|
],
|
|
3037
3041
|
setup(t, { expose: n, emit: r }) {
|
|
3038
|
-
let i = t, a = r, u =
|
|
3042
|
+
let i = t, a = r, u = A(!1), d = A(!1), m = ee({
|
|
3039
3043
|
keyId: "",
|
|
3040
3044
|
secretKey: "",
|
|
3041
3045
|
baseUrl: i.defaults.baseUrl,
|
|
@@ -3082,71 +3086,71 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3082
3086
|
}
|
|
3083
3087
|
}
|
|
3084
3088
|
}
|
|
3085
|
-
return
|
|
3086
|
-
default:
|
|
3087
|
-
l("div",
|
|
3088
|
-
l("div",
|
|
3089
|
-
l("div",
|
|
3089
|
+
return T(h), n({ load: h }), (n, r) => (O(), o(Wt, { class: "!p-6" }, {
|
|
3090
|
+
default: I(() => [
|
|
3091
|
+
l("div", Ji, [l("div", null, [l("h2", Yi, P(t.title), 1), t.subtitle ? (O(), c("p", Xi, P(t.subtitle), 1)) : s("", !0)]), u.value ? (O(), c("span", Zi, [p(Gt, { class: "!h-4 !w-4" }), r[4] ||= f(" Saving… ", -1)])) : s("", !0)]),
|
|
3092
|
+
l("div", Qi, [
|
|
3093
|
+
l("div", $i, [l("label", {
|
|
3090
3094
|
for: `${t.idPrefix}-key-id`,
|
|
3091
3095
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3092
|
-
}, P(t.keyLabel), 9,
|
|
3096
|
+
}, P(t.keyLabel), 9, ea), p(hi, {
|
|
3093
3097
|
id: `${t.idPrefix}-key-id`,
|
|
3094
3098
|
modelValue: m.keyId,
|
|
3095
3099
|
"onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
|
|
3096
3100
|
type: "text",
|
|
3097
3101
|
autocomplete: "off",
|
|
3098
3102
|
placeholder: t.keyPlaceholder,
|
|
3099
|
-
class:
|
|
3103
|
+
class: x(la)
|
|
3100
3104
|
}, null, 8, [
|
|
3101
3105
|
"id",
|
|
3102
3106
|
"modelValue",
|
|
3103
3107
|
"placeholder"
|
|
3104
3108
|
])]),
|
|
3105
|
-
l("div",
|
|
3109
|
+
l("div", ta, [
|
|
3106
3110
|
l("label", {
|
|
3107
3111
|
for: `${t.idPrefix}-secret`,
|
|
3108
3112
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3109
|
-
}, P(t.secretLabel), 9,
|
|
3110
|
-
p(
|
|
3113
|
+
}, P(t.secretLabel), 9, na),
|
|
3114
|
+
p(hi, {
|
|
3111
3115
|
id: `${t.idPrefix}-secret`,
|
|
3112
3116
|
modelValue: m.secretKey,
|
|
3113
3117
|
"onUpdate:modelValue": r[1] ||= (e) => m.secretKey = e,
|
|
3114
3118
|
type: "password",
|
|
3115
3119
|
autocomplete: "new-password",
|
|
3116
3120
|
placeholder: d.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
|
|
3117
|
-
class:
|
|
3121
|
+
class: x(la)
|
|
3118
3122
|
}, null, 8, [
|
|
3119
3123
|
"id",
|
|
3120
3124
|
"modelValue",
|
|
3121
3125
|
"placeholder"
|
|
3122
3126
|
]),
|
|
3123
|
-
l("p",
|
|
3127
|
+
l("p", ra, [d.value ? (O(), c(e, { key: 0 }, [f(P(t.secretSetHint), 1)], 64)) : M(n.$slots, "no-secret-hint", {}, () => [f(P(t.permissionsHint), 1)], void 0, 1)])
|
|
3124
3128
|
]),
|
|
3125
|
-
l("div",
|
|
3129
|
+
l("div", ia, [
|
|
3126
3130
|
l("label", {
|
|
3127
3131
|
for: `${t.idPrefix}-base-url`,
|
|
3128
3132
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3129
|
-
}, "Base URL (trading)", 8,
|
|
3130
|
-
p(
|
|
3133
|
+
}, "Base URL (trading)", 8, aa),
|
|
3134
|
+
p(hi, {
|
|
3131
3135
|
id: `${t.idPrefix}-base-url`,
|
|
3132
3136
|
modelValue: m.baseUrl,
|
|
3133
3137
|
"onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
|
|
3134
3138
|
type: "text",
|
|
3135
|
-
class:
|
|
3139
|
+
class: x(la)
|
|
3136
3140
|
}, null, 8, ["id", "modelValue"]),
|
|
3137
|
-
|
|
3141
|
+
M(n.$slots, "base-url-extra", { form: m })
|
|
3138
3142
|
]),
|
|
3139
|
-
l("div",
|
|
3143
|
+
l("div", oa, [l("label", {
|
|
3140
3144
|
for: `${t.idPrefix}-data-url`,
|
|
3141
3145
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3142
|
-
}, "Data URL (market data)", 8,
|
|
3146
|
+
}, "Data URL (market data)", 8, sa), p(hi, {
|
|
3143
3147
|
id: `${t.idPrefix}-data-url`,
|
|
3144
3148
|
modelValue: m.dataUrl,
|
|
3145
3149
|
"onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
|
|
3146
3150
|
type: "text",
|
|
3147
|
-
class:
|
|
3151
|
+
class: x(la)
|
|
3148
3152
|
}, null, 8, ["id", "modelValue"])]),
|
|
3149
|
-
l("div",
|
|
3153
|
+
l("div", ca, [p(q, {
|
|
3150
3154
|
color: F(G).GREEN,
|
|
3151
3155
|
description: t.saveLabel,
|
|
3152
3156
|
isDisable: u.value,
|
|
@@ -3159,21 +3163,21 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3159
3163
|
"isLoading"
|
|
3160
3164
|
])])
|
|
3161
3165
|
]),
|
|
3162
|
-
|
|
3166
|
+
M(n.$slots, "footer")
|
|
3163
3167
|
]),
|
|
3164
3168
|
_: 3
|
|
3165
3169
|
}));
|
|
3166
3170
|
}
|
|
3167
|
-
}),
|
|
3171
|
+
}), da = {
|
|
3168
3172
|
key: 0,
|
|
3169
3173
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3170
|
-
},
|
|
3174
|
+
}, fa = { class: "mb-3 flex flex-wrap items-center gap-2" }, pa = { class: "relative min-w-[200px] flex-1" }, ma = ["placeholder"], ha = {
|
|
3171
3175
|
key: 0,
|
|
3172
3176
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3173
|
-
},
|
|
3177
|
+
}, ga = {
|
|
3174
3178
|
key: 1,
|
|
3175
3179
|
class: "flex flex-wrap gap-2"
|
|
3176
|
-
},
|
|
3180
|
+
}, _a = ["title", "onClick"], va = "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", ya = "\0all", ba = /* @__PURE__ */ m({
|
|
3177
3181
|
__name: "BasePillPickerModal",
|
|
3178
3182
|
props: {
|
|
3179
3183
|
title: {},
|
|
@@ -3195,11 +3199,11 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3195
3199
|
},
|
|
3196
3200
|
emits: ["pick", "close"],
|
|
3197
3201
|
setup(t, { emit: n }) {
|
|
3198
|
-
let r = t, i = n, u = a(() => r.icon ??
|
|
3199
|
-
value:
|
|
3202
|
+
let r = t, i = n, u = a(() => r.icon ?? Ae), d = A(""), f = A(ya), m = a(() => r.groups && r.groups.length > 0 ? [{
|
|
3203
|
+
value: ya,
|
|
3200
3204
|
label: r.allLabel
|
|
3201
|
-
}, ...r.groups] : []), h = a(() => r.items.filter((e) => (f.value ===
|
|
3202
|
-
return (n, r) => (
|
|
3205
|
+
}, ...r.groups] : []), h = a(() => r.items.filter((e) => (f.value === ya || e.group === f.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
|
|
3206
|
+
return (n, r) => (O(), o(En, {
|
|
3203
3207
|
title: t.title,
|
|
3204
3208
|
icon: u.value,
|
|
3205
3209
|
subtitle: t.subtitle,
|
|
@@ -3207,32 +3211,32 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3207
3211
|
"max-width-class": t.maxWidthClass,
|
|
3208
3212
|
onCancel: r[4] ||= (e) => i("close")
|
|
3209
3213
|
}, {
|
|
3210
|
-
footer:
|
|
3214
|
+
footer: I(() => [p(kr, {
|
|
3211
3215
|
variant: "ghost",
|
|
3212
3216
|
label: t.closeText,
|
|
3213
3217
|
onClick: r[3] ||= (e) => i("close")
|
|
3214
3218
|
}, null, 8, ["label"])]),
|
|
3215
|
-
default:
|
|
3216
|
-
p(F(
|
|
3217
|
-
|
|
3219
|
+
default: I(() => [t.items.length === 0 ? (O(), c("p", da, P(t.emptyMessage), 1)) : (O(), c(e, { key: 1 }, [l("div", fa, [l("div", pa, [
|
|
3220
|
+
p(F(Ae), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
|
|
3221
|
+
L(l("input", {
|
|
3218
3222
|
"onUpdate:modelValue": r[0] ||= (e) => d.value = e,
|
|
3219
3223
|
type: "text",
|
|
3220
3224
|
placeholder: t.searchPlaceholder,
|
|
3221
3225
|
autocomplete: "off",
|
|
3222
|
-
class:
|
|
3223
|
-
|
|
3226
|
+
class: x([
|
|
3227
|
+
va,
|
|
3224
3228
|
"w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
|
|
3225
3229
|
t.mono ? "font-mono" : ""
|
|
3226
3230
|
])
|
|
3227
|
-
}, null, 10,
|
|
3228
|
-
d.value ? (
|
|
3231
|
+
}, null, 10, ma), [[se, d.value]]),
|
|
3232
|
+
d.value ? (O(), c("button", {
|
|
3229
3233
|
key: 0,
|
|
3230
3234
|
type: "button",
|
|
3231
3235
|
"aria-label": "Clear the filter",
|
|
3232
3236
|
class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
|
|
3233
3237
|
onClick: r[1] ||= (e) => d.value = ""
|
|
3234
3238
|
}, " ✕ ")) : s("", !0)
|
|
3235
|
-
]), m.value.length > 0 ? (
|
|
3239
|
+
]), m.value.length > 0 ? (O(), o(Ei, {
|
|
3236
3240
|
key: 0,
|
|
3237
3241
|
modelValue: f.value,
|
|
3238
3242
|
"onUpdate:modelValue": r[2] ||= (e) => f.value = e,
|
|
@@ -3242,13 +3246,13 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3242
3246
|
"modelValue",
|
|
3243
3247
|
"options",
|
|
3244
3248
|
"aria-label"
|
|
3245
|
-
])) : s("", !0)]), h.value.length === 0 ? (
|
|
3249
|
+
])) : s("", !0)]), h.value.length === 0 ? (O(), c("p", ha, P(t.noMatchMessage), 1)) : (O(), c("div", ga, [(O(!0), c(e, null, j(h.value, (e) => (O(), c("button", {
|
|
3246
3250
|
key: e.id,
|
|
3247
3251
|
type: "button",
|
|
3248
3252
|
title: e.title,
|
|
3249
|
-
class:
|
|
3253
|
+
class: x(["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" : ""]),
|
|
3250
3254
|
onClick: (t) => i("pick", e)
|
|
3251
|
-
}, P(e.label), 11,
|
|
3255
|
+
}, P(e.label), 11, _a))), 128))]))], 64))]),
|
|
3252
3256
|
_: 1
|
|
3253
3257
|
}, 8, [
|
|
3254
3258
|
"title",
|
|
@@ -3257,7 +3261,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3257
3261
|
"max-width-class"
|
|
3258
3262
|
]));
|
|
3259
3263
|
}
|
|
3260
|
-
}),
|
|
3264
|
+
}), xa = ["aria-label"], Sa = ["title"], Ca = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, wa = ["title"], Ta = /* @__PURE__ */ m({
|
|
3261
3265
|
__name: "BaseBarDistribution",
|
|
3262
3266
|
props: {
|
|
3263
3267
|
bars: {},
|
|
@@ -3269,35 +3273,35 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3269
3273
|
},
|
|
3270
3274
|
setup(t) {
|
|
3271
3275
|
let n = t, r = a(() => Math.max(1, ...n.bars.map((e) => e.count))), i = (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"}`;
|
|
3272
|
-
return (n, r) => (
|
|
3276
|
+
return (n, r) => (O(), c("div", {
|
|
3273
3277
|
class: "flex items-end gap-1.5 overflow-x-auto pb-1",
|
|
3274
3278
|
role: "img",
|
|
3275
3279
|
"aria-label": t.ariaLabel
|
|
3276
|
-
}, [(
|
|
3280
|
+
}, [(O(!0), c(e, null, j(t.bars, (e) => (O(), c("div", {
|
|
3277
3281
|
key: e.label,
|
|
3278
3282
|
class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
|
|
3279
3283
|
title: o(e)
|
|
3280
3284
|
}, [
|
|
3281
|
-
l("span",
|
|
3285
|
+
l("span", Ca, P(e.count), 1),
|
|
3282
3286
|
l("div", {
|
|
3283
|
-
class:
|
|
3284
|
-
style:
|
|
3287
|
+
class: x(["w-full max-w-8 rounded-t", t.barClass]),
|
|
3288
|
+
style: C({ height: `${i(e)}px` })
|
|
3285
3289
|
}, null, 6),
|
|
3286
3290
|
l("span", {
|
|
3287
3291
|
class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
|
|
3288
3292
|
title: e.label
|
|
3289
|
-
}, P(e.label), 9,
|
|
3290
|
-
], 8,
|
|
3293
|
+
}, P(e.label), 9, wa)
|
|
3294
|
+
], 8, Sa))), 128))], 8, xa));
|
|
3291
3295
|
}
|
|
3292
|
-
}),
|
|
3296
|
+
}), Ea = { class: "flex items-center gap-2 border-b border-slate-200 dark:border-slate-700 pb-2" }, Da = ["checked", "aria-label"], Oa = { class: "text-sm font-medium text-slate-700 dark:text-slate-200" }, ka = { class: "flex items-center gap-2 pb-1.5" }, Aa = [
|
|
3293
3297
|
"checked",
|
|
3294
3298
|
"aria-label",
|
|
3295
3299
|
"onChange"
|
|
3296
|
-
],
|
|
3300
|
+
], ja = { class: "text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400" }, Ma = { class: "grid grid-cols-[repeat(2,minmax(0,1fr))] sm:grid-cols-[repeat(3,minmax(0,1fr))] gap-x-3 gap-y-1.5" }, Na = [
|
|
3297
3301
|
"checked",
|
|
3298
3302
|
"aria-label",
|
|
3299
3303
|
"onChange"
|
|
3300
|
-
],
|
|
3304
|
+
], Pa = /* @__PURE__ */ m({
|
|
3301
3305
|
__name: "BaseGroupedChecklist",
|
|
3302
3306
|
props: {
|
|
3303
3307
|
groups: {},
|
|
@@ -3335,19 +3339,19 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3335
3339
|
let t = new Set(u.value);
|
|
3336
3340
|
t.has(e) ? t.delete(e) : t.add(e), p(t);
|
|
3337
3341
|
}
|
|
3338
|
-
return (n, r) => (
|
|
3342
|
+
return (n, r) => (O(), c("div", null, [l("label", Ea, [l("input", {
|
|
3339
3343
|
type: "checkbox",
|
|
3340
3344
|
class: "h-4 w-4",
|
|
3341
3345
|
checked: d.value,
|
|
3342
3346
|
"aria-label": t.allAriaLabel,
|
|
3343
3347
|
onChange: m
|
|
3344
|
-
}, null, 40,
|
|
3348
|
+
}, null, 40, Da), l("span", Oa, P(t.allLabel) + " (" + P(s.value.length) + ") ", 1)]), l("div", { class: x(["overflow-y-auto space-y-3 mt-3", t.maxHeightClass]) }, [(O(!0), c(e, null, j(o.value, (n) => (O(), c("div", { key: n.key }, [l("label", ka, [l("input", {
|
|
3345
3349
|
type: "checkbox",
|
|
3346
3350
|
class: "h-4 w-4",
|
|
3347
3351
|
checked: f(n),
|
|
3348
3352
|
"aria-label": `${t.allLabel} ${n.label}`,
|
|
3349
3353
|
onChange: (e) => h(n)
|
|
3350
|
-
}, null, 40,
|
|
3354
|
+
}, null, 40, Aa), l("span", ja, P(n.label) + " (" + P(n.items.length) + ") ", 1)]), l("div", Ma, [(O(!0), c(e, null, j(n.items, (e) => (O(), c("label", {
|
|
3351
3355
|
key: e,
|
|
3352
3356
|
class: "flex items-center gap-2"
|
|
3353
3357
|
}, [l("input", {
|
|
@@ -3356,12 +3360,12 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3356
3360
|
checked: u.value.has(e),
|
|
3357
3361
|
"aria-label": t.itemAriaLabel ? t.itemAriaLabel(e) : e,
|
|
3358
3362
|
onChange: (t) => g(e)
|
|
3359
|
-
}, null, 40,
|
|
3363
|
+
}, null, 40, Na), l("span", { class: x(["text-sm text-slate-700 dark:text-slate-200", { "font-mono": t.mono }]) }, P(e), 3)]))), 128))])]))), 128))], 2)]));
|
|
3360
3364
|
}
|
|
3361
|
-
}),
|
|
3365
|
+
}), Fa = { class: "inline-flex items-center gap-1 font-mono text-[11px]" }, Ia = {
|
|
3362
3366
|
key: 0,
|
|
3363
3367
|
class: "text-slate-500 dark:text-slate-400 uppercase tracking-wide"
|
|
3364
|
-
},
|
|
3368
|
+
}, La = ["title"], Ra = ["title", "aria-label"], za = /* @__PURE__ */ m({
|
|
3365
3369
|
__name: "BaseIdChip",
|
|
3366
3370
|
props: {
|
|
3367
3371
|
value: {},
|
|
@@ -3373,31 +3377,31 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3373
3377
|
emits: ["action"],
|
|
3374
3378
|
setup(e, { emit: t }) {
|
|
3375
3379
|
let n = t;
|
|
3376
|
-
return (t, r) => (
|
|
3377
|
-
e.label ? (
|
|
3380
|
+
return (t, r) => (O(), c("div", Fa, [
|
|
3381
|
+
e.label ? (O(), c("span", Ia, P(e.label), 1)) : s("", !0),
|
|
3378
3382
|
l("code", {
|
|
3379
|
-
class:
|
|
3383
|
+
class: x(["truncate rounded bg-slate-100 px-1 text-slate-600 dark:bg-slate-800 dark:text-slate-300", e.maxWidthClass]),
|
|
3380
3384
|
title: e.value
|
|
3381
|
-
}, P(e.value), 11,
|
|
3382
|
-
p(
|
|
3385
|
+
}, P(e.value), 11, La),
|
|
3386
|
+
p(Pr, {
|
|
3383
3387
|
text: e.value,
|
|
3384
3388
|
label: e.copyLabel ?? `${e.label} ${e.value}`.trim(),
|
|
3385
3389
|
"icon-class": "w-3.5 h-3.5"
|
|
3386
3390
|
}, null, 8, ["text", "label"]),
|
|
3387
|
-
e.actionLabel ? (
|
|
3391
|
+
e.actionLabel ? (O(), c("button", {
|
|
3388
3392
|
key: 1,
|
|
3389
3393
|
type: "button",
|
|
3390
3394
|
title: e.actionLabel,
|
|
3391
3395
|
"aria-label": e.actionLabel,
|
|
3392
3396
|
class: "rounded px-0.5 text-slate-400 hover:bg-slate-100 hover:text-emerald-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 dark:hover:bg-slate-800 dark:hover:text-emerald-400",
|
|
3393
3397
|
onClick: r[0] ||= (t) => n("action", e.value)
|
|
3394
|
-
}, [p(F(
|
|
3398
|
+
}, [p(F(Ae), {
|
|
3395
3399
|
class: "h-3.5 w-3.5",
|
|
3396
3400
|
"aria-hidden": "true"
|
|
3397
|
-
})], 8,
|
|
3401
|
+
})], 8, Ra)) : s("", !0)
|
|
3398
3402
|
]));
|
|
3399
3403
|
}
|
|
3400
|
-
}),
|
|
3404
|
+
}), Ba = /* @__PURE__ */ m({
|
|
3401
3405
|
__name: "BaseDateTimePicker",
|
|
3402
3406
|
props: {
|
|
3403
3407
|
modelValue: { default: null },
|
|
@@ -3428,7 +3432,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3428
3432
|
let e = n.is24 ? "HH:mm" : "hh:mm a";
|
|
3429
3433
|
return n.mode === "date" ? { input: "dd/MM/yyyy" } : n.mode === "time" ? { input: e } : { input: `dd/MM/yyyy ${e}` };
|
|
3430
3434
|
});
|
|
3431
|
-
return (t, n) => (
|
|
3435
|
+
return (t, n) => (O(), o(F(Be), {
|
|
3432
3436
|
"model-value": e.modelValue,
|
|
3433
3437
|
dark: F(i),
|
|
3434
3438
|
"time-picker": e.mode === "time",
|
|
@@ -3437,9 +3441,9 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3437
3441
|
"auto-apply": e.autoApply,
|
|
3438
3442
|
teleport: e.teleport,
|
|
3439
3443
|
"onUpdate:modelValue": n[0] ||= (e) => r("update:modelValue", e)
|
|
3440
|
-
}, u({ _: 2 }, [
|
|
3444
|
+
}, u({ _: 2 }, [j(t.$slots, (e, n) => ({
|
|
3441
3445
|
name: n,
|
|
3442
|
-
fn:
|
|
3446
|
+
fn: I((e) => [M(t.$slots, n, S(_(e ?? {})))])
|
|
3443
3447
|
}))]), 1032, [
|
|
3444
3448
|
"model-value",
|
|
3445
3449
|
"dark",
|
|
@@ -3450,28 +3454,28 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3450
3454
|
"teleport"
|
|
3451
3455
|
]));
|
|
3452
3456
|
}
|
|
3453
|
-
}),
|
|
3457
|
+
}), Va = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-1" }, Ha = { class: "truncate" }, Ua = [
|
|
3454
3458
|
"aria-label",
|
|
3455
3459
|
"disabled",
|
|
3456
3460
|
"onClick"
|
|
3457
|
-
],
|
|
3461
|
+
], Wa = [
|
|
3458
3462
|
"disabled",
|
|
3459
3463
|
"readonly",
|
|
3460
3464
|
"aria-label",
|
|
3461
3465
|
"aria-expanded",
|
|
3462
3466
|
"aria-activedescendant",
|
|
3463
3467
|
"placeholder"
|
|
3464
|
-
],
|
|
3468
|
+
], Ga = ["aria-multiselectable"], Ka = [
|
|
3465
3469
|
"id",
|
|
3466
3470
|
"aria-selected",
|
|
3467
3471
|
"aria-disabled",
|
|
3468
3472
|
"title",
|
|
3469
3473
|
"onMouseenter",
|
|
3470
3474
|
"onClick"
|
|
3471
|
-
],
|
|
3475
|
+
], qa = { class: "truncate" }, Ja = {
|
|
3472
3476
|
key: 0,
|
|
3473
3477
|
class: "px-3 py-2 text-sm text-slate-500 dark:text-slate-400"
|
|
3474
|
-
},
|
|
3478
|
+
}, Ya = /* @__PURE__ */ m({
|
|
3475
3479
|
__name: "BaseSearchSelect",
|
|
3476
3480
|
props: {
|
|
3477
3481
|
options: {},
|
|
@@ -3503,36 +3507,36 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3503
3507
|
},
|
|
3504
3508
|
emits: ["update:modelValue"],
|
|
3505
3509
|
setup(t, { emit: n }) {
|
|
3506
|
-
let r = t, i = n, u =
|
|
3510
|
+
let r = t, i = n, u = A(null), d = A(null), f = A(!1), m = A(""), h = A(-1), g = `search-select-${ne()}`, _ = a(() => {
|
|
3507
3511
|
let e = r.modelValue;
|
|
3508
3512
|
return Array.isArray(e) ? [...e] : e == null || e === "" ? [] : [e];
|
|
3509
|
-
}), v = a(() => _.value.map((e) => r.options.find((t) => t.value === e)).filter((e) => !!e)),
|
|
3513
|
+
}), v = a(() => _.value.map((e) => r.options.find((t) => t.value === e)).filter((e) => !!e)), y = a(() => _.value.length > 0), S = a(() => !r.multiple && v.value.length > 0), C = a(() => S.value ? v.value[0].label : r.multiple && y.value ? "" : r.placeholder), E = a(() => {
|
|
3510
3514
|
let e = m.value.trim().toLowerCase();
|
|
3511
3515
|
return e ? r.options.filter((t) => t.label.toLowerCase().includes(e)) : [...r.options];
|
|
3512
3516
|
});
|
|
3513
|
-
|
|
3517
|
+
le(E, (e) => {
|
|
3514
3518
|
h.value = e.findIndex((e) => !e.disabled);
|
|
3515
3519
|
});
|
|
3516
|
-
function
|
|
3520
|
+
function D(e) {
|
|
3517
3521
|
return _.value.includes(e.value);
|
|
3518
3522
|
}
|
|
3519
3523
|
function ee(e, t) {
|
|
3520
|
-
return e.disabled ? "cursor-not-allowed text-slate-400 dark:text-slate-600" :
|
|
3524
|
+
return e.disabled ? "cursor-not-allowed text-slate-400 dark:text-slate-600" : D(e) ? t === h.value ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white" : t === h.value ? "bg-slate-100 text-slate-900 dark:bg-slate-800 dark:text-slate-100" : "text-slate-700 dark:text-slate-200";
|
|
3521
3525
|
}
|
|
3522
|
-
function
|
|
3526
|
+
function k() {
|
|
3523
3527
|
r.disabled || f.value || (f.value = !0, h.value = E.value.findIndex((e) => !e.disabled));
|
|
3524
3528
|
}
|
|
3525
3529
|
function M() {
|
|
3526
3530
|
f.value = !1, m.value = "";
|
|
3527
3531
|
}
|
|
3528
|
-
function
|
|
3529
|
-
r.disabled || (e.target !== d.value && e.preventDefault(), f.value && e.target !== d.value ? M() : (d.value?.focus(),
|
|
3532
|
+
function te(e) {
|
|
3533
|
+
r.disabled || (e.target !== d.value && e.preventDefault(), f.value && e.target !== d.value ? M() : (d.value?.focus(), k()));
|
|
3530
3534
|
}
|
|
3531
|
-
function
|
|
3535
|
+
function N(e) {
|
|
3532
3536
|
if (!e.disabled) {
|
|
3533
3537
|
if (r.multiple) {
|
|
3534
|
-
let t =
|
|
3535
|
-
i("update:modelValue", t), m.value = "",
|
|
3538
|
+
let t = D(e) ? _.value.filter((t) => t !== e.value) : [..._.value, e.value];
|
|
3539
|
+
i("update:modelValue", t), m.value = "", b(() => d.value?.focus());
|
|
3536
3540
|
} else i("update:modelValue", e.value), M(), d.value?.blur();
|
|
3537
3541
|
}
|
|
3538
3542
|
}
|
|
@@ -3542,23 +3546,23 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3542
3546
|
function ie() {
|
|
3543
3547
|
i("update:modelValue", r.multiple ? [] : null), m.value = "";
|
|
3544
3548
|
}
|
|
3545
|
-
function
|
|
3549
|
+
function ae(e) {
|
|
3546
3550
|
let t = E.value;
|
|
3547
3551
|
if (t.length === 0) return;
|
|
3548
3552
|
let n = h.value;
|
|
3549
3553
|
for (let r = 0; r < t.length && (n = (n + e + t.length) % t.length, t[n].disabled); r++);
|
|
3550
|
-
h.value = n,
|
|
3554
|
+
h.value = n, b(() => document.getElementById(`${g}-${n}`)?.scrollIntoView?.({ block: "nearest" }));
|
|
3551
3555
|
}
|
|
3552
|
-
function
|
|
3556
|
+
function oe(e) {
|
|
3553
3557
|
switch (e.key) {
|
|
3554
3558
|
case "ArrowDown":
|
|
3555
|
-
e.preventDefault(), f.value ?
|
|
3559
|
+
e.preventDefault(), f.value ? ae(1) : k();
|
|
3556
3560
|
break;
|
|
3557
3561
|
case "ArrowUp":
|
|
3558
|
-
e.preventDefault(), f.value ?
|
|
3562
|
+
e.preventDefault(), f.value ? ae(-1) : k();
|
|
3559
3563
|
break;
|
|
3560
3564
|
case "Enter":
|
|
3561
|
-
f.value && h.value >= 0 && (e.preventDefault(),
|
|
3565
|
+
f.value && h.value >= 0 && (e.preventDefault(), N(E.value[h.value]));
|
|
3562
3566
|
break;
|
|
3563
3567
|
case "Escape":
|
|
3564
3568
|
f.value && (e.preventDefault(), M());
|
|
@@ -3569,31 +3573,31 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3569
3573
|
case "Backspace": r.multiple && m.value === "" && v.value.length && re(v.value[v.value.length - 1]);
|
|
3570
3574
|
}
|
|
3571
3575
|
}
|
|
3572
|
-
function
|
|
3576
|
+
function I(e) {
|
|
3573
3577
|
f.value && u.value && !u.value.contains(e.target) && M();
|
|
3574
3578
|
}
|
|
3575
|
-
return
|
|
3579
|
+
return T(() => document.addEventListener("mousedown", I)), w(() => document.removeEventListener("mousedown", I)), (n, r) => (O(), c("div", {
|
|
3576
3580
|
ref_key: "rootEl",
|
|
3577
3581
|
ref: u,
|
|
3578
|
-
class:
|
|
3582
|
+
class: x(t.block ? "relative w-full" : "relative inline-block min-w-48")
|
|
3579
3583
|
}, [l("div", {
|
|
3580
|
-
class:
|
|
3581
|
-
onMousedown:
|
|
3584
|
+
class: x(["flex min-h-[38px] items-center gap-1.5 rounded-lg border bg-white px-3 py-1.5 text-sm transition-colors dark:bg-slate-900", [f.value ? "border-emerald-500 ring-2 ring-emerald-500/30" : "border-slate-300 hover:border-slate-400 dark:border-slate-600 dark:hover:border-slate-500", t.disabled ? "cursor-not-allowed opacity-60" : "cursor-text"]]),
|
|
3585
|
+
onMousedown: te
|
|
3582
3586
|
}, [
|
|
3583
|
-
l("div",
|
|
3587
|
+
l("div", Va, [(O(!0), c(e, null, j(v.value, (e) => L((O(), c("span", {
|
|
3584
3588
|
key: String(e.value),
|
|
3585
3589
|
class: "inline-flex max-w-full items-center gap-1 rounded-md bg-emerald-50 py-0.5 pl-2 pr-1 text-xs font-medium text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300"
|
|
3586
|
-
}, [l("span",
|
|
3590
|
+
}, [l("span", Ha, P(e.label), 1), l("button", {
|
|
3587
3591
|
type: "button",
|
|
3588
3592
|
class: "rounded p-0.5 hover:bg-emerald-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 dark:hover:bg-emerald-500/25",
|
|
3589
3593
|
"aria-label": `Remove ${e.label}`,
|
|
3590
3594
|
disabled: t.disabled,
|
|
3591
|
-
onMousedown: r[0] ||=
|
|
3592
|
-
onClick:
|
|
3593
|
-
}, [p(F(
|
|
3595
|
+
onMousedown: r[0] ||= R(() => {}, ["stop", "prevent"]),
|
|
3596
|
+
onClick: R((t) => re(e), ["stop"])
|
|
3597
|
+
}, [p(F(z), {
|
|
3594
3598
|
class: "h-3 w-3",
|
|
3595
3599
|
"aria-hidden": "true"
|
|
3596
|
-
})], 40,
|
|
3600
|
+
})], 40, Ua)])), [[ce, t.multiple]])), 128)), L(l("input", {
|
|
3597
3601
|
ref_key: "inputEl",
|
|
3598
3602
|
ref: d,
|
|
3599
3603
|
"onUpdate:modelValue": r[1] ||= (e) => m.value = e,
|
|
@@ -3607,66 +3611,66 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3607
3611
|
"aria-expanded": f.value,
|
|
3608
3612
|
"aria-controls": g,
|
|
3609
3613
|
"aria-activedescendant": f.value && h.value >= 0 ? `${g}-${h.value}` : void 0,
|
|
3610
|
-
placeholder:
|
|
3611
|
-
class:
|
|
3612
|
-
onFocus:
|
|
3613
|
-
onInput:
|
|
3614
|
-
onKeydown:
|
|
3615
|
-
}, null, 42,
|
|
3616
|
-
t.clearable &&
|
|
3614
|
+
placeholder: C.value,
|
|
3615
|
+
class: x(["min-w-16 flex-1 border-0 bg-transparent p-0 py-0.5 text-sm text-slate-900 outline-none focus:ring-0 dark:text-slate-100 disabled:cursor-not-allowed", S.value ? "placeholder:text-slate-900 dark:placeholder:text-slate-100" : "placeholder:text-slate-400 dark:placeholder:text-slate-500"]),
|
|
3616
|
+
onFocus: k,
|
|
3617
|
+
onInput: k,
|
|
3618
|
+
onKeydown: oe
|
|
3619
|
+
}, null, 42, Wa), [[se, m.value]])]),
|
|
3620
|
+
t.clearable && y.value && !t.disabled ? (O(), c("button", {
|
|
3617
3621
|
key: 0,
|
|
3618
3622
|
type: "button",
|
|
3619
3623
|
class: "shrink-0 rounded p-0.5 text-slate-400 hover:text-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 dark:hover:text-slate-200",
|
|
3620
3624
|
"aria-label": "Clear selection",
|
|
3621
|
-
onMousedown: r[2] ||=
|
|
3622
|
-
onClick:
|
|
3623
|
-
}, [p(F(
|
|
3625
|
+
onMousedown: r[2] ||= R(() => {}, ["stop", "prevent"]),
|
|
3626
|
+
onClick: R(ie, ["stop"])
|
|
3627
|
+
}, [p(F(z), {
|
|
3624
3628
|
class: "h-4 w-4",
|
|
3625
3629
|
"aria-hidden": "true"
|
|
3626
3630
|
})], 32)) : s("", !0),
|
|
3627
|
-
p(F(
|
|
3628
|
-
class:
|
|
3631
|
+
p(F(be), {
|
|
3632
|
+
class: x(["h-4 w-4 shrink-0 text-slate-500 transition-transform dark:text-slate-400", f.value ? "rotate-180" : ""]),
|
|
3629
3633
|
"aria-hidden": "true"
|
|
3630
3634
|
}, null, 8, ["class"])
|
|
3631
|
-
], 34), f.value ? (
|
|
3635
|
+
], 34), f.value ? (O(), c("ul", {
|
|
3632
3636
|
key: 0,
|
|
3633
3637
|
id: g,
|
|
3634
3638
|
role: "listbox",
|
|
3635
3639
|
"aria-multiselectable": t.multiple || void 0,
|
|
3636
3640
|
class: "absolute z-30 mt-1 max-h-60 w-full overflow-auto rounded-lg border border-slate-200 bg-white py-1 shadow-lg dark:border-slate-700 dark:bg-slate-900"
|
|
3637
|
-
}, [(
|
|
3641
|
+
}, [(O(!0), c(e, null, j(E.value, (e, t) => (O(), c("li", {
|
|
3638
3642
|
id: `${g}-${t}`,
|
|
3639
3643
|
key: String(e.value),
|
|
3640
3644
|
role: "option",
|
|
3641
|
-
"aria-selected":
|
|
3645
|
+
"aria-selected": D(e),
|
|
3642
3646
|
"aria-disabled": e.disabled || void 0,
|
|
3643
3647
|
title: e.title,
|
|
3644
|
-
class:
|
|
3645
|
-
onMousedown: r[3] ||=
|
|
3648
|
+
class: x(["flex cursor-pointer items-center justify-between gap-2 px-3 py-2 text-left text-sm", ee(e, t)]),
|
|
3649
|
+
onMousedown: r[3] ||= R(() => {}, ["prevent"]),
|
|
3646
3650
|
onMouseenter: (e) => h.value = t,
|
|
3647
|
-
onClick: (t) =>
|
|
3648
|
-
}, [l("span",
|
|
3651
|
+
onClick: (t) => N(e)
|
|
3652
|
+
}, [l("span", qa, P(e.label), 1), D(e) ? (O(), o(F(_e), {
|
|
3649
3653
|
key: 0,
|
|
3650
3654
|
class: "h-4 w-4 shrink-0",
|
|
3651
3655
|
"aria-hidden": "true"
|
|
3652
|
-
})) : s("", !0)], 42,
|
|
3656
|
+
})) : s("", !0)], 42, Ka))), 128)), E.value.length === 0 ? (O(), c("li", Ja, P(t.options.length === 0 ? t.emptyText : t.noResultsText), 1)) : s("", !0)], 8, Ga)) : s("", !0)], 2));
|
|
3653
3657
|
}
|
|
3654
|
-
}),
|
|
3658
|
+
}), Xa = { class: "rounded-xl border border-slate-200 bg-white text-left shadow-sm dark:border-slate-700 dark:bg-slate-900" }, Za = {
|
|
3655
3659
|
key: 0,
|
|
3656
3660
|
class: "flex flex-wrap items-center justify-between gap-3 border-b border-slate-200 px-5 py-3 dark:border-slate-700"
|
|
3657
|
-
},
|
|
3661
|
+
}, Qa = { class: "min-w-0" }, $a = {
|
|
3658
3662
|
key: 0,
|
|
3659
3663
|
class: "text-base font-semibold text-slate-900 dark:text-slate-100"
|
|
3660
|
-
},
|
|
3664
|
+
}, eo = {
|
|
3661
3665
|
key: 1,
|
|
3662
3666
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3663
|
-
},
|
|
3667
|
+
}, to = {
|
|
3664
3668
|
key: 0,
|
|
3665
3669
|
class: "flex items-center gap-2"
|
|
3666
|
-
},
|
|
3670
|
+
}, no = {
|
|
3667
3671
|
key: 1,
|
|
3668
3672
|
class: "flex flex-wrap items-center justify-end gap-2 border-t border-slate-200 px-5 py-3 dark:border-slate-700"
|
|
3669
|
-
},
|
|
3673
|
+
}, ro = /* @__PURE__ */ m({
|
|
3670
3674
|
__name: "BaseCard",
|
|
3671
3675
|
props: {
|
|
3672
3676
|
title: { default: "" },
|
|
@@ -3674,24 +3678,24 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3674
3678
|
padding: { default: "md" }
|
|
3675
3679
|
},
|
|
3676
3680
|
setup(e) {
|
|
3677
|
-
return (t, n) => (
|
|
3678
|
-
e.title || e.subtitle || t.$slots.actions ? (
|
|
3679
|
-
l("div", { class:
|
|
3680
|
-
t.$slots.footer ? (
|
|
3681
|
+
return (t, n) => (O(), c("section", Xa, [
|
|
3682
|
+
e.title || e.subtitle || t.$slots.actions ? (O(), c("header", Za, [l("div", Qa, [e.title ? (O(), c("h2", $a, P(e.title), 1)) : s("", !0), e.subtitle ? (O(), c("p", eo, P(e.subtitle), 1)) : s("", !0)]), t.$slots.actions ? (O(), c("div", to, [M(t.$slots, "actions")])) : s("", !0)])) : s("", !0),
|
|
3683
|
+
l("div", { class: x(e.padding === "sm" ? "p-4" : e.padding === "none" ? "" : "p-5") }, [M(t.$slots, "default")], 2),
|
|
3684
|
+
t.$slots.footer ? (O(), c("footer", no, [M(t.$slots, "footer")])) : s("", !0)
|
|
3681
3685
|
]));
|
|
3682
3686
|
}
|
|
3683
|
-
}),
|
|
3687
|
+
}), io = ["for"], ao = {
|
|
3684
3688
|
key: 0,
|
|
3685
3689
|
class: "ml-0.5 text-red-500",
|
|
3686
3690
|
"aria-hidden": "true"
|
|
3687
|
-
},
|
|
3691
|
+
}, oo = {
|
|
3688
3692
|
key: 1,
|
|
3689
3693
|
class: "mt-1 text-xs font-medium text-red-600 dark:text-red-400",
|
|
3690
3694
|
role: "alert"
|
|
3691
|
-
},
|
|
3695
|
+
}, so = {
|
|
3692
3696
|
key: 2,
|
|
3693
3697
|
class: "mt-1 text-xs text-slate-500 dark:text-slate-400"
|
|
3694
|
-
},
|
|
3698
|
+
}, co = /* @__PURE__ */ m({
|
|
3695
3699
|
__name: "BaseField",
|
|
3696
3700
|
props: {
|
|
3697
3701
|
label: { default: "" },
|
|
@@ -3712,17 +3716,26 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3712
3716
|
}
|
|
3713
3717
|
},
|
|
3714
3718
|
setup(e) {
|
|
3715
|
-
|
|
3716
|
-
|
|
3719
|
+
let t = e, n = A(), r = A(), i = ne();
|
|
3720
|
+
return T(() => {
|
|
3721
|
+
if (t.labelFor || !t.label) return;
|
|
3722
|
+
let e = n.value?.querySelector("input, select, textarea");
|
|
3723
|
+
e && (e.id ||= i, r.value = e.id);
|
|
3724
|
+
}), (t, i) => (O(), c("div", {
|
|
3725
|
+
ref_key: "root",
|
|
3726
|
+
ref: n,
|
|
3727
|
+
class: x([e.grow ? "min-w-48 flex-1" : "", "text-left"])
|
|
3728
|
+
}, [
|
|
3729
|
+
e.label ? (O(), c("label", {
|
|
3717
3730
|
key: 0,
|
|
3718
|
-
for: e.labelFor ||
|
|
3719
|
-
class:
|
|
3720
|
-
}, [f(P(e.label), 1), e.required ? (
|
|
3721
|
-
|
|
3722
|
-
e.error ? (
|
|
3731
|
+
for: e.labelFor || r.value,
|
|
3732
|
+
class: x(["mb-1 block", e.compact ? "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" : "text-sm font-medium text-slate-700 dark:text-slate-200"])
|
|
3733
|
+
}, [f(P(e.label), 1), e.required ? (O(), c("span", ao, "*")) : s("", !0)], 10, io)) : s("", !0),
|
|
3734
|
+
M(t.$slots, "default"),
|
|
3735
|
+
e.error ? (O(), c("p", oo, P(e.error), 1)) : e.hint ? (O(), c("p", so, P(e.hint), 1)) : s("", !0)
|
|
3723
3736
|
], 2));
|
|
3724
3737
|
}
|
|
3725
|
-
}),
|
|
3738
|
+
}), lo = { class: "flex items-start justify-between gap-3" }, uo = { class: "min-w-0 text-left" }, fo = { class: "truncate text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, po = /* @__PURE__ */ m({
|
|
3726
3739
|
__name: "BaseStatCard",
|
|
3727
3740
|
props: {
|
|
3728
3741
|
title: {},
|
|
@@ -3740,6 +3753,13 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3740
3753
|
iconBox: "bg-emerald-50 dark:bg-emerald-900/30",
|
|
3741
3754
|
icon: "text-emerald-500"
|
|
3742
3755
|
},
|
|
3756
|
+
violet: {
|
|
3757
|
+
border: "border-violet-300 dark:border-violet-700",
|
|
3758
|
+
value: "text-violet-500 dark:text-violet-400",
|
|
3759
|
+
subtitle: "text-violet-500 dark:text-violet-400",
|
|
3760
|
+
iconBox: "bg-violet-50 dark:bg-violet-900/30",
|
|
3761
|
+
icon: "text-violet-500"
|
|
3762
|
+
},
|
|
3743
3763
|
sky: {
|
|
3744
3764
|
border: "border-sky-300 dark:border-sky-700",
|
|
3745
3765
|
value: "text-sky-500 dark:text-sky-400",
|
|
@@ -3769,30 +3789,30 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3769
3789
|
icon: "text-slate-500 dark:text-slate-300"
|
|
3770
3790
|
}
|
|
3771
3791
|
}, r = a(() => n[t.accent]);
|
|
3772
|
-
return (t, n) => (
|
|
3773
|
-
default:
|
|
3774
|
-
l("p",
|
|
3775
|
-
l("p", { class:
|
|
3776
|
-
e.subtitle ? (
|
|
3792
|
+
return (t, n) => (O(), o(N(e.to ? F(Le) : "div"), y(e.to ? { to: e.to } : {}, { class: ["relative block rounded-xl border-2 border-dashed bg-white p-5 transition-colors dark:bg-slate-800", [r.value.border, e.to ? "hover:bg-slate-50 dark:hover:bg-slate-700/60 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500" : ""]] }), {
|
|
3793
|
+
default: I(() => [l("div", lo, [l("div", uo, [
|
|
3794
|
+
l("p", fo, P(e.title), 1),
|
|
3795
|
+
l("p", { class: x(["mt-1 truncate text-3xl font-bold", r.value.value]) }, [M(t.$slots, "value", {}, () => [f(P(e.value), 1)])], 2),
|
|
3796
|
+
e.subtitle ? (O(), c("p", {
|
|
3777
3797
|
key: 0,
|
|
3778
|
-
class:
|
|
3798
|
+
class: x(["mt-1 text-sm font-medium", r.value.subtitle])
|
|
3779
3799
|
}, P(e.subtitle), 3)) : s("", !0),
|
|
3780
|
-
|
|
3781
|
-
]), t.$slots.icon ? (
|
|
3800
|
+
M(t.$slots, "default")
|
|
3801
|
+
]), t.$slots.icon ? (O(), c("div", {
|
|
3782
3802
|
key: 0,
|
|
3783
|
-
class:
|
|
3784
|
-
}, [
|
|
3803
|
+
class: x(["flex h-12 w-12 shrink-0 items-center justify-center rounded-xl", r.value.iconBox])
|
|
3804
|
+
}, [M(t.$slots, "icon", { iconClass: `h-6 w-6 ${r.value.icon}` })], 2)) : s("", !0)])]),
|
|
3785
3805
|
_: 3
|
|
3786
3806
|
}, 16, ["class"]));
|
|
3787
3807
|
}
|
|
3788
|
-
}),
|
|
3808
|
+
}), mo = [
|
|
3789
3809
|
"aria-checked",
|
|
3790
3810
|
"aria-label",
|
|
3791
3811
|
"disabled"
|
|
3792
|
-
],
|
|
3812
|
+
], ho = {
|
|
3793
3813
|
key: 0,
|
|
3794
3814
|
class: "text-sm font-medium text-slate-700 dark:text-slate-200"
|
|
3795
|
-
},
|
|
3815
|
+
}, go = /* @__PURE__ */ m({
|
|
3796
3816
|
__name: "BaseToggle",
|
|
3797
3817
|
props: {
|
|
3798
3818
|
modelValue: {
|
|
@@ -3821,23 +3841,23 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3821
3841
|
let e = !n.modelValue;
|
|
3822
3842
|
r("update:modelValue", e), r("change", e);
|
|
3823
3843
|
}
|
|
3824
|
-
return (t, n) => (
|
|
3844
|
+
return (t, n) => (O(), c("label", { class: x(["inline-flex items-center gap-3 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("button", {
|
|
3825
3845
|
type: "button",
|
|
3826
3846
|
role: "switch",
|
|
3827
3847
|
"aria-checked": e.modelValue,
|
|
3828
3848
|
"aria-label": e.label ? void 0 : e.ariaLabel || void 0,
|
|
3829
3849
|
disabled: e.disabled,
|
|
3830
|
-
class:
|
|
3850
|
+
class: x(["relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900 disabled:cursor-not-allowed", e.modelValue ? i[e.color] : e.offTone === "red" ? "bg-red-200 dark:bg-red-900/50" : "bg-slate-200 dark:bg-slate-700"]),
|
|
3831
3851
|
onClick: a
|
|
3832
3852
|
}, [l("span", {
|
|
3833
|
-
class:
|
|
3853
|
+
class: x(["inline-block h-5 w-5 rounded-full bg-white shadow ring-1 ring-black/5 transition-transform", e.modelValue ? "translate-x-[22px]" : "translate-x-0.5"]),
|
|
3834
3854
|
"aria-hidden": "true"
|
|
3835
|
-
}, null, 2)], 10,
|
|
3855
|
+
}, null, 2)], 10, mo), e.label ? (O(), c("span", ho, P(e.label), 1)) : s("", !0)], 2));
|
|
3836
3856
|
}
|
|
3837
|
-
}),
|
|
3857
|
+
}), _o = ["checked", "disabled"], vo = {
|
|
3838
3858
|
key: 0,
|
|
3839
3859
|
class: "text-sm text-slate-700 dark:text-slate-200"
|
|
3840
|
-
},
|
|
3860
|
+
}, yo = /* @__PURE__ */ m({
|
|
3841
3861
|
inheritAttrs: !1,
|
|
3842
3862
|
__name: "BaseCheckbox",
|
|
3843
3863
|
props: {
|
|
@@ -3858,25 +3878,27 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3858
3878
|
let t = e.target.checked;
|
|
3859
3879
|
n("update:modelValue", t), n("change", t);
|
|
3860
3880
|
}
|
|
3861
|
-
return (t, n) => (
|
|
3881
|
+
return (t, n) => (O(), c("label", { class: x(["inline-flex items-center gap-2 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("input", y(t.$attrs, {
|
|
3862
3882
|
type: "checkbox",
|
|
3863
3883
|
checked: e.modelValue,
|
|
3864
3884
|
disabled: e.disabled,
|
|
3865
3885
|
class: "h-5 w-5 shrink-0 cursor-[inherit] rounded-md border-slate-300 bg-white text-emerald-600 accent-emerald-600 transition-colors focus:ring-2 focus:ring-emerald-500/40 focus:ring-offset-0 dark:border-slate-600 dark:bg-slate-900 dark:checked:bg-emerald-600",
|
|
3866
3886
|
onChange: r
|
|
3867
|
-
}), null, 16,
|
|
3887
|
+
}), null, 16, _o), e.label || t.$slots.default ? (O(), c("span", vo, [M(t.$slots, "default", {}, () => [f(P(e.label), 1)])])) : s("", !0)], 2));
|
|
3868
3888
|
}
|
|
3869
|
-
}),
|
|
3889
|
+
}), bo = { class: "flex flex-col gap-2 text-left" }, xo = ["src"], So = {
|
|
3890
|
+
key: 1,
|
|
3870
3891
|
class: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-emerald-100 text-sm font-semibold text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300",
|
|
3871
3892
|
"aria-hidden": "true"
|
|
3872
|
-
},
|
|
3893
|
+
}, Co = { class: "min-w-0" }, wo = { class: "block truncate text-sm font-medium text-slate-900 dark:text-slate-100" }, To = {
|
|
3873
3894
|
key: 0,
|
|
3874
3895
|
class: "block truncate text-xs text-slate-500 dark:text-slate-400"
|
|
3875
|
-
},
|
|
3896
|
+
}, Eo = /* @__PURE__ */ m({
|
|
3876
3897
|
__name: "BaseSidebarUser",
|
|
3877
3898
|
props: {
|
|
3878
3899
|
name: {},
|
|
3879
3900
|
email: { default: "" },
|
|
3901
|
+
avatarUrl: { default: null },
|
|
3880
3902
|
to: { default: void 0 },
|
|
3881
3903
|
showLogout: {
|
|
3882
3904
|
type: Boolean,
|
|
@@ -3888,13 +3910,18 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3888
3910
|
emits: ["logout"],
|
|
3889
3911
|
setup(e, { emit: t }) {
|
|
3890
3912
|
let n = e, r = t, i = a(() => (n.name || "?").split(/[\s._-]+/).filter(Boolean).slice(0, 2).map((e) => e[0].toUpperCase()).join(""));
|
|
3891
|
-
return (t, n) => (
|
|
3913
|
+
return (t, n) => (O(), c("div", bo, [(O(), o(N(e.to ? F(Le) : "div"), y(e.to ? { to: e.to } : {}, {
|
|
3892
3914
|
class: ["flex items-center gap-3 rounded-lg p-2 transition-colors", e.to ? "hover:bg-slate-100 dark:hover:bg-slate-800 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500" : ""],
|
|
3893
3915
|
title: e.to ? e.profileLabel : void 0
|
|
3894
3916
|
}), {
|
|
3895
|
-
default:
|
|
3917
|
+
default: I(() => [e.avatarUrl ? (O(), c("img", {
|
|
3918
|
+
key: 0,
|
|
3919
|
+
src: e.avatarUrl,
|
|
3920
|
+
alt: "",
|
|
3921
|
+
class: "h-9 w-9 shrink-0 rounded-full object-cover"
|
|
3922
|
+
}, null, 8, xo)) : (O(), c("span", So, P(i.value), 1)), l("span", Co, [l("span", wo, P(e.name), 1), e.email ? (O(), c("span", To, P(e.email), 1)) : s("", !0)])]),
|
|
3896
3923
|
_: 1
|
|
3897
|
-
}, 16, ["class", "title"])), e.showLogout ? (
|
|
3924
|
+
}, 16, ["class", "title"])), e.showLogout ? (O(), o(q, {
|
|
3898
3925
|
key: 0,
|
|
3899
3926
|
class: "w-full justify-center",
|
|
3900
3927
|
description: e.logoutLabel,
|
|
@@ -3904,7 +3931,7 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3904
3931
|
"icon-left": "",
|
|
3905
3932
|
onClick: n[0] ||= (e) => r("logout")
|
|
3906
3933
|
}, {
|
|
3907
|
-
default:
|
|
3934
|
+
default: I(() => [p(F(fe), {
|
|
3908
3935
|
class: "mr-1.5 h-4 w-4",
|
|
3909
3936
|
"aria-hidden": "true"
|
|
3910
3937
|
})]),
|
|
@@ -3915,16 +3942,16 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3915
3942
|
"size"
|
|
3916
3943
|
])) : s("", !0)]));
|
|
3917
3944
|
}
|
|
3918
|
-
}),
|
|
3945
|
+
}), Do = { class: "flex min-h-screen w-full flex-col items-center justify-center bg-slate-50 px-4 py-10 dark:bg-slate-950" }, Oo = { class: "mb-6 flex justify-center" }, ko = {
|
|
3919
3946
|
key: 0,
|
|
3920
3947
|
class: "mb-1 text-2xl font-bold tracking-tight text-slate-900 dark:text-slate-100"
|
|
3921
|
-
},
|
|
3948
|
+
}, Ao = {
|
|
3922
3949
|
key: 1,
|
|
3923
3950
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3924
|
-
},
|
|
3951
|
+
}, jo = {
|
|
3925
3952
|
key: 2,
|
|
3926
3953
|
class: "mt-6 border-t border-slate-200 pt-4 text-center text-sm text-slate-500 dark:border-slate-700 dark:text-slate-400"
|
|
3927
|
-
},
|
|
3954
|
+
}, Mo = /* @__PURE__ */ m({
|
|
3928
3955
|
__name: "BaseAuthLayout",
|
|
3929
3956
|
props: {
|
|
3930
3957
|
title: { default: "" },
|
|
@@ -3935,18 +3962,18 @@ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }
|
|
|
3935
3962
|
}
|
|
3936
3963
|
},
|
|
3937
3964
|
setup(e) {
|
|
3938
|
-
return (t, n) => (
|
|
3939
|
-
e.title ? (
|
|
3940
|
-
e.subtitle ? (
|
|
3941
|
-
l("div", { class:
|
|
3942
|
-
t.$slots.footer ? (
|
|
3965
|
+
return (t, n) => (O(), c("div", Do, [l("div", Oo, [M(t.$slots, "logo", {}, () => [p(It, { size: F(J).MEDIUM }, null, 8, ["size"])])]), l("div", { class: x(["w-full rounded-xl border border-slate-200 bg-white p-6 text-left shadow-sm sm:p-8 dark:border-slate-700 dark:bg-slate-900", e.wide ? "max-w-3xl" : "max-w-md"]) }, [
|
|
3966
|
+
e.title ? (O(), c("h1", ko, P(e.title), 1)) : s("", !0),
|
|
3967
|
+
e.subtitle ? (O(), c("p", Ao, P(e.subtitle), 1)) : s("", !0),
|
|
3968
|
+
l("div", { class: x(e.title || e.subtitle ? "mt-6" : "") }, [M(t.$slots, "default")], 2),
|
|
3969
|
+
t.$slots.footer ? (O(), c("div", jo, [M(t.$slots, "footer")])) : s("", !0)
|
|
3943
3970
|
], 2)]));
|
|
3944
3971
|
}
|
|
3945
3972
|
});
|
|
3946
3973
|
//#endregion
|
|
3947
3974
|
//#region node_modules/@heroicons/vue/20/solid/esm/CheckCircleIcon.js
|
|
3948
|
-
function
|
|
3949
|
-
return
|
|
3975
|
+
function No(e, t) {
|
|
3976
|
+
return O(), c("svg", {
|
|
3950
3977
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3951
3978
|
viewBox: "0 0 20 20",
|
|
3952
3979
|
fill: "currentColor",
|
|
@@ -3960,8 +3987,8 @@ function Oo(e, t) {
|
|
|
3960
3987
|
}
|
|
3961
3988
|
//#endregion
|
|
3962
3989
|
//#region node_modules/@heroicons/vue/20/solid/esm/XCircleIcon.js
|
|
3963
|
-
function
|
|
3964
|
-
return
|
|
3990
|
+
function Po(e, t) {
|
|
3991
|
+
return O(), c("svg", {
|
|
3965
3992
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3966
3993
|
viewBox: "0 0 20 20",
|
|
3967
3994
|
fill: "currentColor",
|
|
@@ -3975,7 +4002,7 @@ function ko(e, t) {
|
|
|
3975
4002
|
}
|
|
3976
4003
|
//#endregion
|
|
3977
4004
|
//#region src/components/BaseBooleanBadge.vue
|
|
3978
|
-
var
|
|
4005
|
+
var Fo = /* @__PURE__ */ m({
|
|
3979
4006
|
__name: "BaseBooleanBadge",
|
|
3980
4007
|
props: {
|
|
3981
4008
|
value: {
|
|
@@ -3986,20 +4013,20 @@ var Ao = /* @__PURE__ */ m({
|
|
|
3986
4013
|
falseLabel: { default: "No" }
|
|
3987
4014
|
},
|
|
3988
4015
|
setup(e) {
|
|
3989
|
-
return (t, n) => (
|
|
4016
|
+
return (t, n) => (O(), c("span", { class: x(["inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium ring-1 ring-inset", e.value ? "bg-emerald-50 text-emerald-700 ring-emerald-600/20 dark:bg-emerald-500/10 dark:text-emerald-300 dark:ring-emerald-400/30" : "bg-red-50 text-red-700 ring-red-600/20 dark:bg-red-500/10 dark:text-red-300 dark:ring-red-400/30"]) }, [e.value ? (O(), o(F(No), {
|
|
3990
4017
|
key: 0,
|
|
3991
4018
|
class: "h-3.5 w-3.5",
|
|
3992
4019
|
"aria-hidden": "true"
|
|
3993
|
-
})) : (
|
|
4020
|
+
})) : (O(), o(F(Po), {
|
|
3994
4021
|
key: 1,
|
|
3995
4022
|
class: "h-3.5 w-3.5",
|
|
3996
4023
|
"aria-hidden": "true"
|
|
3997
4024
|
})), f(" " + P(e.value ? e.trueLabel : e.falseLabel), 1)], 2));
|
|
3998
4025
|
}
|
|
3999
|
-
}),
|
|
4026
|
+
}), Io = { class: "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" }, Lo = ["href"], Ro = {
|
|
4000
4027
|
key: 1,
|
|
4001
4028
|
class: "text-slate-400 dark:text-slate-500"
|
|
4002
|
-
},
|
|
4029
|
+
}, zo = /* @__PURE__ */ m({
|
|
4003
4030
|
__name: "BaseDetailList",
|
|
4004
4031
|
props: {
|
|
4005
4032
|
items: {},
|
|
@@ -4010,34 +4037,193 @@ var Ao = /* @__PURE__ */ m({
|
|
|
4010
4037
|
function n(e) {
|
|
4011
4038
|
return e == null || e === "";
|
|
4012
4039
|
}
|
|
4013
|
-
return (r, i) => (
|
|
4014
|
-
key:
|
|
4040
|
+
return (r, i) => (O(), c("dl", { class: x(["grid grid-cols-[minmax(0,1fr)] gap-x-6 gap-y-4 text-left", t.columns === 2 ? "sm:grid-cols-[repeat(2,minmax(0,1fr))]" : t.columns === 3 ? "sm:grid-cols-[repeat(2,minmax(0,1fr))] lg:grid-cols-[repeat(3,minmax(0,1fr))]" : ""]) }, [(O(!0), c(e, null, j(t.items, (i) => (O(), c("div", {
|
|
4041
|
+
key: i.label,
|
|
4015
4042
|
class: "min-w-0"
|
|
4016
|
-
}, [l("dt",
|
|
4043
|
+
}, [l("dt", Io, P(i.label), 1), l("dd", { class: x(["mt-1 break-words text-sm text-slate-900 dark:text-slate-100", i.mono ? "font-mono" : ""]) }, [M(r.$slots, "value", { item: i }, () => [i.href && !n(i.value) ? (O(), c("a", {
|
|
4017
4044
|
key: 0,
|
|
4018
|
-
href:
|
|
4045
|
+
href: i.href,
|
|
4019
4046
|
target: "_blank",
|
|
4020
4047
|
rel: "noopener noreferrer",
|
|
4021
4048
|
class: "text-emerald-600 hover:underline dark:text-emerald-400"
|
|
4022
|
-
}, P(
|
|
4049
|
+
}, P(i.value), 9, Lo)) : n(i.value) ? (O(), c("span", Ro, P(t.emptyText), 1)) : (O(), c(e, { key: 2 }, [f(P(i.value), 1)], 64))])], 2)]))), 128))], 2));
|
|
4023
4050
|
}
|
|
4024
|
-
})
|
|
4051
|
+
}), Bo = ["value"], Vo = /* @__PURE__ */ m({
|
|
4052
|
+
__name: "BaseTextarea",
|
|
4053
|
+
props: { modelValue: { default: "" } },
|
|
4054
|
+
emits: ["update:modelValue"],
|
|
4055
|
+
setup(e, { emit: t }) {
|
|
4056
|
+
let n = t;
|
|
4057
|
+
function r(e) {
|
|
4058
|
+
n("update:modelValue", e.target.value);
|
|
4059
|
+
}
|
|
4060
|
+
return (t, n) => (O(), c("textarea", {
|
|
4061
|
+
value: e.modelValue ?? "",
|
|
4062
|
+
class: "w-full rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm px-3 py-2 placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors hover:border-slate-400 dark:hover:border-slate-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500/40 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed",
|
|
4063
|
+
onInput: r
|
|
4064
|
+
}, null, 40, Bo));
|
|
4065
|
+
}
|
|
4066
|
+
}), Ho = ["title"], Uo = { class: "ml-1 font-mono text-xs text-slate-500 dark:text-slate-400" }, Wo = /* @__PURE__ */ m({
|
|
4067
|
+
__name: "BaseRating",
|
|
4068
|
+
props: {
|
|
4069
|
+
rating: {},
|
|
4070
|
+
count: { default: null }
|
|
4071
|
+
},
|
|
4072
|
+
setup(t) {
|
|
4073
|
+
return (n, r) => (O(), c("span", {
|
|
4074
|
+
class: "inline-flex items-center gap-0.5",
|
|
4075
|
+
title: `${t.rating} / 5`
|
|
4076
|
+
}, [(O(), c(e, null, j(5, (n) => (O(), c(e, { key: n }, [n <= Math.round(t.rating) ? (O(), o(F(Ie), {
|
|
4077
|
+
key: 0,
|
|
4078
|
+
class: "h-4 w-4 text-amber-400",
|
|
4079
|
+
"aria-hidden": "true"
|
|
4080
|
+
})) : (O(), o(F(Ne), {
|
|
4081
|
+
key: 1,
|
|
4082
|
+
class: "h-4 w-4 text-slate-300 dark:text-slate-600",
|
|
4083
|
+
"aria-hidden": "true"
|
|
4084
|
+
}))], 64))), 64)), l("span", Uo, [f(P(t.rating.toFixed(1)), 1), t.count === null ? s("", !0) : (O(), c(e, { key: 0 }, [f(" (" + P(t.count) + ")", 1)], 64))])], 8, Ho));
|
|
4085
|
+
}
|
|
4086
|
+
}), Go = /* @__PURE__ */ m({
|
|
4087
|
+
__name: "BaseRowButton",
|
|
4088
|
+
props: { variant: { default: "outline" } },
|
|
4089
|
+
setup(e) {
|
|
4090
|
+
let t = {
|
|
4091
|
+
outline: "border border-slate-300 bg-white text-slate-700 hover:bg-slate-50 dark:border-slate-600 dark:bg-slate-900 dark:text-slate-200 dark:hover:bg-slate-800",
|
|
4092
|
+
primary: "border border-emerald-700 bg-emerald-700 text-white hover:bg-emerald-800",
|
|
4093
|
+
danger: "border border-red-400 bg-red-400 text-white hover:bg-red-500"
|
|
4094
|
+
};
|
|
4095
|
+
return (n, r) => (O(), c("button", {
|
|
4096
|
+
type: "button",
|
|
4097
|
+
class: x(["inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-xs font-medium shadow-sm transition-colors", t[e.variant]]),
|
|
4098
|
+
onClick: r[0] ||= R(() => {}, ["stop"])
|
|
4099
|
+
}, [M(n.$slots, "default")], 2));
|
|
4100
|
+
}
|
|
4101
|
+
}), Ko = { key: 0 }, qo = ["title"], Jo = /* @__PURE__ */ m({
|
|
4102
|
+
__name: "BaseBooleanIcon",
|
|
4103
|
+
props: {
|
|
4104
|
+
value: {
|
|
4105
|
+
type: [Boolean, null],
|
|
4106
|
+
default: null
|
|
4107
|
+
},
|
|
4108
|
+
trueLabel: { default: "Yes" },
|
|
4109
|
+
falseLabel: { default: "No" },
|
|
4110
|
+
emptyText: { default: "—" }
|
|
4111
|
+
},
|
|
4112
|
+
setup(e) {
|
|
4113
|
+
return (t, n) => e.value == null ? (O(), c("span", Ko, P(e.emptyText), 1)) : (O(), c("span", {
|
|
4114
|
+
key: 1,
|
|
4115
|
+
class: "inline-flex align-middle",
|
|
4116
|
+
title: e.value ? e.trueLabel : e.falseLabel
|
|
4117
|
+
}, [e.value ? (O(), o(F(No), {
|
|
4118
|
+
key: 0,
|
|
4119
|
+
class: "h-5 w-5 shrink-0 text-emerald-500",
|
|
4120
|
+
"aria-label": e.trueLabel
|
|
4121
|
+
}, null, 8, ["aria-label"])) : (O(), o(F(Po), {
|
|
4122
|
+
key: 1,
|
|
4123
|
+
class: "h-5 w-5 shrink-0 text-red-500",
|
|
4124
|
+
"aria-label": e.falseLabel
|
|
4125
|
+
}, null, 8, ["aria-label"]))], 8, qo));
|
|
4126
|
+
}
|
|
4127
|
+
}), Yo = { class: "flex items-center justify-between px-4 py-3 text-sm text-white" }, Xo = { class: "font-medium" }, Zo = { class: "flex items-center gap-3" }, Qo = { class: "text-slate-300" }, $o = ["aria-label"], es = ["src", "alt"], ts = ["aria-label"], ns = ["aria-label"], rs = {
|
|
4128
|
+
key: 0,
|
|
4129
|
+
class: "mx-auto max-w-2xl whitespace-pre-line px-4 pb-4 text-center text-sm text-white"
|
|
4130
|
+
}, is = {
|
|
4131
|
+
key: 1,
|
|
4132
|
+
class: "flex justify-center gap-2 overflow-x-auto px-4 pb-4"
|
|
4133
|
+
}, as = ["aria-label", "onClick"], os = ["src", "alt"], ss = /* @__PURE__ */ m({
|
|
4134
|
+
__name: "BasePhotoViewer",
|
|
4135
|
+
props: /*@__PURE__*/ v({
|
|
4136
|
+
photos: {},
|
|
4137
|
+
closeLabel: { default: "Close" },
|
|
4138
|
+
previousLabel: { default: "Previous" },
|
|
4139
|
+
nextLabel: { default: "Next" }
|
|
4140
|
+
}, {
|
|
4141
|
+
modelValue: { required: !0 },
|
|
4142
|
+
modelModifiers: {}
|
|
4143
|
+
}),
|
|
4144
|
+
emits: /*@__PURE__*/ v(["close"], ["update:modelValue"]),
|
|
4145
|
+
setup(n, { emit: r }) {
|
|
4146
|
+
let i = n, u = re(n, "modelValue"), d = r, f = a(() => i.photos[u.value]);
|
|
4147
|
+
function m(e) {
|
|
4148
|
+
let t = i.photos.length;
|
|
4149
|
+
t > 0 && (u.value = (u.value + e + t) % t);
|
|
4150
|
+
}
|
|
4151
|
+
function h(e) {
|
|
4152
|
+
e.key === "Escape" ? d("close") : e.key === "ArrowLeft" ? m(-1) : e.key === "ArrowRight" && m(1);
|
|
4153
|
+
}
|
|
4154
|
+
return T(() => window.addEventListener("keydown", h)), w(() => window.removeEventListener("keydown", h)), (r, i) => (O(), o(t, { to: "body" }, [f.value ? (O(), c("div", {
|
|
4155
|
+
key: 0,
|
|
4156
|
+
class: "fixed inset-0 z-[1000] flex flex-col bg-slate-950/90",
|
|
4157
|
+
role: "dialog",
|
|
4158
|
+
"aria-modal": "true",
|
|
4159
|
+
onClick: i[4] ||= R((e) => d("close"), ["self"])
|
|
4160
|
+
}, [
|
|
4161
|
+
l("div", Yo, [l("span", Xo, P(f.value.label), 1), l("div", Zo, [l("span", Qo, P(u.value + 1) + " / " + P(n.photos.length), 1), l("button", {
|
|
4162
|
+
type: "button",
|
|
4163
|
+
class: "rounded-full p-1.5 hover:bg-white/10",
|
|
4164
|
+
"aria-label": n.closeLabel,
|
|
4165
|
+
onClick: i[0] ||= (e) => d("close")
|
|
4166
|
+
}, [p(F(z), { class: "h-6 w-6" })], 8, $o)])]),
|
|
4167
|
+
l("div", {
|
|
4168
|
+
class: "relative flex min-h-0 flex-1 items-center justify-center px-4 pb-4",
|
|
4169
|
+
onClick: i[3] ||= R((e) => d("close"), ["self"])
|
|
4170
|
+
}, [l("img", {
|
|
4171
|
+
src: f.value.src,
|
|
4172
|
+
alt: f.value.label,
|
|
4173
|
+
class: "max-h-full max-w-full rounded-lg object-contain shadow-2xl"
|
|
4174
|
+
}, null, 8, es), n.photos.length > 1 ? (O(), c(e, { key: 0 }, [l("button", {
|
|
4175
|
+
type: "button",
|
|
4176
|
+
class: "absolute left-4 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-2 text-white hover:bg-white/20",
|
|
4177
|
+
"aria-label": n.previousLabel,
|
|
4178
|
+
onClick: i[1] ||= (e) => m(-1)
|
|
4179
|
+
}, [p(F(xe), { class: "h-7 w-7" })], 8, ts), l("button", {
|
|
4180
|
+
type: "button",
|
|
4181
|
+
class: "absolute right-4 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-2 text-white hover:bg-white/20",
|
|
4182
|
+
"aria-label": n.nextLabel,
|
|
4183
|
+
onClick: i[2] ||= (e) => m(1)
|
|
4184
|
+
}, [p(F(Se), { class: "h-7 w-7" })], 8, ns)], 64)) : s("", !0)]),
|
|
4185
|
+
f.value.caption ? (O(), c("p", rs, P(f.value.caption), 1)) : s("", !0),
|
|
4186
|
+
n.photos.length > 1 ? (O(), c("div", is, [(O(!0), c(e, null, j(n.photos, (e, t) => (O(), c("button", {
|
|
4187
|
+
key: t,
|
|
4188
|
+
type: "button",
|
|
4189
|
+
class: x(["h-14 w-14 shrink-0 overflow-hidden rounded-md border-2", t === u.value ? "border-emerald-400" : "border-transparent opacity-60 hover:opacity-100"]),
|
|
4190
|
+
"aria-label": e.label,
|
|
4191
|
+
onClick: (e) => u.value = t
|
|
4192
|
+
}, [l("img", {
|
|
4193
|
+
src: e.src,
|
|
4194
|
+
alt: e.label,
|
|
4195
|
+
class: "h-full w-full object-cover"
|
|
4196
|
+
}, null, 8, os)], 10, as))), 128))])) : s("", !0)
|
|
4197
|
+
])) : s("", !0)]));
|
|
4198
|
+
}
|
|
4199
|
+
}), cs = 3e4;
|
|
4200
|
+
function ls(e, t = cs) {
|
|
4201
|
+
let n = null;
|
|
4202
|
+
function r() {
|
|
4203
|
+
if (document.visibilityState === "hidden") {
|
|
4204
|
+
n ??= Date.now();
|
|
4205
|
+
return;
|
|
4206
|
+
}
|
|
4207
|
+
n !== null && Date.now() - n >= t && e(), n = null;
|
|
4208
|
+
}
|
|
4209
|
+
T(() => document.addEventListener("visibilitychange", r)), w(() => document.removeEventListener("visibilitychange", r));
|
|
4210
|
+
}
|
|
4025
4211
|
//#endregion
|
|
4026
4212
|
//#region src/composables/useDebounce.ts
|
|
4027
|
-
function
|
|
4028
|
-
let n =
|
|
4029
|
-
return
|
|
4213
|
+
function us(e, t = 300) {
|
|
4214
|
+
let n = A(e.value), r = null;
|
|
4215
|
+
return le(e, (e) => {
|
|
4030
4216
|
r && clearTimeout(r), r = setTimeout(() => {
|
|
4031
4217
|
n.value = e, r = null;
|
|
4032
4218
|
}, t);
|
|
4033
|
-
}),
|
|
4219
|
+
}), E(() => {
|
|
4034
4220
|
r &&= (clearTimeout(r), null);
|
|
4035
4221
|
}), n;
|
|
4036
4222
|
}
|
|
4037
4223
|
//#endregion
|
|
4038
4224
|
//#region src/composables/useToast.ts
|
|
4039
|
-
function
|
|
4040
|
-
let t =
|
|
4225
|
+
function ds(e = 3e3) {
|
|
4226
|
+
let t = A(!1), n = A(""), r = A(Y.SUCCESS), i = null;
|
|
4041
4227
|
function a() {
|
|
4042
4228
|
i &&= (clearTimeout(i), null);
|
|
4043
4229
|
}
|
|
@@ -4046,7 +4232,7 @@ function Io(e = 3e3) {
|
|
|
4046
4232
|
t.value = !1, i = null;
|
|
4047
4233
|
}, c);
|
|
4048
4234
|
}
|
|
4049
|
-
return
|
|
4235
|
+
return E(() => {
|
|
4050
4236
|
a();
|
|
4051
4237
|
}), {
|
|
4052
4238
|
showToast: t,
|
|
@@ -4057,8 +4243,8 @@ function Io(e = 3e3) {
|
|
|
4057
4243
|
}
|
|
4058
4244
|
//#endregion
|
|
4059
4245
|
//#region src/composables/useQueryParamSync.ts
|
|
4060
|
-
function
|
|
4061
|
-
let e =
|
|
4246
|
+
function fs() {
|
|
4247
|
+
let e = Re(), t = ze();
|
|
4062
4248
|
function n(t) {
|
|
4063
4249
|
let n = e.query[t];
|
|
4064
4250
|
return typeof n == "string" ? n : "";
|
|
@@ -4079,7 +4265,7 @@ function Lo() {
|
|
|
4079
4265
|
}
|
|
4080
4266
|
//#endregion
|
|
4081
4267
|
//#region src/composables/useFieldClasses.ts
|
|
4082
|
-
function
|
|
4268
|
+
function ps() {
|
|
4083
4269
|
let { isDark: e } = U(), t = a(() => e.value ? "text-gray-300" : "text-gray-600"), n = a(() => 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");
|
|
4084
4270
|
function r(t) {
|
|
4085
4271
|
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;
|
|
@@ -4092,8 +4278,8 @@ function Ro() {
|
|
|
4092
4278
|
}
|
|
4093
4279
|
//#endregion
|
|
4094
4280
|
//#region src/composables/usePolling.ts
|
|
4095
|
-
function
|
|
4096
|
-
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o =
|
|
4281
|
+
function ms(e, t, n = {}) {
|
|
4282
|
+
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = A(!1), s = !1;
|
|
4097
4283
|
function c() {
|
|
4098
4284
|
a === null && t !== null && (a = setInterval(() => void e(), t));
|
|
4099
4285
|
}
|
|
@@ -4115,19 +4301,19 @@ function zo(e, t, n = {}) {
|
|
|
4115
4301
|
o.value = !1, l(), s = !0;
|
|
4116
4302
|
}
|
|
4117
4303
|
}
|
|
4118
|
-
return
|
|
4304
|
+
return T(() => {
|
|
4119
4305
|
u(), i && document.addEventListener("visibilitychange", f);
|
|
4120
|
-
}),
|
|
4306
|
+
}), D(() => {
|
|
4121
4307
|
d(), i && document.removeEventListener("visibilitychange", f);
|
|
4122
4308
|
}), {
|
|
4123
4309
|
start: u,
|
|
4124
4310
|
stop: d,
|
|
4125
|
-
active:
|
|
4311
|
+
active: k(o)
|
|
4126
4312
|
};
|
|
4127
4313
|
}
|
|
4128
4314
|
//#endregion
|
|
4129
4315
|
//#region src/composables/useLatestRequest.ts
|
|
4130
|
-
function
|
|
4316
|
+
function hs() {
|
|
4131
4317
|
let e = 0, t = null;
|
|
4132
4318
|
function n() {
|
|
4133
4319
|
let n = ++e;
|
|
@@ -4141,17 +4327,17 @@ function Bo() {
|
|
|
4141
4327
|
function r() {
|
|
4142
4328
|
++e, t?.abort(), t = null;
|
|
4143
4329
|
}
|
|
4144
|
-
return g() &&
|
|
4330
|
+
return g() && E(r), {
|
|
4145
4331
|
begin: n,
|
|
4146
4332
|
cancel: r
|
|
4147
4333
|
};
|
|
4148
4334
|
}
|
|
4149
|
-
function
|
|
4335
|
+
function gs(e) {
|
|
4150
4336
|
return typeof DOMException < "u" && e instanceof DOMException && e.name === "AbortError" || e instanceof Error && e.name === "AbortError";
|
|
4151
4337
|
}
|
|
4152
4338
|
//#endregion
|
|
4153
4339
|
//#region src/composables/useDirtyState.ts
|
|
4154
|
-
function
|
|
4340
|
+
function _s(e) {
|
|
4155
4341
|
return JSON.stringify(e, (e, t) => {
|
|
4156
4342
|
if (typeof t == "object" && t && !Array.isArray(t)) {
|
|
4157
4343
|
let e = {};
|
|
@@ -4161,10 +4347,10 @@ function Ho(e) {
|
|
|
4161
4347
|
return t;
|
|
4162
4348
|
});
|
|
4163
4349
|
}
|
|
4164
|
-
function
|
|
4165
|
-
let t =
|
|
4350
|
+
function vs(e) {
|
|
4351
|
+
let t = A(_s(e())), n = a(() => _s(e()) !== t.value);
|
|
4166
4352
|
function r() {
|
|
4167
|
-
t.value =
|
|
4353
|
+
t.value = _s(e());
|
|
4168
4354
|
}
|
|
4169
4355
|
return {
|
|
4170
4356
|
dirty: n,
|
|
@@ -4173,12 +4359,12 @@ function Uo(e) {
|
|
|
4173
4359
|
}
|
|
4174
4360
|
//#endregion
|
|
4175
4361
|
//#region src/enums/BaseBadgeEnum.ts
|
|
4176
|
-
var
|
|
4362
|
+
var ys = /* @__PURE__ */ function(e) {
|
|
4177
4363
|
return e.WIN = "WIN", e.LOSE = "LOSE", e;
|
|
4178
4364
|
}({});
|
|
4179
4365
|
//#endregion
|
|
4180
4366
|
//#region src/utils/util.ts
|
|
4181
|
-
function
|
|
4367
|
+
function bs(e) {
|
|
4182
4368
|
let t = "red";
|
|
4183
4369
|
switch (e) {
|
|
4184
4370
|
case B.ERROR:
|
|
@@ -4194,7 +4380,7 @@ function Go(e) {
|
|
|
4194
4380
|
}
|
|
4195
4381
|
return t;
|
|
4196
4382
|
}
|
|
4197
|
-
function
|
|
4383
|
+
function xs(e) {
|
|
4198
4384
|
let t = "red";
|
|
4199
4385
|
switch (e) {
|
|
4200
4386
|
case W.GREEN:
|
|
@@ -4221,14 +4407,14 @@ function Ko(e) {
|
|
|
4221
4407
|
}
|
|
4222
4408
|
//#endregion
|
|
4223
4409
|
//#region src/utils/httpColors.ts
|
|
4224
|
-
var
|
|
4410
|
+
var Ss = {
|
|
4225
4411
|
GET: "bg-blue-600",
|
|
4226
4412
|
POST: "bg-emerald-600",
|
|
4227
4413
|
PUT: "bg-amber-600",
|
|
4228
4414
|
DELETE: "bg-red-600",
|
|
4229
4415
|
PATCH: "bg-purple-600",
|
|
4230
4416
|
HEAD: "bg-gray-600"
|
|
4231
|
-
},
|
|
4417
|
+
}, Cs = {
|
|
4232
4418
|
GET: "bg-blue-500",
|
|
4233
4419
|
POST: "bg-green-500",
|
|
4234
4420
|
PUT: "bg-yellow-500",
|
|
@@ -4236,39 +4422,39 @@ var qo = {
|
|
|
4236
4422
|
PATCH: "bg-purple-500",
|
|
4237
4423
|
HEAD: "bg-gray-500"
|
|
4238
4424
|
};
|
|
4239
|
-
function
|
|
4240
|
-
return e ?
|
|
4425
|
+
function ws(e) {
|
|
4426
|
+
return e ? Ss[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
4241
4427
|
}
|
|
4242
|
-
function
|
|
4243
|
-
return e ?
|
|
4428
|
+
function Ts(e) {
|
|
4429
|
+
return e ? Cs[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
|
|
4244
4430
|
}
|
|
4245
|
-
function
|
|
4431
|
+
function Es(e) {
|
|
4246
4432
|
let t = e ?? 0;
|
|
4247
4433
|
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";
|
|
4248
4434
|
}
|
|
4249
|
-
function
|
|
4435
|
+
function Ds(e, t) {
|
|
4250
4436
|
let n = (e || "ANY").toUpperCase();
|
|
4251
4437
|
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";
|
|
4252
4438
|
}
|
|
4253
|
-
function
|
|
4439
|
+
function Os(e, t) {
|
|
4254
4440
|
let n = e ?? 200;
|
|
4255
4441
|
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";
|
|
4256
4442
|
}
|
|
4257
|
-
function
|
|
4443
|
+
function ks(e, t) {
|
|
4258
4444
|
let n = e ?? 200;
|
|
4259
4445
|
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";
|
|
4260
4446
|
}
|
|
4261
4447
|
//#endregion
|
|
4262
4448
|
//#region src/utils/kvRows.ts
|
|
4263
|
-
function
|
|
4449
|
+
function As(e) {
|
|
4264
4450
|
return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
|
|
4265
4451
|
}
|
|
4266
|
-
function
|
|
4452
|
+
function js(e) {
|
|
4267
4453
|
return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
|
|
4268
4454
|
}
|
|
4269
4455
|
//#endregion
|
|
4270
4456
|
//#region src/utils/sanitizeHtml.ts
|
|
4271
|
-
var
|
|
4457
|
+
var Ms = /* @__PURE__ */ new Set([
|
|
4272
4458
|
"A",
|
|
4273
4459
|
"B",
|
|
4274
4460
|
"STRONG",
|
|
@@ -4283,7 +4469,7 @@ var rs = /* @__PURE__ */ new Set([
|
|
|
4283
4469
|
"LI",
|
|
4284
4470
|
"SPAN",
|
|
4285
4471
|
"DIV"
|
|
4286
|
-
]),
|
|
4472
|
+
]), Ns = /* @__PURE__ */ new Set([
|
|
4287
4473
|
"SCRIPT",
|
|
4288
4474
|
"STYLE",
|
|
4289
4475
|
"IFRAME",
|
|
@@ -4291,40 +4477,40 @@ var rs = /* @__PURE__ */ new Set([
|
|
|
4291
4477
|
"EMBED",
|
|
4292
4478
|
"NOSCRIPT",
|
|
4293
4479
|
"TEMPLATE"
|
|
4294
|
-
]),
|
|
4295
|
-
function
|
|
4480
|
+
]), Ps = { A: /* @__PURE__ */ new Set(["href", "title"]) };
|
|
4481
|
+
function Fs(e) {
|
|
4296
4482
|
let t = e.trim().toLowerCase();
|
|
4297
4483
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
|
|
4298
4484
|
}
|
|
4299
|
-
function
|
|
4485
|
+
function Is(e) {
|
|
4300
4486
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
4301
4487
|
let t = e, n = t.tagName.toUpperCase();
|
|
4302
|
-
if (!
|
|
4303
|
-
|
|
4488
|
+
if (!Ms.has(n)) {
|
|
4489
|
+
Ns.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
|
|
4304
4490
|
return;
|
|
4305
4491
|
}
|
|
4306
|
-
let r =
|
|
4492
|
+
let r = Ps[n] ?? /* @__PURE__ */ new Set();
|
|
4307
4493
|
for (let e of Array.from(t.attributes)) {
|
|
4308
4494
|
if (!r.has(e.name.toLowerCase())) {
|
|
4309
4495
|
t.removeAttribute(e.name);
|
|
4310
4496
|
continue;
|
|
4311
4497
|
}
|
|
4312
|
-
n === "A" && e.name.toLowerCase() === "href" && !
|
|
4498
|
+
n === "A" && e.name.toLowerCase() === "href" && !Fs(e.value) && t.removeAttribute(e.name);
|
|
4313
4499
|
}
|
|
4314
4500
|
n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
|
|
4315
|
-
for (let e of Array.from(t.childNodes))
|
|
4501
|
+
for (let e of Array.from(t.childNodes)) Is(e);
|
|
4316
4502
|
}
|
|
4317
|
-
function
|
|
4503
|
+
function Ls(e) {
|
|
4318
4504
|
if (!e) return "";
|
|
4319
4505
|
let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
|
|
4320
4506
|
if (!t) return "";
|
|
4321
|
-
for (let e of Array.from(t.childNodes))
|
|
4507
|
+
for (let e of Array.from(t.childNodes)) Is(e);
|
|
4322
4508
|
return t.innerHTML;
|
|
4323
4509
|
}
|
|
4324
4510
|
//#endregion
|
|
4325
4511
|
//#region src/utils/format.ts
|
|
4326
4512
|
var $ = "—";
|
|
4327
|
-
function
|
|
4513
|
+
function Rs(e, t = 4) {
|
|
4328
4514
|
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
4329
4515
|
let n = typeof e == "string" ? Number(e) : e;
|
|
4330
4516
|
return isFinite(n) ? n.toLocaleString(void 0, {
|
|
@@ -4332,12 +4518,12 @@ function ls(e, t = 4) {
|
|
|
4332
4518
|
maximumFractionDigits: t
|
|
4333
4519
|
}) : $;
|
|
4334
4520
|
}
|
|
4335
|
-
function
|
|
4521
|
+
function zs(e) {
|
|
4336
4522
|
if (e == null || e === "") return $;
|
|
4337
4523
|
let t = new Date(e);
|
|
4338
4524
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
|
|
4339
4525
|
}
|
|
4340
|
-
function
|
|
4526
|
+
function Bs(e) {
|
|
4341
4527
|
return new Date(e).toLocaleString(void 0, {
|
|
4342
4528
|
month: "short",
|
|
4343
4529
|
day: "numeric",
|
|
@@ -4345,13 +4531,13 @@ function ds(e) {
|
|
|
4345
4531
|
minute: "2-digit"
|
|
4346
4532
|
});
|
|
4347
4533
|
}
|
|
4348
|
-
function
|
|
4534
|
+
function Vs(e) {
|
|
4349
4535
|
return new Date(e).toLocaleDateString(void 0, {
|
|
4350
4536
|
month: "short",
|
|
4351
4537
|
day: "numeric"
|
|
4352
4538
|
});
|
|
4353
4539
|
}
|
|
4354
|
-
function
|
|
4540
|
+
function Hs(e) {
|
|
4355
4541
|
try {
|
|
4356
4542
|
return new Date(e).toLocaleString(void 0, {
|
|
4357
4543
|
year: "numeric",
|
|
@@ -4367,7 +4553,7 @@ function ps(e) {
|
|
|
4367
4553
|
return String(e);
|
|
4368
4554
|
}
|
|
4369
4555
|
}
|
|
4370
|
-
function
|
|
4556
|
+
function Us(e) {
|
|
4371
4557
|
if (!isFinite(e) || e === 0) return e.toFixed(2);
|
|
4372
4558
|
let t = Math.abs(e), n = 2;
|
|
4373
4559
|
return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
|
|
@@ -4375,13 +4561,13 @@ function ms(e) {
|
|
|
4375
4561
|
maximumFractionDigits: n
|
|
4376
4562
|
});
|
|
4377
4563
|
}
|
|
4378
|
-
function
|
|
4564
|
+
function Ws(e, t = 2) {
|
|
4379
4565
|
return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
|
|
4380
4566
|
}
|
|
4381
|
-
function
|
|
4567
|
+
function Gs(e) {
|
|
4382
4568
|
return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
|
|
4383
4569
|
}
|
|
4384
|
-
function
|
|
4570
|
+
function Ks(e, t = 2, n = "$") {
|
|
4385
4571
|
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
4386
4572
|
let r = typeof e == "string" ? Number(e) : e;
|
|
4387
4573
|
if (!isFinite(r)) return $;
|
|
@@ -4391,29 +4577,29 @@ function _s(e, t = 2, n = "$") {
|
|
|
4391
4577
|
});
|
|
4392
4578
|
return `${r < 0 && Number(Math.abs(r).toFixed(t)) !== 0 ? "-" : ""}${n}${i}`;
|
|
4393
4579
|
}
|
|
4394
|
-
var
|
|
4580
|
+
var qs = {
|
|
4395
4581
|
EUR: "€",
|
|
4396
4582
|
GBP: "£"
|
|
4397
|
-
},
|
|
4583
|
+
}, Js = /* @__PURE__ */ new Set([
|
|
4398
4584
|
"USD",
|
|
4399
4585
|
"USDT",
|
|
4400
4586
|
"USDC"
|
|
4401
4587
|
]);
|
|
4402
|
-
function
|
|
4588
|
+
function Ys(e) {
|
|
4403
4589
|
let t = (e ?? "").trim().toUpperCase();
|
|
4404
|
-
return !t ||
|
|
4590
|
+
return !t || Js.has(t) ? "$" : qs[t] ?? null;
|
|
4405
4591
|
}
|
|
4406
|
-
function
|
|
4407
|
-
let r = (t ?? "").trim().toUpperCase(), i =
|
|
4592
|
+
function Xs(e, t, n = 2) {
|
|
4593
|
+
let r = (t ?? "").trim().toUpperCase(), i = Ys(r);
|
|
4408
4594
|
if (i !== null) {
|
|
4409
|
-
let t =
|
|
4410
|
-
return r && r !== "USD" &&
|
|
4595
|
+
let t = Ks(e, n, i);
|
|
4596
|
+
return r && r !== "USD" && Js.has(r) && t !== $ ? `${t} ${r}` : t;
|
|
4411
4597
|
}
|
|
4412
4598
|
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
4413
4599
|
let a = typeof e == "string" ? Number(e) : e;
|
|
4414
4600
|
return isFinite(a) ? `${a.toLocaleString(void 0, { maximumFractionDigits: 8 })} ${r}` : $;
|
|
4415
4601
|
}
|
|
4416
|
-
function
|
|
4602
|
+
function Zs(e) {
|
|
4417
4603
|
if (e == null || e === "") return $;
|
|
4418
4604
|
let t = new Date(e);
|
|
4419
4605
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -4422,7 +4608,7 @@ function Ss(e) {
|
|
|
4422
4608
|
day: "numeric"
|
|
4423
4609
|
});
|
|
4424
4610
|
}
|
|
4425
|
-
function
|
|
4611
|
+
function Qs(e) {
|
|
4426
4612
|
if (e == null || e === "") return $;
|
|
4427
4613
|
let t = new Date(e);
|
|
4428
4614
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -4433,22 +4619,22 @@ function Cs(e) {
|
|
|
4433
4619
|
minute: "2-digit"
|
|
4434
4620
|
});
|
|
4435
4621
|
}
|
|
4436
|
-
function
|
|
4622
|
+
function $s(e) {
|
|
4437
4623
|
if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
|
|
4438
4624
|
let t = e / 1e3, n = t < 1 ? 3 : 2;
|
|
4439
4625
|
return `= ${t.toFixed(n)} s`;
|
|
4440
4626
|
}
|
|
4441
|
-
function
|
|
4627
|
+
function ec(e) {
|
|
4442
4628
|
return e ? e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1048576).toFixed(1)} MB` : "";
|
|
4443
4629
|
}
|
|
4444
|
-
function
|
|
4630
|
+
function tc(e) {
|
|
4445
4631
|
try {
|
|
4446
4632
|
return JSON.stringify(JSON.parse(e), null, 2);
|
|
4447
4633
|
} catch {
|
|
4448
4634
|
return e;
|
|
4449
4635
|
}
|
|
4450
4636
|
}
|
|
4451
|
-
function
|
|
4637
|
+
function nc(e) {
|
|
4452
4638
|
if (e == null) return "";
|
|
4453
4639
|
if (typeof e == "string") return e;
|
|
4454
4640
|
try {
|
|
@@ -4457,14 +4643,27 @@ function Ds(e) {
|
|
|
4457
4643
|
return String(e);
|
|
4458
4644
|
}
|
|
4459
4645
|
}
|
|
4460
|
-
function
|
|
4646
|
+
function rc(e, t = 2) {
|
|
4461
4647
|
if (e == null || !isFinite(e)) return $;
|
|
4462
4648
|
let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
|
|
4463
4649
|
return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
|
|
4464
4650
|
}
|
|
4651
|
+
function ic(e) {
|
|
4652
|
+
if (!e) return "—";
|
|
4653
|
+
let t = /^(\d{2}:\d{2})(?::\d{2}(?:\.\d+)?)?$/.exec(e);
|
|
4654
|
+
return t ? t[1] : e;
|
|
4655
|
+
}
|
|
4656
|
+
function ac(e) {
|
|
4657
|
+
if (!e) return "";
|
|
4658
|
+
let t = new Date(e), n = (e) => String(e).padStart(2, "0");
|
|
4659
|
+
return `${t.getFullYear()}-${n(t.getMonth() + 1)}-${n(t.getDate())}T${n(t.getHours())}:${n(t.getMinutes())}`;
|
|
4660
|
+
}
|
|
4661
|
+
function oc(e) {
|
|
4662
|
+
return e ? new Date(e).toISOString() : null;
|
|
4663
|
+
}
|
|
4465
4664
|
//#endregion
|
|
4466
4665
|
//#region src/utils/validate.ts
|
|
4467
|
-
function
|
|
4666
|
+
function sc(e) {
|
|
4468
4667
|
let t = (e ?? "").trim();
|
|
4469
4668
|
if (!t) return !1;
|
|
4470
4669
|
try {
|
|
@@ -4474,7 +4673,7 @@ function ks(e) {
|
|
|
4474
4673
|
return !1;
|
|
4475
4674
|
}
|
|
4476
4675
|
}
|
|
4477
|
-
function
|
|
4676
|
+
function cc(e) {
|
|
4478
4677
|
if (!e.trim()) return !0;
|
|
4479
4678
|
try {
|
|
4480
4679
|
return JSON.parse(e), !0;
|
|
@@ -4482,7 +4681,7 @@ function As(e) {
|
|
|
4482
4681
|
return !1;
|
|
4483
4682
|
}
|
|
4484
4683
|
}
|
|
4485
|
-
function
|
|
4684
|
+
function lc(e) {
|
|
4486
4685
|
if (!e.trim()) return !0;
|
|
4487
4686
|
try {
|
|
4488
4687
|
return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
|
|
@@ -4490,7 +4689,7 @@ function js(e) {
|
|
|
4490
4689
|
return !1;
|
|
4491
4690
|
}
|
|
4492
4691
|
}
|
|
4493
|
-
function
|
|
4692
|
+
function uc(e) {
|
|
4494
4693
|
if (!e.trim()) return !0;
|
|
4495
4694
|
let t = e.replace(/\s+/g, "");
|
|
4496
4695
|
if (!t) return !0;
|
|
@@ -4503,7 +4702,7 @@ function Ms(e) {
|
|
|
4503
4702
|
}
|
|
4504
4703
|
//#endregion
|
|
4505
4704
|
//#region src/utils/specForm.ts
|
|
4506
|
-
function
|
|
4705
|
+
function dc(e, t) {
|
|
4507
4706
|
let n = {};
|
|
4508
4707
|
if (!e) return n;
|
|
4509
4708
|
for (let r of e) {
|
|
@@ -4512,7 +4711,7 @@ function Ns(e, t) {
|
|
|
4512
4711
|
}
|
|
4513
4712
|
return n;
|
|
4514
4713
|
}
|
|
4515
|
-
function
|
|
4714
|
+
function fc(e, t) {
|
|
4516
4715
|
if (!e) return null;
|
|
4517
4716
|
for (let n of e) if (n.type === "decimal" || n.type === "integer") {
|
|
4518
4717
|
let e = t[n.key], r = e === "" || e == null;
|
|
@@ -4523,7 +4722,7 @@ function Ps(e, t) {
|
|
|
4523
4722
|
}
|
|
4524
4723
|
//#endregion
|
|
4525
4724
|
//#region src/utils/pnl.ts
|
|
4526
|
-
function
|
|
4725
|
+
function pc(e) {
|
|
4527
4726
|
if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
|
|
4528
4727
|
pnlUsd: null,
|
|
4529
4728
|
pnlPct: null
|
|
@@ -4538,4 +4737,4 @@ function Fs(e) {
|
|
|
4538
4737
|
};
|
|
4539
4738
|
}
|
|
4540
4739
|
//#endregion
|
|
4541
|
-
export { B as AlertEnum,
|
|
4740
|
+
export { B as AlertEnum, Mr as BaseActionButton, Ke as BaseAlert, Sr as BaseAppLayout, Mo as BaseAuthLayout, Ye as BaseBadge, ys as BaseBadgeEnum, Ta as BaseBarDistribution, Fo as BaseBooleanBadge, Jo as BaseBooleanIcon, $e as BaseBreadcrumb, q as BaseButton, G as BaseButtonEnum, K as BaseButtonSizeEnum, ro as BaseCard, yo as BaseCheckbox, ai as BaseChipButton, pi as BaseCodeBlock, kn as BaseCollapsibleSection, Nn as BaseConfirmModal, Pr as BaseCopyButton, ua as BaseCredentialsForm, Ba as BaseDateTimePicker, zo as BaseDetailList, Si as BaseDropdown, yr as BaseEntityPickerModal, co as BaseField, fi as BaseFileDropzone, qi as BaseFilterChip, Rr as BaseGoogleSignInButton, Pa as BaseGroupedChecklist, za as BaseIdChip, hi as BaseInput, ft as BaseLine, pt as BaseLoginEnum, Xr as BaseLoginForm, It as BaseLogo, J as BaseLogoEnum, Ut as BaseModal, Lt as BaseModalEnum, En as BaseModalShell, Bn as BaseNotFoundPage, ri as BaseNotificationPanel, Er as BasePageHeader, ss as BasePhotoViewer, ba as BasePillPickerModal, Wo as BaseRating, oi as BaseRemoveButton, Wt as BaseRow, Go as BaseRowButton, Ya as BaseSearchSelect, Ei as BaseSegmentedControl, _i as BaseSelect, or as BaseSidebar, Eo as BaseSidebarUser, Hi as BaseSpecFields, Gt as BaseSpinner, Gi as BaseStatBreakdown, po as BaseStatCard, li as BaseStatusPill, Pi as BaseTable, Ln as BaseTextInputModal, Vo as BaseTextarea, Yt as BaseToast, Y as BaseToastEnum, go as BaseToggle, kr as BaseToolbarButton, Zt as ColoredSquares, W as ColorsEnums, en as EarningsCard, on as EuroAmount, ct as LineEnum, dn as Pagination, Kt as PositioningEnum, cs as REFRESH_AFTER_AWAY_MS, gn as TrendArrow, dc as buildSpecParams, pc as computePnL, Ys as currencySymbol, fc as firstInvalidNumericSpec, ec as fmtBytes, Zs as fmtCalendarDate, Qs as fmtCalendarDateTime, Xs as fmtCurrencyAmount, zs as fmtDate, Vs as fmtDateShort, Bs as fmtDateTime, Hs as fmtDateTimeMs, rc as fmtDuration, Ks as fmtMoney, $s as fmtMsAsSeconds, Rs as fmtNumber, Ws as fmtPct, Us as fmtPrice, ic as fmtTime, Gs as fmtUsd, tc as formatJson, oc as fromLocalInput, bs as getBaseColor, xs as getBaseColorOf, qe as humanizeEnum, Je as humanizeTextVNodes, Ue as initTheme, gs as isAbortError, Fs as isSafeHref, sc as isValidAbsoluteUrl, uc as isValidBase64, cc as isValidJson, lc as isValidXml, Ts as methodBadgeBright, ws as methodBadgeSolid, Ds as methodBadgeTinted, js as rowKeyMissing, As as rowValueMissing, Ls as sanitizeHtml, _s as stableStringify, Os as statusBadgeSoft, Es as statusBadgeSolid, ks as statusBadgeTinted, nc as stringifyValue, ac as toLocalInput, us as useDebouncedRef, vs as useDirtyState, _n as useEscapeKey, ps as useFieldClasses, hs as useLatestRequest, Hn as useMobileSidebar, Yn as useNotifications, ms as usePolling, fs as useQueryParamSync, ls as useRefreshOnReturn, Kn as useSidebarCollapse, U as useTheme, X as useThemeClasses, ds as useToast };
|