mgv-backoffice 1.43.3 → 1.45.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 +2016 -2000
- package/dist/components/BaseBadge.vue.d.ts +11 -1
- package/dist/components/Pagination.vue.d.ts +9 -0
- package/dist/composables/useLatestRequest.d.ts +51 -0
- package/dist/index.d.ts +3 -1
- package/dist/ui-lib.css +1 -1
- package/dist/ui-lib.js +952 -903
- package/dist/ui-lib.umd.cjs +1 -1
- package/dist/utils/format.d.ts +8 -0
- package/package.json +58 -58
- package/src/components/BaseBadge.test.ts +27 -0
- package/src/components/BaseBadge.vue +8 -1
- package/src/components/Pagination.test.ts +39 -0
- package/src/components/Pagination.vue +102 -87
- package/src/composables/useLatestRequest.test.ts +61 -0
- package/src/composables/useLatestRequest.ts +81 -0
- package/src/index.ts +3 -0
- package/src/utils/format.test.ts +26 -0
- package/src/utils/format.ts +25 -0
- package/tailwind.safelist.css +32 -32
- package/tailwind.safelist.js +1 -0
package/dist/ui-lib.js
CHANGED
|
@@ -1,148 +1,154 @@
|
|
|
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,
|
|
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 _, mergeProps as v, nextTick as y, normalizeClass as b, normalizeProps as x, normalizeStyle as S, onBeforeUnmount as C, onMounted as w, onScopeDispose as T, onUnmounted as E, openBlock as D, reactive as O, readonly as ee, ref as k, renderList as A, renderSlot as j, resolveComponent as M, resolveDynamicComponent as N, toDisplayString as P, unref as F, useId as te, useSlots as ne, vModelCheckbox as re, vModelDynamic as ie, vModelText as ae, vShow as oe, watch as I, withCtx as L, withDirectives as R, withKeys as se, withModifiers as z } from "vue";
|
|
2
|
+
import { ArrowDownIcon as ce, ArrowRightStartOnRectangleIcon as le, ArrowUpIcon as ue, Bars3Icon as de, BellIcon as fe, CheckCircleIcon as pe, CheckIcon as me, ChevronDoubleLeftIcon as he, ChevronDoubleRightIcon as ge, ChevronDownIcon as _e, ChevronRightIcon as ve, ClipboardDocumentCheckIcon as ye, ClipboardDocumentIcon as be, DocumentDuplicateIcon as xe, ExclamationCircleIcon as Se, ExclamationTriangleIcon as Ce, FolderIcon as we, InformationCircleIcon as Te, MagnifyingGlassIcon as Ee, MinusIcon as De, MoonIcon as Oe, SunIcon as ke, XMarkIcon as Ae } from "@heroicons/vue/24/outline";
|
|
3
|
+
import { HomeIcon as je } from "@heroicons/vue/24/solid";
|
|
4
|
+
import { RouterLink as Me, useRoute as Ne, useRouter as Pe } from "vue-router";
|
|
5
|
+
import { VueDatePicker as Fe } from "@vuepic/vue-datepicker";
|
|
6
6
|
//#region src/enums/AlertEnum.ts
|
|
7
|
-
var
|
|
7
|
+
var B = /* @__PURE__ */ function(e) {
|
|
8
8
|
return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
|
|
9
|
-
}({}),
|
|
10
|
-
function
|
|
11
|
-
if (
|
|
12
|
-
e !==
|
|
9
|
+
}({}), V = k(!1), Ie = !1, H = "mgv-theme";
|
|
10
|
+
function Le(e) {
|
|
11
|
+
if (Ie) {
|
|
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 (
|
|
16
|
-
let e = window.localStorage?.getItem(
|
|
17
|
-
e ?
|
|
15
|
+
if (Ie = !0, H = e, typeof window < "u") {
|
|
16
|
+
let e = window.localStorage?.getItem(H);
|
|
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
|
-
I(
|
|
21
|
-
document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(
|
|
20
|
+
I(V, (e) => {
|
|
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 Re(e) {
|
|
26
|
+
Le(e?.storageKey ?? H);
|
|
27
27
|
}
|
|
28
|
-
function
|
|
29
|
-
|
|
28
|
+
function U(e) {
|
|
29
|
+
Le(e?.storageKey ?? H);
|
|
30
30
|
function t() {
|
|
31
|
-
|
|
31
|
+
V.value = !V.value;
|
|
32
32
|
}
|
|
33
33
|
return {
|
|
34
|
-
isDark:
|
|
34
|
+
isDark: V,
|
|
35
35
|
toggleTheme: t
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
//#endregion
|
|
39
39
|
//#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
|
|
40
|
-
var
|
|
40
|
+
var ze = { class: "min-w-0 flex-1" }, Be = {
|
|
41
41
|
key: 0,
|
|
42
42
|
class: "font-medium"
|
|
43
|
-
},
|
|
43
|
+
}, Ve = /* @__PURE__ */ m({
|
|
44
44
|
__name: "BaseAlert",
|
|
45
45
|
props: {
|
|
46
46
|
title: { default: "" },
|
|
47
|
-
color: { default:
|
|
47
|
+
color: { default: B.ERROR },
|
|
48
48
|
compact: {
|
|
49
49
|
type: Boolean,
|
|
50
50
|
default: !1
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
setup(e) {
|
|
54
|
-
let t = e, { isDark: n } =
|
|
55
|
-
[
|
|
54
|
+
let t = e, { isDark: n } = U(), r = {
|
|
55
|
+
[B.ERROR]: {
|
|
56
56
|
light: "bg-red-50 border-red-200 text-red-700",
|
|
57
57
|
dark: "bg-red-500/10 border-red-500/30 text-red-300"
|
|
58
58
|
},
|
|
59
|
-
[
|
|
59
|
+
[B.WARNING]: {
|
|
60
60
|
light: "bg-amber-50 border-amber-200 text-amber-700",
|
|
61
61
|
dark: "bg-amber-500/10 border-amber-500/30 text-amber-300"
|
|
62
62
|
},
|
|
63
|
-
[
|
|
63
|
+
[B.SUCCESS]: {
|
|
64
64
|
light: "bg-emerald-50 border-emerald-200 text-emerald-700",
|
|
65
65
|
dark: "bg-emerald-500/10 border-emerald-500/30 text-emerald-300"
|
|
66
66
|
},
|
|
67
|
-
[
|
|
67
|
+
[B.INFO]: {
|
|
68
68
|
light: "bg-sky-50 border-sky-200 text-sky-700",
|
|
69
69
|
dark: "bg-sky-500/10 border-sky-500/30 text-sky-300"
|
|
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
|
|
74
|
-
case
|
|
75
|
-
case
|
|
76
|
-
default: return
|
|
73
|
+
case B.SUCCESS: return pe;
|
|
74
|
+
case B.WARNING: return Ce;
|
|
75
|
+
case B.INFO: return Te;
|
|
76
|
+
default: return Se;
|
|
77
77
|
}
|
|
78
78
|
}), d = a(() => {
|
|
79
79
|
switch (t.color) {
|
|
80
|
-
case
|
|
81
|
-
case
|
|
82
|
-
case
|
|
80
|
+
case B.SUCCESS: return "text-emerald-500";
|
|
81
|
+
case B.WARNING: return "text-amber-500";
|
|
82
|
+
case B.INFO: return "text-sky-500";
|
|
83
83
|
default: return "text-red-500";
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
|
-
return (t, n) => (
|
|
86
|
+
return (t, n) => (D(), c("div", {
|
|
87
87
|
role: "alert",
|
|
88
|
-
class:
|
|
89
|
-
}, [(
|
|
90
|
-
class:
|
|
88
|
+
class: b(["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
|
+
}, [(D(), o(N(u.value), {
|
|
90
|
+
class: b(["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", ze, [e.title ? (D(), c("p", Be, P(e.title), 1)) : s("", !0), j(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 He(e) {
|
|
100
100
|
return e == null ? "" : String(e).replace(/_/g, " ");
|
|
101
101
|
}
|
|
102
|
-
function
|
|
102
|
+
function Ue(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(He(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 = Ue(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 = He(t.children) : Array.isArray(t.children) && (e.children = Ue(t.children, r)), e;
|
|
112
112
|
}
|
|
113
113
|
return t;
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
116
|
//#endregion
|
|
117
117
|
//#region src/components/BaseBadge.vue?vue&type=script&setup=true&lang.ts
|
|
118
|
-
var
|
|
118
|
+
var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
|
|
119
119
|
__name: "BaseBadge",
|
|
120
|
-
props: {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
props: {
|
|
121
|
+
color: {
|
|
122
|
+
type: String,
|
|
123
|
+
required: !1
|
|
124
|
+
},
|
|
125
|
+
blink: {
|
|
126
|
+
type: Boolean,
|
|
127
|
+
default: !1
|
|
128
|
+
}
|
|
129
|
+
},
|
|
124
130
|
setup(e) {
|
|
125
|
-
let t =
|
|
126
|
-
[
|
|
127
|
-
[
|
|
128
|
-
[
|
|
129
|
-
[
|
|
130
|
-
[
|
|
131
|
-
[
|
|
132
|
-
[
|
|
133
|
-
}, 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] ||
|
|
134
|
-
return (e, t) => n.value ? (
|
|
131
|
+
let t = ne(), n = a(() => !!t.default), r = () => Ue(t.default?.() ?? []), i = e, o = {
|
|
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",
|
|
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] || We}${i.blink ? " animate-pulse motion-reduce:animate-none" : ""}`);
|
|
140
|
+
return (e, t) => n.value ? (D(), c("span", {
|
|
135
141
|
key: 0,
|
|
136
|
-
class:
|
|
142
|
+
class: b(l.value)
|
|
137
143
|
}, [p(r)], 2)) : s("", !0);
|
|
138
144
|
}
|
|
139
|
-
}),
|
|
145
|
+
}), Ke = {
|
|
140
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",
|
|
141
147
|
"aria-label": "Breadcrumb"
|
|
142
|
-
},
|
|
148
|
+
}, qe = { class: "inline-flex items-center whitespace-nowrap space-x-1 md:space-x-3" }, Je = {
|
|
143
149
|
class: "inline-flex items-center",
|
|
144
150
|
style: { "margin-left": "0" }
|
|
145
|
-
},
|
|
151
|
+
}, Ye = /* @__PURE__ */ m({
|
|
146
152
|
__name: "BaseBreadcrumb",
|
|
147
153
|
props: {
|
|
148
154
|
items: {
|
|
@@ -167,17 +173,17 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
167
173
|
});
|
|
168
174
|
return (t, n) => {
|
|
169
175
|
let i = M("router-link");
|
|
170
|
-
return
|
|
176
|
+
return D(), c("nav", Ke, [l("ol", qe, [l("li", Je, [p(i, {
|
|
171
177
|
to: "/",
|
|
172
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"
|
|
173
179
|
}, {
|
|
174
|
-
default: L(() => [p(F(
|
|
180
|
+
default: L(() => [p(F(je), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= f(" Home ", -1)]),
|
|
175
181
|
_: 1
|
|
176
|
-
})]), (
|
|
182
|
+
})]), (D(!0), c(e, null, A(r.value, (e, t) => (D(), c("li", {
|
|
177
183
|
key: t,
|
|
178
184
|
class: "inline-flex items-center",
|
|
179
185
|
style: { "margin-left": "0" }
|
|
180
|
-
}, [p(F(
|
|
186
|
+
}, [p(F(ve), { class: "h-4 w-4 text-gray-500" }), p(i, {
|
|
181
187
|
to: e.url,
|
|
182
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"
|
|
183
189
|
}, {
|
|
@@ -186,21 +192,21 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
186
192
|
}, 1032, ["to"])]))), 128))])]);
|
|
187
193
|
};
|
|
188
194
|
}
|
|
189
|
-
}),
|
|
195
|
+
}), G = /* @__PURE__ */ function(e) {
|
|
190
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;
|
|
191
|
-
}({}),
|
|
197
|
+
}({}), K = /* @__PURE__ */ function(e) {
|
|
192
198
|
return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
|
|
193
|
-
}({}),
|
|
199
|
+
}({}), Xe = [
|
|
194
200
|
"type",
|
|
195
201
|
"disabled",
|
|
196
202
|
"onClick"
|
|
197
|
-
],
|
|
203
|
+
], Ze = {
|
|
198
204
|
key: 0,
|
|
199
205
|
class: "inline-flex items-center"
|
|
200
|
-
},
|
|
206
|
+
}, Qe = { key: 1 }, $e = { key: 2 }, et = ["type", "disabled"], tt = {
|
|
201
207
|
key: 0,
|
|
202
208
|
class: "inline-flex items-center"
|
|
203
|
-
},
|
|
209
|
+
}, nt = { key: 1 }, rt = { key: 2 }, it = /* @__PURE__ */ m({
|
|
204
210
|
__name: "BaseButton",
|
|
205
211
|
props: {
|
|
206
212
|
description: {
|
|
@@ -210,7 +216,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
210
216
|
color: {
|
|
211
217
|
type: String,
|
|
212
218
|
required: !1,
|
|
213
|
-
default:
|
|
219
|
+
default: G.GREEN
|
|
214
220
|
},
|
|
215
221
|
to: {
|
|
216
222
|
type: String,
|
|
@@ -254,103 +260,103 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
254
260
|
}
|
|
255
261
|
},
|
|
256
262
|
setup(e) {
|
|
257
|
-
let { isDark: t } =
|
|
263
|
+
let { isDark: t } = U(), n = e;
|
|
258
264
|
function r() {
|
|
259
265
|
let e = {
|
|
260
|
-
[
|
|
266
|
+
[G.BLUE]: {
|
|
261
267
|
light: "text-blue-700 border-blue-300 hover:bg-blue-50",
|
|
262
268
|
dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
|
|
263
269
|
},
|
|
264
|
-
[
|
|
270
|
+
[G.GREEN]: {
|
|
265
271
|
light: "text-green-700 border-green-300 hover:bg-green-50",
|
|
266
272
|
dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
|
|
267
273
|
},
|
|
268
|
-
[
|
|
274
|
+
[G.EMERALD]: {
|
|
269
275
|
light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
|
|
270
276
|
dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
|
|
271
277
|
},
|
|
272
|
-
[
|
|
278
|
+
[G.RED]: {
|
|
273
279
|
light: "text-red-700 border-red-300 hover:bg-red-50",
|
|
274
280
|
dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
|
|
275
281
|
},
|
|
276
|
-
[
|
|
282
|
+
[G.YELLOW]: {
|
|
277
283
|
light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
|
|
278
284
|
dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
|
|
279
285
|
},
|
|
280
|
-
[
|
|
286
|
+
[G.PURPLE]: {
|
|
281
287
|
light: "text-purple-700 border-purple-300 hover:bg-purple-50",
|
|
282
288
|
dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
|
|
283
289
|
},
|
|
284
|
-
[
|
|
290
|
+
[G.SKY]: {
|
|
285
291
|
light: "text-sky-700 border-sky-300 hover:bg-sky-50",
|
|
286
292
|
dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
|
|
287
293
|
},
|
|
288
|
-
[
|
|
294
|
+
[G.AMBER]: {
|
|
289
295
|
light: "text-amber-700 border-amber-300 hover:bg-amber-50",
|
|
290
296
|
dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
|
|
291
297
|
},
|
|
292
|
-
[
|
|
298
|
+
[G.GRAY]: {
|
|
293
299
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
294
300
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
295
301
|
},
|
|
296
|
-
[
|
|
302
|
+
[G.DARK]: {
|
|
297
303
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
298
304
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
299
305
|
},
|
|
300
|
-
[
|
|
306
|
+
[G.WHITE]: {
|
|
301
307
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
302
308
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
303
309
|
}
|
|
304
|
-
}, r = e[n.color] ?? e[
|
|
310
|
+
}, r = e[n.color] ?? e[G.BLUE], i = t.value ? r.dark : r.light;
|
|
305
311
|
return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current border bg-transparent ${i}`;
|
|
306
312
|
}
|
|
307
313
|
function i() {
|
|
308
314
|
let e = {
|
|
309
|
-
[
|
|
315
|
+
[G.BLUE]: {
|
|
310
316
|
light: "text-blue-600 hover:bg-blue-50",
|
|
311
317
|
dark: "text-blue-400 hover:bg-blue-500/10"
|
|
312
318
|
},
|
|
313
|
-
[
|
|
319
|
+
[G.GREEN]: {
|
|
314
320
|
light: "text-green-600 hover:bg-green-50",
|
|
315
321
|
dark: "text-green-400 hover:bg-green-500/10"
|
|
316
322
|
},
|
|
317
|
-
[
|
|
323
|
+
[G.EMERALD]: {
|
|
318
324
|
light: "text-emerald-600 hover:bg-emerald-50",
|
|
319
325
|
dark: "text-emerald-400 hover:bg-emerald-500/10"
|
|
320
326
|
},
|
|
321
|
-
[
|
|
327
|
+
[G.SKY]: {
|
|
322
328
|
light: "text-sky-600 hover:bg-sky-50",
|
|
323
329
|
dark: "text-sky-400 hover:bg-sky-500/10"
|
|
324
330
|
},
|
|
325
|
-
[
|
|
331
|
+
[G.RED]: {
|
|
326
332
|
light: "text-red-500 hover:bg-red-50",
|
|
327
333
|
dark: "text-red-400 hover:bg-red-500/10"
|
|
328
334
|
},
|
|
329
|
-
[
|
|
335
|
+
[G.AMBER]: {
|
|
330
336
|
light: "text-amber-700 hover:bg-amber-50",
|
|
331
337
|
dark: "text-amber-300 hover:bg-amber-500/10"
|
|
332
338
|
},
|
|
333
|
-
[
|
|
339
|
+
[G.YELLOW]: {
|
|
334
340
|
light: "text-yellow-600 hover:bg-yellow-50",
|
|
335
341
|
dark: "text-yellow-400 hover:bg-yellow-500/10"
|
|
336
342
|
},
|
|
337
|
-
[
|
|
343
|
+
[G.PURPLE]: {
|
|
338
344
|
light: "text-purple-600 hover:bg-purple-50",
|
|
339
345
|
dark: "text-purple-400 hover:bg-purple-500/10"
|
|
340
346
|
},
|
|
341
|
-
[
|
|
347
|
+
[G.GRAY]: {
|
|
342
348
|
light: "text-gray-500 hover:bg-gray-100",
|
|
343
349
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
344
350
|
},
|
|
345
|
-
[
|
|
351
|
+
[G.DARK]: {
|
|
346
352
|
light: "text-gray-500 hover:bg-gray-100",
|
|
347
353
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
348
354
|
},
|
|
349
|
-
[
|
|
355
|
+
[G.WHITE]: {
|
|
350
356
|
light: "text-gray-500 hover:bg-gray-100",
|
|
351
357
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
352
358
|
}
|
|
353
|
-
}, r = e[n.color] ?? e[
|
|
359
|
+
}, r = e[n.color] ?? e[G.GRAY], i = t.value ? r.dark : r.light;
|
|
354
360
|
return n.isDisable || n.isLoading ? `bg-transparent ${i} opacity-60 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current bg-transparent ${i} cursor-pointer`;
|
|
355
361
|
}
|
|
356
362
|
function a() {
|
|
@@ -358,37 +364,37 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
358
364
|
e || (t += " cursor-pointer");
|
|
359
365
|
let a;
|
|
360
366
|
switch (n.color) {
|
|
361
|
-
case
|
|
367
|
+
case G.BLUE:
|
|
362
368
|
a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
|
|
363
369
|
break;
|
|
364
|
-
case
|
|
370
|
+
case G.WHITE:
|
|
365
371
|
a = e ? "text-gray-900 bg-gray-200 border border-gray-200 cursor-not-allowed" : "focus:outline-none text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200";
|
|
366
372
|
break;
|
|
367
|
-
case
|
|
373
|
+
case G.DARK:
|
|
368
374
|
a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300";
|
|
369
375
|
break;
|
|
370
|
-
case
|
|
376
|
+
case G.GREEN:
|
|
371
377
|
a = e ? "text-white bg-green-400 cursor-not-allowed" : "focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300";
|
|
372
378
|
break;
|
|
373
|
-
case
|
|
379
|
+
case G.EMERALD:
|
|
374
380
|
a = e ? "text-white bg-emerald-400 cursor-not-allowed" : "focus:outline-none text-white bg-emerald-600 hover:bg-emerald-700 focus:ring-4 focus:ring-emerald-300";
|
|
375
381
|
break;
|
|
376
|
-
case
|
|
382
|
+
case G.RED:
|
|
377
383
|
a = e ? "text-white bg-red-400 cursor-not-allowed" : "focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300";
|
|
378
384
|
break;
|
|
379
|
-
case
|
|
385
|
+
case G.YELLOW:
|
|
380
386
|
a = e ? "text-white bg-yellow-300 cursor-not-allowed" : "focus:outline-none text-white bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300";
|
|
381
387
|
break;
|
|
382
|
-
case
|
|
388
|
+
case G.PURPLE:
|
|
383
389
|
a = e ? "text-white bg-purple-400 cursor-not-allowed" : "focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300";
|
|
384
390
|
break;
|
|
385
|
-
case
|
|
391
|
+
case G.SKY:
|
|
386
392
|
a = e ? "text-white bg-sky-400 cursor-not-allowed" : "focus:outline-none text-white bg-sky-600 hover:bg-sky-700 focus:ring-4 focus:ring-sky-300";
|
|
387
393
|
break;
|
|
388
|
-
case
|
|
394
|
+
case G.AMBER:
|
|
389
395
|
a = e ? "text-white bg-amber-300 cursor-not-allowed" : "focus:outline-none text-white bg-amber-500 hover:bg-amber-600 focus:ring-4 focus:ring-amber-300";
|
|
390
396
|
break;
|
|
391
|
-
case
|
|
397
|
+
case G.GRAY:
|
|
392
398
|
a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-600 hover:bg-gray-700 focus:ring-4 focus:ring-gray-300";
|
|
393
399
|
break;
|
|
394
400
|
default: a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
|
|
@@ -396,37 +402,37 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
396
402
|
n.outline && (a = r()), n.ghost && (a = i());
|
|
397
403
|
let o = "px-5 py-2.5 mr-2 mb-2 text-sm";
|
|
398
404
|
switch (n.size) {
|
|
399
|
-
case
|
|
405
|
+
case K.EXTRA_SMALL:
|
|
400
406
|
o = "px-3 py-2 text-xs";
|
|
401
407
|
break;
|
|
402
|
-
case
|
|
408
|
+
case K.SMALL:
|
|
403
409
|
o = "px-3 py-2 text-sm";
|
|
404
410
|
break;
|
|
405
|
-
case
|
|
411
|
+
case K.BASE:
|
|
406
412
|
o = "px-5 py-2.5 text-sm";
|
|
407
413
|
break;
|
|
408
|
-
case
|
|
414
|
+
case K.LARGE:
|
|
409
415
|
o = "px-5 py-3 text-base";
|
|
410
416
|
break;
|
|
411
|
-
case
|
|
417
|
+
case K.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
|
|
412
418
|
}
|
|
413
419
|
let s = "rounded-lg";
|
|
414
420
|
return n.isRounded && (s = "rounded-full"), t + " " + o + " " + a + " font-medium " + s;
|
|
415
421
|
}
|
|
416
422
|
return (t, r) => {
|
|
417
423
|
let i = M("router-link");
|
|
418
|
-
return e.to ? (
|
|
424
|
+
return e.to ? (D(), o(i, {
|
|
419
425
|
key: 0,
|
|
420
426
|
to: e.to,
|
|
421
427
|
custom: ""
|
|
422
428
|
}, {
|
|
423
429
|
default: L(({ navigate: i }) => [l("button", {
|
|
424
430
|
type: n.type,
|
|
425
|
-
class:
|
|
431
|
+
class: b(a()),
|
|
426
432
|
disabled: e.isDisable || e.isLoading,
|
|
427
433
|
onClick: i
|
|
428
434
|
}, [
|
|
429
|
-
e.isLoading ? (
|
|
435
|
+
e.isLoading ? (D(), c("div", Ze, [...r[0] ||= [l("svg", {
|
|
430
436
|
"aria-hidden": "true",
|
|
431
437
|
role: "status",
|
|
432
438
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -440,18 +446,18 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
440
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",
|
|
441
447
|
fill: "currentColor"
|
|
442
448
|
})], -1)]])) : s("", !0),
|
|
443
|
-
e.iconLeft ? s("", !0) : (
|
|
449
|
+
e.iconLeft ? s("", !0) : (D(), c("span", Qe, P(e.description), 1)),
|
|
444
450
|
j(t.$slots, "default"),
|
|
445
|
-
e.iconLeft ? (
|
|
446
|
-
], 10,
|
|
451
|
+
e.iconLeft ? (D(), c("span", $e, P(e.description), 1)) : s("", !0)
|
|
452
|
+
], 10, Xe)]),
|
|
447
453
|
_: 3
|
|
448
|
-
}, 8, ["to"])) : (
|
|
454
|
+
}, 8, ["to"])) : (D(), c("button", {
|
|
449
455
|
key: 1,
|
|
450
456
|
type: n.type,
|
|
451
|
-
class:
|
|
457
|
+
class: b(a()),
|
|
452
458
|
disabled: e.isDisable || e.isLoading
|
|
453
459
|
}, [
|
|
454
|
-
e.isLoading ? (
|
|
460
|
+
e.isLoading ? (D(), c("div", tt, [...r[1] ||= [l("svg", {
|
|
455
461
|
"aria-hidden": "true",
|
|
456
462
|
role: "status",
|
|
457
463
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -465,68 +471,68 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
465
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",
|
|
466
472
|
fill: "currentColor"
|
|
467
473
|
})], -1)]])) : s("", !0),
|
|
468
|
-
e.iconLeft ? s("", !0) : (
|
|
474
|
+
e.iconLeft ? s("", !0) : (D(), c("span", nt, P(e.description), 1)),
|
|
469
475
|
j(t.$slots, "default"),
|
|
470
|
-
e.iconLeft ? (
|
|
471
|
-
], 10,
|
|
476
|
+
e.iconLeft ? (D(), c("span", rt, P(e.description), 1)) : s("", !0)
|
|
477
|
+
], 10, et));
|
|
472
478
|
};
|
|
473
479
|
}
|
|
474
|
-
}),
|
|
480
|
+
}), at = /* @__PURE__ */ function(e) {
|
|
475
481
|
return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
|
|
476
|
-
}({}),
|
|
482
|
+
}({}), ot = {
|
|
477
483
|
key: 0,
|
|
478
484
|
class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
|
|
479
|
-
},
|
|
485
|
+
}, st = {
|
|
480
486
|
key: 1,
|
|
481
487
|
class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
|
|
482
|
-
},
|
|
488
|
+
}, ct = {
|
|
483
489
|
key: 2,
|
|
484
490
|
class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
|
|
485
|
-
},
|
|
491
|
+
}, lt = /* @__PURE__ */ m({
|
|
486
492
|
__name: "BaseLine",
|
|
487
493
|
props: { mode: {
|
|
488
494
|
type: String,
|
|
489
495
|
required: !1,
|
|
490
|
-
default:
|
|
496
|
+
default: at.BASE
|
|
491
497
|
} },
|
|
492
498
|
setup(t) {
|
|
493
|
-
return (n, r) => (
|
|
494
|
-
t.mode === F(
|
|
495
|
-
t.mode === F(
|
|
496
|
-
t.mode === F(
|
|
499
|
+
return (n, r) => (D(), c(e, null, [
|
|
500
|
+
t.mode === F(at).BASE ? (D(), c("hr", ot)) : s("", !0),
|
|
501
|
+
t.mode === F(at).BASE_SHORTER ? (D(), c("hr", st)) : s("", !0),
|
|
502
|
+
t.mode === F(at).SQUARE ? (D(), c("hr", ct)) : s("", !0)
|
|
497
503
|
], 64));
|
|
498
504
|
}
|
|
499
|
-
}),
|
|
505
|
+
}), q = /* @__PURE__ */ function(e) {
|
|
500
506
|
return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
|
|
501
|
-
}({}),
|
|
507
|
+
}({}), ut = q, dt = ["height", "width"], ft = ["id"], pt = ["id", "href"], mt = ["id", "href"], ht = ["id", "href"], gt = ["id", "href"], _t = ["id", "href"], vt = ["id", "href"], yt = ["id", "href"], bt = ["id", "href"], xt = ["id", "href"], St = ["id"], Ct = ["fill"], wt = ["fill"], Tt = ["fill"], Et = ["fill"], Dt = ["fill"], Ot = ["fill"], kt = ["fill"], At = ["fill"], jt = ["fill"], Mt = ["fill"], Nt = /* @__PURE__ */ m({
|
|
502
508
|
__name: "BaseLogo",
|
|
503
509
|
props: { size: {
|
|
504
510
|
type: String,
|
|
505
511
|
required: !1,
|
|
506
|
-
default:
|
|
512
|
+
default: q.MEDIUM
|
|
507
513
|
} },
|
|
508
514
|
setup(e) {
|
|
509
|
-
let t = `logo-${
|
|
515
|
+
let t = `logo-${te()}`, n = e;
|
|
510
516
|
function r() {
|
|
511
517
|
let e = "";
|
|
512
518
|
switch (n.size) {
|
|
513
|
-
case
|
|
519
|
+
case q.SMALL:
|
|
514
520
|
e = "50px";
|
|
515
521
|
break;
|
|
516
|
-
case
|
|
522
|
+
case q.MEDIUM:
|
|
517
523
|
e = "100px";
|
|
518
524
|
break;
|
|
519
|
-
case
|
|
525
|
+
case q.LARGE: e = "150px";
|
|
520
526
|
}
|
|
521
527
|
return e;
|
|
522
528
|
}
|
|
523
529
|
return (e, n) => {
|
|
524
530
|
let i = M("router-link");
|
|
525
|
-
return
|
|
531
|
+
return D(), o(i, {
|
|
526
532
|
to: "/",
|
|
527
533
|
class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
|
|
528
534
|
}, {
|
|
529
|
-
default: L(() => [(
|
|
535
|
+
default: L(() => [(D(), c("svg", {
|
|
530
536
|
height: r(),
|
|
531
537
|
width: r(),
|
|
532
538
|
viewBox: "33.6 130.6 499.7 242.9",
|
|
@@ -539,7 +545,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
539
545
|
}, null, -1), l("stop", {
|
|
540
546
|
offset: "1",
|
|
541
547
|
"stop-color": "#132d13"
|
|
542
|
-
}, null, -1)]], 8,
|
|
548
|
+
}, null, -1)]], 8, ft),
|
|
543
549
|
l("linearGradient", {
|
|
544
550
|
id: `${t}-b`,
|
|
545
551
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -548,7 +554,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
548
554
|
href: `#${t}-a`,
|
|
549
555
|
y1: "288.291",
|
|
550
556
|
y2: "369.4"
|
|
551
|
-
}, null, 8,
|
|
557
|
+
}, null, 8, pt),
|
|
552
558
|
l("linearGradient", {
|
|
553
559
|
id: `${t}-c`,
|
|
554
560
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -557,7 +563,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
557
563
|
href: `#${t}-a`,
|
|
558
564
|
y1: "308.454",
|
|
559
565
|
y2: "370.601"
|
|
560
|
-
}, null, 8,
|
|
566
|
+
}, null, 8, mt),
|
|
561
567
|
l("linearGradient", {
|
|
562
568
|
id: `${t}-d`,
|
|
563
569
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -566,7 +572,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
566
572
|
href: `#${t}-a`,
|
|
567
573
|
y1: "288.291",
|
|
568
574
|
y2: "369.85"
|
|
569
|
-
}, null, 8,
|
|
575
|
+
}, null, 8, ht),
|
|
570
576
|
l("linearGradient", {
|
|
571
577
|
id: `${t}-e`,
|
|
572
578
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -575,7 +581,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
575
581
|
href: `#${t}-a`,
|
|
576
582
|
y1: "307.312",
|
|
577
583
|
y2: "369.511"
|
|
578
|
-
}, null, 8,
|
|
584
|
+
}, null, 8, gt),
|
|
579
585
|
l("linearGradient", {
|
|
580
586
|
id: `${t}-f`,
|
|
581
587
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -584,7 +590,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
584
590
|
href: `#${t}-a`,
|
|
585
591
|
y1: "288.291",
|
|
586
592
|
y2: "367.857"
|
|
587
|
-
}, null, 8,
|
|
593
|
+
}, null, 8, _t),
|
|
588
594
|
l("linearGradient", {
|
|
589
595
|
id: `${t}-g`,
|
|
590
596
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -593,7 +599,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
593
599
|
href: `#${t}-a`,
|
|
594
600
|
y1: "307.312",
|
|
595
601
|
y2: "369.511"
|
|
596
|
-
}, null, 8,
|
|
602
|
+
}, null, 8, vt),
|
|
597
603
|
l("linearGradient", {
|
|
598
604
|
id: `${t}-h`,
|
|
599
605
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -602,7 +608,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
602
608
|
href: `#${t}-a`,
|
|
603
609
|
y1: "306.156",
|
|
604
610
|
y2: "367.742"
|
|
605
|
-
}, null, 8,
|
|
611
|
+
}, null, 8, yt),
|
|
606
612
|
l("linearGradient", {
|
|
607
613
|
id: `${t}-i`,
|
|
608
614
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -611,7 +617,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
611
617
|
href: `#${t}-a`,
|
|
612
618
|
y1: "288.291",
|
|
613
619
|
y2: "369.4"
|
|
614
|
-
}, null, 8,
|
|
620
|
+
}, null, 8, bt),
|
|
615
621
|
l("linearGradient", {
|
|
616
622
|
id: `${t}-j`,
|
|
617
623
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -620,7 +626,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
620
626
|
href: `#${t}-a`,
|
|
621
627
|
y1: "131.629",
|
|
622
628
|
y2: "232.559"
|
|
623
|
-
}, null, 8,
|
|
629
|
+
}, null, 8, xt),
|
|
624
630
|
l("linearGradient", {
|
|
625
631
|
id: `${t}-k`,
|
|
626
632
|
gradientUnits: "userSpaceOnUse",
|
|
@@ -635,64 +641,64 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
635
641
|
}, null, -1), l("stop", {
|
|
636
642
|
offset: "1",
|
|
637
643
|
"stop-color": "#808183"
|
|
638
|
-
}, null, -1)]], 8,
|
|
644
|
+
}, null, -1)]], 8, St),
|
|
639
645
|
l("path", {
|
|
640
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",
|
|
641
647
|
fill: `url(#${t}-b)`
|
|
642
|
-
}, null, 8,
|
|
648
|
+
}, null, 8, Ct),
|
|
643
649
|
l("path", {
|
|
644
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",
|
|
645
651
|
fill: `url(#${t}-c)`
|
|
646
|
-
}, null, 8,
|
|
652
|
+
}, null, 8, wt),
|
|
647
653
|
l("path", {
|
|
648
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",
|
|
649
655
|
fill: `url(#${t}-d)`
|
|
650
|
-
}, null, 8,
|
|
656
|
+
}, null, 8, Tt),
|
|
651
657
|
l("path", {
|
|
652
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",
|
|
653
659
|
fill: `url(#${t}-e)`
|
|
654
|
-
}, null, 8,
|
|
660
|
+
}, null, 8, Et),
|
|
655
661
|
l("path", {
|
|
656
662
|
d: "m296.4 288.3h13v79.6h-13z",
|
|
657
663
|
fill: `url(#${t}-f)`
|
|
658
|
-
}, null, 8,
|
|
664
|
+
}, null, 8, Dt),
|
|
659
665
|
l("path", {
|
|
660
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",
|
|
661
667
|
fill: `url(#${t}-g)`
|
|
662
|
-
}, null, 8,
|
|
668
|
+
}, null, 8, Ot),
|
|
663
669
|
l("path", {
|
|
664
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",
|
|
665
671
|
fill: `url(#${t}-h)`
|
|
666
|
-
}, null, 8,
|
|
672
|
+
}, null, 8, kt),
|
|
667
673
|
l("path", {
|
|
668
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",
|
|
669
675
|
fill: `url(#${t}-i)`
|
|
670
|
-
}, null, 8,
|
|
676
|
+
}, null, 8, At),
|
|
671
677
|
l("path", {
|
|
672
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",
|
|
673
679
|
fill: `url(#${t}-j)`
|
|
674
|
-
}, null, 8,
|
|
680
|
+
}, null, 8, jt),
|
|
675
681
|
l("path", {
|
|
676
682
|
d: "m281.7 183.8h3.6v18.5h-3.6z",
|
|
677
683
|
fill: `url(#${t}-k)`
|
|
678
|
-
}, null, 8,
|
|
679
|
-
], 8,
|
|
684
|
+
}, null, 8, Mt)
|
|
685
|
+
], 8, dt))]),
|
|
680
686
|
_: 1
|
|
681
687
|
});
|
|
682
688
|
};
|
|
683
689
|
}
|
|
684
|
-
}),
|
|
690
|
+
}), Pt = /* @__PURE__ */ function(e) {
|
|
685
691
|
return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
|
|
686
|
-
}({}),
|
|
692
|
+
}({}), Ft = {
|
|
687
693
|
key: 0,
|
|
688
694
|
class: "p-6 text-center"
|
|
689
|
-
},
|
|
695
|
+
}, It = { class: "flex justify-center" }, Lt = {
|
|
690
696
|
key: 1,
|
|
691
697
|
class: "p-6 text-center"
|
|
692
|
-
},
|
|
698
|
+
}, Rt = {
|
|
693
699
|
key: 0,
|
|
694
700
|
class: "mb-5 text-sm text-gray-500"
|
|
695
|
-
},
|
|
701
|
+
}, zt = { class: "flex justify-center" }, Bt = /* @__PURE__ */ m({
|
|
696
702
|
__name: "BaseModal",
|
|
697
703
|
props: {
|
|
698
704
|
title: {
|
|
@@ -711,7 +717,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
711
717
|
mode: {
|
|
712
718
|
type: String,
|
|
713
719
|
required: !1,
|
|
714
|
-
default:
|
|
720
|
+
default: Pt.SUCCESS
|
|
715
721
|
}
|
|
716
722
|
},
|
|
717
723
|
emits: ["closeModal", "confirmModal"],
|
|
@@ -720,11 +726,11 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
720
726
|
function a(e) {
|
|
721
727
|
e.key === "Escape" && r("closeModal");
|
|
722
728
|
}
|
|
723
|
-
return
|
|
729
|
+
return w(() => {
|
|
724
730
|
document.addEventListener("keydown", a);
|
|
725
|
-
}),
|
|
731
|
+
}), E(() => {
|
|
726
732
|
document.removeEventListener("keydown", a);
|
|
727
|
-
}), (n, r) => (
|
|
733
|
+
}), (n, r) => (D(), c(e, null, [l("div", {
|
|
728
734
|
class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
|
|
729
735
|
onClick: r[0] ||= (e) => n.$emit("closeModal")
|
|
730
736
|
}), l("div", {
|
|
@@ -732,37 +738,37 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
732
738
|
role: "dialog",
|
|
733
739
|
"aria-modal": "true",
|
|
734
740
|
"aria-labelledby": i
|
|
735
|
-
}, [t.mode === F(
|
|
736
|
-
p(F(
|
|
741
|
+
}, [t.mode === F(Pt).DELETE ? (D(), c("div", Ft, [
|
|
742
|
+
p(F(Se), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
|
|
737
743
|
l("h3", {
|
|
738
744
|
id: i,
|
|
739
745
|
class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
|
|
740
746
|
}, " Are you sure you want to delete this " + P(t.title) + "? ", 1),
|
|
741
|
-
l("div",
|
|
742
|
-
color: F(
|
|
747
|
+
l("div", It, [p(it, {
|
|
748
|
+
color: F(G).RED,
|
|
743
749
|
onClick: r[1] ||= (e) => n.$emit("confirmModal"),
|
|
744
750
|
description: "Yes, I'm sure"
|
|
745
|
-
}, null, 8, ["color"]), p(
|
|
746
|
-
color: F(
|
|
751
|
+
}, null, 8, ["color"]), p(it, {
|
|
752
|
+
color: F(G).WHITE,
|
|
747
753
|
onClick: r[2] ||= (e) => n.$emit("closeModal"),
|
|
748
754
|
description: "No, cancel"
|
|
749
755
|
}, null, 8, ["color"])])
|
|
750
|
-
])) : (
|
|
751
|
-
p(F(
|
|
756
|
+
])) : (D(), c("div", Lt, [
|
|
757
|
+
p(F(pe), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
|
|
752
758
|
l("h3", {
|
|
753
759
|
id: i,
|
|
754
760
|
class: "mb-2 text-lg font-medium text-gray-900"
|
|
755
761
|
}, P(t.title), 1),
|
|
756
|
-
t.description ? (
|
|
762
|
+
t.description ? (D(), c("p", Rt, P(t.description), 1)) : s("", !0),
|
|
757
763
|
j(n.$slots, "default"),
|
|
758
|
-
l("div",
|
|
759
|
-
color: F(
|
|
764
|
+
l("div", zt, [p(it, {
|
|
765
|
+
color: F(G).BLUE,
|
|
760
766
|
onClick: r[3] ||= (e) => n.$emit("closeModal"),
|
|
761
767
|
description: "OK"
|
|
762
768
|
}, null, 8, ["color"])])
|
|
763
769
|
]))])], 64));
|
|
764
770
|
}
|
|
765
|
-
}),
|
|
771
|
+
}), Vt = /* @__PURE__ */ m({
|
|
766
772
|
__name: "BaseRow",
|
|
767
773
|
props: { bgColor: {
|
|
768
774
|
type: String,
|
|
@@ -774,9 +780,9 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
774
780
|
function n() {
|
|
775
781
|
return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
|
|
776
782
|
}
|
|
777
|
-
return (e, t) => (
|
|
783
|
+
return (e, t) => (D(), c("div", { class: b(n()) }, [j(e.$slots, "default")], 2));
|
|
778
784
|
}
|
|
779
|
-
}),
|
|
785
|
+
}), Ht = /* @__PURE__ */ m({
|
|
780
786
|
__name: "BaseSpinner",
|
|
781
787
|
props: {
|
|
782
788
|
size: { default: "sm" },
|
|
@@ -798,17 +804,17 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
798
804
|
red: "border-t-red-500",
|
|
799
805
|
amber: "border-t-amber-500"
|
|
800
806
|
})[t.color]);
|
|
801
|
-
return (e, t) => (
|
|
802
|
-
class:
|
|
807
|
+
return (e, t) => (D(), c("div", {
|
|
808
|
+
class: b(["border-gray-200 dark:border-slate-700 rounded-full animate-spin", [n.value, r.value]]),
|
|
803
809
|
role: "status",
|
|
804
810
|
"aria-label": "Loading"
|
|
805
811
|
}, null, 2));
|
|
806
812
|
}
|
|
807
|
-
}),
|
|
813
|
+
}), J = /* @__PURE__ */ function(e) {
|
|
808
814
|
return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
|
|
809
|
-
}({}),
|
|
815
|
+
}({}), Y = /* @__PURE__ */ function(e) {
|
|
810
816
|
return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
|
|
811
|
-
}({}),
|
|
817
|
+
}({}), Ut = { class: "flex items-center w-full max-w-md p-4 mb-4 text-gray-500 bg-white rounded-lg shadow dark:text-gray-400 dark:bg-gray-800" }, Wt = { class: "ml-3 text-sm font-normal" }, Gt = /* @__PURE__ */ m({
|
|
812
818
|
__name: "BaseToast",
|
|
813
819
|
props: {
|
|
814
820
|
mode: {
|
|
@@ -827,7 +833,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
827
833
|
positioning: {
|
|
828
834
|
type: String,
|
|
829
835
|
required: !1,
|
|
830
|
-
default:
|
|
836
|
+
default: Y.TOP_RIGHT
|
|
831
837
|
},
|
|
832
838
|
duration: {
|
|
833
839
|
type: Number,
|
|
@@ -840,21 +846,21 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
840
846
|
function i() {
|
|
841
847
|
n.value = !1, r &&= (clearTimeout(r), null);
|
|
842
848
|
}
|
|
843
|
-
|
|
849
|
+
w(() => {
|
|
844
850
|
r = setTimeout(() => n.value = !1, t.duration);
|
|
845
|
-
}),
|
|
851
|
+
}), E(() => {
|
|
846
852
|
r && clearTimeout(r);
|
|
847
853
|
});
|
|
848
854
|
function a() {
|
|
849
855
|
let e = "";
|
|
850
856
|
switch (t.mode) {
|
|
851
|
-
case
|
|
857
|
+
case J.ERROR:
|
|
852
858
|
e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
|
|
853
859
|
break;
|
|
854
|
-
case
|
|
860
|
+
case J.SUCCESS:
|
|
855
861
|
e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
|
|
856
862
|
break;
|
|
857
|
-
case
|
|
863
|
+
case J.WARNING:
|
|
858
864
|
e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
|
|
859
865
|
break;
|
|
860
866
|
default: e = "text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-200";
|
|
@@ -864,46 +870,46 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
864
870
|
function o() {
|
|
865
871
|
let e = "top-5 right-5";
|
|
866
872
|
switch (t.positioning) {
|
|
867
|
-
case
|
|
873
|
+
case Y.BOTTOM_LEFT:
|
|
868
874
|
e = "bottom-5 left-5";
|
|
869
875
|
break;
|
|
870
|
-
case
|
|
876
|
+
case Y.TOP_LEFT:
|
|
871
877
|
e = "top-5 left-5";
|
|
872
878
|
break;
|
|
873
|
-
case
|
|
879
|
+
case Y.TOP_RIGHT:
|
|
874
880
|
e = "top-5 right-5";
|
|
875
881
|
break;
|
|
876
|
-
case
|
|
882
|
+
case Y.BOTTOM_RIGHT: e = "bottom-5 right-5";
|
|
877
883
|
}
|
|
878
884
|
return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
|
|
879
885
|
}
|
|
880
|
-
return (t, r) => n.value ? (
|
|
886
|
+
return (t, r) => n.value ? (D(), c("div", {
|
|
881
887
|
key: 0,
|
|
882
888
|
id: "toast-top-right",
|
|
883
|
-
class:
|
|
889
|
+
class: b(o()),
|
|
884
890
|
role: "alert"
|
|
885
|
-
}, [l("div",
|
|
886
|
-
e.mode == F(
|
|
891
|
+
}, [l("div", Ut, [
|
|
892
|
+
e.mode == F(J).ERROR ? (D(), c("div", {
|
|
887
893
|
key: 0,
|
|
888
|
-
class:
|
|
889
|
-
}, [p(F(
|
|
894
|
+
class: b(a())
|
|
895
|
+
}, [p(F(Se), { class: "h-6 w-6 text-red-500" }), r[0] ||= l("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == F(J).SUCCESS ? (D(), c("div", {
|
|
890
896
|
key: 1,
|
|
891
|
-
class:
|
|
892
|
-
}, [p(F(
|
|
897
|
+
class: b(a())
|
|
898
|
+
}, [p(F(pe), { class: "h-6 w-6 text-green-500" }), r[1] ||= l("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == F(J).WARNING ? (D(), c("div", {
|
|
893
899
|
key: 2,
|
|
894
|
-
class:
|
|
895
|
-
}, [p(F(
|
|
896
|
-
l("div",
|
|
897
|
-
e.hasCloseIcon ? (
|
|
900
|
+
class: b(a())
|
|
901
|
+
}, [p(F(Ce), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= l("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : s("", !0),
|
|
902
|
+
l("div", Wt, P(e.description), 1),
|
|
903
|
+
e.hasCloseIcon ? (D(), c("button", {
|
|
898
904
|
key: 3,
|
|
899
905
|
type: "button",
|
|
900
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",
|
|
901
907
|
"aria-label": "Close",
|
|
902
908
|
onClick: i
|
|
903
|
-
}, [r[3] ||= l("span", { class: "sr-only" }, "Close", -1), p(F(
|
|
909
|
+
}, [r[3] ||= l("span", { class: "sr-only" }, "Close", -1), p(F(Ae), { class: "h-6 w-6 text-gray-500" })])) : s("", !0)
|
|
904
910
|
])], 2)) : s("", !0);
|
|
905
911
|
}
|
|
906
|
-
}),
|
|
912
|
+
}), Kt = { class: "w-13" }, qt = /* @__PURE__ */ m({
|
|
907
913
|
__name: "ColoredSquares",
|
|
908
914
|
props: { color: {
|
|
909
915
|
type: String,
|
|
@@ -924,25 +930,25 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
924
930
|
function i() {
|
|
925
931
|
let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
|
|
926
932
|
switch (t.color) {
|
|
927
|
-
case
|
|
933
|
+
case W.GREEN:
|
|
928
934
|
n = "green";
|
|
929
935
|
break;
|
|
930
|
-
case
|
|
936
|
+
case W.RED:
|
|
931
937
|
n = "red";
|
|
932
938
|
break;
|
|
933
|
-
case
|
|
939
|
+
case W.BLUE:
|
|
934
940
|
n = "blue";
|
|
935
941
|
break;
|
|
936
|
-
case
|
|
942
|
+
case W.YELLOW:
|
|
937
943
|
n = "yellow";
|
|
938
944
|
break;
|
|
939
|
-
case
|
|
945
|
+
case W.NONE: return e;
|
|
940
946
|
}
|
|
941
947
|
return e + " bg-" + n + "-100 text-" + n + "-800";
|
|
942
948
|
}
|
|
943
|
-
return (e, t) => (
|
|
949
|
+
return (e, t) => (D(), c("div", Kt, [l("div", { class: b(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [j(e.$slots, "default"), l("div", { class: b(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
|
|
944
950
|
}
|
|
945
|
-
}),
|
|
951
|
+
}), Jt = { class: "flex items-start justify-between" }, Yt = { class: "min-w-0" }, Xt = /* @__PURE__ */ m({
|
|
946
952
|
__name: "EarningsCard",
|
|
947
953
|
props: {
|
|
948
954
|
title: { default: "TOTAL EARNINGS" },
|
|
@@ -994,27 +1000,27 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
994
1000
|
minimumFractionDigits: n.decimals,
|
|
995
1001
|
maximumFractionDigits: n.decimals
|
|
996
1002
|
}));
|
|
997
|
-
return (n, r) => (
|
|
1003
|
+
return (n, r) => (D(), c("div", { class: b(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (D(), c("div", {
|
|
998
1004
|
key: 0,
|
|
999
|
-
class:
|
|
1000
|
-
}, P(t.badge), 3)) : s("", !0), l("div",
|
|
1001
|
-
l("p", { class:
|
|
1002
|
-
l("p", { class:
|
|
1003
|
-
l("p", { class:
|
|
1004
|
-
]), l("div", { class:
|
|
1005
|
-
class:
|
|
1005
|
+
class: b(["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", Jt, [l("div", Yt, [
|
|
1007
|
+
l("p", { class: b(["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: b(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, P(f.value), 3),
|
|
1009
|
+
l("p", { class: b(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, P(t.subtitle), 3)
|
|
1010
|
+
]), l("div", { class: b(["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"]]) }, [(D(), c("svg", {
|
|
1011
|
+
class: b([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
|
|
1006
1012
|
viewBox: "0 0 24 24",
|
|
1007
1013
|
fill: "none",
|
|
1008
1014
|
stroke: "currentColor",
|
|
1009
1015
|
"stroke-width": "2.5",
|
|
1010
1016
|
"stroke-linecap": "round",
|
|
1011
1017
|
"stroke-linejoin": "round"
|
|
1012
|
-
}, [o.value ? (
|
|
1018
|
+
}, [o.value ? (D(), 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)) : (D(), 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));
|
|
1013
1019
|
}
|
|
1014
|
-
}),
|
|
1020
|
+
}), Zt = {
|
|
1015
1021
|
key: 0,
|
|
1016
1022
|
class: "font-bold text-green-800 dark:text-green-400"
|
|
1017
|
-
},
|
|
1023
|
+
}, Qt = { key: 0 }, $t = { key: 0 }, en = "font-bold", tn = /* @__PURE__ */ m({
|
|
1018
1024
|
__name: "EuroAmount",
|
|
1019
1025
|
props: {
|
|
1020
1026
|
amount: {
|
|
@@ -1034,20 +1040,20 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
1034
1040
|
},
|
|
1035
1041
|
setup(t) {
|
|
1036
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);
|
|
1037
|
-
return (n, i) => (
|
|
1043
|
+
return (n, i) => (D(), c(e, null, [r.value && u.value ? (D(), c("span", Zt, [f(P(t.amount) + " ", 1), t.showCurrency ? (D(), c("span", Qt, "€")) : s("", !0)])) : s("", !0), r.value && !u.value ? (D(), c("span", {
|
|
1038
1044
|
key: 1,
|
|
1039
|
-
class:
|
|
1040
|
-
}, [f(P(t.amount) + " ", 1), t.showCurrency ? (
|
|
1045
|
+
class: b([en, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
|
|
1046
|
+
}, [f(P(t.amount) + " ", 1), t.showCurrency ? (D(), c("span", $t, "€")) : s("", !0)], 2)) : s("", !0)], 64));
|
|
1041
1047
|
}
|
|
1042
|
-
}),
|
|
1048
|
+
}), nn = { "aria-label": "Pagination" }, rn = { class: "flex list-none p-0 m-0" }, an = [
|
|
1043
1049
|
"aria-current",
|
|
1044
1050
|
"aria-label",
|
|
1045
1051
|
"onClick"
|
|
1046
|
-
],
|
|
1052
|
+
], on = {
|
|
1047
1053
|
key: 1,
|
|
1048
1054
|
"aria-hidden": "true",
|
|
1049
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"
|
|
1050
|
-
},
|
|
1056
|
+
}, sn = /* @__PURE__ */ m({
|
|
1051
1057
|
__name: "Pagination",
|
|
1052
1058
|
props: {
|
|
1053
1059
|
totalItems: {
|
|
@@ -1057,49 +1063,58 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
1057
1063
|
itemsPerPage: {
|
|
1058
1064
|
type: Number,
|
|
1059
1065
|
default: 20
|
|
1066
|
+
},
|
|
1067
|
+
page: {
|
|
1068
|
+
type: Number,
|
|
1069
|
+
default: void 0
|
|
1060
1070
|
}
|
|
1061
1071
|
},
|
|
1062
1072
|
emits: ["page-changed"],
|
|
1063
1073
|
setup(t, { emit: n }) {
|
|
1064
|
-
let r = t, i =
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1074
|
+
let r = t, i = n, o = a(() => {
|
|
1075
|
+
let e = Number(r.itemsPerPage) > 0 ? Number(r.itemsPerPage) : 20, t = Number(r.totalItems) > 0 ? Number(r.totalItems) : 0;
|
|
1076
|
+
return Math.ceil(t / e);
|
|
1077
|
+
});
|
|
1078
|
+
function s(e) {
|
|
1079
|
+
return Math.min(Math.max(e, 1), Math.max(o.value, 1));
|
|
1080
|
+
}
|
|
1081
|
+
let u = k(1);
|
|
1082
|
+
I(o, () => {
|
|
1083
|
+
u.value = s(u.value);
|
|
1084
|
+
});
|
|
1085
|
+
let d = a(() => r.page != null && Number.isFinite(r.page) ? s(r.page) : u.value), f = a(() => {
|
|
1086
|
+
let e = o.value;
|
|
1087
|
+
if (e <= 5) return Array.from({ length: e }, (e, t) => t + 1);
|
|
1088
|
+
let t = [], n = Math.max(1, d.value - 2), r = Math.min(e, d.value + 2);
|
|
1071
1089
|
n > 1 && (t.push(1), n > 2 && t.push(0));
|
|
1072
1090
|
for (let e = n; e <= r; e++) t.push(e);
|
|
1073
|
-
r <
|
|
1074
|
-
}
|
|
1075
|
-
function
|
|
1076
|
-
e ===
|
|
1091
|
+
return r < e && (r < e - 1 && t.push(0), t.push(e)), t;
|
|
1092
|
+
});
|
|
1093
|
+
function p(e) {
|
|
1094
|
+
e === d.value || e < 1 || e > o.value || (u.value = e, i("page-changed", e));
|
|
1077
1095
|
}
|
|
1078
|
-
return
|
|
1079
|
-
let e = Number(r.itemsPerPage) > 0 ? Number(r.itemsPerPage) : 20, t = Number(r.totalItems) > 0 ? Number(r.totalItems) : 0;
|
|
1080
|
-
a.value = Math.ceil(t / e), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
|
|
1081
|
-
}, { immediate: !0 }), (t, n) => (E(), c("nav", en, [l("ul", tn, [(E(!0), c(e, null, A(o.value, (e, t) => (E(), c("li", {
|
|
1096
|
+
return (t, n) => (D(), c("nav", nn, [l("ul", rn, [(D(!0), c(e, null, A(f.value, (e, t) => (D(), c("li", {
|
|
1082
1097
|
key: t,
|
|
1083
1098
|
class: "mr-1"
|
|
1084
|
-
}, [e === 0 ? (
|
|
1099
|
+
}, [e === 0 ? (D(), c("span", on, "...")) : (D(), c("button", {
|
|
1085
1100
|
key: 0,
|
|
1086
1101
|
type: "button",
|
|
1087
|
-
"aria-current": e ===
|
|
1102
|
+
"aria-current": e === d.value ? "page" : void 0,
|
|
1088
1103
|
"aria-label": `Go to page ${e}`,
|
|
1089
|
-
onClick: (t) =>
|
|
1090
|
-
class:
|
|
1091
|
-
}, P(e), 11,
|
|
1104
|
+
onClick: (t) => p(e),
|
|
1105
|
+
class: b(["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, an))]))), 128))])]));
|
|
1092
1107
|
}
|
|
1093
|
-
}),
|
|
1108
|
+
}), cn = { key: 0 }, ln = {
|
|
1094
1109
|
key: 0,
|
|
1095
1110
|
class: "flex items-center space-x-2"
|
|
1096
|
-
},
|
|
1111
|
+
}, un = {
|
|
1097
1112
|
key: 1,
|
|
1098
1113
|
class: "flex items-center space-x-2"
|
|
1099
|
-
},
|
|
1114
|
+
}, dn = {
|
|
1100
1115
|
key: 2,
|
|
1101
1116
|
class: "flex items-center space-x-2"
|
|
1102
|
-
},
|
|
1117
|
+
}, fn = /* @__PURE__ */ m({
|
|
1103
1118
|
__name: "TrendArrow",
|
|
1104
1119
|
props: {
|
|
1105
1120
|
number: {
|
|
@@ -1113,23 +1128,23 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
|
|
|
1113
1128
|
},
|
|
1114
1129
|
setup(e) {
|
|
1115
1130
|
let t = e, n = a(() => t.number !== null && t.number !== void 0 && t.number < 0), r = a(() => t.number === 0);
|
|
1116
|
-
return (i, a) => e.number !== null && e.number !== void 0 ? (
|
|
1131
|
+
return (i, a) => e.number !== null && e.number !== void 0 ? (D(), c("div", cn, [n.value ? (D(), c("span", ln, [p(Ge, { color: F(W).RED }, {
|
|
1117
1132
|
default: L(() => [f(P(e.number) + P(t.icon), 1)]),
|
|
1118
1133
|
_: 1
|
|
1119
|
-
}, 8, ["color"]), p(F(
|
|
1134
|
+
}, 8, ["color"]), p(F(ce), { class: "h-5 w-5 text-red-500" })])) : r.value ? (D(), c("span", un, [p(Ge, { color: F(W).GRAY }, {
|
|
1120
1135
|
default: L(() => [f(P(e.number) + P(t.icon), 1)]),
|
|
1121
1136
|
_: 1
|
|
1122
|
-
}, 8, ["color"]), p(F(
|
|
1137
|
+
}, 8, ["color"]), p(F(De), { class: "h-5 w-5 text-gray-400" })])) : (D(), c("span", dn, [p(Ge, { color: F(W).GREEN }, {
|
|
1123
1138
|
default: L(() => [f(P(e.number) + P(t.icon), 1)]),
|
|
1124
1139
|
_: 1
|
|
1125
|
-
}, 8, ["color"]), p(F(
|
|
1140
|
+
}, 8, ["color"]), p(F(ue), { class: "h-5 w-5 text-green-500" })]))])) : s("", !0);
|
|
1126
1141
|
}
|
|
1127
1142
|
});
|
|
1128
1143
|
//#endregion
|
|
1129
1144
|
//#region src/composables/useThemeClasses.ts
|
|
1130
|
-
function
|
|
1131
|
-
let { isDark: e } =
|
|
1132
|
-
return
|
|
1145
|
+
function X() {
|
|
1146
|
+
let { isDark: e } = U();
|
|
1147
|
+
return O({
|
|
1133
1148
|
card: a(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
|
|
1134
1149
|
cardAlt: a(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
|
|
1135
1150
|
pageBg: a(() => e.value ? "bg-gray-900" : "bg-gray-50"),
|
|
@@ -1155,15 +1170,15 @@ function Z() {
|
|
|
1155
1170
|
}
|
|
1156
1171
|
//#endregion
|
|
1157
1172
|
//#region src/composables/useEscapeKey.ts
|
|
1158
|
-
function
|
|
1173
|
+
function pn(e) {
|
|
1159
1174
|
function t(t) {
|
|
1160
1175
|
t.key === "Escape" && e();
|
|
1161
1176
|
}
|
|
1162
|
-
|
|
1177
|
+
w(() => document.addEventListener("keydown", t)), C(() => document.removeEventListener("keydown", t));
|
|
1163
1178
|
}
|
|
1164
1179
|
//#endregion
|
|
1165
1180
|
//#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
|
|
1166
|
-
var
|
|
1181
|
+
var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-w-0" }, gn = { class: "p-6 overflow-y-auto flex-1" }, _n = { class: "p-6" }, vn = { class: "flex items-start gap-4" }, yn = { class: "flex-1" }, bn = { class: "mt-4" }, xn = { class: "mt-6 flex gap-3 justify-end" }, Sn = /* @__PURE__ */ m({
|
|
1167
1182
|
__name: "BaseModalShell",
|
|
1168
1183
|
props: {
|
|
1169
1184
|
title: {},
|
|
@@ -1183,55 +1198,55 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1183
1198
|
},
|
|
1184
1199
|
emits: ["cancel", "backdrop"],
|
|
1185
1200
|
setup(e, { emit: n }) {
|
|
1186
|
-
let r = e, i = n, { isDark: u } =
|
|
1201
|
+
let r = e, i = n, { isDark: u } = U(), d = X(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = a(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = a(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
|
|
1187
1202
|
function h() {
|
|
1188
1203
|
i("backdrop"), r.manualClose || i("cancel");
|
|
1189
1204
|
}
|
|
1190
|
-
return
|
|
1205
|
+
return pn(() => {
|
|
1191
1206
|
r.manualClose || i("cancel");
|
|
1192
|
-
}), (n, r) => (
|
|
1207
|
+
}), (n, r) => (D(), o(t, { to: "body" }, [l("div", {
|
|
1193
1208
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
1194
1209
|
role: "dialog",
|
|
1195
1210
|
"aria-modal": "true",
|
|
1196
1211
|
"aria-labelledby": f,
|
|
1197
1212
|
onClick: h
|
|
1198
|
-
}, [e.scrollable ? (
|
|
1213
|
+
}, [e.scrollable ? (D(), c("div", {
|
|
1199
1214
|
key: 0,
|
|
1200
|
-
class:
|
|
1215
|
+
class: b(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
|
|
1201
1216
|
onClick: r[0] ||= z(() => {}, ["stop"])
|
|
1202
1217
|
}, [
|
|
1203
|
-
l("div", { class:
|
|
1204
|
-
class:
|
|
1218
|
+
l("div", { class: b(["flex items-start justify-between gap-4 p-6 border-b shrink-0", F(d).border]) }, [l("div", mn, [j(n.$slots, "icon", {}, () => [l("div", { class: b(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(D(), o(N(e.icon), {
|
|
1219
|
+
class: b(["h-6 w-6", e.iconClass]),
|
|
1205
1220
|
"aria-hidden": "true"
|
|
1206
|
-
}, null, 8, ["class"]))], 2)]), l("div",
|
|
1221
|
+
}, null, 8, ["class"]))], 2)]), l("div", hn, [l("h3", {
|
|
1207
1222
|
id: f,
|
|
1208
|
-
class:
|
|
1209
|
-
}, P(e.title), 3), e.subtitle ? (
|
|
1223
|
+
class: b(["text-lg font-medium", F(d).primaryText])
|
|
1224
|
+
}, P(e.title), 3), e.subtitle ? (D(), c("p", {
|
|
1210
1225
|
key: 0,
|
|
1211
|
-
class:
|
|
1226
|
+
class: b(["text-sm mt-1 break-all", F(d).mutedText])
|
|
1212
1227
|
}, P(e.subtitle), 3)) : s("", !0)])]), j(n.$slots, "header-actions")], 2),
|
|
1213
|
-
l("div",
|
|
1214
|
-
n.$slots.footer ? (
|
|
1228
|
+
l("div", gn, [j(n.$slots, "default")]),
|
|
1229
|
+
n.$slots.footer ? (D(), c("div", {
|
|
1215
1230
|
key: 0,
|
|
1216
|
-
class:
|
|
1231
|
+
class: b(["flex gap-3 justify-end p-6 border-t shrink-0", F(d).border])
|
|
1217
1232
|
}, [j(n.$slots, "footer")], 2)) : s("", !0)
|
|
1218
|
-
], 2)) : (
|
|
1233
|
+
], 2)) : (D(), c("div", {
|
|
1219
1234
|
key: 1,
|
|
1220
|
-
class:
|
|
1235
|
+
class: b(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
|
|
1221
1236
|
onClick: r[1] ||= z(() => {}, ["stop"])
|
|
1222
|
-
}, [l("div",
|
|
1223
|
-
l("div",
|
|
1224
|
-
class:
|
|
1237
|
+
}, [l("div", _n, [
|
|
1238
|
+
l("div", vn, [j(n.$slots, "icon", {}, () => [l("div", { class: b(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(D(), o(N(e.icon), {
|
|
1239
|
+
class: b(["h-6 w-6", e.iconClass]),
|
|
1225
1240
|
"aria-hidden": "true"
|
|
1226
|
-
}, null, 8, ["class"]))], 2)]), l("div",
|
|
1241
|
+
}, null, 8, ["class"]))], 2)]), l("div", yn, [l("h3", {
|
|
1227
1242
|
id: f,
|
|
1228
|
-
class:
|
|
1243
|
+
class: b(["text-lg font-medium", F(d).primaryText])
|
|
1229
1244
|
}, P(e.title), 3)])]),
|
|
1230
|
-
l("div",
|
|
1231
|
-
l("div",
|
|
1245
|
+
l("div", bn, [j(n.$slots, "default")]),
|
|
1246
|
+
l("div", xn, [j(n.$slots, "footer")])
|
|
1232
1247
|
])], 2))])]));
|
|
1233
1248
|
}
|
|
1234
|
-
}),
|
|
1249
|
+
}), Cn = ["aria-expanded"], wn = { class: "flex items-center gap-3" }, Tn = /* @__PURE__ */ m({
|
|
1235
1250
|
__name: "BaseCollapsibleSection",
|
|
1236
1251
|
props: {
|
|
1237
1252
|
title: {},
|
|
@@ -1241,17 +1256,17 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1241
1256
|
},
|
|
1242
1257
|
emits: ["toggle"],
|
|
1243
1258
|
setup(e, { emit: t }) {
|
|
1244
|
-
let n = e, r = t, { isDark: i } =
|
|
1245
|
-
return (t, n) => (
|
|
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) => (D(), c("section", { class: b(["rounded-xl border transition-colors", F(o).cardAlt]) }, [l("button", {
|
|
1246
1261
|
type: "button",
|
|
1247
|
-
class:
|
|
1262
|
+
class: b(["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"]]),
|
|
1248
1263
|
"aria-expanded": !e.collapsed,
|
|
1249
1264
|
onClick: n[0] ||= (e) => r("toggle")
|
|
1250
|
-
}, [l("div",
|
|
1265
|
+
}, [l("div", wn, [l("h2", { class: b(["text-base font-semibold", u.value]) }, P(e.title), 3), e.badge ? (D(), c("span", {
|
|
1251
1266
|
key: 0,
|
|
1252
|
-
class:
|
|
1253
|
-
}, P(e.badge), 3)) : s("", !0)]), (
|
|
1254
|
-
class:
|
|
1267
|
+
class: b(["text-xs px-2 py-0.5 rounded-full", f.value])
|
|
1268
|
+
}, P(e.badge), 3)) : s("", !0)]), (D(), c("svg", {
|
|
1269
|
+
class: b(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", F(o).dimTextAlt]]),
|
|
1255
1270
|
fill: "none",
|
|
1256
1271
|
viewBox: "0 0 24 24",
|
|
1257
1272
|
stroke: "currentColor",
|
|
@@ -1261,15 +1276,15 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1261
1276
|
"stroke-linecap": "round",
|
|
1262
1277
|
"stroke-linejoin": "round",
|
|
1263
1278
|
d: "M19 9l-7 7-7-7"
|
|
1264
|
-
}, null, -1)]], 2))], 10,
|
|
1279
|
+
}, null, -1)]], 2))], 10, Cn), R(l("div", { class: b(["p-6 border-t rounded-b-xl", [F(o).border, p.value]]) }, [j(t.$slots, "default")], 2), [[oe, !e.collapsed]])], 2));
|
|
1265
1280
|
}
|
|
1266
|
-
}),
|
|
1281
|
+
}), En = ["disabled"], Dn = ["disabled"], On = {
|
|
1267
1282
|
key: 0,
|
|
1268
1283
|
class: "w-4 h-4 animate-spin",
|
|
1269
1284
|
fill: "none",
|
|
1270
1285
|
viewBox: "0 0 24 24",
|
|
1271
1286
|
"aria-hidden": "true"
|
|
1272
|
-
},
|
|
1287
|
+
}, kn = /* @__PURE__ */ m({
|
|
1273
1288
|
__name: "BaseConfirmModal",
|
|
1274
1289
|
props: {
|
|
1275
1290
|
title: {},
|
|
@@ -1285,16 +1300,16 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1285
1300
|
},
|
|
1286
1301
|
emits: ["confirm", "cancel"],
|
|
1287
1302
|
setup(e, { emit: t }) {
|
|
1288
|
-
let n = e, r = t, { isDark: i } =
|
|
1303
|
+
let n = e, r = t, { isDark: i } = U(), a = X();
|
|
1289
1304
|
function u() {
|
|
1290
1305
|
n.submitting || r("confirm");
|
|
1291
1306
|
}
|
|
1292
1307
|
function d() {
|
|
1293
1308
|
n.submitting || r("cancel");
|
|
1294
1309
|
}
|
|
1295
|
-
return (t, n) => (
|
|
1310
|
+
return (t, n) => (D(), o(Sn, {
|
|
1296
1311
|
title: e.title,
|
|
1297
|
-
icon: F(
|
|
1312
|
+
icon: F(Ce),
|
|
1298
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",
|
|
1299
1314
|
"icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
|
|
1300
1315
|
"manual-close": e.submitting,
|
|
@@ -1303,14 +1318,14 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1303
1318
|
footer: L(() => [l("button", {
|
|
1304
1319
|
type: "button",
|
|
1305
1320
|
disabled: e.submitting,
|
|
1306
|
-
class:
|
|
1321
|
+
class: b(["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"]]),
|
|
1307
1322
|
onClick: d
|
|
1308
|
-
}, P(e.cancelText), 11,
|
|
1323
|
+
}, P(e.cancelText), 11, En), l("button", {
|
|
1309
1324
|
type: "button",
|
|
1310
1325
|
disabled: e.submitting,
|
|
1311
|
-
class:
|
|
1326
|
+
class: b(["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"]]),
|
|
1312
1327
|
onClick: u
|
|
1313
|
-
}, [e.submitting ? (
|
|
1328
|
+
}, [e.submitting ? (D(), c("svg", On, [...n[0] ||= [l("circle", {
|
|
1314
1329
|
class: "opacity-25",
|
|
1315
1330
|
cx: "12",
|
|
1316
1331
|
cy: "12",
|
|
@@ -1321,8 +1336,8 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1321
1336
|
class: "opacity-75",
|
|
1322
1337
|
fill: "currentColor",
|
|
1323
1338
|
d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
|
|
1324
|
-
}, null, -1)]])) : s("", !0), f(" " + P(e.submitting ? e.submittingText : e.confirmText), 1)], 10,
|
|
1325
|
-
default: L(() => [j(t.$slots, "message", {}, () => [l("p", { class:
|
|
1339
|
+
}, null, -1)]])) : s("", !0), f(" " + P(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Dn)]),
|
|
1340
|
+
default: L(() => [j(t.$slots, "message", {}, () => [l("p", { class: b(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3)]), j(t.$slots, "default")]),
|
|
1326
1341
|
_: 3
|
|
1327
1342
|
}, 8, [
|
|
1328
1343
|
"title",
|
|
@@ -1332,7 +1347,7 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1332
1347
|
"manual-close"
|
|
1333
1348
|
]));
|
|
1334
1349
|
}
|
|
1335
|
-
}),
|
|
1350
|
+
}), An = { class: "mt-4" }, jn = ["placeholder"], Mn = ["disabled"], Nn = /* @__PURE__ */ m({
|
|
1336
1351
|
__name: "BaseTextInputModal",
|
|
1337
1352
|
props: {
|
|
1338
1353
|
title: {},
|
|
@@ -1350,9 +1365,9 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1350
1365
|
},
|
|
1351
1366
|
emits: ["confirm", "cancel"],
|
|
1352
1367
|
setup(e, { emit: t }) {
|
|
1353
|
-
let n = e, r = t, { isDark: i } =
|
|
1354
|
-
|
|
1355
|
-
await
|
|
1368
|
+
let n = e, r = t, { isDark: i } = U(), a = X(), s = k(n.initialValue), c = k(null);
|
|
1369
|
+
w(async () => {
|
|
1370
|
+
await y(), c.value?.focus();
|
|
1356
1371
|
});
|
|
1357
1372
|
function d() {
|
|
1358
1373
|
s.value.trim() && !n.submitting && r("confirm", s.value.trim());
|
|
@@ -1363,31 +1378,31 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1363
1378
|
function p() {
|
|
1364
1379
|
s.value.trim() === (n.initialValue ?? "").trim() && f();
|
|
1365
1380
|
}
|
|
1366
|
-
return
|
|
1381
|
+
return pn(f), (t, n) => (D(), o(Sn, {
|
|
1367
1382
|
title: e.title,
|
|
1368
|
-
icon: F(
|
|
1383
|
+
icon: F(xe),
|
|
1369
1384
|
"manual-close": "",
|
|
1370
1385
|
onBackdrop: p
|
|
1371
1386
|
}, u({
|
|
1372
1387
|
footer: L(() => [l("button", {
|
|
1373
1388
|
type: "button",
|
|
1374
|
-
class:
|
|
1389
|
+
class: b(["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]),
|
|
1375
1390
|
onClick: f
|
|
1376
1391
|
}, P(e.cancelText), 3), l("button", {
|
|
1377
1392
|
type: "button",
|
|
1378
1393
|
disabled: !s.value.trim() || e.submitting,
|
|
1379
|
-
class:
|
|
1394
|
+
class: b(["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"]]),
|
|
1380
1395
|
onClick: d
|
|
1381
|
-
}, P(e.submitting ? e.submittingText : e.confirmText), 11,
|
|
1382
|
-
default: L(() => [l("p", { class:
|
|
1396
|
+
}, P(e.submitting ? e.submittingText : e.confirmText), 11, Mn)]),
|
|
1397
|
+
default: L(() => [l("p", { class: b(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3), l("div", An, [l("label", { class: b(["block text-sm font-medium mb-1", F(a).label]) }, P(e.inputLabel), 3), R(l("input", {
|
|
1383
1398
|
ref_key: "nameInput",
|
|
1384
1399
|
ref: c,
|
|
1385
1400
|
"onUpdate:modelValue": n[0] ||= (e) => s.value = e,
|
|
1386
1401
|
type: "text",
|
|
1387
1402
|
placeholder: e.placeholder,
|
|
1388
|
-
class:
|
|
1389
|
-
onKeyup:
|
|
1390
|
-
}, null, 42,
|
|
1403
|
+
class: b(["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: se(d, ["enter"])
|
|
1405
|
+
}, null, 42, jn), [[ae, s.value]])])]),
|
|
1391
1406
|
_: 2
|
|
1392
1407
|
}, [t.$slots.icon ? {
|
|
1393
1408
|
name: "icon",
|
|
@@ -1395,7 +1410,7 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1395
1410
|
key: "0"
|
|
1396
1411
|
} : void 0]), 1032, ["title", "icon"]));
|
|
1397
1412
|
}
|
|
1398
|
-
}),
|
|
1413
|
+
}), Pn = { class: "flex items-center justify-center min-h-[60vh]" }, Fn = { class: "text-center px-6" }, In = /* @__PURE__ */ m({
|
|
1399
1414
|
__name: "BaseNotFoundPage",
|
|
1400
1415
|
props: {
|
|
1401
1416
|
code: { default: "404" },
|
|
@@ -1404,33 +1419,33 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
|
|
|
1404
1419
|
homeLabel: { default: "Go home" }
|
|
1405
1420
|
},
|
|
1406
1421
|
setup(e) {
|
|
1407
|
-
let t = e, n =
|
|
1422
|
+
let t = e, n = Pe(), { isDark: r } = U(), i = X();
|
|
1408
1423
|
function a() {
|
|
1409
1424
|
n.push({ name: t.homeRouteName });
|
|
1410
1425
|
}
|
|
1411
|
-
return (t, n) => (
|
|
1412
|
-
p(F(
|
|
1413
|
-
l("h1", { class:
|
|
1414
|
-
l("p", { class:
|
|
1426
|
+
return (t, n) => (D(), c("div", Pn, [l("div", Fn, [
|
|
1427
|
+
p(F(Ce), { class: b(["w-16 h-16 mx-auto mb-4", F(i).illustration]) }, null, 8, ["class"]),
|
|
1428
|
+
l("h1", { class: b(["text-4xl font-bold mb-2", F(r) ? "text-gray-200" : "text-gray-800"]) }, P(e.code), 3),
|
|
1429
|
+
l("p", { class: b(["text-lg mb-6", F(i).dimTextAlt]) }, P(e.message), 3),
|
|
1415
1430
|
l("button", {
|
|
1416
1431
|
onClick: a,
|
|
1417
|
-
class:
|
|
1432
|
+
class: b(["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"])
|
|
1418
1433
|
}, P(e.homeLabel), 3)
|
|
1419
1434
|
])]));
|
|
1420
1435
|
}
|
|
1421
|
-
}),
|
|
1422
|
-
function
|
|
1436
|
+
}), Ln = k(!1);
|
|
1437
|
+
function Rn() {
|
|
1423
1438
|
function e() {
|
|
1424
|
-
|
|
1439
|
+
Ln.value = !0;
|
|
1425
1440
|
}
|
|
1426
1441
|
function t() {
|
|
1427
|
-
|
|
1442
|
+
Ln.value = !1;
|
|
1428
1443
|
}
|
|
1429
1444
|
function n() {
|
|
1430
|
-
|
|
1445
|
+
Ln.value = !Ln.value;
|
|
1431
1446
|
}
|
|
1432
1447
|
return {
|
|
1433
|
-
mobileOpen:
|
|
1448
|
+
mobileOpen: Ln,
|
|
1434
1449
|
open: e,
|
|
1435
1450
|
close: t,
|
|
1436
1451
|
toggle: n
|
|
@@ -1438,30 +1453,30 @@ function In() {
|
|
|
1438
1453
|
}
|
|
1439
1454
|
//#endregion
|
|
1440
1455
|
//#region src/composables/useSidebarCollapse.ts
|
|
1441
|
-
var
|
|
1442
|
-
function
|
|
1443
|
-
if (!
|
|
1444
|
-
let e = window.localStorage?.getItem(
|
|
1445
|
-
e && (
|
|
1446
|
-
I(
|
|
1447
|
-
window.localStorage?.setItem(
|
|
1456
|
+
var Z = k(!1), zn = !1, Bn = "mgv-sidebar-collapsed";
|
|
1457
|
+
function Vn(e) {
|
|
1458
|
+
if (!zn && (zn = !0, Bn = e, typeof window < "u")) {
|
|
1459
|
+
let e = window.localStorage?.getItem(Bn);
|
|
1460
|
+
e && (Z.value = e === "true"), h(!0).run(() => {
|
|
1461
|
+
I(Z, (e) => {
|
|
1462
|
+
window.localStorage?.setItem(Bn, String(e));
|
|
1448
1463
|
});
|
|
1449
1464
|
});
|
|
1450
1465
|
}
|
|
1451
1466
|
}
|
|
1452
|
-
function
|
|
1453
|
-
|
|
1467
|
+
function Hn(e) {
|
|
1468
|
+
Vn(e?.storageKey ?? Bn);
|
|
1454
1469
|
function t() {
|
|
1455
|
-
|
|
1470
|
+
Z.value = !0;
|
|
1456
1471
|
}
|
|
1457
1472
|
function n() {
|
|
1458
|
-
|
|
1473
|
+
Z.value = !1;
|
|
1459
1474
|
}
|
|
1460
1475
|
function r() {
|
|
1461
|
-
|
|
1476
|
+
Z.value = !Z.value;
|
|
1462
1477
|
}
|
|
1463
1478
|
return {
|
|
1464
|
-
collapsed:
|
|
1479
|
+
collapsed: Z,
|
|
1465
1480
|
collapse: t,
|
|
1466
1481
|
expand: n,
|
|
1467
1482
|
toggle: r
|
|
@@ -1469,45 +1484,45 @@ function Bn(e) {
|
|
|
1469
1484
|
}
|
|
1470
1485
|
//#endregion
|
|
1471
1486
|
//#region src/composables/useNotifications.ts
|
|
1472
|
-
var
|
|
1473
|
-
function
|
|
1487
|
+
var Q = k([]), Un = k(!1), Wn = a(() => Q.value.filter((e) => !e.read).length);
|
|
1488
|
+
function Gn() {
|
|
1474
1489
|
function e() {
|
|
1475
|
-
|
|
1490
|
+
Un.value = !0;
|
|
1476
1491
|
}
|
|
1477
1492
|
function t() {
|
|
1478
|
-
|
|
1493
|
+
Un.value = !1;
|
|
1479
1494
|
}
|
|
1480
1495
|
function n() {
|
|
1481
|
-
|
|
1496
|
+
Un.value = !Un.value;
|
|
1482
1497
|
}
|
|
1483
1498
|
function r(e) {
|
|
1484
|
-
|
|
1499
|
+
Q.value = e;
|
|
1485
1500
|
}
|
|
1486
1501
|
function i(e) {
|
|
1487
|
-
|
|
1502
|
+
Q.value = [e, ...Q.value];
|
|
1488
1503
|
}
|
|
1489
1504
|
function a(e) {
|
|
1490
|
-
|
|
1505
|
+
Q.value = Q.value.filter((t) => t.id !== e);
|
|
1491
1506
|
}
|
|
1492
1507
|
function o(e) {
|
|
1493
|
-
|
|
1508
|
+
Q.value = Q.value.map((t) => t.id === e ? {
|
|
1494
1509
|
...t,
|
|
1495
1510
|
read: !0
|
|
1496
1511
|
} : t);
|
|
1497
1512
|
}
|
|
1498
1513
|
function s() {
|
|
1499
|
-
|
|
1514
|
+
Q.value = Q.value.map((e) => e.read ? e : {
|
|
1500
1515
|
...e,
|
|
1501
1516
|
read: !0
|
|
1502
1517
|
});
|
|
1503
1518
|
}
|
|
1504
1519
|
function c() {
|
|
1505
|
-
|
|
1520
|
+
Q.value = [];
|
|
1506
1521
|
}
|
|
1507
1522
|
return {
|
|
1508
|
-
notifications:
|
|
1509
|
-
unreadCount:
|
|
1510
|
-
open:
|
|
1523
|
+
notifications: Q,
|
|
1524
|
+
unreadCount: Wn,
|
|
1525
|
+
open: Un,
|
|
1511
1526
|
openPanel: e,
|
|
1512
1527
|
closePanel: t,
|
|
1513
1528
|
togglePanel: n,
|
|
@@ -1521,22 +1536,22 @@ function Un() {
|
|
|
1521
1536
|
}
|
|
1522
1537
|
//#endregion
|
|
1523
1538
|
//#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
|
|
1524
|
-
var
|
|
1539
|
+
var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }, Jn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Yn = { class: "space-y-0.5" }, Xn = [
|
|
1525
1540
|
"aria-current",
|
|
1526
1541
|
"title",
|
|
1527
1542
|
"onClick"
|
|
1528
|
-
],
|
|
1543
|
+
], Zn = ["aria-label"], Qn = { class: "relative shrink-0" }, $n = {
|
|
1529
1544
|
key: 0,
|
|
1530
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"
|
|
1531
|
-
},
|
|
1546
|
+
}, er = [
|
|
1532
1547
|
"title",
|
|
1533
1548
|
"aria-label",
|
|
1534
1549
|
"aria-pressed"
|
|
1535
|
-
],
|
|
1550
|
+
], tr = [
|
|
1536
1551
|
"title",
|
|
1537
1552
|
"aria-label",
|
|
1538
1553
|
"aria-pressed"
|
|
1539
|
-
],
|
|
1554
|
+
], nr = /*#__PURE__*/ ((e, t) => {
|
|
1540
1555
|
let n = e.__vccOpts || e;
|
|
1541
1556
|
for (let [e, r] of t) n[e] = r;
|
|
1542
1557
|
return n;
|
|
@@ -1561,41 +1576,41 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1561
1576
|
}
|
|
1562
1577
|
},
|
|
1563
1578
|
setup(t) {
|
|
1564
|
-
let n = t, r =
|
|
1579
|
+
let n = t, r = Pe(), i = Ne(), { isDark: u, toggleTheme: d } = U(), { mobileOpen: m, close: h, toggle: g } = Rn(), { collapsed: _, toggle: v } = Hn(), { unreadCount: x, togglePanel: S } = Gn(), C = a(() => n.collapsible && _.value), w = k(null), T = null;
|
|
1565
1580
|
I(m, async (e) => {
|
|
1566
|
-
e ? (T = document.activeElement instanceof HTMLElement ? document.activeElement : null, await
|
|
1581
|
+
e ? (T = document.activeElement instanceof HTMLElement ? document.activeElement : null, await y(), w.value?.focus()) : (T?.focus(), T = null);
|
|
1567
1582
|
});
|
|
1568
|
-
function
|
|
1583
|
+
function E() {
|
|
1569
1584
|
r.push({ name: n.homeRouteName }), h();
|
|
1570
1585
|
}
|
|
1571
1586
|
function O(e) {
|
|
1572
1587
|
return i.name === e;
|
|
1573
1588
|
}
|
|
1574
|
-
function
|
|
1589
|
+
function ee(e) {
|
|
1575
1590
|
r.push({ name: e }), h();
|
|
1576
1591
|
}
|
|
1577
|
-
return (n, r) => (
|
|
1578
|
-
l("div", { class:
|
|
1592
|
+
return (n, r) => (D(), c("div", null, [
|
|
1593
|
+
l("div", { class: b(["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", {
|
|
1579
1594
|
type: "button",
|
|
1580
|
-
onClick:
|
|
1595
|
+
onClick: E,
|
|
1581
1596
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1582
1597
|
"aria-label": "Go to home"
|
|
1583
1598
|
}, [j(n.$slots, "logo", { size: 28 }, void 0, !0)]), l("button", {
|
|
1584
1599
|
type: "button",
|
|
1585
1600
|
onClick: r[0] ||= (...e) => F(g) && F(g)(...e),
|
|
1586
|
-
class:
|
|
1601
|
+
class: b(["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"]),
|
|
1587
1602
|
"aria-label": F(m) ? "Close navigation menu" : "Open navigation menu",
|
|
1588
1603
|
"aria-expanded": F(m)
|
|
1589
|
-
}, [F(m) ? (
|
|
1604
|
+
}, [F(m) ? (D(), o(F(Ae), {
|
|
1590
1605
|
key: 1,
|
|
1591
1606
|
class: "w-6 h-6",
|
|
1592
1607
|
"aria-hidden": "true"
|
|
1593
|
-
})) : (
|
|
1608
|
+
})) : (D(), o(F(de), {
|
|
1594
1609
|
key: 0,
|
|
1595
1610
|
class: "w-6 h-6",
|
|
1596
1611
|
"aria-hidden": "true"
|
|
1597
|
-
}))], 10,
|
|
1598
|
-
F(m) ? (
|
|
1612
|
+
}))], 10, Kn)], 2),
|
|
1613
|
+
F(m) ? (D(), c("div", {
|
|
1599
1614
|
key: 0,
|
|
1600
1615
|
class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
|
|
1601
1616
|
"aria-hidden": "true",
|
|
@@ -1604,15 +1619,15 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1604
1619
|
l("aside", {
|
|
1605
1620
|
role: "navigation",
|
|
1606
1621
|
"aria-label": "Main navigation",
|
|
1607
|
-
class:
|
|
1622
|
+
class: b(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
|
|
1608
1623
|
F(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
|
|
1609
1624
|
F(m) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
|
|
1610
1625
|
t.collapsible && F(_) ? "lg:w-16" : "lg:w-60"
|
|
1611
1626
|
]])
|
|
1612
|
-
}, [l("div",
|
|
1613
|
-
l("div", { class:
|
|
1627
|
+
}, [l("div", qn, [
|
|
1628
|
+
l("div", { class: b(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": C.value }]) }, [l("button", {
|
|
1614
1629
|
type: "button",
|
|
1615
|
-
onClick:
|
|
1630
|
+
onClick: E,
|
|
1616
1631
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1617
1632
|
"aria-label": "Go to home"
|
|
1618
1633
|
}, [j(n.$slots, "logo", { size: C.value ? 36 : 52 }, void 0, !0)]), l("button", {
|
|
@@ -1620,92 +1635,92 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1620
1635
|
ref: w,
|
|
1621
1636
|
type: "button",
|
|
1622
1637
|
onClick: r[2] ||= (...e) => F(h) && F(h)(...e),
|
|
1623
|
-
class:
|
|
1638
|
+
class: b(["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"]),
|
|
1624
1639
|
"aria-label": "Close navigation menu"
|
|
1625
|
-
}, [p(F(
|
|
1640
|
+
}, [p(F(Ae), {
|
|
1626
1641
|
class: "w-5 h-5",
|
|
1627
1642
|
"aria-hidden": "true"
|
|
1628
1643
|
})], 2)], 2),
|
|
1629
|
-
l("nav",
|
|
1644
|
+
l("nav", Jn, [(D(!0), c(e, null, A(t.sections, (t) => (D(), c("div", { key: t.title }, [l("p", { class: b(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": C.value }]) }, P(t.title), 3), l("ul", Yn, [(D(!0), c(e, null, A(t.items, (e) => (D(), c("li", { key: e.name }, [l("button", {
|
|
1630
1645
|
type: "button",
|
|
1631
1646
|
"aria-current": O(e.name) ? "page" : void 0,
|
|
1632
1647
|
title: C.value ? e.label : void 0,
|
|
1633
|
-
onClick: (t) =>
|
|
1634
|
-
class:
|
|
1635
|
-
}, [(
|
|
1636
|
-
l("div", { class:
|
|
1637
|
-
t.showNotifications ? (
|
|
1648
|
+
onClick: (t) => ee(e.name),
|
|
1649
|
+
class: b(["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", [O(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
|
+
}, [(D(), o(N(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), l("span", { class: b({ "lg:hidden": C.value }) }, P(e.label), 3)], 10, Xn)]))), 128))])]))), 128))]),
|
|
1651
|
+
l("div", { class: b(["px-4 py-4 border-t transition-colors space-y-3", F(u) ? "border-gray-800" : "border-gray-200"]) }, [
|
|
1652
|
+
t.showNotifications ? (D(), c("button", {
|
|
1638
1653
|
key: 0,
|
|
1639
1654
|
type: "button",
|
|
1640
1655
|
onClick: r[3] ||= (...e) => F(S) && F(S)(...e),
|
|
1641
1656
|
title: "Notifications",
|
|
1642
1657
|
"aria-label": F(x) > 0 ? `Notifications, ${F(x)} unread` : "Notifications",
|
|
1643
|
-
class:
|
|
1644
|
-
}, [l("span",
|
|
1658
|
+
class: b(["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", Qn, [p(F(fe), {
|
|
1645
1660
|
class: "w-[18px] h-[18px]",
|
|
1646
1661
|
"aria-hidden": "true"
|
|
1647
|
-
}), F(x) > 0 ? (
|
|
1648
|
-
t.showThemeToggle ? (
|
|
1662
|
+
}), F(x) > 0 ? (D(), c("span", $n, P(F(x) > 99 ? "99+" : F(x)), 1)) : s("", !0)]), l("span", { class: b({ "lg:hidden": C.value }) }, "Notifications", 2)], 10, Zn)) : s("", !0),
|
|
1663
|
+
t.showThemeToggle ? (D(), c("button", {
|
|
1649
1664
|
key: 1,
|
|
1650
1665
|
type: "button",
|
|
1651
1666
|
onClick: r[4] ||= (...e) => F(d) && F(d)(...e),
|
|
1652
1667
|
title: F(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1653
1668
|
"aria-label": F(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1654
1669
|
"aria-pressed": F(u),
|
|
1655
|
-
class:
|
|
1670
|
+
class: b(["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 }]])
|
|
1656
1671
|
}, [
|
|
1657
|
-
(
|
|
1658
|
-
class:
|
|
1672
|
+
(D(), o(N(F(u) ? F(ke) : F(Oe)), {
|
|
1673
|
+
class: b(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": C.value }]),
|
|
1659
1674
|
"aria-hidden": "true"
|
|
1660
1675
|
}, null, 8, ["class"])),
|
|
1661
|
-
l("span", { class:
|
|
1662
|
-
l("span", { class:
|
|
1663
|
-
], 10,
|
|
1664
|
-
t.collapsible ? (
|
|
1676
|
+
l("span", { class: b({ "lg:hidden": C.value }) }, P(F(u) ? "Switch to light" : "Switch to dark"), 3),
|
|
1677
|
+
l("span", { class: b(["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: b(["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, er)) : s("", !0),
|
|
1679
|
+
t.collapsible ? (D(), c("button", {
|
|
1665
1680
|
key: 2,
|
|
1666
1681
|
type: "button",
|
|
1667
|
-
onClick: r[5] ||= (...e) => F(
|
|
1682
|
+
onClick: r[5] ||= (...e) => F(v) && F(v)(...e),
|
|
1668
1683
|
title: F(_) ? "Expand sidebar" : "Collapse sidebar",
|
|
1669
1684
|
"aria-label": F(_) ? "Expand sidebar" : "Collapse sidebar",
|
|
1670
1685
|
"aria-pressed": F(_),
|
|
1671
|
-
class:
|
|
1672
|
-
}, [(
|
|
1686
|
+
class: b(["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
|
+
}, [(D(), o(N(F(_) ? F(ge) : F(he)), {
|
|
1673
1688
|
class: "w-[18px] h-[18px] shrink-0",
|
|
1674
1689
|
"aria-hidden": "true"
|
|
1675
|
-
})), l("span", { class:
|
|
1676
|
-
l("div", { class:
|
|
1677
|
-
l("div", { class:
|
|
1690
|
+
})), l("span", { class: b({ "lg:hidden": C.value }) }, "Collapse", 2)], 10, tr)) : s("", !0),
|
|
1691
|
+
l("div", { class: b({ "lg:hidden": C.value }) }, [j(n.$slots, "status", {}, void 0, !0)], 2),
|
|
1692
|
+
l("div", { class: b({ "lg:hidden": C.value }) }, [j(n.$slots, "footer", {}, () => [t.appName || t.version ? (D(), c("div", {
|
|
1678
1693
|
key: 0,
|
|
1679
|
-
class:
|
|
1694
|
+
class: b(["flex items-center justify-center gap-2 text-xs", (F(u), "text-gray-500")])
|
|
1680
1695
|
}, [l("span", null, [
|
|
1681
1696
|
f(P(t.appName), 1),
|
|
1682
|
-
t.appName && t.version ? (
|
|
1683
|
-
t.version ? (
|
|
1697
|
+
t.appName && t.version ? (D(), c(e, { key: 0 }, [f(P(" "))], 64)) : s("", !0),
|
|
1698
|
+
t.version ? (D(), c(e, { key: 1 }, [f("v" + P(t.version), 1)], 64)) : s("", !0)
|
|
1684
1699
|
])], 2)) : s("", !0)], !0)], 2)
|
|
1685
1700
|
], 2)
|
|
1686
1701
|
])], 2)
|
|
1687
1702
|
]));
|
|
1688
1703
|
}
|
|
1689
|
-
}), [["__scopeId", "data-v-bfce9dd7"]]),
|
|
1704
|
+
}), [["__scopeId", "data-v-bfce9dd7"]]), rr = {
|
|
1690
1705
|
key: 1,
|
|
1691
1706
|
class: "mt-4 flex justify-center py-6"
|
|
1692
|
-
},
|
|
1707
|
+
}, ir = {
|
|
1693
1708
|
key: 2,
|
|
1694
1709
|
class: "mt-4 text-sm text-red-500",
|
|
1695
1710
|
role: "alert"
|
|
1696
|
-
},
|
|
1711
|
+
}, ar = {
|
|
1697
1712
|
key: 3,
|
|
1698
1713
|
class: "mt-4"
|
|
1699
|
-
},
|
|
1714
|
+
}, or = { class: "relative" }, sr = ["placeholder"], cr = {
|
|
1700
1715
|
key: 4,
|
|
1701
1716
|
class: "mt-3 max-h-64 overflow-y-auto"
|
|
1702
|
-
},
|
|
1717
|
+
}, lr = ["aria-pressed", "onClick"], ur = { class: "flex-1 min-w-0" }, dr = {
|
|
1703
1718
|
key: 0,
|
|
1704
1719
|
class: "text-center py-6"
|
|
1705
|
-
},
|
|
1720
|
+
}, fr = {
|
|
1706
1721
|
key: 1,
|
|
1707
1722
|
class: "text-center py-6"
|
|
1708
|
-
},
|
|
1723
|
+
}, pr = ["disabled"], mr = ["disabled"], hr = /* @__PURE__ */ m({
|
|
1709
1724
|
__name: "BaseEntityPickerModal",
|
|
1710
1725
|
props: {
|
|
1711
1726
|
title: {},
|
|
@@ -1727,10 +1742,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1727
1742
|
},
|
|
1728
1743
|
emits: ["confirm", "cancel"],
|
|
1729
1744
|
setup(t, { emit: n }) {
|
|
1730
|
-
let r = t, i = n, { isDark: d } =
|
|
1745
|
+
let r = t, i = n, { isDark: d } = U(), f = X(), m = k([]), h = k(!1), g = k(""), _ = k(null), v = k(""), x = k(null), S = a(() => {
|
|
1731
1746
|
let e = r.loader ? m.value : r.items;
|
|
1732
1747
|
return r.excludeId ? e.filter((e) => e.id !== r.excludeId) : e;
|
|
1733
|
-
}),
|
|
1748
|
+
}), C = a(() => S.value.filter((e) => e.label.toLowerCase().includes(v.value.toLowerCase()))), T = {
|
|
1734
1749
|
emerald: {
|
|
1735
1750
|
iconBg: "bg-emerald-50",
|
|
1736
1751
|
iconText: "text-emerald-600",
|
|
@@ -1776,7 +1791,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1776
1791
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1777
1792
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1778
1793
|
}
|
|
1779
|
-
},
|
|
1794
|
+
}, E = {
|
|
1780
1795
|
emerald: {
|
|
1781
1796
|
iconBg: "bg-emerald-900/30",
|
|
1782
1797
|
iconText: "text-emerald-400",
|
|
@@ -1822,8 +1837,8 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1822
1837
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1823
1838
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1824
1839
|
}
|
|
1825
|
-
}, O = a(() => (d.value ?
|
|
1826
|
-
|
|
1840
|
+
}, O = a(() => (d.value ? E : T)[r.variant]);
|
|
1841
|
+
w(async () => {
|
|
1827
1842
|
if (r.loader) {
|
|
1828
1843
|
h.value = !0;
|
|
1829
1844
|
try {
|
|
@@ -1834,62 +1849,62 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1834
1849
|
h.value = !1;
|
|
1835
1850
|
}
|
|
1836
1851
|
}
|
|
1837
|
-
await
|
|
1852
|
+
await y(), x.value?.focus();
|
|
1838
1853
|
});
|
|
1839
|
-
function
|
|
1854
|
+
function ee() {
|
|
1840
1855
|
_.value && !r.submitting && i("confirm", _.value);
|
|
1841
1856
|
}
|
|
1842
|
-
function
|
|
1857
|
+
function M() {
|
|
1843
1858
|
r.submitting || i("cancel");
|
|
1844
1859
|
}
|
|
1845
|
-
return (n, r) => (
|
|
1860
|
+
return (n, r) => (D(), o(Sn, {
|
|
1846
1861
|
title: t.title,
|
|
1847
|
-
icon: F(
|
|
1862
|
+
icon: F(we),
|
|
1848
1863
|
"icon-bg-class": O.value.iconBg,
|
|
1849
1864
|
"icon-class": O.value.iconText,
|
|
1850
1865
|
"manual-close": t.submitting,
|
|
1851
|
-
onCancel:
|
|
1866
|
+
onCancel: M
|
|
1852
1867
|
}, u({
|
|
1853
1868
|
footer: L(() => [l("button", {
|
|
1854
1869
|
type: "button",
|
|
1855
1870
|
disabled: t.submitting,
|
|
1856
|
-
class:
|
|
1857
|
-
onClick:
|
|
1858
|
-
}, P(t.cancelText), 11,
|
|
1871
|
+
class: b(["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: M
|
|
1873
|
+
}, P(t.cancelText), 11, pr), l("button", {
|
|
1859
1874
|
type: "button",
|
|
1860
1875
|
disabled: !_.value || t.submitting,
|
|
1861
|
-
class:
|
|
1862
|
-
onClick:
|
|
1863
|
-
}, P(t.submitting ? t.submittingText : t.confirmText), 11,
|
|
1876
|
+
class: b(["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 ? O.value.confirmDisabled : O.value.confirmActive]),
|
|
1877
|
+
onClick: ee
|
|
1878
|
+
}, P(t.submitting ? t.submittingText : t.confirmText), 11, mr)]),
|
|
1864
1879
|
default: L(() => [
|
|
1865
|
-
t.message ? (
|
|
1880
|
+
t.message ? (D(), c("p", {
|
|
1866
1881
|
key: 0,
|
|
1867
|
-
class:
|
|
1882
|
+
class: b(["text-sm", F(d) ? "text-gray-300" : "text-gray-600"])
|
|
1868
1883
|
}, P(t.message), 3)) : s("", !0),
|
|
1869
|
-
h.value ? (
|
|
1870
|
-
!h.value && !g.value && S.value.length > 0 ? (
|
|
1871
|
-
class:
|
|
1884
|
+
h.value ? (D(), c("div", rr, [p(Ht, { color: "emerald" })])) : g.value ? (D(), c("div", ir, P(g.value), 1)) : s("", !0),
|
|
1885
|
+
!h.value && !g.value && S.value.length > 0 ? (D(), c("div", ar, [l("div", or, [p(F(Ee), {
|
|
1886
|
+
class: b(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", F(f).dimText]),
|
|
1872
1887
|
"aria-hidden": "true"
|
|
1873
1888
|
}, null, 8, ["class"]), R(l("input", {
|
|
1874
1889
|
ref_key: "searchInputRef",
|
|
1875
1890
|
ref: x,
|
|
1876
|
-
"onUpdate:modelValue": r[0] ||= (e) =>
|
|
1891
|
+
"onUpdate:modelValue": r[0] ||= (e) => v.value = e,
|
|
1877
1892
|
type: "text",
|
|
1878
1893
|
placeholder: t.searchPlaceholder,
|
|
1879
|
-
class:
|
|
1880
|
-
}, null, 10,
|
|
1881
|
-
!h.value && !g.value ? (
|
|
1894
|
+
class: b(["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", O.value.inputFocus]])
|
|
1895
|
+
}, null, 10, sr), [[ae, v.value]])])])) : s("", !0),
|
|
1896
|
+
!h.value && !g.value ? (D(), c("div", cr, [(D(!0), c(e, null, A(C.value, (e) => (D(), c("button", {
|
|
1882
1897
|
key: e.id,
|
|
1883
1898
|
type: "button",
|
|
1884
1899
|
"aria-pressed": _.value === e.id,
|
|
1885
|
-
class:
|
|
1900
|
+
class: b(["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 ? O.value.selectedRow : F(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
|
|
1886
1901
|
onClick: (t) => _.value = e.id
|
|
1887
1902
|
}, [
|
|
1888
|
-
p(F(
|
|
1889
|
-
l("div",
|
|
1890
|
-
_.value === e.id ? (
|
|
1903
|
+
p(F(we), { class: b(["w-5 h-5 flex-shrink-0", F(f).dimText]) }, null, 8, ["class"]),
|
|
1904
|
+
l("div", ur, [l("p", { class: b(["text-sm font-medium truncate", F(f).bodyText]) }, P(e.label), 3)]),
|
|
1905
|
+
_.value === e.id ? (D(), c("div", {
|
|
1891
1906
|
key: 0,
|
|
1892
|
-
class:
|
|
1907
|
+
class: b(["w-5 h-5 rounded-full flex items-center justify-center", O.value.checkBg])
|
|
1893
1908
|
}, [...r[1] ||= [l("svg", {
|
|
1894
1909
|
class: "w-3 h-3 text-white",
|
|
1895
1910
|
fill: "none",
|
|
@@ -1902,7 +1917,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1902
1917
|
"stroke-linejoin": "round",
|
|
1903
1918
|
d: "M5 13l4 4L19 7"
|
|
1904
1919
|
})], -1)]], 2)) : s("", !0)
|
|
1905
|
-
], 10,
|
|
1920
|
+
], 10, lr))), 128)), S.value.length === 0 ? (D(), c("div", dr, [l("p", { class: b(["text-sm", F(f).dimText]) }, P(t.emptyMessage), 3)])) : C.value.length === 0 ? (D(), c("div", fr, [l("p", { class: b(["text-sm", F(f).dimText]) }, P(t.noMatchMessage), 3)])) : s("", !0)])) : s("", !0)
|
|
1906
1921
|
]),
|
|
1907
1922
|
_: 2
|
|
1908
1923
|
}, [n.$slots.icon ? {
|
|
@@ -1917,10 +1932,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1917
1932
|
"manual-close"
|
|
1918
1933
|
]));
|
|
1919
1934
|
}
|
|
1920
|
-
}),
|
|
1935
|
+
}), gr = {
|
|
1921
1936
|
href: "#main-content",
|
|
1922
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"
|
|
1923
|
-
},
|
|
1938
|
+
}, _r = ["inert"], vr = /* @__PURE__ */ m({
|
|
1924
1939
|
__name: "BaseAppLayout",
|
|
1925
1940
|
props: {
|
|
1926
1941
|
showSidebar: {
|
|
@@ -1930,23 +1945,23 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1930
1945
|
skipLinkLabel: { default: "Skip to main content" }
|
|
1931
1946
|
},
|
|
1932
1947
|
setup(e) {
|
|
1933
|
-
let t = e, { isDark: n } =
|
|
1934
|
-
return (t, a) => (
|
|
1935
|
-
l("a",
|
|
1948
|
+
let t = e, { isDark: n } = U(), { mobileOpen: r } = Rn(), { collapsed: i } = Hn(), o = a(() => t.showSidebar);
|
|
1949
|
+
return (t, a) => (D(), c("div", { class: b(["min-h-screen transition-colors duration-300", F(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
|
|
1950
|
+
l("a", gr, P(e.skipLinkLabel), 1),
|
|
1936
1951
|
o.value ? j(t.$slots, "sidebar", {}, void 0, void 0, 0) : s("", !0),
|
|
1937
1952
|
l("main", {
|
|
1938
1953
|
id: "main-content",
|
|
1939
1954
|
tabindex: "-1",
|
|
1940
1955
|
inert: o.value && F(r) ? !0 : void 0,
|
|
1941
|
-
class:
|
|
1942
|
-
}, [j(t.$slots, "default")], 10,
|
|
1956
|
+
class: b(["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
|
+
}, [j(t.$slots, "default")], 10, _r)
|
|
1943
1958
|
], 2));
|
|
1944
1959
|
}
|
|
1945
|
-
}),
|
|
1960
|
+
}), yr = { class: "flex items-center gap-3 min-w-0" }, br = {
|
|
1946
1961
|
key: 0,
|
|
1947
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",
|
|
1948
1963
|
"aria-hidden": "true"
|
|
1949
|
-
},
|
|
1964
|
+
}, xr = { class: "flex items-center gap-2" }, Sr = /* @__PURE__ */ m({
|
|
1950
1965
|
__name: "BasePageHeader",
|
|
1951
1966
|
props: {
|
|
1952
1967
|
title: {},
|
|
@@ -1961,7 +1976,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
1961
1976
|
}
|
|
1962
1977
|
},
|
|
1963
1978
|
setup(e) {
|
|
1964
|
-
let t = e, { isDark: n } =
|
|
1979
|
+
let t = e, { isDark: n } = U(), r = X(), i = a(() => {
|
|
1965
1980
|
let e = {
|
|
1966
1981
|
emerald: {
|
|
1967
1982
|
dark: "bg-emerald-500/10",
|
|
@@ -2002,19 +2017,19 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2002
2017
|
}[t.iconColor];
|
|
2003
2018
|
return n.value ? e.dark : e.light;
|
|
2004
2019
|
});
|
|
2005
|
-
return (t, n) => (
|
|
2020
|
+
return (t, n) => (D(), c("header", { class: b(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [l("div", { class: b(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [l("div", yr, [t.$slots.icon ? (D(), c("div", {
|
|
2006
2021
|
key: 0,
|
|
2007
|
-
class:
|
|
2008
|
-
}, [j(t.$slots, "icon", { iconClass: o.value })], 2)) : s("", !0), l("div", null, [l("h1", { class:
|
|
2022
|
+
class: b(["w-10 h-10 rounded-lg flex items-center justify-center", i.value])
|
|
2023
|
+
}, [j(t.$slots, "icon", { iconClass: o.value })], 2)) : s("", !0), l("div", null, [l("h1", { class: b(["text-2xl font-bold", [F(r).primaryTextSoft, e.accent ? "relative pl-3.5 tracking-tight" : ""]]) }, [e.accent ? (D(), c("span", br)) : s("", !0), f(" " + P(e.title), 1)], 2), e.subtitle || t.$slots.subtitle ? (D(), c("p", {
|
|
2009
2024
|
key: 0,
|
|
2010
|
-
class:
|
|
2011
|
-
}, [j(t.$slots, "subtitle", {}, () => [f(P(e.subtitle), 1)])], 2)) : s("", !0)])]), l("div",
|
|
2025
|
+
class: b(["max-w-[72ch] text-sm", F(r).dimTextAlt])
|
|
2026
|
+
}, [j(t.$slots, "subtitle", {}, () => [f(P(e.subtitle), 1)])], 2)) : s("", !0)])]), l("div", xr, [j(t.$slots, "actions")])], 2)], 2));
|
|
2012
2027
|
}
|
|
2013
|
-
}),
|
|
2028
|
+
}), Cr = [
|
|
2014
2029
|
"type",
|
|
2015
2030
|
"disabled",
|
|
2016
2031
|
"title"
|
|
2017
|
-
],
|
|
2032
|
+
], wr = { key: 0 }, Tr = /* @__PURE__ */ m({
|
|
2018
2033
|
__name: "BaseToolbarButton",
|
|
2019
2034
|
props: {
|
|
2020
2035
|
label: { default: "" },
|
|
@@ -2028,7 +2043,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2028
2043
|
},
|
|
2029
2044
|
emits: ["click"],
|
|
2030
2045
|
setup(e) {
|
|
2031
|
-
let t = e, { isDark: n } =
|
|
2046
|
+
let t = e, { isDark: n } = U(), r = {
|
|
2032
2047
|
neutral: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2033
2048
|
danger: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2034
2049
|
ghost: "h-9 px-4 rounded-md font-semibold disabled:opacity-40 disabled:hover:bg-slate-50 dark:disabled:hover:bg-slate-900"
|
|
@@ -2049,20 +2064,20 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2049
2064
|
}[t.variant];
|
|
2050
2065
|
return [r[t.variant], n.value ? e.dark : e.light];
|
|
2051
2066
|
});
|
|
2052
|
-
return (t, n) => (
|
|
2067
|
+
return (t, n) => (D(), c("button", {
|
|
2053
2068
|
type: e.type,
|
|
2054
2069
|
disabled: e.disabled,
|
|
2055
2070
|
title: e.title,
|
|
2056
|
-
class:
|
|
2071
|
+
class: b(["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]),
|
|
2057
2072
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2058
|
-
}, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (
|
|
2073
|
+
}, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (D(), c("span", wr, P(e.label), 1)) : s("", !0)], 10, Cr));
|
|
2059
2074
|
}
|
|
2060
|
-
}),
|
|
2075
|
+
}), Er = [
|
|
2061
2076
|
"type",
|
|
2062
2077
|
"disabled",
|
|
2063
2078
|
"title",
|
|
2064
2079
|
"aria-label"
|
|
2065
|
-
],
|
|
2080
|
+
], Dr = { key: 0 }, Or = /* @__PURE__ */ m({
|
|
2066
2081
|
__name: "BaseActionButton",
|
|
2067
2082
|
props: {
|
|
2068
2083
|
label: { default: "" },
|
|
@@ -2081,7 +2096,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2081
2096
|
},
|
|
2082
2097
|
emits: ["click"],
|
|
2083
2098
|
setup(e) {
|
|
2084
|
-
let t = e, { isDark: n } =
|
|
2099
|
+
let t = e, { isDark: n } = U(), r = a(() => {
|
|
2085
2100
|
let e = {
|
|
2086
2101
|
emerald: {
|
|
2087
2102
|
dark: "text-emerald-400 hover:bg-emerald-500/10",
|
|
@@ -2154,16 +2169,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2154
2169
|
}[t.color];
|
|
2155
2170
|
return n.value ? e.dark : e.light;
|
|
2156
2171
|
}), o = a(() => t.disabled ? `${i.value} opacity-50 cursor-not-allowed` : `${r.value} cursor-pointer`);
|
|
2157
|
-
return (t, n) => (
|
|
2172
|
+
return (t, n) => (D(), c("button", {
|
|
2158
2173
|
type: e.type,
|
|
2159
2174
|
disabled: e.disabled,
|
|
2160
2175
|
title: e.title,
|
|
2161
2176
|
"aria-label": e.ariaLabel,
|
|
2162
|
-
class:
|
|
2177
|
+
class: b(["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]]),
|
|
2163
2178
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2164
|
-
}, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (
|
|
2179
|
+
}, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (D(), c("span", Dr, P(e.label), 1)) : s("", !0)], 10, Er));
|
|
2165
2180
|
}
|
|
2166
|
-
}),
|
|
2181
|
+
}), kr = ["title", "aria-label"], Ar = /* @__PURE__ */ m({
|
|
2167
2182
|
__name: "BaseCopyButton",
|
|
2168
2183
|
props: {
|
|
2169
2184
|
text: {},
|
|
@@ -2174,7 +2189,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2174
2189
|
},
|
|
2175
2190
|
emits: ["copied", "error"],
|
|
2176
2191
|
setup(e, { emit: t }) {
|
|
2177
|
-
let n = e, r = t, { isDark: i } =
|
|
2192
|
+
let n = e, r = t, { isDark: i } = U(), s = k(!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"}`);
|
|
2178
2193
|
async function p(e) {
|
|
2179
2194
|
try {
|
|
2180
2195
|
if (navigator.clipboard?.writeText) {
|
|
@@ -2196,36 +2211,36 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2196
2211
|
r("error", e);
|
|
2197
2212
|
}
|
|
2198
2213
|
}
|
|
2199
|
-
return
|
|
2214
|
+
return E(() => {
|
|
2200
2215
|
l && clearTimeout(l);
|
|
2201
|
-
}), (t, n) => (
|
|
2216
|
+
}), (t, n) => (D(), c("button", {
|
|
2202
2217
|
type: "button",
|
|
2203
2218
|
title: u.value,
|
|
2204
2219
|
"aria-label": d.value,
|
|
2205
|
-
class:
|
|
2220
|
+
class: b(f.value),
|
|
2206
2221
|
onClick: m
|
|
2207
|
-
}, [s.value ? (
|
|
2222
|
+
}, [s.value ? (D(), o(F(ye), {
|
|
2208
2223
|
key: 0,
|
|
2209
|
-
class:
|
|
2224
|
+
class: b(e.iconClass),
|
|
2210
2225
|
"aria-hidden": "true"
|
|
2211
|
-
}, null, 8, ["class"])) : (
|
|
2226
|
+
}, null, 8, ["class"])) : (D(), o(F(be), {
|
|
2212
2227
|
key: 1,
|
|
2213
|
-
class:
|
|
2228
|
+
class: b(e.iconClass),
|
|
2214
2229
|
"aria-hidden": "true"
|
|
2215
|
-
}, null, 8, ["class"]))], 10,
|
|
2230
|
+
}, null, 8, ["class"]))], 10, kr));
|
|
2216
2231
|
}
|
|
2217
|
-
}),
|
|
2232
|
+
}), jr = ["disabled", "aria-busy"], Mr = {
|
|
2218
2233
|
key: 0,
|
|
2219
2234
|
class: "w-5 h-5 animate-spin shrink-0",
|
|
2220
2235
|
viewBox: "0 0 24 24",
|
|
2221
2236
|
fill: "none",
|
|
2222
2237
|
"aria-hidden": "true"
|
|
2223
|
-
},
|
|
2238
|
+
}, Nr = {
|
|
2224
2239
|
key: 1,
|
|
2225
2240
|
class: "w-5 h-5 shrink-0",
|
|
2226
2241
|
viewBox: "0 0 48 48",
|
|
2227
2242
|
"aria-hidden": "true"
|
|
2228
|
-
},
|
|
2243
|
+
}, Pr = /* @__PURE__ */ m({
|
|
2229
2244
|
__name: "BaseGoogleSignInButton",
|
|
2230
2245
|
props: {
|
|
2231
2246
|
label: { default: "Sign in with Google" },
|
|
@@ -2244,17 +2259,17 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2244
2259
|
},
|
|
2245
2260
|
emits: ["click"],
|
|
2246
2261
|
setup(e, { emit: t }) {
|
|
2247
|
-
let n = e, r = t, { isDark: i } =
|
|
2262
|
+
let n = e, r = t, { isDark: i } = U(), o = a(() => n.disabled || n.loading);
|
|
2248
2263
|
function s() {
|
|
2249
2264
|
o.value || r("click");
|
|
2250
2265
|
}
|
|
2251
|
-
return (t, n) => (
|
|
2266
|
+
return (t, n) => (D(), c("button", {
|
|
2252
2267
|
type: "button",
|
|
2253
2268
|
disabled: o.value,
|
|
2254
2269
|
"aria-busy": e.loading,
|
|
2255
2270
|
onClick: s,
|
|
2256
|
-
class:
|
|
2257
|
-
}, [e.loading ? (
|
|
2271
|
+
class: b(["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 ? (D(), c("svg", Mr, [...n[0] ||= [l("circle", {
|
|
2258
2273
|
class: "opacity-25",
|
|
2259
2274
|
cx: "12",
|
|
2260
2275
|
cy: "12",
|
|
@@ -2265,18 +2280,18 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2265
2280
|
class: "opacity-75",
|
|
2266
2281
|
fill: "currentColor",
|
|
2267
2282
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2268
|
-
}, null, -1)]])) : (
|
|
2283
|
+
}, null, -1)]])) : (D(), c("svg", Nr, [...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, jr));
|
|
2269
2284
|
}
|
|
2270
|
-
}),
|
|
2285
|
+
}), Fr = {
|
|
2271
2286
|
key: 0,
|
|
2272
2287
|
class: "flex justify-center mb-6"
|
|
2273
|
-
},
|
|
2288
|
+
}, Ir = { class: "mb-6 text-center" }, Lr = { class: "flex items-center gap-3 my-5" }, Rr = ["disabled"], zr = { class: "flex items-center justify-between mb-1.5" }, Br = { class: "relative" }, Vr = ["type", "disabled"], Hr = ["aria-label", "aria-pressed"], Ur = ["disabled"], Wr = ["disabled", "aria-busy"], Gr = {
|
|
2274
2289
|
key: 0,
|
|
2275
2290
|
class: "w-4 h-4 animate-spin",
|
|
2276
2291
|
viewBox: "0 0 24 24",
|
|
2277
2292
|
fill: "none",
|
|
2278
2293
|
"aria-hidden": "true"
|
|
2279
|
-
},
|
|
2294
|
+
}, Kr = /* @__PURE__ */ m({
|
|
2280
2295
|
__name: "BaseLoginForm",
|
|
2281
2296
|
props: {
|
|
2282
2297
|
title: { default: "Sign in" },
|
|
@@ -2302,7 +2317,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2302
2317
|
},
|
|
2303
2318
|
emits: ["submit", "google-sign-in"],
|
|
2304
2319
|
setup(t, { emit: n }) {
|
|
2305
|
-
let r = t, i = n, { isDark: o } =
|
|
2320
|
+
let r = t, i = n, { isDark: o } = U(), u = X(), d = k(""), m = k(""), h = k(!1), g = k(!1), _ = a(() => r.loading || r.googleLoading);
|
|
2306
2321
|
function v() {
|
|
2307
2322
|
_.value || i("submit", {
|
|
2308
2323
|
email: d.value,
|
|
@@ -2310,25 +2325,25 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2310
2325
|
...r.showRemember ? { remember: h.value } : {}
|
|
2311
2326
|
});
|
|
2312
2327
|
}
|
|
2313
|
-
return (n, r) => (
|
|
2314
|
-
n.$slots.logo ? (
|
|
2315
|
-
l("div",
|
|
2328
|
+
return (n, r) => (D(), c("div", { class: b(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", F(u).card]) }, [
|
|
2329
|
+
n.$slots.logo ? (D(), c("div", Fr, [j(n.$slots, "logo")])) : s("", !0),
|
|
2330
|
+
l("div", Ir, [l("h1", { class: b(["text-xl font-semibold", F(u).primaryText]) }, P(t.title), 3), t.subtitle ? (D(), c("p", {
|
|
2316
2331
|
key: 0,
|
|
2317
|
-
class:
|
|
2332
|
+
class: b(["mt-1 text-sm", F(u).mutedText])
|
|
2318
2333
|
}, P(t.subtitle), 3)) : s("", !0)]),
|
|
2319
|
-
t.error ? (
|
|
2334
|
+
t.error ? (D(), c("div", {
|
|
2320
2335
|
key: 1,
|
|
2321
2336
|
role: "alert",
|
|
2322
|
-
class:
|
|
2337
|
+
class: b(["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"])
|
|
2323
2338
|
}, P(t.error), 3)) : s("", !0),
|
|
2324
|
-
t.showGoogle ? (
|
|
2339
|
+
t.showGoogle ? (D(), c(e, { key: 2 }, [p(Pr, {
|
|
2325
2340
|
loading: t.googleLoading,
|
|
2326
2341
|
disabled: t.loading,
|
|
2327
2342
|
onClick: r[0] ||= (e) => i("google-sign-in")
|
|
2328
|
-
}, null, 8, ["loading", "disabled"]), l("div",
|
|
2329
|
-
l("span", { class:
|
|
2330
|
-
l("span", { class:
|
|
2331
|
-
l("span", { class:
|
|
2343
|
+
}, null, 8, ["loading", "disabled"]), l("div", Lr, [
|
|
2344
|
+
l("span", { class: b(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
|
|
2345
|
+
l("span", { class: b(["text-xs uppercase tracking-wider", F(u).dimTextAlt]) }, "or", 2),
|
|
2346
|
+
l("span", { class: b(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
|
|
2332
2347
|
])], 64)) : s("", !0),
|
|
2333
2348
|
l("form", {
|
|
2334
2349
|
class: "space-y-4",
|
|
@@ -2336,7 +2351,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2336
2351
|
}, [
|
|
2337
2352
|
l("div", null, [l("label", {
|
|
2338
2353
|
for: "login-email",
|
|
2339
|
-
class:
|
|
2354
|
+
class: b(["block mb-1.5 text-sm font-medium", F(u).label])
|
|
2340
2355
|
}, " Email ", 2), R(l("input", {
|
|
2341
2356
|
id: "login-email",
|
|
2342
2357
|
"onUpdate:modelValue": r[1] ||= (e) => d.value = e,
|
|
@@ -2346,12 +2361,12 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2346
2361
|
required: "",
|
|
2347
2362
|
disabled: _.value,
|
|
2348
2363
|
placeholder: "you@example.com",
|
|
2349
|
-
class:
|
|
2350
|
-
}, null, 10,
|
|
2351
|
-
l("div", null, [l("div",
|
|
2364
|
+
class: b(["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, Rr), [[ae, d.value]])]),
|
|
2366
|
+
l("div", null, [l("div", zr, [l("label", {
|
|
2352
2367
|
for: "login-password",
|
|
2353
|
-
class:
|
|
2354
|
-
}, " Password ", 2), j(n.$slots, "forgot")]), l("div",
|
|
2368
|
+
class: b(["block text-sm font-medium", F(u).label])
|
|
2369
|
+
}, " Password ", 2), j(n.$slots, "forgot")]), l("div", Br, [R(l("input", {
|
|
2355
2370
|
id: "login-password",
|
|
2356
2371
|
"onUpdate:modelValue": r[2] ||= (e) => m.value = e,
|
|
2357
2372
|
type: g.value ? "text" : "password",
|
|
@@ -2360,29 +2375,29 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2360
2375
|
required: "",
|
|
2361
2376
|
disabled: _.value,
|
|
2362
2377
|
placeholder: "••••••••",
|
|
2363
|
-
class:
|
|
2364
|
-
}, null, 10,
|
|
2378
|
+
class: b(["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, Vr), [[ie, m.value]]), l("button", {
|
|
2365
2380
|
type: "button",
|
|
2366
2381
|
onClick: r[3] ||= (e) => g.value = !g.value,
|
|
2367
2382
|
"aria-label": g.value ? "Hide password" : "Show password",
|
|
2368
2383
|
"aria-pressed": g.value,
|
|
2369
|
-
class:
|
|
2370
|
-
}, P(g.value ? "Hide" : "Show"), 11,
|
|
2371
|
-
t.showRemember ? (
|
|
2384
|
+
class: b(["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, Hr)])]),
|
|
2386
|
+
t.showRemember ? (D(), c("label", {
|
|
2372
2387
|
key: 0,
|
|
2373
|
-
class:
|
|
2388
|
+
class: b(["flex items-center gap-2 text-sm cursor-pointer select-none", F(u).bodyText])
|
|
2374
2389
|
}, [R(l("input", {
|
|
2375
2390
|
"onUpdate:modelValue": r[4] ||= (e) => h.value = e,
|
|
2376
2391
|
type: "checkbox",
|
|
2377
2392
|
disabled: _.value,
|
|
2378
2393
|
class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
|
|
2379
|
-
}, null, 8,
|
|
2394
|
+
}, null, 8, Ur), [[re, h.value]]), r[5] ||= f(" Remember me ", -1)], 2)) : s("", !0),
|
|
2380
2395
|
l("button", {
|
|
2381
2396
|
type: "submit",
|
|
2382
2397
|
disabled: _.value,
|
|
2383
2398
|
"aria-busy": t.loading,
|
|
2384
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"
|
|
2385
|
-
}, [t.loading ? (
|
|
2400
|
+
}, [t.loading ? (D(), c("svg", Gr, [...r[6] ||= [l("circle", {
|
|
2386
2401
|
class: "opacity-25",
|
|
2387
2402
|
cx: "12",
|
|
2388
2403
|
cy: "12",
|
|
@@ -2393,18 +2408,18 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2393
2408
|
class: "opacity-75",
|
|
2394
2409
|
fill: "currentColor",
|
|
2395
2410
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2396
|
-
}, null, -1)]])) : s("", !0), f(" " + P(t.submitLabel), 1)], 8,
|
|
2411
|
+
}, null, -1)]])) : s("", !0), f(" " + P(t.submitLabel), 1)], 8, Wr)
|
|
2397
2412
|
], 32),
|
|
2398
|
-
n.$slots.footer ? (
|
|
2413
|
+
n.$slots.footer ? (D(), c("div", {
|
|
2399
2414
|
key: 3,
|
|
2400
|
-
class:
|
|
2415
|
+
class: b(["mt-6 text-center text-sm", F(u).mutedText])
|
|
2401
2416
|
}, [j(n.$slots, "footer")], 2)) : s("", !0)
|
|
2402
2417
|
], 2));
|
|
2403
2418
|
}
|
|
2404
|
-
}),
|
|
2419
|
+
}), qr = ["aria-label"], Jr = { class: "flex-1 overflow-y-auto" }, Yr = {
|
|
2405
2420
|
key: 0,
|
|
2406
2421
|
class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
|
|
2407
|
-
},
|
|
2422
|
+
}, Xr = ["onClick"], Zr = { class: "min-w-0 flex-1" }, Qr = { class: "flex items-baseline justify-between gap-2" }, $r = /* @__PURE__ */ m({
|
|
2408
2423
|
__name: "BaseNotificationPanel",
|
|
2409
2424
|
props: {
|
|
2410
2425
|
title: { default: "Notifications" },
|
|
@@ -2416,7 +2431,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2416
2431
|
},
|
|
2417
2432
|
emits: ["select"],
|
|
2418
2433
|
setup(n, { emit: i }) {
|
|
2419
|
-
let u = i, { isDark: d } =
|
|
2434
|
+
let u = i, { isDark: d } = U(), m = X(), { notifications: h, unreadCount: g, open: _, closePanel: v, markAllRead: y, markRead: x } = Gn(), S = {
|
|
2420
2435
|
info: "bg-sky-500",
|
|
2421
2436
|
success: "bg-emerald-500",
|
|
2422
2437
|
warning: "bg-amber-500",
|
|
@@ -2425,15 +2440,15 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2425
2440
|
function w(e) {
|
|
2426
2441
|
x(e), u("select", e);
|
|
2427
2442
|
}
|
|
2428
|
-
return
|
|
2443
|
+
return pn(() => {
|
|
2429
2444
|
_.value && v();
|
|
2430
|
-
}), (i, a) => (
|
|
2445
|
+
}), (i, a) => (D(), o(t, { to: "body" }, [p(r, {
|
|
2431
2446
|
"enter-active-class": "transition-opacity duration-200",
|
|
2432
2447
|
"enter-from-class": "opacity-0",
|
|
2433
2448
|
"leave-active-class": "transition-opacity duration-200",
|
|
2434
2449
|
"leave-to-class": "opacity-0"
|
|
2435
2450
|
}, {
|
|
2436
|
-
default: L(() => [F(_) ? (
|
|
2451
|
+
default: L(() => [F(_) ? (D(), c("div", {
|
|
2437
2452
|
key: 0,
|
|
2438
2453
|
class: "fixed inset-0 z-[60] bg-black/50",
|
|
2439
2454
|
"aria-hidden": "true",
|
|
@@ -2446,55 +2461,55 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2446
2461
|
"leave-active-class": "transition-transform duration-300 ease-in",
|
|
2447
2462
|
"leave-to-class": "-translate-x-full"
|
|
2448
2463
|
}, {
|
|
2449
|
-
default: L(() => [F(_) ? (
|
|
2464
|
+
default: L(() => [F(_) ? (D(), c("aside", {
|
|
2450
2465
|
key: 0,
|
|
2451
2466
|
role: "dialog",
|
|
2452
2467
|
"aria-modal": "true",
|
|
2453
2468
|
"aria-label": n.title,
|
|
2454
|
-
class:
|
|
2469
|
+
class: b(["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"])
|
|
2455
2470
|
}, [
|
|
2456
|
-
l("div", { class:
|
|
2471
|
+
l("div", { class: b(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", F(m).border]) }, [l("h2", { class: b(["text-lg font-semibold flex items-center gap-2", F(m).primaryText]) }, [f(P(n.title) + " ", 1), l("span", { class: b(["text-sm font-normal", F(m).dimTextAlt]) }, "— " + P(C.value), 3)], 2), l("button", {
|
|
2457
2472
|
type: "button",
|
|
2458
2473
|
onClick: a[1] ||= (...e) => F(v) && F(v)(...e),
|
|
2459
2474
|
"aria-label": "Close notifications",
|
|
2460
|
-
class:
|
|
2461
|
-
}, [p(F(
|
|
2475
|
+
class: b(["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(Ae), {
|
|
2462
2477
|
class: "w-5 h-5",
|
|
2463
2478
|
"aria-hidden": "true"
|
|
2464
2479
|
})], 2)], 2),
|
|
2465
|
-
n.showMarkAllRead && F(g) > 0 ? (
|
|
2480
|
+
n.showMarkAllRead && F(g) > 0 ? (D(), c("div", {
|
|
2466
2481
|
key: 0,
|
|
2467
|
-
class:
|
|
2482
|
+
class: b(["px-5 py-2 border-b shrink-0 flex justify-end", F(m).border])
|
|
2468
2483
|
}, [l("button", {
|
|
2469
2484
|
type: "button",
|
|
2470
|
-
onClick: a[2] ||= (...e) => F(
|
|
2471
|
-
class:
|
|
2485
|
+
onClick: a[2] ||= (...e) => F(y) && F(y)(...e),
|
|
2486
|
+
class: b(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", F(m).emeraldText])
|
|
2472
2487
|
}, " Mark all as read ", 2)], 2)) : s("", !0),
|
|
2473
|
-
l("div",
|
|
2474
|
-
class:
|
|
2488
|
+
l("div", Jr, [C.value === 0 ? (D(), c("div", Yr, [p(F(fe), {
|
|
2489
|
+
class: b(["w-10 h-10", F(m).illustration]),
|
|
2475
2490
|
"aria-hidden": "true"
|
|
2476
|
-
}, null, 8, ["class"]), l("p", { class:
|
|
2491
|
+
}, null, 8, ["class"]), l("p", { class: b(["text-sm", F(m).mutedText]) }, P(n.emptyText), 3)])) : (D(), c("ul", {
|
|
2477
2492
|
key: 1,
|
|
2478
|
-
class:
|
|
2479
|
-
}, [(
|
|
2493
|
+
class: b(["divide-y", F(d) ? "divide-gray-800" : "divide-gray-100"])
|
|
2494
|
+
}, [(D(!0), c(e, null, A(F(h), (e) => (D(), c("li", { key: e.id }, [l("button", {
|
|
2480
2495
|
type: "button",
|
|
2481
2496
|
onClick: (t) => w(e.id),
|
|
2482
|
-
class:
|
|
2497
|
+
class: b(["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"]])
|
|
2483
2498
|
}, [l("span", {
|
|
2484
|
-
class:
|
|
2499
|
+
class: b(["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"]]),
|
|
2485
2500
|
"aria-hidden": "true"
|
|
2486
|
-
}, null, 2), l("span",
|
|
2501
|
+
}, null, 2), l("span", Zr, [l("span", Qr, [l("span", { class: b(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", F(m).primaryTextSoft]]) }, P(e.title), 3), e.time ? (D(), c("span", {
|
|
2487
2502
|
key: 0,
|
|
2488
|
-
class:
|
|
2489
|
-
}, P(e.time), 3)) : s("", !0)]), e.message ? (
|
|
2503
|
+
class: b(["text-xs shrink-0", F(m).dimText])
|
|
2504
|
+
}, P(e.time), 3)) : s("", !0)]), e.message ? (D(), c("span", {
|
|
2490
2505
|
key: 0,
|
|
2491
|
-
class:
|
|
2492
|
-
}, P(e.message), 3)) : s("", !0)])], 10,
|
|
2493
|
-
], 10,
|
|
2506
|
+
class: b(["mt-0.5 block text-sm", F(m).mutedText])
|
|
2507
|
+
}, P(e.message), 3)) : s("", !0)])], 10, Xr)]))), 128))], 2))])
|
|
2508
|
+
], 10, qr)) : s("", !0)]),
|
|
2494
2509
|
_: 1
|
|
2495
2510
|
})]));
|
|
2496
2511
|
}
|
|
2497
|
-
}),
|
|
2512
|
+
}), ei = ["disabled"], ti = /* @__PURE__ */ m({
|
|
2498
2513
|
__name: "BaseChipButton",
|
|
2499
2514
|
props: {
|
|
2500
2515
|
size: { default: "sm" },
|
|
@@ -2505,37 +2520,37 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2505
2520
|
},
|
|
2506
2521
|
emits: ["click"],
|
|
2507
2522
|
setup(e, { emit: t }) {
|
|
2508
|
-
let n = t, { isDark: r } =
|
|
2509
|
-
return (t, i) => (
|
|
2523
|
+
let n = t, { isDark: r } = U();
|
|
2524
|
+
return (t, i) => (D(), c("button", {
|
|
2510
2525
|
type: "button",
|
|
2511
2526
|
disabled: e.disabled,
|
|
2512
|
-
class:
|
|
2527
|
+
class: b(["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"]]),
|
|
2513
2528
|
onClick: i[0] ||= (e) => n("click")
|
|
2514
|
-
}, [j(t.$slots, "default")], 10,
|
|
2529
|
+
}, [j(t.$slots, "default")], 10, ei));
|
|
2515
2530
|
}
|
|
2516
|
-
}),
|
|
2531
|
+
}), ni = /* @__PURE__ */ m({
|
|
2517
2532
|
__name: "BaseRemoveButton",
|
|
2518
2533
|
emits: ["click"],
|
|
2519
2534
|
setup(e, { emit: t }) {
|
|
2520
2535
|
let n = t;
|
|
2521
|
-
return (e, t) => (
|
|
2536
|
+
return (e, t) => (D(), c("button", {
|
|
2522
2537
|
type: "button",
|
|
2523
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",
|
|
2524
2539
|
onClick: t[0] ||= (e) => n("click")
|
|
2525
2540
|
}, " × "));
|
|
2526
2541
|
}
|
|
2527
|
-
}),
|
|
2542
|
+
}), ri = { class: "relative flex h-2 w-2" }, ii = {
|
|
2528
2543
|
key: 0,
|
|
2529
2544
|
class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
|
|
2530
2545
|
"aria-hidden": "true"
|
|
2531
|
-
},
|
|
2546
|
+
}, ai = /* @__PURE__ */ m({
|
|
2532
2547
|
__name: "BaseStatusPill",
|
|
2533
2548
|
props: {
|
|
2534
2549
|
status: {},
|
|
2535
2550
|
label: {}
|
|
2536
2551
|
},
|
|
2537
2552
|
setup(e) {
|
|
2538
|
-
let t = e, { isDark: n } =
|
|
2553
|
+
let t = e, { isDark: n } = U(), r = a(() => {
|
|
2539
2554
|
switch (t.status) {
|
|
2540
2555
|
case "ok": return n.value ? "bg-emerald-500/10 text-emerald-400" : "bg-emerald-50 text-emerald-700";
|
|
2541
2556
|
case "error": return n.value ? "bg-red-500/10 text-red-400" : "bg-red-50 text-red-700";
|
|
@@ -2548,13 +2563,13 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2548
2563
|
default: return "bg-gray-400";
|
|
2549
2564
|
}
|
|
2550
2565
|
});
|
|
2551
|
-
return (t, n) => (
|
|
2566
|
+
return (t, n) => (D(), c("div", { class: b(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [l("span", ri, [e.status === "ok" ? (D(), c("span", ii)) : s("", !0), l("span", { class: b(["relative inline-flex rounded-full h-2 w-2", i.value]) }, null, 2)]), f(" " + P(e.label), 1)], 2));
|
|
2552
2567
|
}
|
|
2553
|
-
}),
|
|
2568
|
+
}), oi = { class: "text-sm font-medium" }, si = [
|
|
2554
2569
|
"accept",
|
|
2555
2570
|
"multiple",
|
|
2556
2571
|
"disabled"
|
|
2557
|
-
],
|
|
2572
|
+
], ci = /* @__PURE__ */ m({
|
|
2558
2573
|
__name: "BaseFileDropzone",
|
|
2559
2574
|
props: {
|
|
2560
2575
|
label: {},
|
|
@@ -2571,7 +2586,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2571
2586
|
},
|
|
2572
2587
|
emits: ["files"],
|
|
2573
2588
|
setup(e, { emit: t }) {
|
|
2574
|
-
let n = e, r = t, { isDark: i } =
|
|
2589
|
+
let n = e, r = t, { isDark: i } = U(), a = k(!1);
|
|
2575
2590
|
function o(e) {
|
|
2576
2591
|
let t = e.target, n = Array.from(t.files ?? []);
|
|
2577
2592
|
t.value = "", n.length && r("files", n);
|
|
@@ -2584,8 +2599,8 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2584
2599
|
let t = Array.from(e.dataTransfer?.files ?? []);
|
|
2585
2600
|
t.length && r("files", n.multiple ? t : t.slice(0, 1));
|
|
2586
2601
|
}
|
|
2587
|
-
return (t, n) => (
|
|
2588
|
-
class:
|
|
2602
|
+
return (t, n) => (D(), c("label", {
|
|
2603
|
+
class: b(["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"]]),
|
|
2589
2604
|
onDragover: z(u, ["prevent"]),
|
|
2590
2605
|
onDragleave: n[0] ||= z((e) => a.value = !1, ["prevent"]),
|
|
2591
2606
|
onDrop: z(d, ["prevent"])
|
|
@@ -2602,10 +2617,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2602
2617
|
"stroke-linejoin": "round",
|
|
2603
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"
|
|
2604
2619
|
})], -1)]),
|
|
2605
|
-
l("p",
|
|
2606
|
-
e.hint ? (
|
|
2620
|
+
l("p", oi, P(e.label), 1),
|
|
2621
|
+
e.hint ? (D(), c("p", {
|
|
2607
2622
|
key: 0,
|
|
2608
|
-
class:
|
|
2623
|
+
class: b(["text-xs", F(i) ? "text-gray-500" : "text-gray-400"])
|
|
2609
2624
|
}, P(e.hint), 3)) : s("", !0),
|
|
2610
2625
|
l("input", {
|
|
2611
2626
|
type: "file",
|
|
@@ -2614,10 +2629,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2614
2629
|
multiple: e.multiple,
|
|
2615
2630
|
disabled: e.disabled,
|
|
2616
2631
|
onChange: o
|
|
2617
|
-
}, null, 40,
|
|
2632
|
+
}, null, 40, si)
|
|
2618
2633
|
], 34));
|
|
2619
2634
|
}
|
|
2620
|
-
}),
|
|
2635
|
+
}), li = /* @__PURE__ */ m({
|
|
2621
2636
|
__name: "BaseCodeBlock",
|
|
2622
2637
|
props: {
|
|
2623
2638
|
code: {},
|
|
@@ -2626,7 +2641,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2626
2641
|
maxHeightClass: { default: "" }
|
|
2627
2642
|
},
|
|
2628
2643
|
setup(e) {
|
|
2629
|
-
let t = e, { isDark: n } =
|
|
2644
|
+
let t = e, { isDark: n } = U(), r = {
|
|
2630
2645
|
soft: {
|
|
2631
2646
|
dark: "bg-gray-800/70 text-gray-300",
|
|
2632
2647
|
light: "bg-gray-100 text-gray-700"
|
|
@@ -2642,13 +2657,13 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2642
2657
|
let e = r[t.variant];
|
|
2643
2658
|
return n.value ? e.dark : e.light;
|
|
2644
2659
|
}), s = a(() => i[t.size]);
|
|
2645
|
-
return (t, n) => (
|
|
2660
|
+
return (t, n) => (D(), c("pre", { class: b(["font-mono overflow-auto", [
|
|
2646
2661
|
s.value,
|
|
2647
2662
|
o.value,
|
|
2648
2663
|
e.maxHeightClass
|
|
2649
2664
|
]]) }, P(e.code), 3));
|
|
2650
2665
|
}
|
|
2651
|
-
}),
|
|
2666
|
+
}), ui = ["value", "type"], di = /* @__PURE__ */ m({
|
|
2652
2667
|
__name: "BaseInput",
|
|
2653
2668
|
props: {
|
|
2654
2669
|
modelValue: { default: "" },
|
|
@@ -2665,14 +2680,14 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2665
2680
|
function r(e) {
|
|
2666
2681
|
n("update:modelValue", e.target.value);
|
|
2667
2682
|
}
|
|
2668
|
-
return (t, n) => (
|
|
2683
|
+
return (t, n) => (D(), c("input", {
|
|
2669
2684
|
value: e.modelValue,
|
|
2670
2685
|
type: e.type,
|
|
2671
|
-
class:
|
|
2686
|
+
class: b(["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"]]),
|
|
2672
2687
|
onInput: r
|
|
2673
|
-
}, null, 42,
|
|
2688
|
+
}, null, 42, ui));
|
|
2674
2689
|
}
|
|
2675
|
-
}),
|
|
2690
|
+
}), fi = ["value"], pi = /* @__PURE__ */ m({
|
|
2676
2691
|
inheritAttrs: !1,
|
|
2677
2692
|
__name: "BaseSelect",
|
|
2678
2693
|
props: {
|
|
@@ -2689,27 +2704,27 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2689
2704
|
},
|
|
2690
2705
|
emits: ["update:modelValue"],
|
|
2691
2706
|
setup(e, { emit: t }) {
|
|
2692
|
-
let n = e, r =
|
|
2707
|
+
let n = e, r = ne(), i = () => {
|
|
2693
2708
|
let e = r.default?.() ?? [];
|
|
2694
|
-
return n.humanize ?
|
|
2709
|
+
return n.humanize ? Ue(e, ["option", "optgroup"]) : e;
|
|
2695
2710
|
}, a = t;
|
|
2696
2711
|
function o(e) {
|
|
2697
2712
|
a("update:modelValue", e.target.value);
|
|
2698
2713
|
}
|
|
2699
|
-
return (t, n) => (
|
|
2714
|
+
return (t, n) => (D(), c("div", { class: b(["relative", e.block ? "w-full" : "inline-block"]) }, [l("select", v(t.$attrs, {
|
|
2700
2715
|
value: e.modelValue,
|
|
2701
2716
|
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 pl-3 pr-9" : "py-1.5 pl-2.5 pr-8"],
|
|
2702
2717
|
onChange: o
|
|
2703
|
-
}), [p(i)], 16,
|
|
2704
|
-
class:
|
|
2718
|
+
}), [p(i)], 16, fi), p(F(_e), {
|
|
2719
|
+
class: b(["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"]),
|
|
2705
2720
|
"aria-hidden": "true"
|
|
2706
2721
|
}, null, 8, ["class"])], 2));
|
|
2707
2722
|
}
|
|
2708
|
-
}),
|
|
2723
|
+
}), mi = [
|
|
2709
2724
|
"disabled",
|
|
2710
2725
|
"aria-label",
|
|
2711
2726
|
"aria-expanded"
|
|
2712
|
-
],
|
|
2727
|
+
], hi = ["aria-label"], gi = ["aria-selected", "title"], _i = ["disabled", "onClick"], vi = /* @__PURE__ */ m({
|
|
2713
2728
|
__name: "BaseDropdown",
|
|
2714
2729
|
props: {
|
|
2715
2730
|
options: {},
|
|
@@ -2750,33 +2765,33 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2750
2765
|
function _(e) {
|
|
2751
2766
|
e.disabled || (i("update:modelValue", e.value), o.value = !1);
|
|
2752
2767
|
}
|
|
2753
|
-
|
|
2768
|
+
pn(() => {
|
|
2754
2769
|
o.value = !1;
|
|
2755
2770
|
});
|
|
2756
2771
|
function v(e) {
|
|
2757
2772
|
o.value && u.value && !u.value.contains(e.target) && (o.value = !1);
|
|
2758
2773
|
}
|
|
2759
|
-
return
|
|
2774
|
+
return w(() => document.addEventListener("click", v)), C(() => document.removeEventListener("click", v)), (n, r) => (D(), c("div", {
|
|
2760
2775
|
ref_key: "rootEl",
|
|
2761
2776
|
ref: u,
|
|
2762
|
-
class:
|
|
2777
|
+
class: b(t.block ? "relative w-full" : "relative inline-block")
|
|
2763
2778
|
}, [l("button", {
|
|
2764
2779
|
type: "button",
|
|
2765
|
-
class:
|
|
2780
|
+
class: b([f.value, t.block ? "w-full" : ""]),
|
|
2766
2781
|
disabled: t.disabled,
|
|
2767
2782
|
"aria-label": t.ariaLabel || void 0,
|
|
2768
2783
|
"aria-haspopup": "listbox",
|
|
2769
2784
|
"aria-expanded": o.value,
|
|
2770
2785
|
onClick: g
|
|
2771
|
-
}, [l("span", { class:
|
|
2772
|
-
class:
|
|
2786
|
+
}, [l("span", { class: b(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, P(d.value ? d.value.label : t.placeholder), 3), p(F(_e), {
|
|
2787
|
+
class: b(["shrink-0 transition-transform", [t.chevronClass, o.value ? "rotate-180" : ""]]),
|
|
2773
2788
|
"aria-hidden": "true"
|
|
2774
|
-
}, null, 8, ["class"])], 10,
|
|
2789
|
+
}, null, 8, ["class"])], 10, mi), o.value ? (D(), c("ul", {
|
|
2775
2790
|
key: 0,
|
|
2776
2791
|
role: "listbox",
|
|
2777
2792
|
"aria-label": t.ariaLabel || t.placeholder,
|
|
2778
2793
|
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"
|
|
2779
|
-
}, [(
|
|
2794
|
+
}, [(D(!0), c(e, null, A(t.options, (e) => (D(), c("li", {
|
|
2780
2795
|
key: String(e.value),
|
|
2781
2796
|
role: "option",
|
|
2782
2797
|
"aria-selected": e.value === t.modelValue,
|
|
@@ -2784,15 +2799,15 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2784
2799
|
}, [l("button", {
|
|
2785
2800
|
type: "button",
|
|
2786
2801
|
disabled: e.disabled,
|
|
2787
|
-
class:
|
|
2802
|
+
class: b(h(e)),
|
|
2788
2803
|
onClick: (t) => _(e)
|
|
2789
|
-
}, P(e.label), 11,
|
|
2804
|
+
}, P(e.label), 11, _i)], 8, gi))), 128))], 8, hi)) : s("", !0)], 2));
|
|
2790
2805
|
}
|
|
2791
|
-
}),
|
|
2806
|
+
}), yi = ["role", "aria-label"], bi = [
|
|
2792
2807
|
"aria-pressed",
|
|
2793
2808
|
"title",
|
|
2794
2809
|
"onClick"
|
|
2795
|
-
],
|
|
2810
|
+
], xi = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Si = /* @__PURE__ */ m({
|
|
2796
2811
|
__name: "BaseSegmentedControl",
|
|
2797
2812
|
props: {
|
|
2798
2813
|
options: {},
|
|
@@ -2809,22 +2824,22 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2809
2824
|
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");
|
|
2810
2825
|
function u(e) {
|
|
2811
2826
|
let t = e.value === r.modelValue;
|
|
2812
|
-
return r.optionClass ? r.optionClass(e, t) : t ? l.value :
|
|
2827
|
+
return r.optionClass ? r.optionClass(e, t) : t ? l.value : xi;
|
|
2813
2828
|
}
|
|
2814
|
-
return (n, r) => (
|
|
2829
|
+
return (n, r) => (D(), c("div", {
|
|
2815
2830
|
role: t.ariaLabel ? "group" : void 0,
|
|
2816
2831
|
"aria-label": t.ariaLabel || void 0,
|
|
2817
|
-
class:
|
|
2818
|
-
}, [(
|
|
2832
|
+
class: b(o.value)
|
|
2833
|
+
}, [(D(!0), c(e, null, A(t.options, (e) => (D(), c("button", {
|
|
2819
2834
|
key: String(e.value),
|
|
2820
2835
|
type: "button",
|
|
2821
|
-
class:
|
|
2836
|
+
class: b([s.value, u(e)]),
|
|
2822
2837
|
"aria-pressed": e.value === t.modelValue,
|
|
2823
2838
|
title: e.title,
|
|
2824
2839
|
onClick: (t) => i("update:modelValue", e.value)
|
|
2825
|
-
}, P(e.label), 11,
|
|
2840
|
+
}, P(e.label), 11, bi))), 128))], 10, yi));
|
|
2826
2841
|
}
|
|
2827
|
-
}),
|
|
2842
|
+
}), Ci = { class: "w-full text-sm" }, wi = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Ti = { class: "text-left border-b border-slate-200 dark:border-slate-700" }, Ei = { 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" }, Di = { key: 0 }, Oi = ["colspan"], ki = "overflow-x-auto rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700 dark:bg-slate-900", Ai = /* @__PURE__ */ m({
|
|
2828
2843
|
__name: "BaseTable",
|
|
2829
2844
|
props: {
|
|
2830
2845
|
columns: {},
|
|
@@ -2839,24 +2854,24 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2839
2854
|
}
|
|
2840
2855
|
},
|
|
2841
2856
|
setup(t) {
|
|
2842
|
-
return (n, r) => (
|
|
2857
|
+
return (n, r) => (D(), c("div", { class: b(t.card ? ki : void 0) }, [l("table", Ci, [l("thead", wi, [l("tr", Ti, [(D(!0), c(e, null, A(t.columns, (e, t) => (D(), c("th", {
|
|
2843
2858
|
key: t,
|
|
2844
|
-
class:
|
|
2845
|
-
}, P(e.label), 3))), 128))])]), l("tbody",
|
|
2859
|
+
class: b(["px-4 py-3", e.align === "right" ? "text-right" : ""])
|
|
2860
|
+
}, P(e.label), 3))), 128))])]), l("tbody", Ei, [t.empty ? (D(), c("tr", Di, [l("td", {
|
|
2846
2861
|
colspan: t.columns.length,
|
|
2847
2862
|
class: "px-4 py-12 text-center text-slate-500"
|
|
2848
|
-
}, [j(n.$slots, "empty", {}, () => [f(P(t.emptyText), 1)])], 8,
|
|
2863
|
+
}, [j(n.$slots, "empty", {}, () => [f(P(t.emptyText), 1)])], 8, Oi)])) : s("", !0), j(n.$slots, "default")])])], 2));
|
|
2849
2864
|
}
|
|
2850
|
-
}),
|
|
2865
|
+
}), ji = { class: "grid gap-3 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, Mi = {
|
|
2851
2866
|
key: 0,
|
|
2852
2867
|
class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
|
|
2853
|
-
},
|
|
2868
|
+
}, Ni = ["value"], Pi = {
|
|
2854
2869
|
key: 2,
|
|
2855
2870
|
class: "flex items-center gap-2 mt-4"
|
|
2856
|
-
},
|
|
2871
|
+
}, Fi = ["checked", "onChange"], Ii = { class: "text-sm text-slate-900 dark:text-slate-100" }, Li = {
|
|
2857
2872
|
key: 4,
|
|
2858
2873
|
class: "text-[11px] text-slate-400 mt-1"
|
|
2859
|
-
},
|
|
2874
|
+
}, Ri = /* @__PURE__ */ m({
|
|
2860
2875
|
__name: "BaseSpecFields",
|
|
2861
2876
|
props: {
|
|
2862
2877
|
specs: {},
|
|
@@ -2883,24 +2898,24 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2883
2898
|
let t = e.clipboardData?.getData("text") ?? "";
|
|
2884
2899
|
/^-?\d*$/.test(t.trim()) || e.preventDefault();
|
|
2885
2900
|
}
|
|
2886
|
-
return (n, f) => (
|
|
2887
|
-
f.type === "boolean" ? s("", !0) : (
|
|
2888
|
-
f.type === "select" ? (
|
|
2901
|
+
return (n, f) => (D(), c("div", ji, [(D(!0), c(e, null, A(t.specs, (f) => (D(), c("div", { key: f.key }, [
|
|
2902
|
+
f.type === "boolean" ? s("", !0) : (D(), c("label", Mi, P(f.label), 1)),
|
|
2903
|
+
f.type === "select" ? (D(), o(pi, {
|
|
2889
2904
|
key: 1,
|
|
2890
2905
|
modelValue: String(t.params[f.key] ?? ""),
|
|
2891
2906
|
"onUpdate:modelValue": (e) => r("update", f.key, e)
|
|
2892
2907
|
}, {
|
|
2893
|
-
default: L(() => [(
|
|
2908
|
+
default: L(() => [(D(!0), c(e, null, A(f.options ?? [], (e) => (D(), c("option", {
|
|
2894
2909
|
key: e,
|
|
2895
2910
|
value: e
|
|
2896
|
-
}, P(e), 9,
|
|
2911
|
+
}, P(e), 9, Ni))), 128))]),
|
|
2897
2912
|
_: 2
|
|
2898
|
-
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (
|
|
2913
|
+
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (D(), c("label", Pi, [l("input", {
|
|
2899
2914
|
checked: !!t.params[f.key],
|
|
2900
2915
|
type: "checkbox",
|
|
2901
2916
|
class: "h-4 w-4",
|
|
2902
2917
|
onChange: (e) => i(f.key, e)
|
|
2903
|
-
}, null, 40,
|
|
2918
|
+
}, null, 40, Fi), l("span", Ii, P(f.label), 1)])) : (D(), o(di, {
|
|
2904
2919
|
key: 3,
|
|
2905
2920
|
modelValue: t.params[f.key],
|
|
2906
2921
|
type: "number",
|
|
@@ -2919,11 +2934,11 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2919
2934
|
"onPaste",
|
|
2920
2935
|
"onUpdate:modelValue"
|
|
2921
2936
|
])),
|
|
2922
|
-
f.help ? (
|
|
2937
|
+
f.help ? (D(), c("p", Li, P(f.help), 1)) : s("", !0),
|
|
2923
2938
|
j(n.$slots, "after", { spec: f })
|
|
2924
2939
|
]))), 128))]));
|
|
2925
2940
|
}
|
|
2926
|
-
}),
|
|
2941
|
+
}), zi = { class: "mt-1.5 space-y-0.5 px-1" }, Bi = { class: "text-slate-400 dark:text-slate-500" }, Vi = /* @__PURE__ */ m({
|
|
2927
2942
|
__name: "BaseStatBreakdown",
|
|
2928
2943
|
props: {
|
|
2929
2944
|
items: {},
|
|
@@ -2942,16 +2957,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2942
2957
|
function i(e) {
|
|
2943
2958
|
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";
|
|
2944
2959
|
}
|
|
2945
|
-
return (n, a) => (
|
|
2960
|
+
return (n, a) => (D(), c("div", zi, [(D(!0), c(e, null, A(t.items, (e) => (D(), c("div", {
|
|
2946
2961
|
key: e.label,
|
|
2947
2962
|
class: "flex items-center justify-between text-[11px]"
|
|
2948
|
-
}, [l("span",
|
|
2963
|
+
}, [l("span", Bi, P(e.label), 1), l("span", { class: b(["font-mono tabular-nums font-medium", i(e.value)]) }, P(r(e.value)), 3)]))), 128))]));
|
|
2949
2964
|
}
|
|
2950
|
-
}),
|
|
2965
|
+
}), Hi = [
|
|
2951
2966
|
"disabled",
|
|
2952
2967
|
"title",
|
|
2953
2968
|
"aria-pressed"
|
|
2954
|
-
],
|
|
2969
|
+
], Ui = /* @__PURE__ */ m({
|
|
2955
2970
|
__name: "BaseFilterChip",
|
|
2956
2971
|
props: {
|
|
2957
2972
|
label: { default: "" },
|
|
@@ -2980,21 +2995,21 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
2980
2995
|
red: "border-red-500 bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-500",
|
|
2981
2996
|
slate: "border-slate-600 bg-slate-600 text-white hover:bg-slate-700 focus-visible:ring-emerald-500"
|
|
2982
2997
|
};
|
|
2983
|
-
return (r, i) => (
|
|
2998
|
+
return (r, i) => (D(), c("button", {
|
|
2984
2999
|
type: "button",
|
|
2985
3000
|
disabled: e.disabled,
|
|
2986
3001
|
title: e.title,
|
|
2987
3002
|
"aria-pressed": e.active,
|
|
2988
|
-
class:
|
|
2989
|
-
}, [j(r.$slots, "default", {}, () => [f(P(e.label), 1)])], 10,
|
|
3003
|
+
class: b(["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]])
|
|
3004
|
+
}, [j(r.$slots, "default", {}, () => [f(P(e.label), 1)])], 10, Hi));
|
|
2990
3005
|
}
|
|
2991
|
-
}),
|
|
3006
|
+
}), Wi = { class: "flex items-center justify-between mb-4" }, Gi = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, Ki = {
|
|
2992
3007
|
key: 0,
|
|
2993
3008
|
class: "text-xs text-slate-500 dark:text-slate-400"
|
|
2994
|
-
},
|
|
3009
|
+
}, qi = {
|
|
2995
3010
|
key: 0,
|
|
2996
3011
|
class: "inline-flex items-center gap-2 text-xs text-slate-500"
|
|
2997
|
-
},
|
|
3012
|
+
}, Ji = { class: "grid gap-4 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, Yi = { class: "md:col-span-2" }, Xi = ["for"], Zi = { class: "md:col-span-2" }, Qi = ["for"], $i = { class: "text-[11px] text-slate-500 mt-1" }, ea = { class: "md:col-span-2" }, ta = ["for"], na = { class: "md:col-span-2" }, ra = ["for"], ia = { class: "md:col-span-2" }, aa = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", oa = /* @__PURE__ */ m({
|
|
2998
3013
|
__name: "BaseCredentialsForm",
|
|
2999
3014
|
props: {
|
|
3000
3015
|
title: {},
|
|
@@ -3020,7 +3035,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3020
3035
|
"load-error"
|
|
3021
3036
|
],
|
|
3022
3037
|
setup(t, { expose: n, emit: r }) {
|
|
3023
|
-
let i = t, a = r, u = k(!1), d = k(!1), m =
|
|
3038
|
+
let i = t, a = r, u = k(!1), d = k(!1), m = O({
|
|
3024
3039
|
keyId: "",
|
|
3025
3040
|
secretKey: "",
|
|
3026
3041
|
baseUrl: i.defaults.baseUrl,
|
|
@@ -3067,72 +3082,72 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3067
3082
|
}
|
|
3068
3083
|
}
|
|
3069
3084
|
}
|
|
3070
|
-
return
|
|
3085
|
+
return w(h), n({ load: h }), (n, r) => (D(), o(Vt, { class: "!p-6" }, {
|
|
3071
3086
|
default: L(() => [
|
|
3072
|
-
l("div",
|
|
3073
|
-
l("div",
|
|
3074
|
-
l("div",
|
|
3087
|
+
l("div", Wi, [l("div", null, [l("h2", Gi, P(t.title), 1), t.subtitle ? (D(), c("p", Ki, P(t.subtitle), 1)) : s("", !0)]), u.value ? (D(), c("span", qi, [p(Ht, { class: "!h-4 !w-4" }), r[4] ||= f(" Saving… ", -1)])) : s("", !0)]),
|
|
3088
|
+
l("div", Ji, [
|
|
3089
|
+
l("div", Yi, [l("label", {
|
|
3075
3090
|
for: `${t.idPrefix}-key-id`,
|
|
3076
3091
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3077
|
-
}, P(t.keyLabel), 9,
|
|
3092
|
+
}, P(t.keyLabel), 9, Xi), p(di, {
|
|
3078
3093
|
id: `${t.idPrefix}-key-id`,
|
|
3079
3094
|
modelValue: m.keyId,
|
|
3080
3095
|
"onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
|
|
3081
3096
|
type: "text",
|
|
3082
3097
|
autocomplete: "off",
|
|
3083
3098
|
placeholder: t.keyPlaceholder,
|
|
3084
|
-
class:
|
|
3099
|
+
class: b(aa)
|
|
3085
3100
|
}, null, 8, [
|
|
3086
3101
|
"id",
|
|
3087
3102
|
"modelValue",
|
|
3088
3103
|
"placeholder"
|
|
3089
3104
|
])]),
|
|
3090
|
-
l("div",
|
|
3105
|
+
l("div", Zi, [
|
|
3091
3106
|
l("label", {
|
|
3092
3107
|
for: `${t.idPrefix}-secret`,
|
|
3093
3108
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3094
|
-
}, P(t.secretLabel), 9,
|
|
3095
|
-
p(
|
|
3109
|
+
}, P(t.secretLabel), 9, Qi),
|
|
3110
|
+
p(di, {
|
|
3096
3111
|
id: `${t.idPrefix}-secret`,
|
|
3097
3112
|
modelValue: m.secretKey,
|
|
3098
3113
|
"onUpdate:modelValue": r[1] ||= (e) => m.secretKey = e,
|
|
3099
3114
|
type: "password",
|
|
3100
3115
|
autocomplete: "new-password",
|
|
3101
3116
|
placeholder: d.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
|
|
3102
|
-
class:
|
|
3117
|
+
class: b(aa)
|
|
3103
3118
|
}, null, 8, [
|
|
3104
3119
|
"id",
|
|
3105
3120
|
"modelValue",
|
|
3106
3121
|
"placeholder"
|
|
3107
3122
|
]),
|
|
3108
|
-
l("p",
|
|
3123
|
+
l("p", $i, [d.value ? (D(), c(e, { key: 0 }, [f(P(t.secretSetHint), 1)], 64)) : j(n.$slots, "no-secret-hint", {}, () => [f(P(t.permissionsHint), 1)], void 0, 1)])
|
|
3109
3124
|
]),
|
|
3110
|
-
l("div",
|
|
3125
|
+
l("div", ea, [
|
|
3111
3126
|
l("label", {
|
|
3112
3127
|
for: `${t.idPrefix}-base-url`,
|
|
3113
3128
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3114
|
-
}, "Base URL (trading)", 8,
|
|
3115
|
-
p(
|
|
3129
|
+
}, "Base URL (trading)", 8, ta),
|
|
3130
|
+
p(di, {
|
|
3116
3131
|
id: `${t.idPrefix}-base-url`,
|
|
3117
3132
|
modelValue: m.baseUrl,
|
|
3118
3133
|
"onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
|
|
3119
3134
|
type: "text",
|
|
3120
|
-
class:
|
|
3135
|
+
class: b(aa)
|
|
3121
3136
|
}, null, 8, ["id", "modelValue"]),
|
|
3122
3137
|
j(n.$slots, "base-url-extra", { form: m })
|
|
3123
3138
|
]),
|
|
3124
|
-
l("div",
|
|
3139
|
+
l("div", na, [l("label", {
|
|
3125
3140
|
for: `${t.idPrefix}-data-url`,
|
|
3126
3141
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3127
|
-
}, "Data URL (market data)", 8,
|
|
3142
|
+
}, "Data URL (market data)", 8, ra), p(di, {
|
|
3128
3143
|
id: `${t.idPrefix}-data-url`,
|
|
3129
3144
|
modelValue: m.dataUrl,
|
|
3130
3145
|
"onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
|
|
3131
3146
|
type: "text",
|
|
3132
|
-
class:
|
|
3147
|
+
class: b(aa)
|
|
3133
3148
|
}, null, 8, ["id", "modelValue"])]),
|
|
3134
|
-
l("div",
|
|
3135
|
-
color: F(
|
|
3149
|
+
l("div", ia, [p(it, {
|
|
3150
|
+
color: F(G).GREEN,
|
|
3136
3151
|
description: t.saveLabel,
|
|
3137
3152
|
isDisable: u.value,
|
|
3138
3153
|
isLoading: u.value,
|
|
@@ -3149,16 +3164,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3149
3164
|
_: 3
|
|
3150
3165
|
}));
|
|
3151
3166
|
}
|
|
3152
|
-
}),
|
|
3167
|
+
}), sa = {
|
|
3153
3168
|
key: 0,
|
|
3154
3169
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3155
|
-
},
|
|
3170
|
+
}, ca = { class: "mb-3 flex flex-wrap items-center gap-2" }, la = { class: "relative min-w-[200px] flex-1" }, ua = ["placeholder"], da = {
|
|
3156
3171
|
key: 0,
|
|
3157
3172
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3158
|
-
},
|
|
3173
|
+
}, fa = {
|
|
3159
3174
|
key: 1,
|
|
3160
3175
|
class: "flex flex-wrap gap-2"
|
|
3161
|
-
},
|
|
3176
|
+
}, pa = ["title", "onClick"], ma = "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", ha = "\0all", ga = /* @__PURE__ */ m({
|
|
3162
3177
|
__name: "BasePillPickerModal",
|
|
3163
3178
|
props: {
|
|
3164
3179
|
title: {},
|
|
@@ -3180,11 +3195,11 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3180
3195
|
},
|
|
3181
3196
|
emits: ["pick", "close"],
|
|
3182
3197
|
setup(t, { emit: n }) {
|
|
3183
|
-
let r = t, i = n, u = a(() => r.icon ??
|
|
3184
|
-
value:
|
|
3198
|
+
let r = t, i = n, u = a(() => r.icon ?? Ee), d = k(""), f = k(ha), m = a(() => r.groups && r.groups.length > 0 ? [{
|
|
3199
|
+
value: ha,
|
|
3185
3200
|
label: r.allLabel
|
|
3186
|
-
}, ...r.groups] : []), h = a(() => r.items.filter((e) => (f.value ===
|
|
3187
|
-
return (n, r) => (
|
|
3201
|
+
}, ...r.groups] : []), h = a(() => r.items.filter((e) => (f.value === ha || e.group === f.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
|
|
3202
|
+
return (n, r) => (D(), o(Sn, {
|
|
3188
3203
|
title: t.title,
|
|
3189
3204
|
icon: u.value,
|
|
3190
3205
|
subtitle: t.subtitle,
|
|
@@ -3192,32 +3207,32 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3192
3207
|
"max-width-class": t.maxWidthClass,
|
|
3193
3208
|
onCancel: r[4] ||= (e) => i("close")
|
|
3194
3209
|
}, {
|
|
3195
|
-
footer: L(() => [p(
|
|
3210
|
+
footer: L(() => [p(Tr, {
|
|
3196
3211
|
variant: "ghost",
|
|
3197
3212
|
label: t.closeText,
|
|
3198
3213
|
onClick: r[3] ||= (e) => i("close")
|
|
3199
3214
|
}, null, 8, ["label"])]),
|
|
3200
|
-
default: L(() => [t.items.length === 0 ? (
|
|
3201
|
-
p(F(
|
|
3215
|
+
default: L(() => [t.items.length === 0 ? (D(), c("p", sa, P(t.emptyMessage), 1)) : (D(), c(e, { key: 1 }, [l("div", ca, [l("div", la, [
|
|
3216
|
+
p(F(Ee), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
|
|
3202
3217
|
R(l("input", {
|
|
3203
3218
|
"onUpdate:modelValue": r[0] ||= (e) => d.value = e,
|
|
3204
3219
|
type: "text",
|
|
3205
3220
|
placeholder: t.searchPlaceholder,
|
|
3206
3221
|
autocomplete: "off",
|
|
3207
|
-
class:
|
|
3208
|
-
|
|
3222
|
+
class: b([
|
|
3223
|
+
ma,
|
|
3209
3224
|
"w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
|
|
3210
3225
|
t.mono ? "font-mono" : ""
|
|
3211
3226
|
])
|
|
3212
|
-
}, null, 10,
|
|
3213
|
-
d.value ? (
|
|
3227
|
+
}, null, 10, ua), [[ae, d.value]]),
|
|
3228
|
+
d.value ? (D(), c("button", {
|
|
3214
3229
|
key: 0,
|
|
3215
3230
|
type: "button",
|
|
3216
3231
|
"aria-label": "Clear the filter",
|
|
3217
3232
|
class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
|
|
3218
3233
|
onClick: r[1] ||= (e) => d.value = ""
|
|
3219
3234
|
}, " ✕ ")) : s("", !0)
|
|
3220
|
-
]), m.value.length > 0 ? (
|
|
3235
|
+
]), m.value.length > 0 ? (D(), o(Si, {
|
|
3221
3236
|
key: 0,
|
|
3222
3237
|
modelValue: f.value,
|
|
3223
3238
|
"onUpdate:modelValue": r[2] ||= (e) => f.value = e,
|
|
@@ -3227,13 +3242,13 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3227
3242
|
"modelValue",
|
|
3228
3243
|
"options",
|
|
3229
3244
|
"aria-label"
|
|
3230
|
-
])) : s("", !0)]), h.value.length === 0 ? (
|
|
3245
|
+
])) : s("", !0)]), h.value.length === 0 ? (D(), c("p", da, P(t.noMatchMessage), 1)) : (D(), c("div", fa, [(D(!0), c(e, null, A(h.value, (e) => (D(), c("button", {
|
|
3231
3246
|
key: e.id,
|
|
3232
3247
|
type: "button",
|
|
3233
3248
|
title: e.title,
|
|
3234
|
-
class:
|
|
3249
|
+
class: b(["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" : ""]),
|
|
3235
3250
|
onClick: (t) => i("pick", e)
|
|
3236
|
-
}, P(e.label), 11,
|
|
3251
|
+
}, P(e.label), 11, pa))), 128))]))], 64))]),
|
|
3237
3252
|
_: 1
|
|
3238
3253
|
}, 8, [
|
|
3239
3254
|
"title",
|
|
@@ -3242,7 +3257,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3242
3257
|
"max-width-class"
|
|
3243
3258
|
]));
|
|
3244
3259
|
}
|
|
3245
|
-
}),
|
|
3260
|
+
}), _a = ["aria-label"], va = ["title"], ya = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, ba = ["title"], xa = /* @__PURE__ */ m({
|
|
3246
3261
|
__name: "BaseBarDistribution",
|
|
3247
3262
|
props: {
|
|
3248
3263
|
bars: {},
|
|
@@ -3254,27 +3269,27 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3254
3269
|
},
|
|
3255
3270
|
setup(t) {
|
|
3256
3271
|
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"}`;
|
|
3257
|
-
return (n, r) => (
|
|
3272
|
+
return (n, r) => (D(), c("div", {
|
|
3258
3273
|
class: "flex items-end gap-1.5 overflow-x-auto pb-1",
|
|
3259
3274
|
role: "img",
|
|
3260
3275
|
"aria-label": t.ariaLabel
|
|
3261
|
-
}, [(
|
|
3276
|
+
}, [(D(!0), c(e, null, A(t.bars, (e) => (D(), c("div", {
|
|
3262
3277
|
key: e.label,
|
|
3263
3278
|
class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
|
|
3264
3279
|
title: o(e)
|
|
3265
3280
|
}, [
|
|
3266
|
-
l("span",
|
|
3281
|
+
l("span", ya, P(e.count), 1),
|
|
3267
3282
|
l("div", {
|
|
3268
|
-
class:
|
|
3269
|
-
style:
|
|
3283
|
+
class: b(["w-full max-w-8 rounded-t", t.barClass]),
|
|
3284
|
+
style: S({ height: `${i(e)}px` })
|
|
3270
3285
|
}, null, 6),
|
|
3271
3286
|
l("span", {
|
|
3272
3287
|
class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
|
|
3273
3288
|
title: e.label
|
|
3274
|
-
}, P(e.label), 9,
|
|
3275
|
-
], 8,
|
|
3289
|
+
}, P(e.label), 9, ba)
|
|
3290
|
+
], 8, va))), 128))], 8, _a));
|
|
3276
3291
|
}
|
|
3277
|
-
}),
|
|
3292
|
+
}), Sa = /* @__PURE__ */ m({
|
|
3278
3293
|
__name: "BaseDateTimePicker",
|
|
3279
3294
|
props: {
|
|
3280
3295
|
modelValue: { default: null },
|
|
@@ -3296,7 +3311,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3296
3311
|
},
|
|
3297
3312
|
emits: ["update:modelValue"],
|
|
3298
3313
|
setup(e, { emit: t }) {
|
|
3299
|
-
let n = e, r = t, { isDark: i } =
|
|
3314
|
+
let n = e, r = t, { isDark: i } = U(), s = a(() => ({
|
|
3300
3315
|
enableTimePicker: n.mode !== "date",
|
|
3301
3316
|
is24: n.is24,
|
|
3302
3317
|
...n.timeConfig
|
|
@@ -3305,7 +3320,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3305
3320
|
let e = n.is24 ? "HH:mm" : "hh:mm a";
|
|
3306
3321
|
return n.mode === "date" ? { input: "dd/MM/yyyy" } : n.mode === "time" ? { input: e } : { input: `dd/MM/yyyy ${e}` };
|
|
3307
3322
|
});
|
|
3308
|
-
return (t, n) => (
|
|
3323
|
+
return (t, n) => (D(), o(F(Fe), {
|
|
3309
3324
|
"model-value": e.modelValue,
|
|
3310
3325
|
dark: F(i),
|
|
3311
3326
|
"time-picker": e.mode === "time",
|
|
@@ -3316,7 +3331,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3316
3331
|
"onUpdate:modelValue": n[0] ||= (e) => r("update:modelValue", e)
|
|
3317
3332
|
}, u({ _: 2 }, [A(t.$slots, (e, n) => ({
|
|
3318
3333
|
name: n,
|
|
3319
|
-
fn: L((e) => [j(t.$slots, n,
|
|
3334
|
+
fn: L((e) => [j(t.$slots, n, x(_(e ?? {})))])
|
|
3320
3335
|
}))]), 1032, [
|
|
3321
3336
|
"model-value",
|
|
3322
3337
|
"dark",
|
|
@@ -3327,28 +3342,28 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3327
3342
|
"teleport"
|
|
3328
3343
|
]));
|
|
3329
3344
|
}
|
|
3330
|
-
}),
|
|
3345
|
+
}), Ca = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-1" }, wa = { class: "truncate" }, Ta = [
|
|
3331
3346
|
"aria-label",
|
|
3332
3347
|
"disabled",
|
|
3333
3348
|
"onClick"
|
|
3334
|
-
],
|
|
3349
|
+
], Ea = [
|
|
3335
3350
|
"disabled",
|
|
3336
3351
|
"readonly",
|
|
3337
3352
|
"aria-label",
|
|
3338
3353
|
"aria-expanded",
|
|
3339
3354
|
"aria-activedescendant",
|
|
3340
3355
|
"placeholder"
|
|
3341
|
-
],
|
|
3356
|
+
], Da = ["aria-multiselectable"], Oa = [
|
|
3342
3357
|
"id",
|
|
3343
3358
|
"aria-selected",
|
|
3344
3359
|
"aria-disabled",
|
|
3345
3360
|
"title",
|
|
3346
3361
|
"onMouseenter",
|
|
3347
3362
|
"onClick"
|
|
3348
|
-
],
|
|
3363
|
+
], ka = { class: "truncate" }, Aa = {
|
|
3349
3364
|
key: 0,
|
|
3350
3365
|
class: "px-3 py-2 text-sm text-slate-500 dark:text-slate-400"
|
|
3351
|
-
},
|
|
3366
|
+
}, ja = /* @__PURE__ */ m({
|
|
3352
3367
|
__name: "BaseSearchSelect",
|
|
3353
3368
|
props: {
|
|
3354
3369
|
options: {},
|
|
@@ -3380,97 +3395,97 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3380
3395
|
},
|
|
3381
3396
|
emits: ["update:modelValue"],
|
|
3382
3397
|
setup(t, { emit: n }) {
|
|
3383
|
-
let r = t, i = n, u = k(null), d = k(null), f = k(!1), m = k(""), h = k(-1), g = `search-select-${
|
|
3398
|
+
let r = t, i = n, u = k(null), d = k(null), f = k(!1), m = k(""), h = k(-1), g = `search-select-${te()}`, _ = a(() => {
|
|
3384
3399
|
let e = r.modelValue;
|
|
3385
3400
|
return Array.isArray(e) ? [...e] : e == null || e === "" ? [] : [e];
|
|
3386
|
-
}),
|
|
3401
|
+
}), v = a(() => _.value.map((e) => r.options.find((t) => t.value === e)).filter((e) => !!e)), x = a(() => _.value.length > 0), S = a(() => !r.multiple && v.value.length > 0), T = a(() => S.value ? v.value[0].label : r.multiple && x.value ? "" : r.placeholder), E = a(() => {
|
|
3387
3402
|
let e = m.value.trim().toLowerCase();
|
|
3388
3403
|
return e ? r.options.filter((t) => t.label.toLowerCase().includes(e)) : [...r.options];
|
|
3389
3404
|
});
|
|
3390
|
-
I(
|
|
3405
|
+
I(E, (e) => {
|
|
3391
3406
|
h.value = e.findIndex((e) => !e.disabled);
|
|
3392
3407
|
});
|
|
3393
3408
|
function O(e) {
|
|
3394
3409
|
return _.value.includes(e.value);
|
|
3395
3410
|
}
|
|
3396
|
-
function
|
|
3411
|
+
function ee(e, t) {
|
|
3397
3412
|
return e.disabled ? "cursor-not-allowed text-slate-400 dark:text-slate-600" : O(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";
|
|
3398
3413
|
}
|
|
3399
|
-
function
|
|
3400
|
-
r.disabled || f.value || (f.value = !0, h.value =
|
|
3414
|
+
function j() {
|
|
3415
|
+
r.disabled || f.value || (f.value = !0, h.value = E.value.findIndex((e) => !e.disabled));
|
|
3401
3416
|
}
|
|
3402
|
-
function
|
|
3417
|
+
function M() {
|
|
3403
3418
|
f.value = !1, m.value = "";
|
|
3404
3419
|
}
|
|
3405
|
-
function
|
|
3406
|
-
r.disabled || (e.target !== d.value && e.preventDefault(), f.value && e.target !== d.value ?
|
|
3420
|
+
function N(e) {
|
|
3421
|
+
r.disabled || (e.target !== d.value && e.preventDefault(), f.value && e.target !== d.value ? M() : (d.value?.focus(), j()));
|
|
3407
3422
|
}
|
|
3408
3423
|
function ne(e) {
|
|
3409
3424
|
if (!e.disabled) {
|
|
3410
3425
|
if (r.multiple) {
|
|
3411
3426
|
let t = O(e) ? _.value.filter((t) => t !== e.value) : [..._.value, e.value];
|
|
3412
|
-
i("update:modelValue", t), m.value = "",
|
|
3413
|
-
} else i("update:modelValue", e.value),
|
|
3427
|
+
i("update:modelValue", t), m.value = "", y(() => d.value?.focus());
|
|
3428
|
+
} else i("update:modelValue", e.value), M(), d.value?.blur();
|
|
3414
3429
|
}
|
|
3415
3430
|
}
|
|
3416
3431
|
function re(e) {
|
|
3417
3432
|
i("update:modelValue", _.value.filter((t) => t !== e.value));
|
|
3418
3433
|
}
|
|
3419
|
-
function
|
|
3434
|
+
function ie() {
|
|
3420
3435
|
i("update:modelValue", r.multiple ? [] : null), m.value = "";
|
|
3421
3436
|
}
|
|
3422
|
-
function
|
|
3423
|
-
let t =
|
|
3437
|
+
function L(e) {
|
|
3438
|
+
let t = E.value;
|
|
3424
3439
|
if (t.length === 0) return;
|
|
3425
3440
|
let n = h.value;
|
|
3426
3441
|
for (let r = 0; r < t.length && (n = (n + e + t.length) % t.length, t[n].disabled); r++);
|
|
3427
|
-
h.value = n,
|
|
3442
|
+
h.value = n, y(() => document.getElementById(`${g}-${n}`)?.scrollIntoView?.({ block: "nearest" }));
|
|
3428
3443
|
}
|
|
3429
3444
|
function se(e) {
|
|
3430
3445
|
switch (e.key) {
|
|
3431
3446
|
case "ArrowDown":
|
|
3432
|
-
e.preventDefault(), f.value ?
|
|
3447
|
+
e.preventDefault(), f.value ? L(1) : j();
|
|
3433
3448
|
break;
|
|
3434
3449
|
case "ArrowUp":
|
|
3435
|
-
e.preventDefault(), f.value ?
|
|
3450
|
+
e.preventDefault(), f.value ? L(-1) : j();
|
|
3436
3451
|
break;
|
|
3437
3452
|
case "Enter":
|
|
3438
|
-
f.value && h.value >= 0 && (e.preventDefault(), ne(
|
|
3453
|
+
f.value && h.value >= 0 && (e.preventDefault(), ne(E.value[h.value]));
|
|
3439
3454
|
break;
|
|
3440
3455
|
case "Escape":
|
|
3441
|
-
f.value && (e.preventDefault(),
|
|
3456
|
+
f.value && (e.preventDefault(), M());
|
|
3442
3457
|
break;
|
|
3443
3458
|
case "Tab":
|
|
3444
|
-
|
|
3459
|
+
M();
|
|
3445
3460
|
break;
|
|
3446
|
-
case "Backspace": r.multiple && m.value === "" &&
|
|
3461
|
+
case "Backspace": r.multiple && m.value === "" && v.value.length && re(v.value[v.value.length - 1]);
|
|
3447
3462
|
}
|
|
3448
3463
|
}
|
|
3449
3464
|
function ce(e) {
|
|
3450
|
-
f.value && u.value && !u.value.contains(e.target) &&
|
|
3465
|
+
f.value && u.value && !u.value.contains(e.target) && M();
|
|
3451
3466
|
}
|
|
3452
|
-
return
|
|
3467
|
+
return w(() => document.addEventListener("mousedown", ce)), C(() => document.removeEventListener("mousedown", ce)), (n, r) => (D(), c("div", {
|
|
3453
3468
|
ref_key: "rootEl",
|
|
3454
3469
|
ref: u,
|
|
3455
|
-
class:
|
|
3470
|
+
class: b(t.block ? "relative w-full" : "relative inline-block min-w-48")
|
|
3456
3471
|
}, [l("div", {
|
|
3457
|
-
class:
|
|
3458
|
-
onMousedown:
|
|
3472
|
+
class: b(["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"]]),
|
|
3473
|
+
onMousedown: N
|
|
3459
3474
|
}, [
|
|
3460
|
-
l("div",
|
|
3475
|
+
l("div", Ca, [(D(!0), c(e, null, A(v.value, (e) => R((D(), c("span", {
|
|
3461
3476
|
key: String(e.value),
|
|
3462
3477
|
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"
|
|
3463
|
-
}, [l("span",
|
|
3478
|
+
}, [l("span", wa, P(e.label), 1), l("button", {
|
|
3464
3479
|
type: "button",
|
|
3465
3480
|
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",
|
|
3466
3481
|
"aria-label": `Remove ${e.label}`,
|
|
3467
3482
|
disabled: t.disabled,
|
|
3468
3483
|
onMousedown: r[0] ||= z(() => {}, ["stop", "prevent"]),
|
|
3469
3484
|
onClick: z((t) => re(e), ["stop"])
|
|
3470
|
-
}, [p(F(
|
|
3485
|
+
}, [p(F(Ae), {
|
|
3471
3486
|
class: "h-3 w-3",
|
|
3472
3487
|
"aria-hidden": "true"
|
|
3473
|
-
})], 40,
|
|
3488
|
+
})], 40, Ta)])), [[oe, t.multiple]])), 128)), R(l("input", {
|
|
3474
3489
|
ref_key: "inputEl",
|
|
3475
3490
|
ref: d,
|
|
3476
3491
|
"onUpdate:modelValue": r[1] ||= (e) => m.value = e,
|
|
@@ -3485,65 +3500,65 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3485
3500
|
"aria-controls": g,
|
|
3486
3501
|
"aria-activedescendant": f.value && h.value >= 0 ? `${g}-${h.value}` : void 0,
|
|
3487
3502
|
placeholder: T.value,
|
|
3488
|
-
class:
|
|
3489
|
-
onFocus:
|
|
3490
|
-
onInput:
|
|
3503
|
+
class: b(["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"]),
|
|
3504
|
+
onFocus: j,
|
|
3505
|
+
onInput: j,
|
|
3491
3506
|
onKeydown: se
|
|
3492
|
-
}, null, 42,
|
|
3493
|
-
t.clearable && x.value && !t.disabled ? (
|
|
3507
|
+
}, null, 42, Ea), [[ae, m.value]])]),
|
|
3508
|
+
t.clearable && x.value && !t.disabled ? (D(), c("button", {
|
|
3494
3509
|
key: 0,
|
|
3495
3510
|
type: "button",
|
|
3496
3511
|
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",
|
|
3497
3512
|
"aria-label": "Clear selection",
|
|
3498
3513
|
onMousedown: r[2] ||= z(() => {}, ["stop", "prevent"]),
|
|
3499
|
-
onClick: z(
|
|
3500
|
-
}, [p(F(
|
|
3514
|
+
onClick: z(ie, ["stop"])
|
|
3515
|
+
}, [p(F(Ae), {
|
|
3501
3516
|
class: "h-4 w-4",
|
|
3502
3517
|
"aria-hidden": "true"
|
|
3503
3518
|
})], 32)) : s("", !0),
|
|
3504
|
-
p(F(
|
|
3505
|
-
class:
|
|
3519
|
+
p(F(_e), {
|
|
3520
|
+
class: b(["h-4 w-4 shrink-0 text-slate-500 transition-transform dark:text-slate-400", f.value ? "rotate-180" : ""]),
|
|
3506
3521
|
"aria-hidden": "true"
|
|
3507
3522
|
}, null, 8, ["class"])
|
|
3508
|
-
], 34), f.value ? (
|
|
3523
|
+
], 34), f.value ? (D(), c("ul", {
|
|
3509
3524
|
key: 0,
|
|
3510
3525
|
id: g,
|
|
3511
3526
|
role: "listbox",
|
|
3512
3527
|
"aria-multiselectable": t.multiple || void 0,
|
|
3513
3528
|
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"
|
|
3514
|
-
}, [(
|
|
3529
|
+
}, [(D(!0), c(e, null, A(E.value, (e, t) => (D(), c("li", {
|
|
3515
3530
|
id: `${g}-${t}`,
|
|
3516
3531
|
key: String(e.value),
|
|
3517
3532
|
role: "option",
|
|
3518
3533
|
"aria-selected": O(e),
|
|
3519
3534
|
"aria-disabled": e.disabled || void 0,
|
|
3520
3535
|
title: e.title,
|
|
3521
|
-
class:
|
|
3536
|
+
class: b(["flex cursor-pointer items-center justify-between gap-2 px-3 py-2 text-left text-sm", ee(e, t)]),
|
|
3522
3537
|
onMousedown: r[3] ||= z(() => {}, ["prevent"]),
|
|
3523
3538
|
onMouseenter: (e) => h.value = t,
|
|
3524
3539
|
onClick: (t) => ne(e)
|
|
3525
|
-
}, [l("span",
|
|
3540
|
+
}, [l("span", ka, P(e.label), 1), O(e) ? (D(), o(F(me), {
|
|
3526
3541
|
key: 0,
|
|
3527
3542
|
class: "h-4 w-4 shrink-0",
|
|
3528
3543
|
"aria-hidden": "true"
|
|
3529
|
-
})) : s("", !0)], 42,
|
|
3544
|
+
})) : s("", !0)], 42, Oa))), 128)), E.value.length === 0 ? (D(), c("li", Aa, P(t.options.length === 0 ? t.emptyText : t.noResultsText), 1)) : s("", !0)], 8, Da)) : s("", !0)], 2));
|
|
3530
3545
|
}
|
|
3531
|
-
}),
|
|
3546
|
+
}), Ma = { class: "rounded-xl border border-slate-200 bg-white text-left shadow-sm dark:border-slate-700 dark:bg-slate-900" }, Na = {
|
|
3532
3547
|
key: 0,
|
|
3533
3548
|
class: "flex flex-wrap items-center justify-between gap-3 border-b border-slate-200 px-5 py-3 dark:border-slate-700"
|
|
3534
|
-
},
|
|
3549
|
+
}, Pa = { class: "min-w-0" }, Fa = {
|
|
3535
3550
|
key: 0,
|
|
3536
3551
|
class: "text-base font-semibold text-slate-900 dark:text-slate-100"
|
|
3537
|
-
},
|
|
3552
|
+
}, Ia = {
|
|
3538
3553
|
key: 1,
|
|
3539
3554
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3540
|
-
},
|
|
3555
|
+
}, La = {
|
|
3541
3556
|
key: 0,
|
|
3542
3557
|
class: "flex items-center gap-2"
|
|
3543
|
-
},
|
|
3558
|
+
}, Ra = {
|
|
3544
3559
|
key: 1,
|
|
3545
3560
|
class: "flex flex-wrap items-center justify-end gap-2 border-t border-slate-200 px-5 py-3 dark:border-slate-700"
|
|
3546
|
-
},
|
|
3561
|
+
}, za = /* @__PURE__ */ m({
|
|
3547
3562
|
__name: "BaseCard",
|
|
3548
3563
|
props: {
|
|
3549
3564
|
title: { default: "" },
|
|
@@ -3551,24 +3566,24 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3551
3566
|
padding: { default: "md" }
|
|
3552
3567
|
},
|
|
3553
3568
|
setup(e) {
|
|
3554
|
-
return (t, n) => (
|
|
3555
|
-
e.title || e.subtitle || t.$slots.actions ? (
|
|
3556
|
-
l("div", { class:
|
|
3557
|
-
t.$slots.footer ? (
|
|
3569
|
+
return (t, n) => (D(), c("section", Ma, [
|
|
3570
|
+
e.title || e.subtitle || t.$slots.actions ? (D(), c("header", Na, [l("div", Pa, [e.title ? (D(), c("h2", Fa, P(e.title), 1)) : s("", !0), e.subtitle ? (D(), c("p", Ia, P(e.subtitle), 1)) : s("", !0)]), t.$slots.actions ? (D(), c("div", La, [j(t.$slots, "actions")])) : s("", !0)])) : s("", !0),
|
|
3571
|
+
l("div", { class: b(e.padding === "sm" ? "p-4" : e.padding === "none" ? "" : "p-5") }, [j(t.$slots, "default")], 2),
|
|
3572
|
+
t.$slots.footer ? (D(), c("footer", Ra, [j(t.$slots, "footer")])) : s("", !0)
|
|
3558
3573
|
]));
|
|
3559
3574
|
}
|
|
3560
|
-
}),
|
|
3575
|
+
}), Ba = ["for"], Va = {
|
|
3561
3576
|
key: 0,
|
|
3562
3577
|
class: "ml-0.5 text-red-500",
|
|
3563
3578
|
"aria-hidden": "true"
|
|
3564
|
-
},
|
|
3579
|
+
}, Ha = {
|
|
3565
3580
|
key: 1,
|
|
3566
3581
|
class: "mt-1 text-xs font-medium text-red-600 dark:text-red-400",
|
|
3567
3582
|
role: "alert"
|
|
3568
|
-
},
|
|
3583
|
+
}, Ua = {
|
|
3569
3584
|
key: 2,
|
|
3570
3585
|
class: "mt-1 text-xs text-slate-500 dark:text-slate-400"
|
|
3571
|
-
},
|
|
3586
|
+
}, Wa = /* @__PURE__ */ m({
|
|
3572
3587
|
__name: "BaseField",
|
|
3573
3588
|
props: {
|
|
3574
3589
|
label: { default: "" },
|
|
@@ -3589,17 +3604,17 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3589
3604
|
}
|
|
3590
3605
|
},
|
|
3591
3606
|
setup(e) {
|
|
3592
|
-
return (t, n) => (
|
|
3593
|
-
e.label ? (
|
|
3607
|
+
return (t, n) => (D(), c("div", { class: b([e.grow ? "min-w-48 flex-1" : "", "text-left"]) }, [
|
|
3608
|
+
e.label ? (D(), c("label", {
|
|
3594
3609
|
key: 0,
|
|
3595
3610
|
for: e.labelFor || void 0,
|
|
3596
|
-
class:
|
|
3597
|
-
}, [f(P(e.label), 1), e.required ? (
|
|
3611
|
+
class: b(["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"])
|
|
3612
|
+
}, [f(P(e.label), 1), e.required ? (D(), c("span", Va, "*")) : s("", !0)], 10, Ba)) : s("", !0),
|
|
3598
3613
|
j(t.$slots, "default"),
|
|
3599
|
-
e.error ? (
|
|
3614
|
+
e.error ? (D(), c("p", Ha, P(e.error), 1)) : e.hint ? (D(), c("p", Ua, P(e.hint), 1)) : s("", !0)
|
|
3600
3615
|
], 2));
|
|
3601
3616
|
}
|
|
3602
|
-
}),
|
|
3617
|
+
}), Ga = { class: "flex items-start justify-between gap-3" }, Ka = { class: "min-w-0 text-left" }, qa = { class: "truncate text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, Ja = /* @__PURE__ */ m({
|
|
3603
3618
|
__name: "BaseStatCard",
|
|
3604
3619
|
props: {
|
|
3605
3620
|
title: {},
|
|
@@ -3646,30 +3661,30 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3646
3661
|
icon: "text-slate-500 dark:text-slate-300"
|
|
3647
3662
|
}
|
|
3648
3663
|
}, r = a(() => n[t.accent]);
|
|
3649
|
-
return (t, n) => (
|
|
3650
|
-
default: L(() => [l("div",
|
|
3651
|
-
l("p",
|
|
3652
|
-
l("p", { class:
|
|
3653
|
-
e.subtitle ? (
|
|
3664
|
+
return (t, n) => (D(), o(N(e.to ? F(Me) : "div"), v(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" : ""]] }), {
|
|
3665
|
+
default: L(() => [l("div", Ga, [l("div", Ka, [
|
|
3666
|
+
l("p", qa, P(e.title), 1),
|
|
3667
|
+
l("p", { class: b(["mt-1 truncate text-3xl font-bold", r.value.value]) }, P(e.value), 3),
|
|
3668
|
+
e.subtitle ? (D(), c("p", {
|
|
3654
3669
|
key: 0,
|
|
3655
|
-
class:
|
|
3670
|
+
class: b(["mt-1 text-sm font-medium", r.value.subtitle])
|
|
3656
3671
|
}, P(e.subtitle), 3)) : s("", !0),
|
|
3657
3672
|
j(t.$slots, "default")
|
|
3658
|
-
]), t.$slots.icon ? (
|
|
3673
|
+
]), t.$slots.icon ? (D(), c("div", {
|
|
3659
3674
|
key: 0,
|
|
3660
|
-
class:
|
|
3675
|
+
class: b(["flex h-12 w-12 shrink-0 items-center justify-center rounded-xl", r.value.iconBox])
|
|
3661
3676
|
}, [j(t.$slots, "icon", { iconClass: `h-6 w-6 ${r.value.icon}` })], 2)) : s("", !0)])]),
|
|
3662
3677
|
_: 3
|
|
3663
3678
|
}, 16, ["class"]));
|
|
3664
3679
|
}
|
|
3665
|
-
}),
|
|
3680
|
+
}), Ya = [
|
|
3666
3681
|
"aria-checked",
|
|
3667
3682
|
"aria-label",
|
|
3668
3683
|
"disabled"
|
|
3669
|
-
],
|
|
3684
|
+
], Xa = {
|
|
3670
3685
|
key: 0,
|
|
3671
3686
|
class: "text-sm font-medium text-slate-700 dark:text-slate-200"
|
|
3672
|
-
},
|
|
3687
|
+
}, Za = /* @__PURE__ */ m({
|
|
3673
3688
|
__name: "BaseToggle",
|
|
3674
3689
|
props: {
|
|
3675
3690
|
modelValue: {
|
|
@@ -3698,23 +3713,23 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3698
3713
|
let e = !n.modelValue;
|
|
3699
3714
|
r("update:modelValue", e), r("change", e);
|
|
3700
3715
|
}
|
|
3701
|
-
return (t, n) => (
|
|
3716
|
+
return (t, n) => (D(), c("label", { class: b(["inline-flex items-center gap-3 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("button", {
|
|
3702
3717
|
type: "button",
|
|
3703
3718
|
role: "switch",
|
|
3704
3719
|
"aria-checked": e.modelValue,
|
|
3705
3720
|
"aria-label": e.label ? void 0 : e.ariaLabel || void 0,
|
|
3706
3721
|
disabled: e.disabled,
|
|
3707
|
-
class:
|
|
3722
|
+
class: b(["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"]),
|
|
3708
3723
|
onClick: a
|
|
3709
3724
|
}, [l("span", {
|
|
3710
|
-
class:
|
|
3725
|
+
class: b(["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"]),
|
|
3711
3726
|
"aria-hidden": "true"
|
|
3712
|
-
}, null, 2)], 10,
|
|
3727
|
+
}, null, 2)], 10, Ya), e.label ? (D(), c("span", Xa, P(e.label), 1)) : s("", !0)], 2));
|
|
3713
3728
|
}
|
|
3714
|
-
}),
|
|
3729
|
+
}), Qa = ["checked", "disabled"], $a = {
|
|
3715
3730
|
key: 0,
|
|
3716
3731
|
class: "text-sm text-slate-700 dark:text-slate-200"
|
|
3717
|
-
},
|
|
3732
|
+
}, eo = /* @__PURE__ */ m({
|
|
3718
3733
|
inheritAttrs: !1,
|
|
3719
3734
|
__name: "BaseCheckbox",
|
|
3720
3735
|
props: {
|
|
@@ -3735,21 +3750,21 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3735
3750
|
let t = e.target.checked;
|
|
3736
3751
|
n("update:modelValue", t), n("change", t);
|
|
3737
3752
|
}
|
|
3738
|
-
return (t, n) => (
|
|
3753
|
+
return (t, n) => (D(), c("label", { class: b(["inline-flex items-center gap-2 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("input", v(t.$attrs, {
|
|
3739
3754
|
type: "checkbox",
|
|
3740
3755
|
checked: e.modelValue,
|
|
3741
3756
|
disabled: e.disabled,
|
|
3742
3757
|
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",
|
|
3743
3758
|
onChange: r
|
|
3744
|
-
}), null, 16,
|
|
3759
|
+
}), null, 16, Qa), e.label || t.$slots.default ? (D(), c("span", $a, [j(t.$slots, "default", {}, () => [f(P(e.label), 1)])])) : s("", !0)], 2));
|
|
3745
3760
|
}
|
|
3746
|
-
}),
|
|
3761
|
+
}), to = { class: "flex flex-col gap-2 text-left" }, no = {
|
|
3747
3762
|
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",
|
|
3748
3763
|
"aria-hidden": "true"
|
|
3749
|
-
},
|
|
3764
|
+
}, ro = { class: "min-w-0" }, io = { class: "block truncate text-sm font-medium text-slate-900 dark:text-slate-100" }, ao = {
|
|
3750
3765
|
key: 0,
|
|
3751
3766
|
class: "block truncate text-xs text-slate-500 dark:text-slate-400"
|
|
3752
|
-
},
|
|
3767
|
+
}, oo = /* @__PURE__ */ m({
|
|
3753
3768
|
__name: "BaseSidebarUser",
|
|
3754
3769
|
props: {
|
|
3755
3770
|
name: {},
|
|
@@ -3765,23 +3780,23 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3765
3780
|
emits: ["logout"],
|
|
3766
3781
|
setup(e, { emit: t }) {
|
|
3767
3782
|
let n = e, r = t, i = a(() => (n.name || "?").split(/[\s._-]+/).filter(Boolean).slice(0, 2).map((e) => e[0].toUpperCase()).join(""));
|
|
3768
|
-
return (t, n) => (
|
|
3783
|
+
return (t, n) => (D(), c("div", to, [(D(), o(N(e.to ? F(Me) : "div"), v(e.to ? { to: e.to } : {}, {
|
|
3769
3784
|
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" : ""],
|
|
3770
3785
|
title: e.to ? e.profileLabel : void 0
|
|
3771
3786
|
}), {
|
|
3772
|
-
default: L(() => [l("span",
|
|
3787
|
+
default: L(() => [l("span", no, P(i.value), 1), l("span", ro, [l("span", io, P(e.name), 1), e.email ? (D(), c("span", ao, P(e.email), 1)) : s("", !0)])]),
|
|
3773
3788
|
_: 1
|
|
3774
|
-
}, 16, ["class", "title"])), e.showLogout ? (
|
|
3789
|
+
}, 16, ["class", "title"])), e.showLogout ? (D(), o(it, {
|
|
3775
3790
|
key: 0,
|
|
3776
3791
|
class: "w-full justify-center",
|
|
3777
3792
|
description: e.logoutLabel,
|
|
3778
|
-
color: F(
|
|
3779
|
-
size: F(
|
|
3793
|
+
color: F(G).RED,
|
|
3794
|
+
size: F(K).SMALL,
|
|
3780
3795
|
outline: "",
|
|
3781
3796
|
"icon-left": "",
|
|
3782
3797
|
onClick: n[0] ||= (e) => r("logout")
|
|
3783
3798
|
}, {
|
|
3784
|
-
default: L(() => [p(F(
|
|
3799
|
+
default: L(() => [p(F(le), {
|
|
3785
3800
|
class: "mr-1.5 h-4 w-4",
|
|
3786
3801
|
"aria-hidden": "true"
|
|
3787
3802
|
})]),
|
|
@@ -3792,16 +3807,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3792
3807
|
"size"
|
|
3793
3808
|
])) : s("", !0)]));
|
|
3794
3809
|
}
|
|
3795
|
-
}),
|
|
3810
|
+
}), so = { class: "flex min-h-screen w-full flex-col items-center justify-center bg-slate-50 px-4 py-10 dark:bg-slate-950" }, co = { class: "mb-6 flex justify-center" }, lo = {
|
|
3796
3811
|
key: 0,
|
|
3797
3812
|
class: "mb-1 text-2xl font-bold tracking-tight text-slate-900 dark:text-slate-100"
|
|
3798
|
-
},
|
|
3813
|
+
}, uo = {
|
|
3799
3814
|
key: 1,
|
|
3800
3815
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3801
|
-
},
|
|
3816
|
+
}, fo = {
|
|
3802
3817
|
key: 2,
|
|
3803
3818
|
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"
|
|
3804
|
-
},
|
|
3819
|
+
}, po = /* @__PURE__ */ m({
|
|
3805
3820
|
__name: "BaseAuthLayout",
|
|
3806
3821
|
props: {
|
|
3807
3822
|
title: { default: "" },
|
|
@@ -3812,18 +3827,18 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
|
|
|
3812
3827
|
}
|
|
3813
3828
|
},
|
|
3814
3829
|
setup(e) {
|
|
3815
|
-
return (t, n) => (
|
|
3816
|
-
e.title ? (
|
|
3817
|
-
e.subtitle ? (
|
|
3818
|
-
l("div", { class:
|
|
3819
|
-
t.$slots.footer ? (
|
|
3830
|
+
return (t, n) => (D(), c("div", so, [l("div", co, [j(t.$slots, "logo", {}, () => [p(Nt, { size: F(q).MEDIUM }, null, 8, ["size"])])]), l("div", { class: b(["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"]) }, [
|
|
3831
|
+
e.title ? (D(), c("h1", lo, P(e.title), 1)) : s("", !0),
|
|
3832
|
+
e.subtitle ? (D(), c("p", uo, P(e.subtitle), 1)) : s("", !0),
|
|
3833
|
+
l("div", { class: b(e.title || e.subtitle ? "mt-6" : "") }, [j(t.$slots, "default")], 2),
|
|
3834
|
+
t.$slots.footer ? (D(), c("div", fo, [j(t.$slots, "footer")])) : s("", !0)
|
|
3820
3835
|
], 2)]));
|
|
3821
3836
|
}
|
|
3822
3837
|
});
|
|
3823
3838
|
//#endregion
|
|
3824
3839
|
//#region node_modules/@heroicons/vue/20/solid/esm/CheckCircleIcon.js
|
|
3825
|
-
function
|
|
3826
|
-
return
|
|
3840
|
+
function mo(e, t) {
|
|
3841
|
+
return D(), c("svg", {
|
|
3827
3842
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3828
3843
|
viewBox: "0 0 20 20",
|
|
3829
3844
|
fill: "currentColor",
|
|
@@ -3837,8 +3852,8 @@ function fo(e, t) {
|
|
|
3837
3852
|
}
|
|
3838
3853
|
//#endregion
|
|
3839
3854
|
//#region node_modules/@heroicons/vue/20/solid/esm/XCircleIcon.js
|
|
3840
|
-
function
|
|
3841
|
-
return
|
|
3855
|
+
function ho(e, t) {
|
|
3856
|
+
return D(), c("svg", {
|
|
3842
3857
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3843
3858
|
viewBox: "0 0 20 20",
|
|
3844
3859
|
fill: "currentColor",
|
|
@@ -3852,7 +3867,7 @@ function po(e, t) {
|
|
|
3852
3867
|
}
|
|
3853
3868
|
//#endregion
|
|
3854
3869
|
//#region src/components/BaseBooleanBadge.vue
|
|
3855
|
-
var
|
|
3870
|
+
var go = /* @__PURE__ */ m({
|
|
3856
3871
|
__name: "BaseBooleanBadge",
|
|
3857
3872
|
props: {
|
|
3858
3873
|
value: {
|
|
@@ -3863,20 +3878,20 @@ var mo = /* @__PURE__ */ m({
|
|
|
3863
3878
|
falseLabel: { default: "No" }
|
|
3864
3879
|
},
|
|
3865
3880
|
setup(e) {
|
|
3866
|
-
return (t, n) => (
|
|
3881
|
+
return (t, n) => (D(), c("span", { class: b(["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 ? (D(), o(F(mo), {
|
|
3867
3882
|
key: 0,
|
|
3868
3883
|
class: "h-3.5 w-3.5",
|
|
3869
3884
|
"aria-hidden": "true"
|
|
3870
|
-
})) : (
|
|
3885
|
+
})) : (D(), o(F(ho), {
|
|
3871
3886
|
key: 1,
|
|
3872
3887
|
class: "h-3.5 w-3.5",
|
|
3873
3888
|
"aria-hidden": "true"
|
|
3874
3889
|
})), f(" " + P(e.value ? e.trueLabel : e.falseLabel), 1)], 2));
|
|
3875
3890
|
}
|
|
3876
|
-
}),
|
|
3891
|
+
}), _o = { class: "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" }, vo = ["href"], yo = {
|
|
3877
3892
|
key: 1,
|
|
3878
3893
|
class: "text-slate-400 dark:text-slate-500"
|
|
3879
|
-
},
|
|
3894
|
+
}, bo = /* @__PURE__ */ m({
|
|
3880
3895
|
__name: "BaseDetailList",
|
|
3881
3896
|
props: {
|
|
3882
3897
|
items: {},
|
|
@@ -3887,43 +3902,43 @@ var mo = /* @__PURE__ */ m({
|
|
|
3887
3902
|
function n(e) {
|
|
3888
3903
|
return e == null || e === "";
|
|
3889
3904
|
}
|
|
3890
|
-
return (r, i) => (
|
|
3905
|
+
return (r, i) => (D(), c("dl", { class: b(["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))]" : ""]) }, [(D(!0), c(e, null, A(t.items, (r) => (D(), c("div", {
|
|
3891
3906
|
key: r.label,
|
|
3892
3907
|
class: "min-w-0"
|
|
3893
|
-
}, [l("dt",
|
|
3908
|
+
}, [l("dt", _o, P(r.label), 1), l("dd", { class: b(["mt-1 break-words text-sm text-slate-900 dark:text-slate-100", r.mono ? "font-mono" : ""]) }, [r.href && !n(r.value) ? (D(), c("a", {
|
|
3894
3909
|
key: 0,
|
|
3895
3910
|
href: r.href,
|
|
3896
3911
|
target: "_blank",
|
|
3897
3912
|
rel: "noopener noreferrer",
|
|
3898
3913
|
class: "text-emerald-600 hover:underline dark:text-emerald-400"
|
|
3899
|
-
}, P(r.value), 9,
|
|
3914
|
+
}, P(r.value), 9, vo)) : n(r.value) ? (D(), c("span", yo, P(t.emptyText), 1)) : (D(), c(e, { key: 2 }, [f(P(r.value), 1)], 64))], 2)]))), 128))], 2));
|
|
3900
3915
|
}
|
|
3901
3916
|
});
|
|
3902
3917
|
//#endregion
|
|
3903
3918
|
//#region src/composables/useDebounce.ts
|
|
3904
|
-
function
|
|
3919
|
+
function xo(e, t = 300) {
|
|
3905
3920
|
let n = k(e.value), r = null;
|
|
3906
3921
|
return I(e, (e) => {
|
|
3907
3922
|
r && clearTimeout(r), r = setTimeout(() => {
|
|
3908
3923
|
n.value = e, r = null;
|
|
3909
3924
|
}, t);
|
|
3910
|
-
}),
|
|
3925
|
+
}), T(() => {
|
|
3911
3926
|
r &&= (clearTimeout(r), null);
|
|
3912
3927
|
}), n;
|
|
3913
3928
|
}
|
|
3914
3929
|
//#endregion
|
|
3915
3930
|
//#region src/composables/useToast.ts
|
|
3916
|
-
function
|
|
3917
|
-
let t = k(!1), n = k(""), r = k(
|
|
3931
|
+
function So(e = 3e3) {
|
|
3932
|
+
let t = k(!1), n = k(""), r = k(J.SUCCESS), i = null;
|
|
3918
3933
|
function a() {
|
|
3919
3934
|
i &&= (clearTimeout(i), null);
|
|
3920
3935
|
}
|
|
3921
|
-
function o(o, s =
|
|
3936
|
+
function o(o, s = J.SUCCESS, c = e) {
|
|
3922
3937
|
n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
|
|
3923
3938
|
t.value = !1, i = null;
|
|
3924
3939
|
}, c);
|
|
3925
3940
|
}
|
|
3926
|
-
return
|
|
3941
|
+
return T(() => {
|
|
3927
3942
|
a();
|
|
3928
3943
|
}), {
|
|
3929
3944
|
showToast: t,
|
|
@@ -3934,8 +3949,8 @@ function bo(e = 3e3) {
|
|
|
3934
3949
|
}
|
|
3935
3950
|
//#endregion
|
|
3936
3951
|
//#region src/composables/useQueryParamSync.ts
|
|
3937
|
-
function
|
|
3938
|
-
let e =
|
|
3952
|
+
function Co() {
|
|
3953
|
+
let e = Ne(), t = Pe();
|
|
3939
3954
|
function n(t) {
|
|
3940
3955
|
let n = e.query[t];
|
|
3941
3956
|
return typeof n == "string" ? n : "";
|
|
@@ -3956,8 +3971,8 @@ function xo() {
|
|
|
3956
3971
|
}
|
|
3957
3972
|
//#endregion
|
|
3958
3973
|
//#region src/composables/useFieldClasses.ts
|
|
3959
|
-
function
|
|
3960
|
-
let { isDark: e } =
|
|
3974
|
+
function wo() {
|
|
3975
|
+
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");
|
|
3961
3976
|
function r(t) {
|
|
3962
3977
|
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;
|
|
3963
3978
|
}
|
|
@@ -3969,7 +3984,7 @@ function So() {
|
|
|
3969
3984
|
}
|
|
3970
3985
|
//#endregion
|
|
3971
3986
|
//#region src/composables/usePolling.ts
|
|
3972
|
-
function
|
|
3987
|
+
function To(e, t, n = {}) {
|
|
3973
3988
|
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = k(!1), s = !1;
|
|
3974
3989
|
function c() {
|
|
3975
3990
|
a === null && t !== null && (a = setInterval(() => void e(), t));
|
|
@@ -3992,74 +4007,98 @@ function Co(e, t, n = {}) {
|
|
|
3992
4007
|
o.value = !1, l(), s = !0;
|
|
3993
4008
|
}
|
|
3994
4009
|
}
|
|
3995
|
-
return
|
|
4010
|
+
return w(() => {
|
|
3996
4011
|
u(), i && document.addEventListener("visibilitychange", f);
|
|
3997
|
-
}),
|
|
4012
|
+
}), E(() => {
|
|
3998
4013
|
d(), i && document.removeEventListener("visibilitychange", f);
|
|
3999
4014
|
}), {
|
|
4000
4015
|
start: u,
|
|
4001
4016
|
stop: d,
|
|
4002
|
-
active:
|
|
4017
|
+
active: ee(o)
|
|
4018
|
+
};
|
|
4019
|
+
}
|
|
4020
|
+
//#endregion
|
|
4021
|
+
//#region src/composables/useLatestRequest.ts
|
|
4022
|
+
function Eo() {
|
|
4023
|
+
let e = 0, t = null;
|
|
4024
|
+
function n() {
|
|
4025
|
+
let n = ++e;
|
|
4026
|
+
t?.abort();
|
|
4027
|
+
let r = new AbortController();
|
|
4028
|
+
return t = r, {
|
|
4029
|
+
signal: r.signal,
|
|
4030
|
+
isLatest: () => n === e
|
|
4031
|
+
};
|
|
4032
|
+
}
|
|
4033
|
+
function r() {
|
|
4034
|
+
++e, t?.abort(), t = null;
|
|
4035
|
+
}
|
|
4036
|
+
return g() && T(r), {
|
|
4037
|
+
begin: n,
|
|
4038
|
+
cancel: r
|
|
4003
4039
|
};
|
|
4004
4040
|
}
|
|
4041
|
+
function Do(e) {
|
|
4042
|
+
return typeof DOMException < "u" && e instanceof DOMException && e.name === "AbortError" || e instanceof Error && e.name === "AbortError";
|
|
4043
|
+
}
|
|
4005
4044
|
//#endregion
|
|
4006
4045
|
//#region src/enums/BaseBadgeEnum.ts
|
|
4007
|
-
var
|
|
4046
|
+
var Oo = /* @__PURE__ */ function(e) {
|
|
4008
4047
|
return e.WIN = "WIN", e.LOSE = "LOSE", e;
|
|
4009
4048
|
}({});
|
|
4010
4049
|
//#endregion
|
|
4011
4050
|
//#region src/utils/util.ts
|
|
4012
|
-
function
|
|
4051
|
+
function ko(e) {
|
|
4013
4052
|
let t = "red";
|
|
4014
4053
|
switch (e) {
|
|
4015
|
-
case
|
|
4054
|
+
case B.ERROR:
|
|
4016
4055
|
t = "red";
|
|
4017
4056
|
break;
|
|
4018
|
-
case
|
|
4057
|
+
case B.SUCCESS:
|
|
4019
4058
|
t = "green";
|
|
4020
4059
|
break;
|
|
4021
|
-
case
|
|
4060
|
+
case B.INFO:
|
|
4022
4061
|
t = "gray";
|
|
4023
4062
|
break;
|
|
4024
|
-
case
|
|
4063
|
+
case B.WARNING: t = "yellow";
|
|
4025
4064
|
}
|
|
4026
4065
|
return t;
|
|
4027
4066
|
}
|
|
4028
|
-
function
|
|
4067
|
+
function Ao(e) {
|
|
4029
4068
|
let t = "red";
|
|
4030
4069
|
switch (e) {
|
|
4031
|
-
case
|
|
4070
|
+
case W.GREEN:
|
|
4032
4071
|
t = "green";
|
|
4033
4072
|
break;
|
|
4034
|
-
case
|
|
4073
|
+
case W.RED:
|
|
4035
4074
|
t = "red";
|
|
4036
4075
|
break;
|
|
4037
|
-
case
|
|
4076
|
+
case W.BLUE:
|
|
4038
4077
|
t = "blue";
|
|
4039
4078
|
break;
|
|
4040
|
-
case
|
|
4079
|
+
case W.YELLOW:
|
|
4041
4080
|
t = "yellow";
|
|
4042
4081
|
break;
|
|
4043
|
-
case
|
|
4082
|
+
case W.BLACK:
|
|
4044
4083
|
t = "black";
|
|
4045
4084
|
break;
|
|
4046
|
-
case
|
|
4085
|
+
case W.GRAY:
|
|
4047
4086
|
t = "gray";
|
|
4048
4087
|
break;
|
|
4049
|
-
case
|
|
4088
|
+
case W.NONE: t = "";
|
|
4050
4089
|
}
|
|
4051
4090
|
return t;
|
|
4052
4091
|
}
|
|
4053
4092
|
//#endregion
|
|
4054
4093
|
//#region src/utils/httpColors.ts
|
|
4055
|
-
var
|
|
4094
|
+
var jo = {
|
|
4056
4095
|
GET: "bg-blue-600",
|
|
4057
4096
|
POST: "bg-emerald-600",
|
|
4058
4097
|
PUT: "bg-amber-600",
|
|
4059
4098
|
DELETE: "bg-red-600",
|
|
4060
4099
|
PATCH: "bg-purple-600",
|
|
4061
4100
|
HEAD: "bg-gray-600"
|
|
4062
|
-
},
|
|
4101
|
+
}, Mo = {
|
|
4063
4102
|
GET: "bg-blue-500",
|
|
4064
4103
|
POST: "bg-green-500",
|
|
4065
4104
|
PUT: "bg-yellow-500",
|
|
@@ -4067,39 +4106,39 @@ var Do = {
|
|
|
4067
4106
|
PATCH: "bg-purple-500",
|
|
4068
4107
|
HEAD: "bg-gray-500"
|
|
4069
4108
|
};
|
|
4070
|
-
function
|
|
4071
|
-
return e ?
|
|
4109
|
+
function No(e) {
|
|
4110
|
+
return e ? jo[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
4072
4111
|
}
|
|
4073
|
-
function
|
|
4074
|
-
return e ?
|
|
4112
|
+
function Po(e) {
|
|
4113
|
+
return e ? Mo[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
|
|
4075
4114
|
}
|
|
4076
|
-
function
|
|
4115
|
+
function Fo(e) {
|
|
4077
4116
|
let t = e ?? 0;
|
|
4078
4117
|
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";
|
|
4079
4118
|
}
|
|
4080
|
-
function
|
|
4119
|
+
function Io(e, t) {
|
|
4081
4120
|
let n = (e || "ANY").toUpperCase();
|
|
4082
4121
|
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";
|
|
4083
4122
|
}
|
|
4084
|
-
function
|
|
4123
|
+
function Lo(e, t) {
|
|
4085
4124
|
let n = e ?? 200;
|
|
4086
4125
|
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";
|
|
4087
4126
|
}
|
|
4088
|
-
function
|
|
4127
|
+
function Ro(e, t) {
|
|
4089
4128
|
let n = e ?? 200;
|
|
4090
4129
|
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";
|
|
4091
4130
|
}
|
|
4092
4131
|
//#endregion
|
|
4093
4132
|
//#region src/utils/kvRows.ts
|
|
4094
|
-
function
|
|
4133
|
+
function zo(e) {
|
|
4095
4134
|
return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
|
|
4096
4135
|
}
|
|
4097
|
-
function
|
|
4136
|
+
function Bo(e) {
|
|
4098
4137
|
return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
|
|
4099
4138
|
}
|
|
4100
4139
|
//#endregion
|
|
4101
4140
|
//#region src/utils/sanitizeHtml.ts
|
|
4102
|
-
var
|
|
4141
|
+
var Vo = /* @__PURE__ */ new Set([
|
|
4103
4142
|
"A",
|
|
4104
4143
|
"B",
|
|
4105
4144
|
"STRONG",
|
|
@@ -4114,7 +4153,7 @@ var Lo = /* @__PURE__ */ new Set([
|
|
|
4114
4153
|
"LI",
|
|
4115
4154
|
"SPAN",
|
|
4116
4155
|
"DIV"
|
|
4117
|
-
]),
|
|
4156
|
+
]), Ho = /* @__PURE__ */ new Set([
|
|
4118
4157
|
"SCRIPT",
|
|
4119
4158
|
"STYLE",
|
|
4120
4159
|
"IFRAME",
|
|
@@ -4122,53 +4161,53 @@ var Lo = /* @__PURE__ */ new Set([
|
|
|
4122
4161
|
"EMBED",
|
|
4123
4162
|
"NOSCRIPT",
|
|
4124
4163
|
"TEMPLATE"
|
|
4125
|
-
]),
|
|
4126
|
-
function
|
|
4164
|
+
]), Uo = { A: /* @__PURE__ */ new Set(["href", "title"]) };
|
|
4165
|
+
function Wo(e) {
|
|
4127
4166
|
let t = e.trim().toLowerCase();
|
|
4128
4167
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
|
|
4129
4168
|
}
|
|
4130
|
-
function
|
|
4169
|
+
function Go(e) {
|
|
4131
4170
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
4132
4171
|
let t = e, n = t.tagName.toUpperCase();
|
|
4133
|
-
if (!
|
|
4134
|
-
|
|
4172
|
+
if (!Vo.has(n)) {
|
|
4173
|
+
Ho.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
|
|
4135
4174
|
return;
|
|
4136
4175
|
}
|
|
4137
|
-
let r =
|
|
4176
|
+
let r = Uo[n] ?? /* @__PURE__ */ new Set();
|
|
4138
4177
|
for (let e of Array.from(t.attributes)) {
|
|
4139
4178
|
if (!r.has(e.name.toLowerCase())) {
|
|
4140
4179
|
t.removeAttribute(e.name);
|
|
4141
4180
|
continue;
|
|
4142
4181
|
}
|
|
4143
|
-
n === "A" && e.name.toLowerCase() === "href" && !
|
|
4182
|
+
n === "A" && e.name.toLowerCase() === "href" && !Wo(e.value) && t.removeAttribute(e.name);
|
|
4144
4183
|
}
|
|
4145
4184
|
n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
|
|
4146
|
-
for (let e of Array.from(t.childNodes))
|
|
4185
|
+
for (let e of Array.from(t.childNodes)) Go(e);
|
|
4147
4186
|
}
|
|
4148
|
-
function
|
|
4187
|
+
function Ko(e) {
|
|
4149
4188
|
if (!e) return "";
|
|
4150
4189
|
let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
|
|
4151
4190
|
if (!t) return "";
|
|
4152
|
-
for (let e of Array.from(t.childNodes))
|
|
4191
|
+
for (let e of Array.from(t.childNodes)) Go(e);
|
|
4153
4192
|
return t.innerHTML;
|
|
4154
4193
|
}
|
|
4155
4194
|
//#endregion
|
|
4156
4195
|
//#region src/utils/format.ts
|
|
4157
|
-
var
|
|
4158
|
-
function
|
|
4159
|
-
if (e == null || typeof e == "string" && e.trim() === "") return
|
|
4196
|
+
var $ = "—";
|
|
4197
|
+
function qo(e, t = 4) {
|
|
4198
|
+
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
4160
4199
|
let n = typeof e == "string" ? Number(e) : e;
|
|
4161
4200
|
return isFinite(n) ? n.toLocaleString(void 0, {
|
|
4162
4201
|
minimumFractionDigits: t,
|
|
4163
4202
|
maximumFractionDigits: t
|
|
4164
|
-
}) :
|
|
4203
|
+
}) : $;
|
|
4165
4204
|
}
|
|
4166
|
-
function
|
|
4167
|
-
if (e == null || e === "") return
|
|
4205
|
+
function Jo(e) {
|
|
4206
|
+
if (e == null || e === "") return $;
|
|
4168
4207
|
let t = new Date(e);
|
|
4169
4208
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
|
|
4170
4209
|
}
|
|
4171
|
-
function
|
|
4210
|
+
function Yo(e) {
|
|
4172
4211
|
return new Date(e).toLocaleString(void 0, {
|
|
4173
4212
|
month: "short",
|
|
4174
4213
|
day: "numeric",
|
|
@@ -4176,13 +4215,13 @@ function Ko(e) {
|
|
|
4176
4215
|
minute: "2-digit"
|
|
4177
4216
|
});
|
|
4178
4217
|
}
|
|
4179
|
-
function
|
|
4218
|
+
function Xo(e) {
|
|
4180
4219
|
return new Date(e).toLocaleDateString(void 0, {
|
|
4181
4220
|
month: "short",
|
|
4182
4221
|
day: "numeric"
|
|
4183
4222
|
});
|
|
4184
4223
|
}
|
|
4185
|
-
function
|
|
4224
|
+
function Zo(e) {
|
|
4186
4225
|
try {
|
|
4187
4226
|
return new Date(e).toLocaleString(void 0, {
|
|
4188
4227
|
year: "numeric",
|
|
@@ -4198,7 +4237,7 @@ function Jo(e) {
|
|
|
4198
4237
|
return String(e);
|
|
4199
4238
|
}
|
|
4200
4239
|
}
|
|
4201
|
-
function
|
|
4240
|
+
function Qo(e) {
|
|
4202
4241
|
if (!isFinite(e) || e === 0) return e.toFixed(2);
|
|
4203
4242
|
let t = Math.abs(e), n = 2;
|
|
4204
4243
|
return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
|
|
@@ -4206,14 +4245,24 @@ function Yo(e) {
|
|
|
4206
4245
|
maximumFractionDigits: n
|
|
4207
4246
|
});
|
|
4208
4247
|
}
|
|
4209
|
-
function
|
|
4248
|
+
function $o(e, t = 2) {
|
|
4210
4249
|
return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
|
|
4211
4250
|
}
|
|
4212
|
-
function
|
|
4251
|
+
function es(e) {
|
|
4213
4252
|
return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
|
|
4214
4253
|
}
|
|
4215
|
-
function
|
|
4216
|
-
if (e == null || e === "") return
|
|
4254
|
+
function ts(e, t = 2, n = "$") {
|
|
4255
|
+
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
4256
|
+
let r = typeof e == "string" ? Number(e) : e;
|
|
4257
|
+
if (!isFinite(r)) return $;
|
|
4258
|
+
let i = Math.abs(r).toLocaleString(void 0, {
|
|
4259
|
+
minimumFractionDigits: t,
|
|
4260
|
+
maximumFractionDigits: t
|
|
4261
|
+
});
|
|
4262
|
+
return `${r < 0 && Number(Math.abs(r).toFixed(t)) !== 0 ? "-" : ""}${n}${i}`;
|
|
4263
|
+
}
|
|
4264
|
+
function ns(e) {
|
|
4265
|
+
if (e == null || e === "") return $;
|
|
4217
4266
|
let t = new Date(e);
|
|
4218
4267
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
4219
4268
|
year: "numeric",
|
|
@@ -4221,8 +4270,8 @@ function Qo(e) {
|
|
|
4221
4270
|
day: "numeric"
|
|
4222
4271
|
});
|
|
4223
4272
|
}
|
|
4224
|
-
function
|
|
4225
|
-
if (e == null || e === "") return
|
|
4273
|
+
function rs(e) {
|
|
4274
|
+
if (e == null || e === "") return $;
|
|
4226
4275
|
let t = new Date(e);
|
|
4227
4276
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
4228
4277
|
year: "numeric",
|
|
@@ -4232,22 +4281,22 @@ function $o(e) {
|
|
|
4232
4281
|
minute: "2-digit"
|
|
4233
4282
|
});
|
|
4234
4283
|
}
|
|
4235
|
-
function
|
|
4284
|
+
function is(e) {
|
|
4236
4285
|
if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
|
|
4237
4286
|
let t = e / 1e3, n = t < 1 ? 3 : 2;
|
|
4238
4287
|
return `= ${t.toFixed(n)} s`;
|
|
4239
4288
|
}
|
|
4240
|
-
function
|
|
4289
|
+
function as(e) {
|
|
4241
4290
|
return e ? e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1048576).toFixed(1)} MB` : "";
|
|
4242
4291
|
}
|
|
4243
|
-
function
|
|
4292
|
+
function os(e) {
|
|
4244
4293
|
try {
|
|
4245
4294
|
return JSON.stringify(JSON.parse(e), null, 2);
|
|
4246
4295
|
} catch {
|
|
4247
4296
|
return e;
|
|
4248
4297
|
}
|
|
4249
4298
|
}
|
|
4250
|
-
function
|
|
4299
|
+
function ss(e) {
|
|
4251
4300
|
if (e == null) return "";
|
|
4252
4301
|
if (typeof e == "string") return e;
|
|
4253
4302
|
try {
|
|
@@ -4256,14 +4305,14 @@ function rs(e) {
|
|
|
4256
4305
|
return String(e);
|
|
4257
4306
|
}
|
|
4258
4307
|
}
|
|
4259
|
-
function
|
|
4260
|
-
if (e == null || !isFinite(e)) return
|
|
4308
|
+
function cs(e, t = 2) {
|
|
4309
|
+
if (e == null || !isFinite(e)) return $;
|
|
4261
4310
|
let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
|
|
4262
4311
|
return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
|
|
4263
4312
|
}
|
|
4264
4313
|
//#endregion
|
|
4265
4314
|
//#region src/utils/validate.ts
|
|
4266
|
-
function
|
|
4315
|
+
function ls(e) {
|
|
4267
4316
|
let t = (e ?? "").trim();
|
|
4268
4317
|
if (!t) return !1;
|
|
4269
4318
|
try {
|
|
@@ -4273,7 +4322,7 @@ function as(e) {
|
|
|
4273
4322
|
return !1;
|
|
4274
4323
|
}
|
|
4275
4324
|
}
|
|
4276
|
-
function
|
|
4325
|
+
function us(e) {
|
|
4277
4326
|
if (!e.trim()) return !0;
|
|
4278
4327
|
try {
|
|
4279
4328
|
return JSON.parse(e), !0;
|
|
@@ -4281,7 +4330,7 @@ function os(e) {
|
|
|
4281
4330
|
return !1;
|
|
4282
4331
|
}
|
|
4283
4332
|
}
|
|
4284
|
-
function
|
|
4333
|
+
function ds(e) {
|
|
4285
4334
|
if (!e.trim()) return !0;
|
|
4286
4335
|
try {
|
|
4287
4336
|
return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
|
|
@@ -4289,7 +4338,7 @@ function ss(e) {
|
|
|
4289
4338
|
return !1;
|
|
4290
4339
|
}
|
|
4291
4340
|
}
|
|
4292
|
-
function
|
|
4341
|
+
function fs(e) {
|
|
4293
4342
|
if (!e.trim()) return !0;
|
|
4294
4343
|
let t = e.replace(/\s+/g, "");
|
|
4295
4344
|
if (!t) return !0;
|
|
@@ -4302,7 +4351,7 @@ function cs(e) {
|
|
|
4302
4351
|
}
|
|
4303
4352
|
//#endregion
|
|
4304
4353
|
//#region src/utils/specForm.ts
|
|
4305
|
-
function
|
|
4354
|
+
function ps(e, t) {
|
|
4306
4355
|
let n = {};
|
|
4307
4356
|
if (!e) return n;
|
|
4308
4357
|
for (let r of e) {
|
|
@@ -4311,7 +4360,7 @@ function ls(e, t) {
|
|
|
4311
4360
|
}
|
|
4312
4361
|
return n;
|
|
4313
4362
|
}
|
|
4314
|
-
function
|
|
4363
|
+
function ms(e, t) {
|
|
4315
4364
|
if (!e) return null;
|
|
4316
4365
|
for (let n of e) if (n.type === "decimal" || n.type === "integer") {
|
|
4317
4366
|
let e = t[n.key], r = e === "" || e == null;
|
|
@@ -4322,7 +4371,7 @@ function us(e, t) {
|
|
|
4322
4371
|
}
|
|
4323
4372
|
//#endregion
|
|
4324
4373
|
//#region src/utils/pnl.ts
|
|
4325
|
-
function
|
|
4374
|
+
function hs(e) {
|
|
4326
4375
|
if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
|
|
4327
4376
|
pnlUsd: null,
|
|
4328
4377
|
pnlPct: null
|
|
@@ -4337,4 +4386,4 @@ function ds(e) {
|
|
|
4337
4386
|
};
|
|
4338
4387
|
}
|
|
4339
4388
|
//#endregion
|
|
4340
|
-
export {
|
|
4389
|
+
export { B as AlertEnum, Or as BaseActionButton, Ve as BaseAlert, vr as BaseAppLayout, po as BaseAuthLayout, Ge as BaseBadge, Oo as BaseBadgeEnum, xa as BaseBarDistribution, go as BaseBooleanBadge, Ye as BaseBreadcrumb, it as BaseButton, G as BaseButtonEnum, K as BaseButtonSizeEnum, za as BaseCard, eo as BaseCheckbox, ti as BaseChipButton, li as BaseCodeBlock, Tn as BaseCollapsibleSection, kn as BaseConfirmModal, Ar as BaseCopyButton, oa as BaseCredentialsForm, Sa as BaseDateTimePicker, bo as BaseDetailList, vi as BaseDropdown, hr as BaseEntityPickerModal, Wa as BaseField, ci as BaseFileDropzone, Ui as BaseFilterChip, Pr as BaseGoogleSignInButton, di as BaseInput, lt as BaseLine, ut as BaseLoginEnum, Kr as BaseLoginForm, Nt as BaseLogo, q as BaseLogoEnum, Bt as BaseModal, Pt as BaseModalEnum, Sn as BaseModalShell, In as BaseNotFoundPage, $r as BaseNotificationPanel, Sr as BasePageHeader, ga as BasePillPickerModal, ni as BaseRemoveButton, Vt as BaseRow, ja as BaseSearchSelect, Si as BaseSegmentedControl, pi as BaseSelect, nr as BaseSidebar, oo as BaseSidebarUser, Ri as BaseSpecFields, Ht as BaseSpinner, Vi as BaseStatBreakdown, Ja as BaseStatCard, ai as BaseStatusPill, Ai as BaseTable, Nn as BaseTextInputModal, Gt as BaseToast, J as BaseToastEnum, Za as BaseToggle, Tr as BaseToolbarButton, qt as ColoredSquares, W as ColorsEnums, Xt as EarningsCard, tn as EuroAmount, at as LineEnum, sn as Pagination, Y as PositioningEnum, fn as TrendArrow, ps as buildSpecParams, hs as computePnL, ms as firstInvalidNumericSpec, as as fmtBytes, ns as fmtCalendarDate, rs as fmtCalendarDateTime, Jo as fmtDate, Xo as fmtDateShort, Yo as fmtDateTime, Zo as fmtDateTimeMs, cs as fmtDuration, ts as fmtMoney, is as fmtMsAsSeconds, qo as fmtNumber, $o as fmtPct, Qo as fmtPrice, es as fmtUsd, os as formatJson, ko as getBaseColor, Ao as getBaseColorOf, He as humanizeEnum, Ue as humanizeTextVNodes, Re as initTheme, Do as isAbortError, Wo as isSafeHref, ls as isValidAbsoluteUrl, fs as isValidBase64, us as isValidJson, ds as isValidXml, Po as methodBadgeBright, No as methodBadgeSolid, Io as methodBadgeTinted, Bo as rowKeyMissing, zo as rowValueMissing, Ko as sanitizeHtml, Lo as statusBadgeSoft, Fo as statusBadgeSolid, Ro as statusBadgeTinted, ss as stringifyValue, xo as useDebouncedRef, pn as useEscapeKey, wo as useFieldClasses, Eo as useLatestRequest, Rn as useMobileSidebar, Gn as useNotifications, To as usePolling, Co as useQueryParamSync, Hn as useSidebarCollapse, U as useTheme, X as useThemeClasses, So as useToast };
|