mgv-backoffice 1.36.3 → 1.37.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 +32 -0
- package/dist/components/BaseDateTimePicker.vue.d.ts +49 -0
- package/dist/index.d.ts +2 -0
- package/dist/ui-lib.css +1 -1
- package/dist/ui-lib.js +842 -788
- package/dist/ui-lib.umd.cjs +1 -1
- package/package.json +4 -1
- package/src/components/BaseDateTimePicker.test.ts +49 -0
- package/src/components/BaseDateTimePicker.vue +91 -0
- package/src/index.ts +4 -0
- package/src/style.css +58 -0
package/dist/ui-lib.js
CHANGED
|
@@ -1,125 +1,126 @@
|
|
|
1
|
-
import { Fragment as e, Teleport as t, Text as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createStaticVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, effectScope as m,
|
|
2
|
-
import { ArrowDownIcon as
|
|
3
|
-
import { HomeIcon as
|
|
4
|
-
import { useRoute as
|
|
1
|
+
import { Fragment as e, Teleport as t, Text as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createStaticVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, effectScope as m, guardReactiveProps as h, nextTick as g, normalizeClass as _, normalizeProps as v, normalizeStyle as y, onBeforeUnmount as b, onMounted as x, onScopeDispose as S, onUnmounted as C, openBlock as w, reactive as T, readonly as ee, ref as E, renderList as D, renderSlot as O, resolveComponent as k, resolveDynamicComponent as A, toDisplayString as j, unref as M, useSlots as te, vModelCheckbox as ne, vModelDynamic as re, vModelText as ie, vShow as ae, watch as N, withCtx as P, withDirectives as F, withKeys as oe, withModifiers as I } from "vue";
|
|
2
|
+
import { ArrowDownIcon as se, ArrowUpIcon as ce, Bars3Icon as le, BellIcon as ue, CheckCircleIcon as de, ChevronDoubleLeftIcon as fe, ChevronDoubleRightIcon as pe, ChevronDownIcon as me, ChevronRightIcon as he, ClipboardDocumentCheckIcon as ge, ClipboardDocumentIcon as _e, DocumentDuplicateIcon as ve, ExclamationCircleIcon as ye, ExclamationTriangleIcon as be, FolderIcon as xe, InformationCircleIcon as Se, MagnifyingGlassIcon as Ce, MinusIcon as we, MoonIcon as Te, SunIcon as Ee, XMarkIcon as De } from "@heroicons/vue/24/outline";
|
|
3
|
+
import { HomeIcon as Oe } from "@heroicons/vue/24/solid";
|
|
4
|
+
import { useRoute as ke, useRouter as Ae } from "vue-router";
|
|
5
|
+
import { VueDatePicker as je } from "@vuepic/vue-datepicker";
|
|
5
6
|
//#region src/enums/AlertEnum.ts
|
|
6
|
-
var
|
|
7
|
+
var L = /* @__PURE__ */ function(e) {
|
|
7
8
|
return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
|
|
8
|
-
}({}),
|
|
9
|
-
function
|
|
10
|
-
if (
|
|
11
|
-
e !==
|
|
9
|
+
}({}), R = E(!1), Me = !1, z = "mgv-theme";
|
|
10
|
+
function Ne(e) {
|
|
11
|
+
if (Me) {
|
|
12
|
+
e !== z && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${z}". Call initTheme({ storageKey }) before mounting any component.`);
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
|
-
if (
|
|
15
|
-
let e = window.localStorage?.getItem(
|
|
16
|
-
e ?
|
|
15
|
+
if (Me = !0, z = e, typeof window < "u") {
|
|
16
|
+
let e = window.localStorage?.getItem(z);
|
|
17
|
+
e ? R.value = e === "dark" : typeof window.matchMedia == "function" && (R.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
17
18
|
}
|
|
18
19
|
typeof document < "u" && m(!0).run(() => {
|
|
19
|
-
|
|
20
|
-
document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(
|
|
20
|
+
N(R, (e) => {
|
|
21
|
+
document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(z, e ? "dark" : "light");
|
|
21
22
|
}, { immediate: !0 });
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
|
-
function
|
|
25
|
-
|
|
25
|
+
function Pe(e) {
|
|
26
|
+
Ne(e?.storageKey ?? z);
|
|
26
27
|
}
|
|
27
|
-
function
|
|
28
|
-
|
|
28
|
+
function B(e) {
|
|
29
|
+
Ne(e?.storageKey ?? z);
|
|
29
30
|
function t() {
|
|
30
|
-
|
|
31
|
+
R.value = !R.value;
|
|
31
32
|
}
|
|
32
33
|
return {
|
|
33
|
-
isDark:
|
|
34
|
+
isDark: R,
|
|
34
35
|
toggleTheme: t
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
38
|
//#endregion
|
|
38
39
|
//#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
|
|
39
|
-
var
|
|
40
|
+
var Fe = { class: "min-w-0 flex-1" }, Ie = {
|
|
40
41
|
key: 0,
|
|
41
42
|
class: "font-medium"
|
|
42
|
-
},
|
|
43
|
+
}, Le = /* @__PURE__ */ p({
|
|
43
44
|
__name: "BaseAlert",
|
|
44
45
|
props: {
|
|
45
46
|
title: { default: "" },
|
|
46
|
-
color: { default:
|
|
47
|
+
color: { default: L.ERROR },
|
|
47
48
|
compact: {
|
|
48
49
|
type: Boolean,
|
|
49
50
|
default: !1
|
|
50
51
|
}
|
|
51
52
|
},
|
|
52
53
|
setup(e) {
|
|
53
|
-
let t = e, { isDark: n } =
|
|
54
|
-
[
|
|
54
|
+
let t = e, { isDark: n } = B(), r = {
|
|
55
|
+
[L.ERROR]: {
|
|
55
56
|
light: "bg-red-50 border-red-200 text-red-700",
|
|
56
57
|
dark: "bg-red-500/10 border-red-500/30 text-red-300"
|
|
57
58
|
},
|
|
58
|
-
[
|
|
59
|
+
[L.WARNING]: {
|
|
59
60
|
light: "bg-amber-50 border-amber-200 text-amber-700",
|
|
60
61
|
dark: "bg-amber-500/10 border-amber-500/30 text-amber-300"
|
|
61
62
|
},
|
|
62
|
-
[
|
|
63
|
+
[L.SUCCESS]: {
|
|
63
64
|
light: "bg-emerald-50 border-emerald-200 text-emerald-700",
|
|
64
65
|
dark: "bg-emerald-500/10 border-emerald-500/30 text-emerald-300"
|
|
65
66
|
},
|
|
66
|
-
[
|
|
67
|
+
[L.INFO]: {
|
|
67
68
|
light: "bg-sky-50 border-sky-200 text-sky-700",
|
|
68
69
|
dark: "bg-sky-500/10 border-sky-500/30 text-sky-300"
|
|
69
70
|
}
|
|
70
71
|
}, l = i(() => n.value ? r[t.color].dark : r[t.color].light), u = i(() => {
|
|
71
72
|
switch (t.color) {
|
|
72
|
-
case
|
|
73
|
-
case
|
|
74
|
-
case
|
|
75
|
-
default: return
|
|
73
|
+
case L.SUCCESS: return de;
|
|
74
|
+
case L.WARNING: return be;
|
|
75
|
+
case L.INFO: return Se;
|
|
76
|
+
default: return ye;
|
|
76
77
|
}
|
|
77
78
|
}), d = i(() => {
|
|
78
79
|
switch (t.color) {
|
|
79
|
-
case
|
|
80
|
-
case
|
|
81
|
-
case
|
|
80
|
+
case L.SUCCESS: return "text-emerald-500";
|
|
81
|
+
case L.WARNING: return "text-amber-500";
|
|
82
|
+
case L.INFO: return "text-sky-500";
|
|
82
83
|
default: return "text-red-500";
|
|
83
84
|
}
|
|
84
85
|
});
|
|
85
|
-
return (t, n) => (
|
|
86
|
+
return (t, n) => (w(), s("div", {
|
|
86
87
|
role: "alert",
|
|
87
|
-
class:
|
|
88
|
-
}, [(
|
|
89
|
-
class:
|
|
88
|
+
class: _(["flex gap-3 mb-4 rounded-lg border text-sm transition-colors", [e.compact ? "items-start px-3 py-2 text-xs" : "items-start p-4", l.value]])
|
|
89
|
+
}, [(w(), a(A(u.value), {
|
|
90
|
+
class: _(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
|
|
90
91
|
"aria-hidden": "true"
|
|
91
|
-
}, null, 8, ["class"])), c("div",
|
|
92
|
+
}, null, 8, ["class"])), c("div", Fe, [e.title ? (w(), s("p", Ie, j(e.title), 1)) : o("", !0), O(t.$slots, "default")])], 2));
|
|
92
93
|
}
|
|
93
|
-
}),
|
|
94
|
+
}), V = /* @__PURE__ */ function(e) {
|
|
94
95
|
return e.NONE = "NONE", e.RED = "RED", e.YELLOW = "YELLOW", e.BLACK = "BLACK", e.GRAY = "GRAY", e.GREEN = "GREEN", e.BLUE = "BLUE", e;
|
|
95
|
-
}({}),
|
|
96
|
+
}({}), Re = "bg-red-100 text-red-700 border-red-200", ze = /* @__PURE__ */ p({
|
|
96
97
|
__name: "BaseBadge",
|
|
97
98
|
props: { color: {
|
|
98
99
|
type: String,
|
|
99
100
|
required: !1
|
|
100
101
|
} },
|
|
101
102
|
setup(e) {
|
|
102
|
-
let t =
|
|
103
|
-
[
|
|
104
|
-
[
|
|
105
|
-
[
|
|
106
|
-
[
|
|
107
|
-
[
|
|
108
|
-
[
|
|
109
|
-
[
|
|
110
|
-
}, u = i(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${c.color && l[c.color] ||
|
|
111
|
-
return (e, t) => r.value ? (
|
|
103
|
+
let t = te(), r = i(() => !!t.default), a = () => (t.default?.() ?? []).map((e) => e.type === n && typeof e.children == "string" ? d(e.children.replace(/_/g, " ")) : e), c = e, l = {
|
|
104
|
+
[V.RED]: "bg-red-100 text-red-700 border-red-200",
|
|
105
|
+
[V.GREEN]: "bg-green-100 text-green-700 border-green-200",
|
|
106
|
+
[V.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
|
|
107
|
+
[V.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
|
|
108
|
+
[V.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
|
|
109
|
+
[V.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
|
|
110
|
+
[V.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
|
|
111
|
+
}, u = i(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${c.color && l[c.color] || Re}`);
|
|
112
|
+
return (e, t) => r.value ? (w(), s("span", {
|
|
112
113
|
key: 0,
|
|
113
|
-
class:
|
|
114
|
+
class: _(u.value)
|
|
114
115
|
}, [f(a)], 2)) : o("", !0);
|
|
115
116
|
}
|
|
116
|
-
}),
|
|
117
|
+
}), Be = {
|
|
117
118
|
class: "flex px-5 py-3 text-gray-700 border border-gray-200 rounded-lg bg-gray-50 dark:bg-gray-800 dark:border-gray-700",
|
|
118
119
|
"aria-label": "Breadcrumb"
|
|
119
|
-
},
|
|
120
|
+
}, Ve = { class: "inline-flex items-center space-x-1 md:space-x-3" }, He = {
|
|
120
121
|
class: "inline-flex items-center",
|
|
121
122
|
style: { "margin-left": "0" }
|
|
122
|
-
},
|
|
123
|
+
}, Ue = /* @__PURE__ */ p({
|
|
123
124
|
__name: "BaseBreadcrumb",
|
|
124
125
|
props: {
|
|
125
126
|
items: {
|
|
@@ -143,41 +144,41 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
143
144
|
}));
|
|
144
145
|
});
|
|
145
146
|
return (t, n) => {
|
|
146
|
-
let i =
|
|
147
|
-
return
|
|
147
|
+
let i = k("router-link");
|
|
148
|
+
return w(), s("nav", Be, [c("ol", Ve, [c("li", He, [f(i, {
|
|
148
149
|
to: "/",
|
|
149
150
|
class: "inline-flex items-center text-sm font-medium text-gray-700 hover:text-blue-600 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
|
|
150
151
|
}, {
|
|
151
|
-
default:
|
|
152
|
+
default: P(() => [f(M(Oe), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= d(" Home ", -1)]),
|
|
152
153
|
_: 1
|
|
153
|
-
})]), (
|
|
154
|
+
})]), (w(!0), s(e, null, D(r.value, (e, t) => (w(), s("li", {
|
|
154
155
|
key: t,
|
|
155
156
|
class: "inline-flex items-center",
|
|
156
157
|
style: { "margin-left": "0" }
|
|
157
|
-
}, [f(
|
|
158
|
+
}, [f(M(he), { class: "h-4 w-4 text-gray-500" }), f(i, {
|
|
158
159
|
to: e.url,
|
|
159
160
|
class: "ml-1 text-sm font-medium text-gray-700 hover:text-blue-600 md:ml-2 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
|
|
160
161
|
}, {
|
|
161
|
-
default:
|
|
162
|
+
default: P(() => [d(j(e.name), 1)]),
|
|
162
163
|
_: 2
|
|
163
164
|
}, 1032, ["to"])]))), 128))])]);
|
|
164
165
|
};
|
|
165
166
|
}
|
|
166
|
-
}),
|
|
167
|
+
}), H = /* @__PURE__ */ function(e) {
|
|
167
168
|
return e.RED = "RED", e.BLUE = "BLUE", e.WHITE = "WHITE", e.DARK = "DARK", e.GREEN = "GREEN", e.EMERALD = "EMERALD", e.YELLOW = "YELLOW", e.PURPLE = "PURPLE", e.SKY = "SKY", e.GRAY = "GRAY", e.AMBER = "AMBER", e;
|
|
168
|
-
}({}),
|
|
169
|
+
}({}), U = /* @__PURE__ */ function(e) {
|
|
169
170
|
return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
|
|
170
|
-
}({}),
|
|
171
|
+
}({}), We = [
|
|
171
172
|
"type",
|
|
172
173
|
"disabled",
|
|
173
174
|
"onClick"
|
|
174
|
-
],
|
|
175
|
+
], Ge = {
|
|
175
176
|
key: 0,
|
|
176
177
|
class: "inline-flex items-center"
|
|
177
|
-
},
|
|
178
|
+
}, Ke = { key: 1 }, qe = { key: 2 }, Je = ["type", "disabled"], Ye = {
|
|
178
179
|
key: 0,
|
|
179
180
|
class: "inline-flex items-center"
|
|
180
|
-
},
|
|
181
|
+
}, Xe = { key: 1 }, Ze = { key: 2 }, W = /* @__PURE__ */ p({
|
|
181
182
|
__name: "BaseButton",
|
|
182
183
|
props: {
|
|
183
184
|
description: {
|
|
@@ -187,7 +188,7 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
187
188
|
color: {
|
|
188
189
|
type: String,
|
|
189
190
|
required: !1,
|
|
190
|
-
default:
|
|
191
|
+
default: H.BLUE
|
|
191
192
|
},
|
|
192
193
|
to: {
|
|
193
194
|
type: String,
|
|
@@ -231,103 +232,103 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
231
232
|
}
|
|
232
233
|
},
|
|
233
234
|
setup(e) {
|
|
234
|
-
let { isDark: t } =
|
|
235
|
+
let { isDark: t } = B(), n = e;
|
|
235
236
|
function r() {
|
|
236
237
|
let e = {
|
|
237
|
-
[
|
|
238
|
+
[H.BLUE]: {
|
|
238
239
|
light: "text-blue-700 border-blue-300 hover:bg-blue-50",
|
|
239
240
|
dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
|
|
240
241
|
},
|
|
241
|
-
[
|
|
242
|
+
[H.GREEN]: {
|
|
242
243
|
light: "text-green-700 border-green-300 hover:bg-green-50",
|
|
243
244
|
dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
|
|
244
245
|
},
|
|
245
|
-
[
|
|
246
|
+
[H.EMERALD]: {
|
|
246
247
|
light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
|
|
247
248
|
dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
|
|
248
249
|
},
|
|
249
|
-
[
|
|
250
|
+
[H.RED]: {
|
|
250
251
|
light: "text-red-700 border-red-300 hover:bg-red-50",
|
|
251
252
|
dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
|
|
252
253
|
},
|
|
253
|
-
[
|
|
254
|
+
[H.YELLOW]: {
|
|
254
255
|
light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
|
|
255
256
|
dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
|
|
256
257
|
},
|
|
257
|
-
[
|
|
258
|
+
[H.PURPLE]: {
|
|
258
259
|
light: "text-purple-700 border-purple-300 hover:bg-purple-50",
|
|
259
260
|
dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
|
|
260
261
|
},
|
|
261
|
-
[
|
|
262
|
+
[H.SKY]: {
|
|
262
263
|
light: "text-sky-700 border-sky-300 hover:bg-sky-50",
|
|
263
264
|
dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
|
|
264
265
|
},
|
|
265
|
-
[
|
|
266
|
+
[H.AMBER]: {
|
|
266
267
|
light: "text-amber-700 border-amber-300 hover:bg-amber-50",
|
|
267
268
|
dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
|
|
268
269
|
},
|
|
269
|
-
[
|
|
270
|
+
[H.GRAY]: {
|
|
270
271
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
271
272
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
272
273
|
},
|
|
273
|
-
[
|
|
274
|
+
[H.DARK]: {
|
|
274
275
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
275
276
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
276
277
|
},
|
|
277
|
-
[
|
|
278
|
+
[H.WHITE]: {
|
|
278
279
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
279
280
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
280
281
|
}
|
|
281
|
-
}, r = e[n.color] ?? e[
|
|
282
|
+
}, r = e[n.color] ?? e[H.BLUE], i = t.value ? r.dark : r.light;
|
|
282
283
|
return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current border bg-transparent ${i}`;
|
|
283
284
|
}
|
|
284
285
|
function i() {
|
|
285
286
|
let e = {
|
|
286
|
-
[
|
|
287
|
+
[H.BLUE]: {
|
|
287
288
|
light: "text-blue-600 hover:bg-blue-50",
|
|
288
289
|
dark: "text-blue-400 hover:bg-blue-500/10"
|
|
289
290
|
},
|
|
290
|
-
[
|
|
291
|
+
[H.GREEN]: {
|
|
291
292
|
light: "text-green-600 hover:bg-green-50",
|
|
292
293
|
dark: "text-green-400 hover:bg-green-500/10"
|
|
293
294
|
},
|
|
294
|
-
[
|
|
295
|
+
[H.EMERALD]: {
|
|
295
296
|
light: "text-emerald-600 hover:bg-emerald-50",
|
|
296
297
|
dark: "text-emerald-400 hover:bg-emerald-500/10"
|
|
297
298
|
},
|
|
298
|
-
[
|
|
299
|
+
[H.SKY]: {
|
|
299
300
|
light: "text-sky-600 hover:bg-sky-50",
|
|
300
301
|
dark: "text-sky-400 hover:bg-sky-500/10"
|
|
301
302
|
},
|
|
302
|
-
[
|
|
303
|
+
[H.RED]: {
|
|
303
304
|
light: "text-red-500 hover:bg-red-50",
|
|
304
305
|
dark: "text-red-400 hover:bg-red-500/10"
|
|
305
306
|
},
|
|
306
|
-
[
|
|
307
|
+
[H.AMBER]: {
|
|
307
308
|
light: "text-amber-700 hover:bg-amber-50",
|
|
308
309
|
dark: "text-amber-300 hover:bg-amber-500/10"
|
|
309
310
|
},
|
|
310
|
-
[
|
|
311
|
+
[H.YELLOW]: {
|
|
311
312
|
light: "text-yellow-600 hover:bg-yellow-50",
|
|
312
313
|
dark: "text-yellow-400 hover:bg-yellow-500/10"
|
|
313
314
|
},
|
|
314
|
-
[
|
|
315
|
+
[H.PURPLE]: {
|
|
315
316
|
light: "text-purple-600 hover:bg-purple-50",
|
|
316
317
|
dark: "text-purple-400 hover:bg-purple-500/10"
|
|
317
318
|
},
|
|
318
|
-
[
|
|
319
|
+
[H.GRAY]: {
|
|
319
320
|
light: "text-gray-500 hover:bg-gray-100",
|
|
320
321
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
321
322
|
},
|
|
322
|
-
[
|
|
323
|
+
[H.DARK]: {
|
|
323
324
|
light: "text-gray-500 hover:bg-gray-100",
|
|
324
325
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
325
326
|
},
|
|
326
|
-
[
|
|
327
|
+
[H.WHITE]: {
|
|
327
328
|
light: "text-gray-500 hover:bg-gray-100",
|
|
328
329
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
329
330
|
}
|
|
330
|
-
}, r = e[n.color] ?? e[
|
|
331
|
+
}, r = e[n.color] ?? e[H.GRAY], i = t.value ? r.dark : r.light;
|
|
331
332
|
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`;
|
|
332
333
|
}
|
|
333
334
|
function l() {
|
|
@@ -335,37 +336,37 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
335
336
|
e || (t += " cursor-pointer");
|
|
336
337
|
let a;
|
|
337
338
|
switch (n.color) {
|
|
338
|
-
case
|
|
339
|
+
case H.BLUE:
|
|
339
340
|
a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
|
|
340
341
|
break;
|
|
341
|
-
case
|
|
342
|
+
case H.WHITE:
|
|
342
343
|
a = e ? "text-gray-900 bg-gray-200 border border-gray-200 cursor-not-allowed" : "focus:outline-none text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200";
|
|
343
344
|
break;
|
|
344
|
-
case
|
|
345
|
+
case H.DARK:
|
|
345
346
|
a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300";
|
|
346
347
|
break;
|
|
347
|
-
case
|
|
348
|
+
case H.GREEN:
|
|
348
349
|
a = e ? "text-white bg-green-400 cursor-not-allowed" : "focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300";
|
|
349
350
|
break;
|
|
350
|
-
case
|
|
351
|
+
case H.EMERALD:
|
|
351
352
|
a = e ? "text-white bg-emerald-400 cursor-not-allowed" : "focus:outline-none text-white bg-emerald-600 hover:bg-emerald-700 focus:ring-4 focus:ring-emerald-300";
|
|
352
353
|
break;
|
|
353
|
-
case
|
|
354
|
+
case H.RED:
|
|
354
355
|
a = e ? "text-white bg-red-400 cursor-not-allowed" : "focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300";
|
|
355
356
|
break;
|
|
356
|
-
case
|
|
357
|
+
case H.YELLOW:
|
|
357
358
|
a = e ? "text-white bg-yellow-300 cursor-not-allowed" : "focus:outline-none text-white bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300";
|
|
358
359
|
break;
|
|
359
|
-
case
|
|
360
|
+
case H.PURPLE:
|
|
360
361
|
a = e ? "text-white bg-purple-400 cursor-not-allowed" : "focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300";
|
|
361
362
|
break;
|
|
362
|
-
case
|
|
363
|
+
case H.SKY:
|
|
363
364
|
a = e ? "text-white bg-sky-400 cursor-not-allowed" : "focus:outline-none text-white bg-sky-600 hover:bg-sky-700 focus:ring-4 focus:ring-sky-300";
|
|
364
365
|
break;
|
|
365
|
-
case
|
|
366
|
+
case H.AMBER:
|
|
366
367
|
a = e ? "text-white bg-amber-300 cursor-not-allowed" : "focus:outline-none text-white bg-amber-500 hover:bg-amber-600 focus:ring-4 focus:ring-amber-300";
|
|
367
368
|
break;
|
|
368
|
-
case
|
|
369
|
+
case H.GRAY:
|
|
369
370
|
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";
|
|
370
371
|
break;
|
|
371
372
|
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";
|
|
@@ -373,37 +374,37 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
373
374
|
n.outline && (a = r()), n.ghost && (a = i());
|
|
374
375
|
let o = "px-5 py-2.5 mr-2 mb-2 text-sm";
|
|
375
376
|
switch (n.size) {
|
|
376
|
-
case
|
|
377
|
+
case U.EXTRA_SMALL:
|
|
377
378
|
o = "px-3 py-2 text-xs";
|
|
378
379
|
break;
|
|
379
|
-
case
|
|
380
|
+
case U.SMALL:
|
|
380
381
|
o = "px-3 py-2 text-sm";
|
|
381
382
|
break;
|
|
382
|
-
case
|
|
383
|
+
case U.BASE:
|
|
383
384
|
o = "px-5 py-2.5 text-sm";
|
|
384
385
|
break;
|
|
385
|
-
case
|
|
386
|
+
case U.LARGE:
|
|
386
387
|
o = "px-5 py-3 text-base";
|
|
387
388
|
break;
|
|
388
|
-
case
|
|
389
|
+
case U.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
|
|
389
390
|
}
|
|
390
391
|
let s = "rounded-lg";
|
|
391
392
|
return n.isRounded && (s = "rounded-full"), t + " " + o + " " + a + " font-medium " + s;
|
|
392
393
|
}
|
|
393
394
|
return (t, r) => {
|
|
394
|
-
let i =
|
|
395
|
-
return e.to ? (
|
|
395
|
+
let i = k("router-link");
|
|
396
|
+
return e.to ? (w(), a(i, {
|
|
396
397
|
key: 0,
|
|
397
398
|
to: e.to,
|
|
398
399
|
custom: ""
|
|
399
400
|
}, {
|
|
400
|
-
default:
|
|
401
|
+
default: P(({ navigate: i }) => [c("button", {
|
|
401
402
|
type: n.type,
|
|
402
|
-
class:
|
|
403
|
+
class: _(l()),
|
|
403
404
|
disabled: e.isDisable || e.isLoading,
|
|
404
405
|
onClick: i
|
|
405
406
|
}, [
|
|
406
|
-
e.isLoading ? (
|
|
407
|
+
e.isLoading ? (w(), s("div", Ge, [...r[0] ||= [c("svg", {
|
|
407
408
|
"aria-hidden": "true",
|
|
408
409
|
role: "status",
|
|
409
410
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -417,18 +418,18 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
417
418
|
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",
|
|
418
419
|
fill: "currentColor"
|
|
419
420
|
})], -1)]])) : o("", !0),
|
|
420
|
-
e.iconLeft ? o("", !0) : (
|
|
421
|
-
|
|
422
|
-
e.iconLeft ? (
|
|
423
|
-
], 10,
|
|
421
|
+
e.iconLeft ? o("", !0) : (w(), s("span", Ke, j(e.description), 1)),
|
|
422
|
+
O(t.$slots, "default"),
|
|
423
|
+
e.iconLeft ? (w(), s("span", qe, j(e.description), 1)) : o("", !0)
|
|
424
|
+
], 10, We)]),
|
|
424
425
|
_: 3
|
|
425
|
-
}, 8, ["to"])) : (
|
|
426
|
+
}, 8, ["to"])) : (w(), s("button", {
|
|
426
427
|
key: 1,
|
|
427
428
|
type: n.type,
|
|
428
|
-
class:
|
|
429
|
+
class: _(l()),
|
|
429
430
|
disabled: e.isDisable || e.isLoading
|
|
430
431
|
}, [
|
|
431
|
-
e.isLoading ? (
|
|
432
|
+
e.isLoading ? (w(), s("div", Ye, [...r[1] ||= [c("svg", {
|
|
432
433
|
"aria-hidden": "true",
|
|
433
434
|
role: "status",
|
|
434
435
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
@@ -442,40 +443,40 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
442
443
|
d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
|
|
443
444
|
fill: "currentColor"
|
|
444
445
|
})], -1)]])) : o("", !0),
|
|
445
|
-
e.iconLeft ? o("", !0) : (
|
|
446
|
-
|
|
447
|
-
e.iconLeft ? (
|
|
448
|
-
], 10,
|
|
446
|
+
e.iconLeft ? o("", !0) : (w(), s("span", Xe, j(e.description), 1)),
|
|
447
|
+
O(t.$slots, "default"),
|
|
448
|
+
e.iconLeft ? (w(), s("span", Ze, j(e.description), 1)) : o("", !0)
|
|
449
|
+
], 10, Je));
|
|
449
450
|
};
|
|
450
451
|
}
|
|
451
|
-
}),
|
|
452
|
+
}), Qe = /* @__PURE__ */ function(e) {
|
|
452
453
|
return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
|
|
453
|
-
}({}),
|
|
454
|
+
}({}), $e = {
|
|
454
455
|
key: 0,
|
|
455
456
|
class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
|
|
456
|
-
},
|
|
457
|
+
}, et = {
|
|
457
458
|
key: 1,
|
|
458
459
|
class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
|
|
459
|
-
},
|
|
460
|
+
}, tt = {
|
|
460
461
|
key: 2,
|
|
461
462
|
class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
|
|
462
|
-
},
|
|
463
|
+
}, nt = /* @__PURE__ */ p({
|
|
463
464
|
__name: "BaseLine",
|
|
464
465
|
props: { mode: {
|
|
465
466
|
type: String,
|
|
466
467
|
required: !1,
|
|
467
|
-
default:
|
|
468
|
+
default: Qe.BASE
|
|
468
469
|
} },
|
|
469
470
|
setup(t) {
|
|
470
|
-
return (n, r) => (
|
|
471
|
-
t.mode ===
|
|
472
|
-
t.mode ===
|
|
473
|
-
t.mode ===
|
|
471
|
+
return (n, r) => (w(), s(e, null, [
|
|
472
|
+
t.mode === M(Qe).BASE ? (w(), s("hr", $e)) : o("", !0),
|
|
473
|
+
t.mode === M(Qe).BASE_SHORTER ? (w(), s("hr", et)) : o("", !0),
|
|
474
|
+
t.mode === M(Qe).SQUARE ? (w(), s("hr", tt)) : o("", !0)
|
|
474
475
|
], 64));
|
|
475
476
|
}
|
|
476
477
|
}), G = /* @__PURE__ */ function(e) {
|
|
477
478
|
return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
|
|
478
|
-
}({}),
|
|
479
|
+
}({}), rt = G, it = ["height", "width"], at = /* @__PURE__ */ p({
|
|
479
480
|
__name: "BaseLogo",
|
|
480
481
|
props: { size: {
|
|
481
482
|
type: String,
|
|
@@ -498,12 +499,12 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
498
499
|
return e;
|
|
499
500
|
}
|
|
500
501
|
return (e, t) => {
|
|
501
|
-
let r =
|
|
502
|
-
return
|
|
502
|
+
let r = k("router-link");
|
|
503
|
+
return w(), a(r, {
|
|
503
504
|
to: "/",
|
|
504
505
|
class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
|
|
505
506
|
}, {
|
|
506
|
-
default:
|
|
507
|
+
default: P(() => [(w(), s("svg", {
|
|
507
508
|
height: n(),
|
|
508
509
|
width: n(),
|
|
509
510
|
viewBox: "33.6 130.6 499.7 242.9",
|
|
@@ -653,23 +654,23 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
653
654
|
d: "m281.7 183.8h3.6v18.5h-3.6z",
|
|
654
655
|
fill: "url(#k)"
|
|
655
656
|
}, null, -1)
|
|
656
|
-
]], 8,
|
|
657
|
+
]], 8, it))]),
|
|
657
658
|
_: 1
|
|
658
659
|
});
|
|
659
660
|
};
|
|
660
661
|
}
|
|
661
|
-
}),
|
|
662
|
+
}), ot = /* @__PURE__ */ function(e) {
|
|
662
663
|
return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
|
|
663
|
-
}({}),
|
|
664
|
+
}({}), st = {
|
|
664
665
|
key: 0,
|
|
665
666
|
class: "p-6 text-center"
|
|
666
|
-
},
|
|
667
|
+
}, ct = { class: "flex justify-center" }, lt = {
|
|
667
668
|
key: 1,
|
|
668
669
|
class: "p-6 text-center"
|
|
669
|
-
},
|
|
670
|
+
}, ut = {
|
|
670
671
|
key: 0,
|
|
671
672
|
class: "mb-5 text-sm text-gray-500"
|
|
672
|
-
},
|
|
673
|
+
}, dt = { class: "flex justify-center" }, ft = /* @__PURE__ */ p({
|
|
673
674
|
__name: "BaseModal",
|
|
674
675
|
props: {
|
|
675
676
|
title: {
|
|
@@ -688,7 +689,7 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
688
689
|
mode: {
|
|
689
690
|
type: String,
|
|
690
691
|
required: !1,
|
|
691
|
-
default:
|
|
692
|
+
default: ot.SUCCESS
|
|
692
693
|
}
|
|
693
694
|
},
|
|
694
695
|
emits: ["closeModal", "confirmModal"],
|
|
@@ -697,11 +698,11 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
697
698
|
function a(e) {
|
|
698
699
|
e.key === "Escape" && r("closeModal");
|
|
699
700
|
}
|
|
700
|
-
return
|
|
701
|
+
return x(() => {
|
|
701
702
|
document.addEventListener("keydown", a);
|
|
702
|
-
}),
|
|
703
|
+
}), C(() => {
|
|
703
704
|
document.removeEventListener("keydown", a);
|
|
704
|
-
}), (n, r) => (
|
|
705
|
+
}), (n, r) => (w(), s(e, null, [c("div", {
|
|
705
706
|
class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
|
|
706
707
|
onClick: r[0] ||= (e) => n.$emit("closeModal")
|
|
707
708
|
}), c("div", {
|
|
@@ -709,37 +710,37 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
709
710
|
role: "dialog",
|
|
710
711
|
"aria-modal": "true",
|
|
711
712
|
"aria-labelledby": i
|
|
712
|
-
}, [t.mode ===
|
|
713
|
-
f(
|
|
713
|
+
}, [t.mode === M(ot).DELETE ? (w(), s("div", st, [
|
|
714
|
+
f(M(ye), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
|
|
714
715
|
c("h3", {
|
|
715
716
|
id: i,
|
|
716
717
|
class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
|
|
717
|
-
}, " Are you sure you want to delete this " +
|
|
718
|
-
c("div",
|
|
719
|
-
color:
|
|
718
|
+
}, " Are you sure you want to delete this " + j(t.title) + "? ", 1),
|
|
719
|
+
c("div", ct, [f(W, {
|
|
720
|
+
color: M(H).RED,
|
|
720
721
|
onClick: r[1] ||= (e) => n.$emit("confirmModal"),
|
|
721
722
|
description: "Yes, I'm sure"
|
|
722
|
-
}, null, 8, ["color"]), f(
|
|
723
|
-
color:
|
|
723
|
+
}, null, 8, ["color"]), f(W, {
|
|
724
|
+
color: M(H).WHITE,
|
|
724
725
|
onClick: r[2] ||= (e) => n.$emit("closeModal"),
|
|
725
726
|
description: "No, cancel"
|
|
726
727
|
}, null, 8, ["color"])])
|
|
727
|
-
])) : (
|
|
728
|
-
f(
|
|
728
|
+
])) : (w(), s("div", lt, [
|
|
729
|
+
f(M(de), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
|
|
729
730
|
c("h3", {
|
|
730
731
|
id: i,
|
|
731
732
|
class: "mb-2 text-lg font-medium text-gray-900"
|
|
732
|
-
},
|
|
733
|
-
t.description ? (
|
|
734
|
-
|
|
735
|
-
c("div",
|
|
736
|
-
color:
|
|
733
|
+
}, j(t.title), 1),
|
|
734
|
+
t.description ? (w(), s("p", ut, j(t.description), 1)) : o("", !0),
|
|
735
|
+
O(n.$slots, "default"),
|
|
736
|
+
c("div", dt, [f(W, {
|
|
737
|
+
color: M(H).BLUE,
|
|
737
738
|
onClick: r[3] ||= (e) => n.$emit("closeModal"),
|
|
738
739
|
description: "OK"
|
|
739
740
|
}, null, 8, ["color"])])
|
|
740
741
|
]))])], 64));
|
|
741
742
|
}
|
|
742
|
-
}),
|
|
743
|
+
}), pt = /* @__PURE__ */ p({
|
|
743
744
|
__name: "BaseRow",
|
|
744
745
|
props: { bgColor: {
|
|
745
746
|
type: String,
|
|
@@ -751,9 +752,9 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
751
752
|
function n() {
|
|
752
753
|
return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
|
|
753
754
|
}
|
|
754
|
-
return (e, t) => (
|
|
755
|
+
return (e, t) => (w(), s("div", { class: _(n()) }, [O(e.$slots, "default")], 2));
|
|
755
756
|
}
|
|
756
|
-
}),
|
|
757
|
+
}), mt = /* @__PURE__ */ p({
|
|
757
758
|
__name: "BaseSpinner",
|
|
758
759
|
props: {
|
|
759
760
|
size: { default: "sm" },
|
|
@@ -775,8 +776,8 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
775
776
|
red: "border-t-red-500",
|
|
776
777
|
amber: "border-t-amber-500"
|
|
777
778
|
})[t.color]);
|
|
778
|
-
return (e, t) => (
|
|
779
|
-
class:
|
|
779
|
+
return (e, t) => (w(), s("div", {
|
|
780
|
+
class: _(["border-gray-200 rounded-full animate-spin", [n.value, r.value]]),
|
|
780
781
|
role: "status",
|
|
781
782
|
"aria-label": "Loading"
|
|
782
783
|
}, null, 2));
|
|
@@ -785,7 +786,7 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
785
786
|
return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
|
|
786
787
|
}({}), q = /* @__PURE__ */ function(e) {
|
|
787
788
|
return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
|
|
788
|
-
}({}),
|
|
789
|
+
}({}), ht = { 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" }, gt = { class: "ml-3 text-sm font-normal" }, _t = /* @__PURE__ */ p({
|
|
789
790
|
__name: "BaseToast",
|
|
790
791
|
props: {
|
|
791
792
|
mode: {
|
|
@@ -813,13 +814,13 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
813
814
|
}
|
|
814
815
|
},
|
|
815
816
|
setup(e) {
|
|
816
|
-
let t = e, n =
|
|
817
|
+
let t = e, n = E(!0), r = null;
|
|
817
818
|
function i() {
|
|
818
819
|
n.value = !1, r &&= (clearTimeout(r), null);
|
|
819
820
|
}
|
|
820
|
-
|
|
821
|
+
x(() => {
|
|
821
822
|
r = setTimeout(() => n.value = !1, t.duration);
|
|
822
|
-
}),
|
|
823
|
+
}), C(() => {
|
|
823
824
|
r && clearTimeout(r);
|
|
824
825
|
});
|
|
825
826
|
function a() {
|
|
@@ -854,33 +855,33 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
854
855
|
}
|
|
855
856
|
return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
|
|
856
857
|
}
|
|
857
|
-
return (t, r) => n.value ? (
|
|
858
|
+
return (t, r) => n.value ? (w(), s("div", {
|
|
858
859
|
key: 0,
|
|
859
860
|
id: "toast-top-right",
|
|
860
|
-
class:
|
|
861
|
+
class: _(l()),
|
|
861
862
|
role: "alert"
|
|
862
|
-
}, [c("div",
|
|
863
|
-
e.mode ==
|
|
863
|
+
}, [c("div", ht, [
|
|
864
|
+
e.mode == M(K).ERROR ? (w(), s("div", {
|
|
864
865
|
key: 0,
|
|
865
|
-
class:
|
|
866
|
-
}, [f(
|
|
866
|
+
class: _(a())
|
|
867
|
+
}, [f(M(ye), { class: "h-6 w-6 text-red-500" }), r[0] ||= c("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == M(K).SUCCESS ? (w(), s("div", {
|
|
867
868
|
key: 1,
|
|
868
|
-
class:
|
|
869
|
-
}, [f(
|
|
869
|
+
class: _(a())
|
|
870
|
+
}, [f(M(de), { class: "h-6 w-6 text-green-500" }), r[1] ||= c("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == M(K).WARNING ? (w(), s("div", {
|
|
870
871
|
key: 2,
|
|
871
|
-
class:
|
|
872
|
-
}, [f(
|
|
873
|
-
c("div",
|
|
874
|
-
e.hasCloseIcon ? (
|
|
872
|
+
class: _(a())
|
|
873
|
+
}, [f(M(be), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= c("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : o("", !0),
|
|
874
|
+
c("div", gt, j(e.description), 1),
|
|
875
|
+
e.hasCloseIcon ? (w(), s("button", {
|
|
875
876
|
key: 3,
|
|
876
877
|
type: "button",
|
|
877
878
|
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",
|
|
878
879
|
"aria-label": "Close",
|
|
879
880
|
onClick: i
|
|
880
|
-
}, [r[3] ||= c("span", { class: "sr-only" }, "Close", -1), f(
|
|
881
|
+
}, [r[3] ||= c("span", { class: "sr-only" }, "Close", -1), f(M(De), { class: "h-6 w-6 text-gray-500" })])) : o("", !0)
|
|
881
882
|
])], 2)) : o("", !0);
|
|
882
883
|
}
|
|
883
|
-
}),
|
|
884
|
+
}), vt = { class: "w-13" }, yt = /* @__PURE__ */ p({
|
|
884
885
|
__name: "ColoredSquares",
|
|
885
886
|
props: { color: {
|
|
886
887
|
type: String,
|
|
@@ -897,29 +898,29 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
897
898
|
"bg-yellow-300",
|
|
898
899
|
"bg-purple-300",
|
|
899
900
|
"bg-pink-300"
|
|
900
|
-
], r =
|
|
901
|
+
], r = E(n[Math.floor(Math.random() * n.length)]);
|
|
901
902
|
function i() {
|
|
902
903
|
let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
|
|
903
904
|
switch (t.color) {
|
|
904
|
-
case
|
|
905
|
+
case V.GREEN:
|
|
905
906
|
n = "green";
|
|
906
907
|
break;
|
|
907
|
-
case
|
|
908
|
+
case V.RED:
|
|
908
909
|
n = "red";
|
|
909
910
|
break;
|
|
910
|
-
case
|
|
911
|
+
case V.BLUE:
|
|
911
912
|
n = "blue";
|
|
912
913
|
break;
|
|
913
|
-
case
|
|
914
|
+
case V.YELLOW:
|
|
914
915
|
n = "yellow";
|
|
915
916
|
break;
|
|
916
|
-
case
|
|
917
|
+
case V.NONE: return e;
|
|
917
918
|
}
|
|
918
919
|
return e + " bg-" + n + "-100 text-" + n + "-800";
|
|
919
920
|
}
|
|
920
|
-
return (e, t) => (
|
|
921
|
+
return (e, t) => (w(), s("div", vt, [c("div", { class: _(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [O(e.$slots, "default"), c("div", { class: _(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
|
|
921
922
|
}
|
|
922
|
-
}),
|
|
923
|
+
}), bt = { class: "flex items-start justify-between" }, xt = { class: "min-w-0" }, St = /* @__PURE__ */ p({
|
|
923
924
|
__name: "EarningsCard",
|
|
924
925
|
props: {
|
|
925
926
|
title: { default: "TOTAL EARNINGS" },
|
|
@@ -971,27 +972,27 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
971
972
|
minimumFractionDigits: n.decimals,
|
|
972
973
|
maximumFractionDigits: n.decimals
|
|
973
974
|
}));
|
|
974
|
-
return (n, r) => (
|
|
975
|
+
return (n, r) => (w(), s("div", { class: _(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (w(), s("div", {
|
|
975
976
|
key: 0,
|
|
976
|
-
class:
|
|
977
|
-
},
|
|
978
|
-
c("p", { class:
|
|
979
|
-
c("p", { class:
|
|
980
|
-
c("p", { class:
|
|
981
|
-
]), c("div", { class:
|
|
982
|
-
class:
|
|
977
|
+
class: _(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
|
|
978
|
+
}, j(t.badge), 3)) : o("", !0), c("div", bt, [c("div", xt, [
|
|
979
|
+
c("p", { class: _(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, j(t.title), 3),
|
|
980
|
+
c("p", { class: _(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, j(f.value), 3),
|
|
981
|
+
c("p", { class: _(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, j(t.subtitle), 3)
|
|
982
|
+
]), c("div", { class: _(["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"]]) }, [(w(), s("svg", {
|
|
983
|
+
class: _([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
|
|
983
984
|
viewBox: "0 0 24 24",
|
|
984
985
|
fill: "none",
|
|
985
986
|
stroke: "currentColor",
|
|
986
987
|
"stroke-width": "2.5",
|
|
987
988
|
"stroke-linecap": "round",
|
|
988
989
|
"stroke-linejoin": "round"
|
|
989
|
-
}, [l.value ? (
|
|
990
|
+
}, [l.value ? (w(), s(e, { key: 0 }, [r[0] ||= c("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= c("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (w(), s(e, { key: 1 }, [r[2] ||= c("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= c("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
|
|
990
991
|
}
|
|
991
|
-
}),
|
|
992
|
+
}), Ct = {
|
|
992
993
|
key: 0,
|
|
993
994
|
class: "font-bold text-green-800 dark:text-green-400"
|
|
994
|
-
},
|
|
995
|
+
}, wt = { key: 0 }, Tt = { key: 0 }, Et = "font-bold", Dt = /* @__PURE__ */ p({
|
|
995
996
|
__name: "EuroAmount",
|
|
996
997
|
props: {
|
|
997
998
|
amount: {
|
|
@@ -1011,20 +1012,20 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
1011
1012
|
},
|
|
1012
1013
|
setup(t) {
|
|
1013
1014
|
let n = t, r = i(() => n.amount !== null && n.amount !== void 0), a = i(() => r.value && n.amount < 0), c = i(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = i(() => a.value || c.value), u = i(() => !a.value && !c.value && n.beforeAmount !== null && n.beforeAmount !== void 0);
|
|
1014
|
-
return (n, i) => (
|
|
1015
|
+
return (n, i) => (w(), s(e, null, [r.value && u.value ? (w(), s("span", Ct, [d(j(t.amount) + " ", 1), t.showCurrency ? (w(), s("span", wt, "€")) : o("", !0)])) : o("", !0), r.value && !u.value ? (w(), s("span", {
|
|
1015
1016
|
key: 1,
|
|
1016
|
-
class:
|
|
1017
|
-
}, [d(
|
|
1017
|
+
class: _([Et, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
|
|
1018
|
+
}, [d(j(t.amount) + " ", 1), t.showCurrency ? (w(), s("span", Tt, "€")) : o("", !0)], 2)) : o("", !0)], 64));
|
|
1018
1019
|
}
|
|
1019
|
-
}),
|
|
1020
|
+
}), Ot = { "aria-label": "Pagination" }, kt = { class: "flex list-none p-0 m-0" }, At = [
|
|
1020
1021
|
"aria-current",
|
|
1021
1022
|
"aria-label",
|
|
1022
1023
|
"onClick"
|
|
1023
|
-
],
|
|
1024
|
+
], jt = {
|
|
1024
1025
|
key: 1,
|
|
1025
1026
|
"aria-hidden": "true",
|
|
1026
1027
|
class: "inline-block border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-not-allowed"
|
|
1027
|
-
},
|
|
1028
|
+
}, Mt = /* @__PURE__ */ p({
|
|
1028
1029
|
__name: "Pagination",
|
|
1029
1030
|
props: {
|
|
1030
1031
|
totalItems: {
|
|
@@ -1038,7 +1039,7 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
1038
1039
|
},
|
|
1039
1040
|
emits: ["page-changed"],
|
|
1040
1041
|
setup(t, { emit: n }) {
|
|
1041
|
-
let r = t, i =
|
|
1042
|
+
let r = t, i = E(1), a = E(0), o = E([]), l = n;
|
|
1042
1043
|
function u(e) {
|
|
1043
1044
|
if (a.value <= 5) {
|
|
1044
1045
|
o.value = Array.from({ length: a.value }, (e, t) => t + 1);
|
|
@@ -1052,30 +1053,30 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
1052
1053
|
function d(e) {
|
|
1053
1054
|
e === i.value || e < 1 || e > a.value || (i.value = e, u(e), l("page-changed", e));
|
|
1054
1055
|
}
|
|
1055
|
-
return
|
|
1056
|
+
return N(() => [r.totalItems, r.itemsPerPage], () => {
|
|
1056
1057
|
a.value = Math.ceil(r.totalItems / r.itemsPerPage), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
|
|
1057
|
-
}, { immediate: !0 }), (t, n) => (
|
|
1058
|
+
}, { immediate: !0 }), (t, n) => (w(), s("nav", Ot, [c("ul", kt, [(w(!0), s(e, null, D(o.value, (e, t) => (w(), s("li", {
|
|
1058
1059
|
key: t,
|
|
1059
1060
|
class: "mr-1"
|
|
1060
|
-
}, [e === 0 ? (
|
|
1061
|
+
}, [e === 0 ? (w(), s("span", jt, "...")) : (w(), s("button", {
|
|
1061
1062
|
key: 0,
|
|
1062
1063
|
type: "button",
|
|
1063
1064
|
"aria-current": e === i.value ? "page" : void 0,
|
|
1064
1065
|
"aria-label": `Go to page ${e}`,
|
|
1065
1066
|
onClick: (t) => d(e),
|
|
1066
|
-
class:
|
|
1067
|
-
},
|
|
1067
|
+
class: _(["inline-block min-w-[44px] border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-pointer transition-colors hover:bg-gray-300 dark:hover:bg-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", { "active font-bold bg-gray-200 dark:bg-gray-700": e === i.value }])
|
|
1068
|
+
}, j(e), 11, At))]))), 128))])]));
|
|
1068
1069
|
}
|
|
1069
|
-
}),
|
|
1070
|
+
}), Nt = { key: 0 }, Pt = {
|
|
1070
1071
|
key: 0,
|
|
1071
1072
|
class: "flex items-center space-x-2"
|
|
1072
|
-
},
|
|
1073
|
+
}, Ft = {
|
|
1073
1074
|
key: 1,
|
|
1074
1075
|
class: "flex items-center space-x-2"
|
|
1075
|
-
},
|
|
1076
|
+
}, It = {
|
|
1076
1077
|
key: 2,
|
|
1077
1078
|
class: "flex items-center space-x-2"
|
|
1078
|
-
},
|
|
1079
|
+
}, Lt = /* @__PURE__ */ p({
|
|
1079
1080
|
__name: "TrendArrow",
|
|
1080
1081
|
props: {
|
|
1081
1082
|
number: {
|
|
@@ -1089,23 +1090,23 @@ var je = { class: "min-w-0 flex-1" }, Me = {
|
|
|
1089
1090
|
},
|
|
1090
1091
|
setup(e) {
|
|
1091
1092
|
let t = e, n = i(() => t.number !== null && t.number !== void 0 && t.number < 0), r = i(() => t.number === 0);
|
|
1092
|
-
return (i, a) => e.number !== null && e.number !== void 0 ? (
|
|
1093
|
-
default:
|
|
1093
|
+
return (i, a) => e.number !== null && e.number !== void 0 ? (w(), s("div", Nt, [n.value ? (w(), s("span", Pt, [f(ze, { color: M(V).RED }, {
|
|
1094
|
+
default: P(() => [d(j(e.number) + j(t.icon), 1)]),
|
|
1094
1095
|
_: 1
|
|
1095
|
-
}, 8, ["color"]), f(
|
|
1096
|
-
default:
|
|
1096
|
+
}, 8, ["color"]), f(M(se), { class: "h-5 w-5 text-red-500" })])) : r.value ? (w(), s("span", Ft, [f(ze, { color: M(V).GRAY }, {
|
|
1097
|
+
default: P(() => [d(j(e.number) + j(t.icon), 1)]),
|
|
1097
1098
|
_: 1
|
|
1098
|
-
}, 8, ["color"]), f(
|
|
1099
|
-
default:
|
|
1099
|
+
}, 8, ["color"]), f(M(we), { class: "h-5 w-5 text-gray-400" })])) : (w(), s("span", It, [f(ze, { color: M(V).GREEN }, {
|
|
1100
|
+
default: P(() => [d(j(e.number) + j(t.icon), 1)]),
|
|
1100
1101
|
_: 1
|
|
1101
|
-
}, 8, ["color"]), f(
|
|
1102
|
+
}, 8, ["color"]), f(M(ce), { class: "h-5 w-5 text-green-500" })]))])) : o("", !0);
|
|
1102
1103
|
}
|
|
1103
1104
|
});
|
|
1104
1105
|
//#endregion
|
|
1105
1106
|
//#region src/composables/useThemeClasses.ts
|
|
1106
1107
|
function J() {
|
|
1107
|
-
let { isDark: e } =
|
|
1108
|
-
return
|
|
1108
|
+
let { isDark: e } = B();
|
|
1109
|
+
return T({
|
|
1109
1110
|
card: i(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
|
|
1110
1111
|
cardAlt: i(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
|
|
1111
1112
|
pageBg: i(() => e.value ? "bg-gray-900" : "bg-gray-50"),
|
|
@@ -1131,15 +1132,15 @@ function J() {
|
|
|
1131
1132
|
}
|
|
1132
1133
|
//#endregion
|
|
1133
1134
|
//#region src/composables/useEscapeKey.ts
|
|
1134
|
-
function
|
|
1135
|
+
function Rt(e) {
|
|
1135
1136
|
function t(t) {
|
|
1136
1137
|
t.key === "Escape" && e();
|
|
1137
1138
|
}
|
|
1138
|
-
|
|
1139
|
+
x(() => document.addEventListener("keydown", t)), b(() => document.removeEventListener("keydown", t));
|
|
1139
1140
|
}
|
|
1140
1141
|
//#endregion
|
|
1141
1142
|
//#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
|
|
1142
|
-
var
|
|
1143
|
+
var zt = { class: "flex items-start gap-4 min-w-0" }, Bt = { class: "flex-1 min-w-0" }, Vt = { class: "p-6 overflow-y-auto flex-1" }, Ht = { class: "p-6" }, Ut = { class: "flex items-start gap-4" }, Wt = { class: "flex-1" }, Gt = { class: "mt-4" }, Kt = { class: "mt-6 flex gap-3 justify-end" }, qt = /* @__PURE__ */ p({
|
|
1143
1144
|
__name: "BaseModalShell",
|
|
1144
1145
|
props: {
|
|
1145
1146
|
title: {},
|
|
@@ -1159,55 +1160,55 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1159
1160
|
},
|
|
1160
1161
|
emits: ["cancel", "backdrop"],
|
|
1161
1162
|
setup(e, { emit: n }) {
|
|
1162
|
-
let r = e, l = n, { isDark: u } =
|
|
1163
|
+
let r = e, l = n, { isDark: u } = B(), d = J(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = i(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = i(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
|
|
1163
1164
|
function h() {
|
|
1164
1165
|
l("backdrop"), r.manualClose || l("cancel");
|
|
1165
1166
|
}
|
|
1166
|
-
return
|
|
1167
|
+
return Rt(() => {
|
|
1167
1168
|
r.manualClose || l("cancel");
|
|
1168
|
-
}), (n, r) => (
|
|
1169
|
+
}), (n, r) => (w(), a(t, { to: "body" }, [c("div", {
|
|
1169
1170
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
1170
1171
|
role: "dialog",
|
|
1171
1172
|
"aria-modal": "true",
|
|
1172
1173
|
"aria-labelledby": f,
|
|
1173
1174
|
onClick: h
|
|
1174
|
-
}, [e.scrollable ? (
|
|
1175
|
+
}, [e.scrollable ? (w(), s("div", {
|
|
1175
1176
|
key: 0,
|
|
1176
|
-
class:
|
|
1177
|
-
onClick: r[0] ||=
|
|
1177
|
+
class: _(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
|
|
1178
|
+
onClick: r[0] ||= I(() => {}, ["stop"])
|
|
1178
1179
|
}, [
|
|
1179
|
-
c("div", { class:
|
|
1180
|
-
class:
|
|
1180
|
+
c("div", { class: _(["flex items-start justify-between gap-4 p-6 border-b shrink-0", M(d).border]) }, [c("div", zt, [O(n.$slots, "icon", {}, () => [c("div", { class: _(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(w(), a(A(e.icon), {
|
|
1181
|
+
class: _(["h-6 w-6", e.iconClass]),
|
|
1181
1182
|
"aria-hidden": "true"
|
|
1182
|
-
}, null, 8, ["class"]))], 2)]), c("div",
|
|
1183
|
+
}, null, 8, ["class"]))], 2)]), c("div", Bt, [c("h3", {
|
|
1183
1184
|
id: f,
|
|
1184
|
-
class:
|
|
1185
|
-
},
|
|
1185
|
+
class: _(["text-lg font-medium", M(d).primaryText])
|
|
1186
|
+
}, j(e.title), 3), e.subtitle ? (w(), s("p", {
|
|
1186
1187
|
key: 0,
|
|
1187
|
-
class:
|
|
1188
|
-
},
|
|
1189
|
-
c("div",
|
|
1190
|
-
n.$slots.footer ? (
|
|
1188
|
+
class: _(["text-sm mt-1 break-all", M(d).mutedText])
|
|
1189
|
+
}, j(e.subtitle), 3)) : o("", !0)])]), O(n.$slots, "header-actions")], 2),
|
|
1190
|
+
c("div", Vt, [O(n.$slots, "default")]),
|
|
1191
|
+
n.$slots.footer ? (w(), s("div", {
|
|
1191
1192
|
key: 0,
|
|
1192
|
-
class:
|
|
1193
|
-
}, [
|
|
1194
|
-
], 2)) : (
|
|
1193
|
+
class: _(["flex gap-3 justify-end p-6 border-t shrink-0", M(d).border])
|
|
1194
|
+
}, [O(n.$slots, "footer")], 2)) : o("", !0)
|
|
1195
|
+
], 2)) : (w(), s("div", {
|
|
1195
1196
|
key: 1,
|
|
1196
|
-
class:
|
|
1197
|
-
onClick: r[1] ||=
|
|
1198
|
-
}, [c("div",
|
|
1199
|
-
c("div",
|
|
1200
|
-
class:
|
|
1197
|
+
class: _(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
|
|
1198
|
+
onClick: r[1] ||= I(() => {}, ["stop"])
|
|
1199
|
+
}, [c("div", Ht, [
|
|
1200
|
+
c("div", Ut, [O(n.$slots, "icon", {}, () => [c("div", { class: _(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(w(), a(A(e.icon), {
|
|
1201
|
+
class: _(["h-6 w-6", e.iconClass]),
|
|
1201
1202
|
"aria-hidden": "true"
|
|
1202
|
-
}, null, 8, ["class"]))], 2)]), c("div",
|
|
1203
|
+
}, null, 8, ["class"]))], 2)]), c("div", Wt, [c("h3", {
|
|
1203
1204
|
id: f,
|
|
1204
|
-
class:
|
|
1205
|
-
},
|
|
1206
|
-
c("div",
|
|
1207
|
-
c("div",
|
|
1205
|
+
class: _(["text-lg font-medium", M(d).primaryText])
|
|
1206
|
+
}, j(e.title), 3)])]),
|
|
1207
|
+
c("div", Gt, [O(n.$slots, "default")]),
|
|
1208
|
+
c("div", Kt, [O(n.$slots, "footer")])
|
|
1208
1209
|
])], 2))])]));
|
|
1209
1210
|
}
|
|
1210
|
-
}),
|
|
1211
|
+
}), Jt = ["aria-expanded"], Yt = { class: "flex items-center gap-3" }, Xt = /* @__PURE__ */ p({
|
|
1211
1212
|
__name: "BaseCollapsibleSection",
|
|
1212
1213
|
props: {
|
|
1213
1214
|
title: {},
|
|
@@ -1217,17 +1218,17 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1217
1218
|
},
|
|
1218
1219
|
emits: ["toggle"],
|
|
1219
1220
|
setup(e, { emit: t }) {
|
|
1220
|
-
let n = e, r = t, { isDark: a } =
|
|
1221
|
-
return (t, n) => (
|
|
1221
|
+
let n = e, r = t, { isDark: a } = B(), l = J(), u = i(() => a.value ? "text-gray-100" : "text-gray-700"), d = i(() => a.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = i(() => a.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = i(() => n.bodyClass === void 0 ? a.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
|
|
1222
|
+
return (t, n) => (w(), s("section", { class: _(["rounded-xl border transition-colors", M(l).cardAlt]) }, [c("button", {
|
|
1222
1223
|
type: "button",
|
|
1223
|
-
class:
|
|
1224
|
+
class: _(["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"]]),
|
|
1224
1225
|
"aria-expanded": !e.collapsed,
|
|
1225
1226
|
onClick: n[0] ||= (e) => r("toggle")
|
|
1226
|
-
}, [c("div",
|
|
1227
|
+
}, [c("div", Yt, [c("h2", { class: _(["text-base font-semibold", u.value]) }, j(e.title), 3), e.badge ? (w(), s("span", {
|
|
1227
1228
|
key: 0,
|
|
1228
|
-
class:
|
|
1229
|
-
},
|
|
1230
|
-
class:
|
|
1229
|
+
class: _(["text-xs px-2 py-0.5 rounded-full", f.value])
|
|
1230
|
+
}, j(e.badge), 3)) : o("", !0)]), (w(), s("svg", {
|
|
1231
|
+
class: _(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", M(l).dimTextAlt]]),
|
|
1231
1232
|
fill: "none",
|
|
1232
1233
|
viewBox: "0 0 24 24",
|
|
1233
1234
|
stroke: "currentColor",
|
|
@@ -1237,15 +1238,15 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1237
1238
|
"stroke-linecap": "round",
|
|
1238
1239
|
"stroke-linejoin": "round",
|
|
1239
1240
|
d: "M19 9l-7 7-7-7"
|
|
1240
|
-
}, null, -1)]], 2))], 10,
|
|
1241
|
+
}, null, -1)]], 2))], 10, Jt), F(c("div", { class: _(["p-6 border-t rounded-b-xl", [M(l).border, p.value]]) }, [O(t.$slots, "default")], 2), [[ae, !e.collapsed]])], 2));
|
|
1241
1242
|
}
|
|
1242
|
-
}),
|
|
1243
|
+
}), Zt = ["disabled"], Qt = ["disabled"], $t = {
|
|
1243
1244
|
key: 0,
|
|
1244
1245
|
class: "w-4 h-4 animate-spin",
|
|
1245
1246
|
fill: "none",
|
|
1246
1247
|
viewBox: "0 0 24 24",
|
|
1247
1248
|
"aria-hidden": "true"
|
|
1248
|
-
},
|
|
1249
|
+
}, en = /* @__PURE__ */ p({
|
|
1249
1250
|
__name: "BaseConfirmModal",
|
|
1250
1251
|
props: {
|
|
1251
1252
|
title: {},
|
|
@@ -1261,32 +1262,32 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1261
1262
|
},
|
|
1262
1263
|
emits: ["confirm", "cancel"],
|
|
1263
1264
|
setup(e, { emit: t }) {
|
|
1264
|
-
let n = e, r = t, { isDark: i } =
|
|
1265
|
+
let n = e, r = t, { isDark: i } = B(), l = J();
|
|
1265
1266
|
function u() {
|
|
1266
1267
|
n.submitting || r("confirm");
|
|
1267
1268
|
}
|
|
1268
1269
|
function f() {
|
|
1269
1270
|
n.submitting || r("cancel");
|
|
1270
1271
|
}
|
|
1271
|
-
return (t, n) => (
|
|
1272
|
+
return (t, n) => (w(), a(qt, {
|
|
1272
1273
|
title: e.title,
|
|
1273
|
-
icon:
|
|
1274
|
-
"icon-bg-class": e.variant === "danger" ?
|
|
1274
|
+
icon: M(be),
|
|
1275
|
+
"icon-bg-class": e.variant === "danger" ? M(i) ? "bg-red-900/30" : "bg-red-50" : M(i) ? "bg-amber-900/30" : "bg-amber-50",
|
|
1275
1276
|
"icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
|
|
1276
1277
|
"manual-close": e.submitting,
|
|
1277
1278
|
onCancel: f
|
|
1278
1279
|
}, {
|
|
1279
|
-
footer:
|
|
1280
|
+
footer: P(() => [c("button", {
|
|
1280
1281
|
type: "button",
|
|
1281
1282
|
disabled: e.submitting,
|
|
1282
|
-
class:
|
|
1283
|
+
class: _(["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", [M(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
|
|
1283
1284
|
onClick: f
|
|
1284
|
-
},
|
|
1285
|
+
}, j(e.cancelText), 11, Zt), c("button", {
|
|
1285
1286
|
type: "button",
|
|
1286
1287
|
disabled: e.submitting,
|
|
1287
|
-
class:
|
|
1288
|
+
class: _(["inline-flex items-center justify-center gap-2 px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2", [e.variant === "danger" ? "focus-visible:ring-red-500" : "focus-visible:ring-emerald-500", e.variant === "danger" ? e.submitting ? "bg-red-400 cursor-not-allowed" : "bg-red-600 hover:bg-red-700 cursor-pointer" : e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
|
|
1288
1289
|
onClick: u
|
|
1289
|
-
}, [e.submitting ? (
|
|
1290
|
+
}, [e.submitting ? (w(), s("svg", $t, [...n[0] ||= [c("circle", {
|
|
1290
1291
|
class: "opacity-25",
|
|
1291
1292
|
cx: "12",
|
|
1292
1293
|
cy: "12",
|
|
@@ -1297,8 +1298,8 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1297
1298
|
class: "opacity-75",
|
|
1298
1299
|
fill: "currentColor",
|
|
1299
1300
|
d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
|
|
1300
|
-
}, null, -1)]])) : o("", !0), d(" " +
|
|
1301
|
-
default:
|
|
1301
|
+
}, null, -1)]])) : o("", !0), d(" " + j(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Qt)]),
|
|
1302
|
+
default: P(() => [O(t.$slots, "message", {}, () => [c("p", { class: _(["text-sm", M(i) ? "text-gray-300" : "text-gray-600"]) }, j(e.message), 3)]), O(t.$slots, "default")]),
|
|
1302
1303
|
_: 3
|
|
1303
1304
|
}, 8, [
|
|
1304
1305
|
"title",
|
|
@@ -1308,7 +1309,7 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1308
1309
|
"manual-close"
|
|
1309
1310
|
]));
|
|
1310
1311
|
}
|
|
1311
|
-
}),
|
|
1312
|
+
}), tn = { class: "mt-4" }, nn = ["placeholder"], rn = ["disabled"], an = /* @__PURE__ */ p({
|
|
1312
1313
|
__name: "BaseTextInputModal",
|
|
1313
1314
|
props: {
|
|
1314
1315
|
title: {},
|
|
@@ -1326,9 +1327,9 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1326
1327
|
},
|
|
1327
1328
|
emits: ["confirm", "cancel"],
|
|
1328
1329
|
setup(e, { emit: t }) {
|
|
1329
|
-
let n = e, r = t, { isDark: i } =
|
|
1330
|
-
|
|
1331
|
-
await
|
|
1330
|
+
let n = e, r = t, { isDark: i } = B(), o = J(), s = E(n.initialValue), u = E(null);
|
|
1331
|
+
x(async () => {
|
|
1332
|
+
await g(), u.value?.focus();
|
|
1332
1333
|
});
|
|
1333
1334
|
function d() {
|
|
1334
1335
|
s.value.trim() && !n.submitting && r("confirm", s.value.trim());
|
|
@@ -1339,39 +1340,39 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1339
1340
|
function p() {
|
|
1340
1341
|
s.value.trim() === (n.initialValue ?? "").trim() && f();
|
|
1341
1342
|
}
|
|
1342
|
-
return
|
|
1343
|
+
return Rt(f), (t, n) => (w(), a(qt, {
|
|
1343
1344
|
title: e.title,
|
|
1344
|
-
icon:
|
|
1345
|
+
icon: M(ve),
|
|
1345
1346
|
"manual-close": "",
|
|
1346
1347
|
onBackdrop: p
|
|
1347
1348
|
}, l({
|
|
1348
|
-
footer:
|
|
1349
|
+
footer: P(() => [c("button", {
|
|
1349
1350
|
type: "button",
|
|
1350
|
-
class:
|
|
1351
|
+
class: _(["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", M(o).ghostButton]),
|
|
1351
1352
|
onClick: f
|
|
1352
|
-
},
|
|
1353
|
+
}, j(e.cancelText), 3), c("button", {
|
|
1353
1354
|
type: "button",
|
|
1354
1355
|
disabled: !s.value.trim() || e.submitting,
|
|
1355
|
-
class:
|
|
1356
|
+
class: _(["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"]]),
|
|
1356
1357
|
onClick: d
|
|
1357
|
-
},
|
|
1358
|
-
default:
|
|
1358
|
+
}, j(e.submitting ? e.submittingText : e.confirmText), 11, rn)]),
|
|
1359
|
+
default: P(() => [c("p", { class: _(["text-sm", M(i) ? "text-gray-300" : "text-gray-600"]) }, j(e.message), 3), c("div", tn, [c("label", { class: _(["block text-sm font-medium mb-1", M(o).label]) }, j(e.inputLabel), 3), F(c("input", {
|
|
1359
1360
|
ref_key: "nameInput",
|
|
1360
1361
|
ref: u,
|
|
1361
1362
|
"onUpdate:modelValue": n[0] ||= (e) => s.value = e,
|
|
1362
1363
|
type: "text",
|
|
1363
1364
|
placeholder: e.placeholder,
|
|
1364
|
-
class:
|
|
1365
|
-
onKeyup:
|
|
1366
|
-
}, null, 42,
|
|
1365
|
+
class: _(["w-full px-3 py-2 rounded-md border text-sm transition-colors", M(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"]),
|
|
1366
|
+
onKeyup: oe(d, ["enter"])
|
|
1367
|
+
}, null, 42, nn), [[ie, s.value]])])]),
|
|
1367
1368
|
_: 2
|
|
1368
1369
|
}, [t.$slots.icon ? {
|
|
1369
1370
|
name: "icon",
|
|
1370
|
-
fn:
|
|
1371
|
+
fn: P(() => [O(t.$slots, "icon")]),
|
|
1371
1372
|
key: "0"
|
|
1372
1373
|
} : void 0]), 1032, ["title", "icon"]));
|
|
1373
1374
|
}
|
|
1374
|
-
}),
|
|
1375
|
+
}), on = { class: "flex items-center justify-center min-h-[60vh]" }, sn = { class: "text-center px-6" }, cn = /* @__PURE__ */ p({
|
|
1375
1376
|
__name: "BaseNotFoundPage",
|
|
1376
1377
|
props: {
|
|
1377
1378
|
code: { default: "404" },
|
|
@@ -1380,33 +1381,33 @@ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-
|
|
|
1380
1381
|
homeLabel: { default: "Go home" }
|
|
1381
1382
|
},
|
|
1382
1383
|
setup(e) {
|
|
1383
|
-
let t = e, n =
|
|
1384
|
+
let t = e, n = Ae(), { isDark: r } = B(), i = J();
|
|
1384
1385
|
function a() {
|
|
1385
1386
|
n.push({ name: t.homeRouteName });
|
|
1386
1387
|
}
|
|
1387
|
-
return (t, n) => (
|
|
1388
|
-
f(
|
|
1389
|
-
c("h1", { class:
|
|
1390
|
-
c("p", { class:
|
|
1388
|
+
return (t, n) => (w(), s("div", on, [c("div", sn, [
|
|
1389
|
+
f(M(be), { class: _(["w-16 h-16 mx-auto mb-4", M(i).illustration]) }, null, 8, ["class"]),
|
|
1390
|
+
c("h1", { class: _(["text-4xl font-bold mb-2", M(r) ? "text-gray-200" : "text-gray-800"]) }, j(e.code), 3),
|
|
1391
|
+
c("p", { class: _(["text-lg mb-6", M(i).dimTextAlt]) }, j(e.message), 3),
|
|
1391
1392
|
c("button", {
|
|
1392
1393
|
onClick: a,
|
|
1393
|
-
class:
|
|
1394
|
-
},
|
|
1394
|
+
class: _(["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", M(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
|
|
1395
|
+
}, j(e.homeLabel), 3)
|
|
1395
1396
|
])]));
|
|
1396
1397
|
}
|
|
1397
|
-
}),
|
|
1398
|
-
function
|
|
1398
|
+
}), ln = E(!1);
|
|
1399
|
+
function un() {
|
|
1399
1400
|
function e() {
|
|
1400
|
-
|
|
1401
|
+
ln.value = !0;
|
|
1401
1402
|
}
|
|
1402
1403
|
function t() {
|
|
1403
|
-
|
|
1404
|
+
ln.value = !1;
|
|
1404
1405
|
}
|
|
1405
1406
|
function n() {
|
|
1406
|
-
|
|
1407
|
+
ln.value = !ln.value;
|
|
1407
1408
|
}
|
|
1408
1409
|
return {
|
|
1409
|
-
mobileOpen:
|
|
1410
|
+
mobileOpen: ln,
|
|
1410
1411
|
open: e,
|
|
1411
1412
|
close: t,
|
|
1412
1413
|
toggle: n
|
|
@@ -1414,19 +1415,19 @@ function sn() {
|
|
|
1414
1415
|
}
|
|
1415
1416
|
//#endregion
|
|
1416
1417
|
//#region src/composables/useSidebarCollapse.ts
|
|
1417
|
-
var Y =
|
|
1418
|
-
function
|
|
1419
|
-
if (!
|
|
1420
|
-
let e = window.localStorage?.getItem(
|
|
1418
|
+
var Y = E(!1), dn = !1, fn = "mgv-sidebar-collapsed";
|
|
1419
|
+
function pn(e) {
|
|
1420
|
+
if (!dn && (dn = !0, fn = e, typeof window < "u")) {
|
|
1421
|
+
let e = window.localStorage?.getItem(fn);
|
|
1421
1422
|
e && (Y.value = e === "true"), m(!0).run(() => {
|
|
1422
|
-
|
|
1423
|
-
window.localStorage?.setItem(
|
|
1423
|
+
N(Y, (e) => {
|
|
1424
|
+
window.localStorage?.setItem(fn, String(e));
|
|
1424
1425
|
});
|
|
1425
1426
|
});
|
|
1426
1427
|
}
|
|
1427
1428
|
}
|
|
1428
|
-
function
|
|
1429
|
-
|
|
1429
|
+
function mn(e) {
|
|
1430
|
+
pn(e?.storageKey ?? fn);
|
|
1430
1431
|
function t() {
|
|
1431
1432
|
Y.value = !0;
|
|
1432
1433
|
}
|
|
@@ -1445,8 +1446,8 @@ function dn(e) {
|
|
|
1445
1446
|
}
|
|
1446
1447
|
//#endregion
|
|
1447
1448
|
//#region src/composables/useNotifications.ts
|
|
1448
|
-
var X =
|
|
1449
|
-
function
|
|
1449
|
+
var X = E([]), Z = E(!1), hn = i(() => X.value.filter((e) => !e.read).length);
|
|
1450
|
+
function gn() {
|
|
1450
1451
|
function e() {
|
|
1451
1452
|
Z.value = !0;
|
|
1452
1453
|
}
|
|
@@ -1482,7 +1483,7 @@ function pn() {
|
|
|
1482
1483
|
}
|
|
1483
1484
|
return {
|
|
1484
1485
|
notifications: X,
|
|
1485
|
-
unreadCount:
|
|
1486
|
+
unreadCount: hn,
|
|
1486
1487
|
open: Z,
|
|
1487
1488
|
openPanel: e,
|
|
1488
1489
|
closePanel: t,
|
|
@@ -1497,22 +1498,22 @@ function pn() {
|
|
|
1497
1498
|
}
|
|
1498
1499
|
//#endregion
|
|
1499
1500
|
//#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
|
|
1500
|
-
var
|
|
1501
|
+
var _n = ["aria-label", "aria-expanded"], vn = { class: "flex flex-col h-full" }, yn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, bn = { class: "space-y-0.5" }, xn = [
|
|
1501
1502
|
"aria-current",
|
|
1502
1503
|
"title",
|
|
1503
1504
|
"onClick"
|
|
1504
|
-
],
|
|
1505
|
+
], Sn = ["aria-label"], Cn = { class: "relative shrink-0" }, wn = {
|
|
1505
1506
|
key: 0,
|
|
1506
1507
|
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"
|
|
1507
|
-
},
|
|
1508
|
+
}, Tn = [
|
|
1508
1509
|
"title",
|
|
1509
1510
|
"aria-label",
|
|
1510
1511
|
"aria-pressed"
|
|
1511
|
-
],
|
|
1512
|
+
], En = [
|
|
1512
1513
|
"title",
|
|
1513
1514
|
"aria-label",
|
|
1514
1515
|
"aria-pressed"
|
|
1515
|
-
],
|
|
1516
|
+
], Dn = /*#__PURE__*/ ((e, t) => {
|
|
1516
1517
|
let n = e.__vccOpts || e;
|
|
1517
1518
|
for (let [e, r] of t) n[e] = r;
|
|
1518
1519
|
return n;
|
|
@@ -1537,151 +1538,151 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1537
1538
|
}
|
|
1538
1539
|
},
|
|
1539
1540
|
setup(t) {
|
|
1540
|
-
let n = t, r =
|
|
1541
|
-
|
|
1542
|
-
e ? (ee = document.activeElement instanceof HTMLElement ? document.activeElement : null, await
|
|
1541
|
+
let n = t, r = Ae(), l = ke(), { isDark: u, toggleTheme: p } = B(), { mobileOpen: m, close: h, toggle: v } = un(), { collapsed: y, toggle: b } = mn(), { unreadCount: x, togglePanel: S } = gn(), C = i(() => n.collapsible && y.value), T = E(null), ee = null;
|
|
1542
|
+
N(m, async (e) => {
|
|
1543
|
+
e ? (ee = document.activeElement instanceof HTMLElement ? document.activeElement : null, await g(), T.value?.focus()) : (ee?.focus(), ee = null);
|
|
1543
1544
|
});
|
|
1544
|
-
function
|
|
1545
|
-
r.push({ name: n.homeRouteName }),
|
|
1545
|
+
function k() {
|
|
1546
|
+
r.push({ name: n.homeRouteName }), h();
|
|
1546
1547
|
}
|
|
1547
1548
|
function te(e) {
|
|
1548
1549
|
return l.name === e;
|
|
1549
1550
|
}
|
|
1550
|
-
function
|
|
1551
|
-
r.push({ name: e }),
|
|
1551
|
+
function ne(e) {
|
|
1552
|
+
r.push({ name: e }), h();
|
|
1552
1553
|
}
|
|
1553
|
-
return (n, r) => (
|
|
1554
|
-
c("div", { class:
|
|
1554
|
+
return (n, r) => (w(), s("div", null, [
|
|
1555
|
+
c("div", { class: _(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", M(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [c("button", {
|
|
1555
1556
|
type: "button",
|
|
1556
|
-
onClick:
|
|
1557
|
+
onClick: k,
|
|
1557
1558
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1558
1559
|
"aria-label": "Go to home"
|
|
1559
|
-
}, [
|
|
1560
|
+
}, [O(n.$slots, "logo", { size: 28 }, void 0, !0)]), c("button", {
|
|
1560
1561
|
type: "button",
|
|
1561
|
-
onClick: r[0] ||= (...e) =>
|
|
1562
|
-
class:
|
|
1563
|
-
"aria-label":
|
|
1564
|
-
"aria-expanded":
|
|
1565
|
-
}, [
|
|
1562
|
+
onClick: r[0] ||= (...e) => M(v) && M(v)(...e),
|
|
1563
|
+
class: _(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", M(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
|
|
1564
|
+
"aria-label": M(m) ? "Close navigation menu" : "Open navigation menu",
|
|
1565
|
+
"aria-expanded": M(m)
|
|
1566
|
+
}, [M(m) ? (w(), a(M(De), {
|
|
1566
1567
|
key: 1,
|
|
1567
1568
|
class: "w-6 h-6",
|
|
1568
1569
|
"aria-hidden": "true"
|
|
1569
|
-
})) : (
|
|
1570
|
+
})) : (w(), a(M(le), {
|
|
1570
1571
|
key: 0,
|
|
1571
1572
|
class: "w-6 h-6",
|
|
1572
1573
|
"aria-hidden": "true"
|
|
1573
|
-
}))], 10,
|
|
1574
|
-
|
|
1574
|
+
}))], 10, _n)], 2),
|
|
1575
|
+
M(m) ? (w(), s("div", {
|
|
1575
1576
|
key: 0,
|
|
1576
1577
|
class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
|
|
1577
1578
|
"aria-hidden": "true",
|
|
1578
|
-
onClick: r[1] ||= (...e) =>
|
|
1579
|
+
onClick: r[1] ||= (...e) => M(h) && M(h)(...e)
|
|
1579
1580
|
})) : o("", !0),
|
|
1580
1581
|
c("aside", {
|
|
1581
1582
|
role: "navigation",
|
|
1582
1583
|
"aria-label": "Main navigation",
|
|
1583
|
-
class:
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
t.collapsible &&
|
|
1584
|
+
class: _(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
|
|
1585
|
+
M(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
|
|
1586
|
+
M(m) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
|
|
1587
|
+
t.collapsible && M(y) ? "lg:w-16" : "lg:w-60"
|
|
1587
1588
|
]])
|
|
1588
|
-
}, [c("div",
|
|
1589
|
-
c("div", { class:
|
|
1589
|
+
}, [c("div", vn, [
|
|
1590
|
+
c("div", { class: _(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": C.value }]) }, [c("button", {
|
|
1590
1591
|
type: "button",
|
|
1591
|
-
onClick:
|
|
1592
|
+
onClick: k,
|
|
1592
1593
|
class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
|
|
1593
1594
|
"aria-label": "Go to home"
|
|
1594
|
-
}, [
|
|
1595
|
+
}, [O(n.$slots, "logo", { size: C.value ? 36 : 52 }, void 0, !0)]), c("button", {
|
|
1595
1596
|
ref_key: "closeMobileButton",
|
|
1596
|
-
ref:
|
|
1597
|
+
ref: T,
|
|
1597
1598
|
type: "button",
|
|
1598
|
-
onClick: r[2] ||= (...e) =>
|
|
1599
|
-
class:
|
|
1599
|
+
onClick: r[2] ||= (...e) => M(h) && M(h)(...e),
|
|
1600
|
+
class: _(["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", M(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
|
|
1600
1601
|
"aria-label": "Close navigation menu"
|
|
1601
|
-
}, [f(
|
|
1602
|
+
}, [f(M(De), {
|
|
1602
1603
|
class: "w-5 h-5",
|
|
1603
1604
|
"aria-hidden": "true"
|
|
1604
1605
|
})], 2)], 2),
|
|
1605
|
-
c("nav",
|
|
1606
|
+
c("nav", yn, [(w(!0), s(e, null, D(t.sections, (t) => (w(), s("div", { key: t.title }, [c("p", { class: _(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": C.value }]) }, j(t.title), 3), c("ul", bn, [(w(!0), s(e, null, D(t.items, (e) => (w(), s("li", { key: e.name }, [c("button", {
|
|
1606
1607
|
type: "button",
|
|
1607
1608
|
"aria-current": te(e.name) ? "page" : void 0,
|
|
1608
|
-
title:
|
|
1609
|
-
onClick: (t) =>
|
|
1610
|
-
class:
|
|
1611
|
-
}, [(
|
|
1612
|
-
c("div", { class:
|
|
1613
|
-
t.showNotifications ? (
|
|
1609
|
+
title: C.value ? e.label : void 0,
|
|
1610
|
+
onClick: (t) => ne(e.name),
|
|
1611
|
+
class: _(["flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors w-full text-left cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [te(e.name) ? M(u) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : M(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 }]])
|
|
1612
|
+
}, [(w(), a(A(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), c("span", { class: _({ "lg:hidden": C.value }) }, j(e.label), 3)], 10, xn)]))), 128))])]))), 128))]),
|
|
1613
|
+
c("div", { class: _(["px-4 py-4 border-t transition-colors space-y-3", M(u) ? "border-gray-800" : "border-gray-200"]) }, [
|
|
1614
|
+
t.showNotifications ? (w(), s("button", {
|
|
1614
1615
|
key: 0,
|
|
1615
1616
|
type: "button",
|
|
1616
|
-
onClick: r[3] ||= (...e) =>
|
|
1617
|
+
onClick: r[3] ||= (...e) => M(S) && M(S)(...e),
|
|
1617
1618
|
title: "Notifications",
|
|
1618
|
-
"aria-label":
|
|
1619
|
-
class:
|
|
1620
|
-
}, [c("span",
|
|
1619
|
+
"aria-label": M(x) > 0 ? `Notifications, ${M(x)} unread` : "Notifications",
|
|
1620
|
+
class: _(["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", [M(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 }]])
|
|
1621
|
+
}, [c("span", Cn, [f(M(ue), {
|
|
1621
1622
|
class: "w-[18px] h-[18px]",
|
|
1622
1623
|
"aria-hidden": "true"
|
|
1623
|
-
}),
|
|
1624
|
-
t.showThemeToggle ? (
|
|
1624
|
+
}), M(x) > 0 ? (w(), s("span", wn, j(M(x) > 99 ? "99+" : M(x)), 1)) : o("", !0)]), c("span", { class: _({ "lg:hidden": C.value }) }, "Notifications", 2)], 10, Sn)) : o("", !0),
|
|
1625
|
+
t.showThemeToggle ? (w(), s("button", {
|
|
1625
1626
|
key: 1,
|
|
1626
1627
|
type: "button",
|
|
1627
|
-
onClick: r[4] ||= (...e) =>
|
|
1628
|
-
title:
|
|
1629
|
-
"aria-label":
|
|
1630
|
-
"aria-pressed":
|
|
1631
|
-
class:
|
|
1628
|
+
onClick: r[4] ||= (...e) => M(p) && M(p)(...e),
|
|
1629
|
+
title: M(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1630
|
+
"aria-label": M(u) ? "Switch to light mode" : "Switch to dark mode",
|
|
1631
|
+
"aria-pressed": M(u),
|
|
1632
|
+
class: _(["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", [M(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 }]])
|
|
1632
1633
|
}, [
|
|
1633
|
-
(
|
|
1634
|
-
class:
|
|
1634
|
+
(w(), a(A(M(u) ? M(Ee) : M(Te)), {
|
|
1635
|
+
class: _(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": C.value }]),
|
|
1635
1636
|
"aria-hidden": "true"
|
|
1636
1637
|
}, null, 8, ["class"])),
|
|
1637
|
-
c("span", { class:
|
|
1638
|
-
c("span", { class:
|
|
1639
|
-
], 10,
|
|
1640
|
-
t.collapsible ? (
|
|
1638
|
+
c("span", { class: _({ "lg:hidden": C.value }) }, j(M(u) ? "Switch to light" : "Switch to dark"), 3),
|
|
1639
|
+
c("span", { class: _(["ml-auto relative w-9 h-5 rounded-full transition-colors", [M(u) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": C.value }]]) }, [c("span", { class: _(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", M(u) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
|
|
1640
|
+
], 10, Tn)) : o("", !0),
|
|
1641
|
+
t.collapsible ? (w(), s("button", {
|
|
1641
1642
|
key: 2,
|
|
1642
1643
|
type: "button",
|
|
1643
|
-
onClick: r[5] ||= (...e) =>
|
|
1644
|
-
title:
|
|
1645
|
-
"aria-label":
|
|
1646
|
-
"aria-pressed":
|
|
1647
|
-
class:
|
|
1648
|
-
}, [(
|
|
1644
|
+
onClick: r[5] ||= (...e) => M(b) && M(b)(...e),
|
|
1645
|
+
title: M(y) ? "Expand sidebar" : "Collapse sidebar",
|
|
1646
|
+
"aria-label": M(y) ? "Expand sidebar" : "Collapse sidebar",
|
|
1647
|
+
"aria-pressed": M(y),
|
|
1648
|
+
class: _(["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", [M(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 }]])
|
|
1649
|
+
}, [(w(), a(A(M(y) ? M(pe) : M(fe)), {
|
|
1649
1650
|
class: "w-[18px] h-[18px] shrink-0",
|
|
1650
1651
|
"aria-hidden": "true"
|
|
1651
|
-
})), c("span", { class:
|
|
1652
|
-
c("div", { class:
|
|
1653
|
-
c("div", { class:
|
|
1652
|
+
})), c("span", { class: _({ "lg:hidden": C.value }) }, "Collapse", 2)], 10, En)) : o("", !0),
|
|
1653
|
+
c("div", { class: _({ "lg:hidden": C.value }) }, [O(n.$slots, "status", {}, void 0, !0)], 2),
|
|
1654
|
+
c("div", { class: _({ "lg:hidden": C.value }) }, [O(n.$slots, "footer", {}, () => [t.appName || t.version ? (w(), s("div", {
|
|
1654
1655
|
key: 0,
|
|
1655
|
-
class:
|
|
1656
|
+
class: _(["flex items-center justify-center gap-2 text-xs", (M(u), "text-gray-500")])
|
|
1656
1657
|
}, [c("span", null, [
|
|
1657
|
-
d(
|
|
1658
|
-
t.appName && t.version ? (
|
|
1659
|
-
t.version ? (
|
|
1658
|
+
d(j(t.appName), 1),
|
|
1659
|
+
t.appName && t.version ? (w(), s(e, { key: 0 }, [d(j(" "))], 64)) : o("", !0),
|
|
1660
|
+
t.version ? (w(), s(e, { key: 1 }, [d("v" + j(t.version), 1)], 64)) : o("", !0)
|
|
1660
1661
|
])], 2)) : o("", !0)], !0)], 2)
|
|
1661
1662
|
], 2)
|
|
1662
1663
|
])], 2)
|
|
1663
1664
|
]));
|
|
1664
1665
|
}
|
|
1665
|
-
}), [["__scopeId", "data-v-bfce9dd7"]]),
|
|
1666
|
+
}), [["__scopeId", "data-v-bfce9dd7"]]), On = {
|
|
1666
1667
|
key: 1,
|
|
1667
1668
|
class: "mt-4 flex justify-center py-6"
|
|
1668
|
-
},
|
|
1669
|
+
}, kn = {
|
|
1669
1670
|
key: 2,
|
|
1670
1671
|
class: "mt-4 text-sm text-red-500",
|
|
1671
1672
|
role: "alert"
|
|
1672
|
-
},
|
|
1673
|
+
}, An = {
|
|
1673
1674
|
key: 3,
|
|
1674
1675
|
class: "mt-4"
|
|
1675
|
-
},
|
|
1676
|
+
}, jn = { class: "relative" }, Mn = ["placeholder"], Nn = {
|
|
1676
1677
|
key: 4,
|
|
1677
1678
|
class: "mt-3 max-h-64 overflow-y-auto"
|
|
1678
|
-
},
|
|
1679
|
+
}, Pn = ["aria-pressed", "onClick"], Fn = { class: "flex-1 min-w-0" }, In = {
|
|
1679
1680
|
key: 0,
|
|
1680
1681
|
class: "text-center py-6"
|
|
1681
|
-
},
|
|
1682
|
+
}, Ln = {
|
|
1682
1683
|
key: 1,
|
|
1683
1684
|
class: "text-center py-6"
|
|
1684
|
-
},
|
|
1685
|
+
}, Rn = ["disabled"], zn = ["disabled"], Bn = /* @__PURE__ */ p({
|
|
1685
1686
|
__name: "BaseEntityPickerModal",
|
|
1686
1687
|
props: {
|
|
1687
1688
|
title: {},
|
|
@@ -1703,10 +1704,10 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1703
1704
|
},
|
|
1704
1705
|
emits: ["confirm", "cancel"],
|
|
1705
1706
|
setup(t, { emit: n }) {
|
|
1706
|
-
let r = t, u = n, { isDark: d } =
|
|
1707
|
+
let r = t, u = n, { isDark: d } = B(), p = J(), m = E([]), h = E(!1), v = E(""), y = E(null), b = E(""), S = E(null), C = i(() => {
|
|
1707
1708
|
let e = r.loader ? m.value : r.items;
|
|
1708
1709
|
return r.excludeId ? e.filter((e) => e.id !== r.excludeId) : e;
|
|
1709
|
-
}),
|
|
1710
|
+
}), T = i(() => C.value.filter((e) => e.label.toLowerCase().includes(b.value.toLowerCase()))), ee = {
|
|
1710
1711
|
emerald: {
|
|
1711
1712
|
iconBg: "bg-emerald-50",
|
|
1712
1713
|
iconText: "text-emerald-600",
|
|
@@ -1752,7 +1753,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1752
1753
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1753
1754
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1754
1755
|
}
|
|
1755
|
-
},
|
|
1756
|
+
}, k = {
|
|
1756
1757
|
emerald: {
|
|
1757
1758
|
iconBg: "bg-emerald-900/30",
|
|
1758
1759
|
iconText: "text-emerald-400",
|
|
@@ -1798,74 +1799,74 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1798
1799
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1799
1800
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1800
1801
|
}
|
|
1801
|
-
},
|
|
1802
|
-
|
|
1802
|
+
}, A = i(() => (d.value ? k : ee)[r.variant]);
|
|
1803
|
+
x(async () => {
|
|
1803
1804
|
if (r.loader) {
|
|
1804
|
-
|
|
1805
|
+
h.value = !0;
|
|
1805
1806
|
try {
|
|
1806
1807
|
m.value = await r.loader();
|
|
1807
1808
|
} catch {
|
|
1808
1809
|
v.value = "Failed to load items";
|
|
1809
1810
|
} finally {
|
|
1810
|
-
|
|
1811
|
+
h.value = !1;
|
|
1811
1812
|
}
|
|
1812
1813
|
}
|
|
1813
|
-
await
|
|
1814
|
+
await g(), S.value?.focus();
|
|
1814
1815
|
});
|
|
1815
1816
|
function te() {
|
|
1816
|
-
|
|
1817
|
+
y.value && !r.submitting && u("confirm", y.value);
|
|
1817
1818
|
}
|
|
1818
1819
|
function ne() {
|
|
1819
1820
|
r.submitting || u("cancel");
|
|
1820
1821
|
}
|
|
1821
|
-
return (n, r) => (
|
|
1822
|
+
return (n, r) => (w(), a(qt, {
|
|
1822
1823
|
title: t.title,
|
|
1823
|
-
icon:
|
|
1824
|
-
"icon-bg-class":
|
|
1825
|
-
"icon-class":
|
|
1824
|
+
icon: M(xe),
|
|
1825
|
+
"icon-bg-class": A.value.iconBg,
|
|
1826
|
+
"icon-class": A.value.iconText,
|
|
1826
1827
|
"manual-close": t.submitting,
|
|
1827
1828
|
onCancel: ne
|
|
1828
1829
|
}, l({
|
|
1829
|
-
footer:
|
|
1830
|
+
footer: P(() => [c("button", {
|
|
1830
1831
|
type: "button",
|
|
1831
1832
|
disabled: t.submitting,
|
|
1832
|
-
class:
|
|
1833
|
+
class: _(["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", M(p).ghostButton]),
|
|
1833
1834
|
onClick: ne
|
|
1834
|
-
},
|
|
1835
|
+
}, j(t.cancelText), 11, Rn), c("button", {
|
|
1835
1836
|
type: "button",
|
|
1836
|
-
disabled: !
|
|
1837
|
-
class:
|
|
1837
|
+
disabled: !y.value || t.submitting,
|
|
1838
|
+
class: _(["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", !y.value || t.submitting ? A.value.confirmDisabled : A.value.confirmActive]),
|
|
1838
1839
|
onClick: te
|
|
1839
|
-
},
|
|
1840
|
-
default:
|
|
1841
|
-
t.message ? (
|
|
1840
|
+
}, j(t.submitting ? t.submittingText : t.confirmText), 11, zn)]),
|
|
1841
|
+
default: P(() => [
|
|
1842
|
+
t.message ? (w(), s("p", {
|
|
1842
1843
|
key: 0,
|
|
1843
|
-
class:
|
|
1844
|
-
},
|
|
1845
|
-
|
|
1846
|
-
!
|
|
1847
|
-
class:
|
|
1844
|
+
class: _(["text-sm", M(d) ? "text-gray-300" : "text-gray-600"])
|
|
1845
|
+
}, j(t.message), 3)) : o("", !0),
|
|
1846
|
+
h.value ? (w(), s("div", On, [f(mt, { color: "emerald" })])) : v.value ? (w(), s("div", kn, j(v.value), 1)) : o("", !0),
|
|
1847
|
+
!h.value && !v.value && C.value.length > 0 ? (w(), s("div", An, [c("div", jn, [f(M(Ce), {
|
|
1848
|
+
class: _(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", M(p).dimText]),
|
|
1848
1849
|
"aria-hidden": "true"
|
|
1849
|
-
}, null, 8, ["class"]),
|
|
1850
|
+
}, null, 8, ["class"]), F(c("input", {
|
|
1850
1851
|
ref_key: "searchInputRef",
|
|
1851
|
-
ref:
|
|
1852
|
-
"onUpdate:modelValue": r[0] ||= (e) =>
|
|
1852
|
+
ref: S,
|
|
1853
|
+
"onUpdate:modelValue": r[0] ||= (e) => b.value = e,
|
|
1853
1854
|
type: "text",
|
|
1854
1855
|
placeholder: t.searchPlaceholder,
|
|
1855
|
-
class:
|
|
1856
|
-
}, null, 10,
|
|
1857
|
-
!
|
|
1856
|
+
class: _(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [M(d) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", A.value.inputFocus]])
|
|
1857
|
+
}, null, 10, Mn), [[ie, b.value]])])])) : o("", !0),
|
|
1858
|
+
!h.value && !v.value ? (w(), s("div", Nn, [(w(!0), s(e, null, D(T.value, (e) => (w(), s("button", {
|
|
1858
1859
|
key: e.id,
|
|
1859
1860
|
type: "button",
|
|
1860
|
-
"aria-pressed":
|
|
1861
|
-
class:
|
|
1862
|
-
onClick: (t) =>
|
|
1861
|
+
"aria-pressed": y.value === e.id,
|
|
1862
|
+
class: _(["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", [y.value === e.id ? A.value.selectedRow : M(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
|
|
1863
|
+
onClick: (t) => y.value = e.id
|
|
1863
1864
|
}, [
|
|
1864
|
-
f(
|
|
1865
|
-
c("div",
|
|
1866
|
-
|
|
1865
|
+
f(M(xe), { class: _(["w-5 h-5 flex-shrink-0", M(p).dimText]) }, null, 8, ["class"]),
|
|
1866
|
+
c("div", Fn, [c("p", { class: _(["text-sm font-medium truncate", M(p).bodyText]) }, j(e.label), 3)]),
|
|
1867
|
+
y.value === e.id ? (w(), s("div", {
|
|
1867
1868
|
key: 0,
|
|
1868
|
-
class:
|
|
1869
|
+
class: _(["w-5 h-5 rounded-full flex items-center justify-center", A.value.checkBg])
|
|
1869
1870
|
}, [...r[1] ||= [c("svg", {
|
|
1870
1871
|
class: "w-3 h-3 text-white",
|
|
1871
1872
|
fill: "none",
|
|
@@ -1878,12 +1879,12 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1878
1879
|
"stroke-linejoin": "round",
|
|
1879
1880
|
d: "M5 13l4 4L19 7"
|
|
1880
1881
|
})], -1)]], 2)) : o("", !0)
|
|
1881
|
-
], 10,
|
|
1882
|
+
], 10, Pn))), 128)), C.value.length === 0 ? (w(), s("div", In, [c("p", { class: _(["text-sm", M(p).dimText]) }, j(t.emptyMessage), 3)])) : T.value.length === 0 ? (w(), s("div", Ln, [c("p", { class: _(["text-sm", M(p).dimText]) }, j(t.noMatchMessage), 3)])) : o("", !0)])) : o("", !0)
|
|
1882
1883
|
]),
|
|
1883
1884
|
_: 2
|
|
1884
1885
|
}, [n.$slots.icon ? {
|
|
1885
1886
|
name: "icon",
|
|
1886
|
-
fn:
|
|
1887
|
+
fn: P(() => [O(n.$slots, "icon")]),
|
|
1887
1888
|
key: "0"
|
|
1888
1889
|
} : void 0]), 1032, [
|
|
1889
1890
|
"title",
|
|
@@ -1893,10 +1894,10 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1893
1894
|
"manual-close"
|
|
1894
1895
|
]));
|
|
1895
1896
|
}
|
|
1896
|
-
}),
|
|
1897
|
+
}), Vn = {
|
|
1897
1898
|
href: "#main-content",
|
|
1898
1899
|
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"
|
|
1899
|
-
},
|
|
1900
|
+
}, Hn = ["inert"], Un = /* @__PURE__ */ p({
|
|
1900
1901
|
__name: "BaseAppLayout",
|
|
1901
1902
|
props: {
|
|
1902
1903
|
showSidebar: {
|
|
@@ -1906,19 +1907,19 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1906
1907
|
skipLinkLabel: { default: "Skip to main content" }
|
|
1907
1908
|
},
|
|
1908
1909
|
setup(e) {
|
|
1909
|
-
let t = e, { isDark: n } =
|
|
1910
|
-
return (t, i) => (
|
|
1911
|
-
c("a",
|
|
1912
|
-
l.value ?
|
|
1910
|
+
let t = e, { isDark: n } = B(), { mobileOpen: r } = un(), { collapsed: a } = mn(), l = i(() => t.showSidebar);
|
|
1911
|
+
return (t, i) => (w(), s("div", { class: _(["min-h-screen transition-colors duration-300", M(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
|
|
1912
|
+
c("a", Vn, j(e.skipLinkLabel), 1),
|
|
1913
|
+
l.value ? O(t.$slots, "sidebar", {}, void 0, void 0, 0) : o("", !0),
|
|
1913
1914
|
c("main", {
|
|
1914
1915
|
id: "main-content",
|
|
1915
1916
|
tabindex: "-1",
|
|
1916
|
-
inert: l.value &&
|
|
1917
|
-
class:
|
|
1918
|
-
}, [
|
|
1917
|
+
inert: l.value && M(r) ? !0 : void 0,
|
|
1918
|
+
class: _(["transition-all duration-300", l.value ? M(a) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
|
|
1919
|
+
}, [O(t.$slots, "default")], 10, Hn)
|
|
1919
1920
|
], 2));
|
|
1920
1921
|
}
|
|
1921
|
-
}),
|
|
1922
|
+
}), Wn = { class: "flex items-center gap-3 min-w-0" }, Gn = { class: "flex items-center gap-2" }, Kn = /* @__PURE__ */ p({
|
|
1922
1923
|
__name: "BasePageHeader",
|
|
1923
1924
|
props: {
|
|
1924
1925
|
title: {},
|
|
@@ -1929,7 +1930,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1929
1930
|
marginClass: { default: "mb-8" }
|
|
1930
1931
|
},
|
|
1931
1932
|
setup(e) {
|
|
1932
|
-
let t = e, { isDark: n } =
|
|
1933
|
+
let t = e, { isDark: n } = B(), r = J(), a = i(() => {
|
|
1933
1934
|
let e = {
|
|
1934
1935
|
emerald: {
|
|
1935
1936
|
dark: "bg-emerald-500/10",
|
|
@@ -1970,19 +1971,19 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1970
1971
|
}[t.iconColor];
|
|
1971
1972
|
return n.value ? e.dark : e.light;
|
|
1972
1973
|
});
|
|
1973
|
-
return (t, n) => (
|
|
1974
|
+
return (t, n) => (w(), s("header", { class: _(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [c("div", { class: _(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [c("div", Wn, [t.$slots.icon ? (w(), s("div", {
|
|
1974
1975
|
key: 0,
|
|
1975
|
-
class:
|
|
1976
|
-
}, [
|
|
1976
|
+
class: _(["w-10 h-10 rounded-lg flex items-center justify-center", a.value])
|
|
1977
|
+
}, [O(t.$slots, "icon", { iconClass: l.value })], 2)) : o("", !0), c("div", null, [c("h1", { class: _(["text-2xl font-bold", M(r).primaryTextSoft]) }, j(e.title), 3), e.subtitle || t.$slots.subtitle ? (w(), s("p", {
|
|
1977
1978
|
key: 0,
|
|
1978
|
-
class:
|
|
1979
|
-
}, [
|
|
1979
|
+
class: _(["text-sm", M(r).dimTextAlt])
|
|
1980
|
+
}, [O(t.$slots, "subtitle", {}, () => [d(j(e.subtitle), 1)])], 2)) : o("", !0)])]), c("div", Gn, [O(t.$slots, "actions")])], 2)], 2));
|
|
1980
1981
|
}
|
|
1981
|
-
}),
|
|
1982
|
+
}), qn = [
|
|
1982
1983
|
"type",
|
|
1983
1984
|
"disabled",
|
|
1984
1985
|
"title"
|
|
1985
|
-
],
|
|
1986
|
+
], Jn = { key: 0 }, Yn = /* @__PURE__ */ p({
|
|
1986
1987
|
__name: "BaseToolbarButton",
|
|
1987
1988
|
props: {
|
|
1988
1989
|
label: { default: "" },
|
|
@@ -1996,7 +1997,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
1996
1997
|
},
|
|
1997
1998
|
emits: ["click"],
|
|
1998
1999
|
setup(e) {
|
|
1999
|
-
let t = e, { isDark: n } =
|
|
2000
|
+
let t = e, { isDark: n } = B(), r = {
|
|
2000
2001
|
neutral: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2001
2002
|
danger: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
|
|
2002
2003
|
ghost: "h-9 px-4 rounded-md font-semibold disabled:opacity-40 disabled:hover:bg-slate-50 dark:disabled:hover:bg-slate-900"
|
|
@@ -2017,20 +2018,20 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2017
2018
|
}[t.variant];
|
|
2018
2019
|
return [r[t.variant], n.value ? e.dark : e.light];
|
|
2019
2020
|
});
|
|
2020
|
-
return (t, n) => (
|
|
2021
|
+
return (t, n) => (w(), s("button", {
|
|
2021
2022
|
type: e.type,
|
|
2022
2023
|
disabled: e.disabled,
|
|
2023
2024
|
title: e.title,
|
|
2024
|
-
class:
|
|
2025
|
+
class: _(["inline-flex shrink-0 items-center gap-2 text-sm border transition-colors cursor-pointer disabled:cursor-not-allowed whitespace-nowrap focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", a.value]),
|
|
2025
2026
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2026
|
-
}, [
|
|
2027
|
+
}, [O(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (w(), s("span", Jn, j(e.label), 1)) : o("", !0)], 10, qn));
|
|
2027
2028
|
}
|
|
2028
|
-
}),
|
|
2029
|
+
}), Xn = [
|
|
2029
2030
|
"type",
|
|
2030
2031
|
"disabled",
|
|
2031
2032
|
"title",
|
|
2032
2033
|
"aria-label"
|
|
2033
|
-
],
|
|
2034
|
+
], Zn = { key: 0 }, Qn = /* @__PURE__ */ p({
|
|
2034
2035
|
__name: "BaseActionButton",
|
|
2035
2036
|
props: {
|
|
2036
2037
|
label: { default: "" },
|
|
@@ -2049,7 +2050,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2049
2050
|
},
|
|
2050
2051
|
emits: ["click"],
|
|
2051
2052
|
setup(e) {
|
|
2052
|
-
let t = e, { isDark: n } =
|
|
2053
|
+
let t = e, { isDark: n } = B(), r = i(() => {
|
|
2053
2054
|
let e = {
|
|
2054
2055
|
emerald: {
|
|
2055
2056
|
dark: "text-emerald-400 hover:bg-emerald-500/10",
|
|
@@ -2122,16 +2123,16 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2122
2123
|
}[t.color];
|
|
2123
2124
|
return n.value ? e.dark : e.light;
|
|
2124
2125
|
}), c = i(() => t.disabled ? `${a.value} opacity-50 cursor-not-allowed` : `${r.value} cursor-pointer`);
|
|
2125
|
-
return (t, n) => (
|
|
2126
|
+
return (t, n) => (w(), s("button", {
|
|
2126
2127
|
type: e.type,
|
|
2127
2128
|
disabled: e.disabled,
|
|
2128
2129
|
title: e.title,
|
|
2129
2130
|
"aria-label": e.ariaLabel,
|
|
2130
|
-
class:
|
|
2131
|
+
class: _(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-current", [e.fullWidth ? "flex-1" : "", c.value]]),
|
|
2131
2132
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
2132
|
-
}, [
|
|
2133
|
+
}, [O(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (w(), s("span", Zn, j(e.label), 1)) : o("", !0)], 10, Xn));
|
|
2133
2134
|
}
|
|
2134
|
-
}),
|
|
2135
|
+
}), $n = ["title", "aria-label"], er = /* @__PURE__ */ p({
|
|
2135
2136
|
__name: "BaseCopyButton",
|
|
2136
2137
|
props: {
|
|
2137
2138
|
text: {},
|
|
@@ -2142,7 +2143,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2142
2143
|
},
|
|
2143
2144
|
emits: ["copied", "error"],
|
|
2144
2145
|
setup(e, { emit: t }) {
|
|
2145
|
-
let n = e, r = t, { isDark: o } =
|
|
2146
|
+
let n = e, r = t, { isDark: o } = B(), c = E(!1), l = null, u = i(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = i(() => n.label ? `Copy ${n.label}` : "Copy"), f = i(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${c.value ? o.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : o.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${o.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
|
|
2146
2147
|
async function p(e) {
|
|
2147
2148
|
try {
|
|
2148
2149
|
if (navigator.clipboard?.writeText) {
|
|
@@ -2164,36 +2165,36 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2164
2165
|
r("error", e);
|
|
2165
2166
|
}
|
|
2166
2167
|
}
|
|
2167
|
-
return
|
|
2168
|
+
return C(() => {
|
|
2168
2169
|
l && clearTimeout(l);
|
|
2169
|
-
}), (t, n) => (
|
|
2170
|
+
}), (t, n) => (w(), s("button", {
|
|
2170
2171
|
type: "button",
|
|
2171
2172
|
title: u.value,
|
|
2172
2173
|
"aria-label": d.value,
|
|
2173
|
-
class:
|
|
2174
|
+
class: _(f.value),
|
|
2174
2175
|
onClick: m
|
|
2175
|
-
}, [c.value ? (
|
|
2176
|
+
}, [c.value ? (w(), a(M(ge), {
|
|
2176
2177
|
key: 0,
|
|
2177
|
-
class:
|
|
2178
|
+
class: _(e.iconClass),
|
|
2178
2179
|
"aria-hidden": "true"
|
|
2179
|
-
}, null, 8, ["class"])) : (
|
|
2180
|
+
}, null, 8, ["class"])) : (w(), a(M(_e), {
|
|
2180
2181
|
key: 1,
|
|
2181
|
-
class:
|
|
2182
|
+
class: _(e.iconClass),
|
|
2182
2183
|
"aria-hidden": "true"
|
|
2183
|
-
}, null, 8, ["class"]))], 10,
|
|
2184
|
+
}, null, 8, ["class"]))], 10, $n));
|
|
2184
2185
|
}
|
|
2185
|
-
}),
|
|
2186
|
+
}), tr = ["disabled", "aria-busy"], nr = {
|
|
2186
2187
|
key: 0,
|
|
2187
2188
|
class: "w-5 h-5 animate-spin shrink-0",
|
|
2188
2189
|
viewBox: "0 0 24 24",
|
|
2189
2190
|
fill: "none",
|
|
2190
2191
|
"aria-hidden": "true"
|
|
2191
|
-
},
|
|
2192
|
+
}, rr = {
|
|
2192
2193
|
key: 1,
|
|
2193
2194
|
class: "w-5 h-5 shrink-0",
|
|
2194
2195
|
viewBox: "0 0 48 48",
|
|
2195
2196
|
"aria-hidden": "true"
|
|
2196
|
-
},
|
|
2197
|
+
}, ir = /* @__PURE__ */ p({
|
|
2197
2198
|
__name: "BaseGoogleSignInButton",
|
|
2198
2199
|
props: {
|
|
2199
2200
|
label: { default: "Sign in with Google" },
|
|
@@ -2212,17 +2213,17 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2212
2213
|
},
|
|
2213
2214
|
emits: ["click"],
|
|
2214
2215
|
setup(e, { emit: t }) {
|
|
2215
|
-
let n = e, r = t, { isDark: a } =
|
|
2216
|
+
let n = e, r = t, { isDark: a } = B(), o = i(() => n.disabled || n.loading);
|
|
2216
2217
|
function l() {
|
|
2217
2218
|
o.value || r("click");
|
|
2218
2219
|
}
|
|
2219
|
-
return (t, n) => (
|
|
2220
|
+
return (t, n) => (w(), s("button", {
|
|
2220
2221
|
type: "button",
|
|
2221
2222
|
disabled: o.value,
|
|
2222
2223
|
"aria-busy": e.loading,
|
|
2223
2224
|
onClick: l,
|
|
2224
|
-
class:
|
|
2225
|
-
}, [e.loading ? (
|
|
2225
|
+
class: _(["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" : "", M(a) ? "bg-gray-900 border-gray-700 text-gray-100 hover:bg-gray-800" : "bg-white border-gray-300 text-gray-700 hover:bg-gray-50"]])
|
|
2226
|
+
}, [e.loading ? (w(), s("svg", nr, [...n[0] ||= [c("circle", {
|
|
2226
2227
|
class: "opacity-25",
|
|
2227
2228
|
cx: "12",
|
|
2228
2229
|
cy: "12",
|
|
@@ -2233,18 +2234,18 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2233
2234
|
class: "opacity-75",
|
|
2234
2235
|
fill: "currentColor",
|
|
2235
2236
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2236
|
-
}, null, -1)]])) : (
|
|
2237
|
+
}, null, -1)]])) : (w(), s("svg", rr, [...n[1] ||= [u("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), c("span", null, j(e.label), 1)], 10, tr));
|
|
2237
2238
|
}
|
|
2238
|
-
}),
|
|
2239
|
+
}), ar = {
|
|
2239
2240
|
key: 0,
|
|
2240
2241
|
class: "flex justify-center mb-6"
|
|
2241
|
-
},
|
|
2242
|
+
}, or = { class: "mb-6 text-center" }, sr = { class: "flex items-center gap-3 my-5" }, cr = ["disabled"], lr = { class: "flex items-center justify-between mb-1.5" }, ur = { class: "relative" }, dr = ["type", "disabled"], fr = ["aria-label", "aria-pressed"], pr = ["disabled"], mr = ["disabled", "aria-busy"], hr = {
|
|
2242
2243
|
key: 0,
|
|
2243
2244
|
class: "w-4 h-4 animate-spin",
|
|
2244
2245
|
viewBox: "0 0 24 24",
|
|
2245
2246
|
fill: "none",
|
|
2246
2247
|
"aria-hidden": "true"
|
|
2247
|
-
},
|
|
2248
|
+
}, gr = /* @__PURE__ */ p({
|
|
2248
2249
|
__name: "BaseLoginForm",
|
|
2249
2250
|
props: {
|
|
2250
2251
|
title: { default: "Sign in" },
|
|
@@ -2270,7 +2271,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2270
2271
|
},
|
|
2271
2272
|
emits: ["submit", "google-sign-in"],
|
|
2272
2273
|
setup(t, { emit: n }) {
|
|
2273
|
-
let r = t, a = n, { isDark: l } =
|
|
2274
|
+
let r = t, a = n, { isDark: l } = B(), u = J(), p = E(""), m = E(""), h = E(!1), g = E(!1), v = i(() => r.loading || r.googleLoading);
|
|
2274
2275
|
function y() {
|
|
2275
2276
|
v.value || a("submit", {
|
|
2276
2277
|
email: p.value,
|
|
@@ -2278,34 +2279,34 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2278
2279
|
...r.showRemember ? { remember: h.value } : {}
|
|
2279
2280
|
});
|
|
2280
2281
|
}
|
|
2281
|
-
return (n, r) => (
|
|
2282
|
-
n.$slots.logo ? (
|
|
2283
|
-
c("div",
|
|
2282
|
+
return (n, r) => (w(), s("div", { class: _(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", M(u).card]) }, [
|
|
2283
|
+
n.$slots.logo ? (w(), s("div", ar, [O(n.$slots, "logo")])) : o("", !0),
|
|
2284
|
+
c("div", or, [c("h1", { class: _(["text-xl font-semibold", M(u).primaryText]) }, j(t.title), 3), t.subtitle ? (w(), s("p", {
|
|
2284
2285
|
key: 0,
|
|
2285
|
-
class:
|
|
2286
|
-
},
|
|
2287
|
-
t.error ? (
|
|
2286
|
+
class: _(["mt-1 text-sm", M(u).mutedText])
|
|
2287
|
+
}, j(t.subtitle), 3)) : o("", !0)]),
|
|
2288
|
+
t.error ? (w(), s("div", {
|
|
2288
2289
|
key: 1,
|
|
2289
2290
|
role: "alert",
|
|
2290
|
-
class:
|
|
2291
|
-
},
|
|
2292
|
-
t.showGoogle ? (
|
|
2291
|
+
class: _(["mb-4 rounded-lg border px-3 py-2 text-sm", M(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
|
|
2292
|
+
}, j(t.error), 3)) : o("", !0),
|
|
2293
|
+
t.showGoogle ? (w(), s(e, { key: 2 }, [f(ir, {
|
|
2293
2294
|
loading: t.googleLoading,
|
|
2294
2295
|
disabled: t.loading,
|
|
2295
2296
|
onClick: r[0] ||= (e) => a("google-sign-in")
|
|
2296
|
-
}, null, 8, ["loading", "disabled"]), c("div",
|
|
2297
|
-
c("span", { class:
|
|
2298
|
-
c("span", { class:
|
|
2299
|
-
c("span", { class:
|
|
2297
|
+
}, null, 8, ["loading", "disabled"]), c("div", sr, [
|
|
2298
|
+
c("span", { class: _(["h-px flex-1", M(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
|
|
2299
|
+
c("span", { class: _(["text-xs uppercase tracking-wider", M(u).dimTextAlt]) }, "or", 2),
|
|
2300
|
+
c("span", { class: _(["h-px flex-1", M(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
|
|
2300
2301
|
])], 64)) : o("", !0),
|
|
2301
2302
|
c("form", {
|
|
2302
2303
|
class: "space-y-4",
|
|
2303
|
-
onSubmit:
|
|
2304
|
+
onSubmit: I(y, ["prevent"])
|
|
2304
2305
|
}, [
|
|
2305
2306
|
c("div", null, [c("label", {
|
|
2306
2307
|
for: "login-email",
|
|
2307
|
-
class:
|
|
2308
|
-
}, " Email ", 2),
|
|
2308
|
+
class: _(["block mb-1.5 text-sm font-medium", M(u).label])
|
|
2309
|
+
}, " Email ", 2), F(c("input", {
|
|
2309
2310
|
id: "login-email",
|
|
2310
2311
|
"onUpdate:modelValue": r[1] ||= (e) => p.value = e,
|
|
2311
2312
|
type: "email",
|
|
@@ -2314,43 +2315,43 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2314
2315
|
required: "",
|
|
2315
2316
|
disabled: v.value,
|
|
2316
2317
|
placeholder: "you@example.com",
|
|
2317
|
-
class:
|
|
2318
|
-
}, null, 10,
|
|
2319
|
-
c("div", null, [c("div",
|
|
2318
|
+
class: _(["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", M(u).inputWithPlaceholder])
|
|
2319
|
+
}, null, 10, cr), [[ie, p.value]])]),
|
|
2320
|
+
c("div", null, [c("div", lr, [c("label", {
|
|
2320
2321
|
for: "login-password",
|
|
2321
|
-
class:
|
|
2322
|
-
}, " Password ", 2),
|
|
2322
|
+
class: _(["block text-sm font-medium", M(u).label])
|
|
2323
|
+
}, " Password ", 2), O(n.$slots, "forgot")]), c("div", ur, [F(c("input", {
|
|
2323
2324
|
id: "login-password",
|
|
2324
2325
|
"onUpdate:modelValue": r[2] ||= (e) => m.value = e,
|
|
2325
|
-
type:
|
|
2326
|
+
type: g.value ? "text" : "password",
|
|
2326
2327
|
name: "password",
|
|
2327
2328
|
autocomplete: "current-password",
|
|
2328
2329
|
required: "",
|
|
2329
2330
|
disabled: v.value,
|
|
2330
2331
|
placeholder: "••••••••",
|
|
2331
|
-
class:
|
|
2332
|
-
}, null, 10,
|
|
2332
|
+
class: _(["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", M(u).inputWithPlaceholder])
|
|
2333
|
+
}, null, 10, dr), [[re, m.value]]), c("button", {
|
|
2333
2334
|
type: "button",
|
|
2334
|
-
onClick: r[3] ||= (e) =>
|
|
2335
|
-
"aria-label":
|
|
2336
|
-
"aria-pressed":
|
|
2337
|
-
class:
|
|
2338
|
-
},
|
|
2339
|
-
t.showRemember ? (
|
|
2335
|
+
onClick: r[3] ||= (e) => g.value = !g.value,
|
|
2336
|
+
"aria-label": g.value ? "Hide password" : "Show password",
|
|
2337
|
+
"aria-pressed": g.value,
|
|
2338
|
+
class: _(["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", M(u).mutedText])
|
|
2339
|
+
}, j(g.value ? "Hide" : "Show"), 11, fr)])]),
|
|
2340
|
+
t.showRemember ? (w(), s("label", {
|
|
2340
2341
|
key: 0,
|
|
2341
|
-
class:
|
|
2342
|
-
}, [
|
|
2342
|
+
class: _(["flex items-center gap-2 text-sm cursor-pointer select-none", M(u).bodyText])
|
|
2343
|
+
}, [F(c("input", {
|
|
2343
2344
|
"onUpdate:modelValue": r[4] ||= (e) => h.value = e,
|
|
2344
2345
|
type: "checkbox",
|
|
2345
2346
|
disabled: v.value,
|
|
2346
2347
|
class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
|
|
2347
|
-
}, null, 8,
|
|
2348
|
+
}, null, 8, pr), [[ne, h.value]]), r[5] ||= d(" Remember me ", -1)], 2)) : o("", !0),
|
|
2348
2349
|
c("button", {
|
|
2349
2350
|
type: "submit",
|
|
2350
2351
|
disabled: v.value,
|
|
2351
2352
|
"aria-busy": t.loading,
|
|
2352
2353
|
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"
|
|
2353
|
-
}, [t.loading ? (
|
|
2354
|
+
}, [t.loading ? (w(), s("svg", hr, [...r[6] ||= [c("circle", {
|
|
2354
2355
|
class: "opacity-25",
|
|
2355
2356
|
cx: "12",
|
|
2356
2357
|
cy: "12",
|
|
@@ -2361,18 +2362,18 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2361
2362
|
class: "opacity-75",
|
|
2362
2363
|
fill: "currentColor",
|
|
2363
2364
|
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2364
|
-
}, null, -1)]])) : o("", !0), d(" " +
|
|
2365
|
+
}, null, -1)]])) : o("", !0), d(" " + j(t.submitLabel), 1)], 8, mr)
|
|
2365
2366
|
], 32),
|
|
2366
|
-
n.$slots.footer ? (
|
|
2367
|
+
n.$slots.footer ? (w(), s("div", {
|
|
2367
2368
|
key: 3,
|
|
2368
|
-
class:
|
|
2369
|
-
}, [
|
|
2369
|
+
class: _(["mt-6 text-center text-sm", M(u).mutedText])
|
|
2370
|
+
}, [O(n.$slots, "footer")], 2)) : o("", !0)
|
|
2370
2371
|
], 2));
|
|
2371
2372
|
}
|
|
2372
|
-
}),
|
|
2373
|
+
}), _r = ["aria-label"], vr = { class: "flex-1 overflow-y-auto" }, yr = {
|
|
2373
2374
|
key: 0,
|
|
2374
2375
|
class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
|
|
2375
|
-
},
|
|
2376
|
+
}, br = ["onClick"], xr = { class: "min-w-0 flex-1" }, Sr = { class: "flex items-baseline justify-between gap-2" }, Cr = /* @__PURE__ */ p({
|
|
2376
2377
|
__name: "BaseNotificationPanel",
|
|
2377
2378
|
props: {
|
|
2378
2379
|
title: { default: "Notifications" },
|
|
@@ -2384,28 +2385,28 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2384
2385
|
},
|
|
2385
2386
|
emits: ["select"],
|
|
2386
2387
|
setup(n, { emit: l }) {
|
|
2387
|
-
let u = l, { isDark: p } =
|
|
2388
|
+
let u = l, { isDark: p } = B(), m = J(), { notifications: h, unreadCount: g, open: v, closePanel: y, markAllRead: b, markRead: x } = gn(), S = {
|
|
2388
2389
|
info: "bg-sky-500",
|
|
2389
2390
|
success: "bg-emerald-500",
|
|
2390
2391
|
warning: "bg-amber-500",
|
|
2391
2392
|
error: "bg-red-500"
|
|
2392
|
-
},
|
|
2393
|
+
}, C = i(() => h.value.length);
|
|
2393
2394
|
function T(e) {
|
|
2394
2395
|
x(e), u("select", e);
|
|
2395
2396
|
}
|
|
2396
|
-
return
|
|
2397
|
+
return Rt(() => {
|
|
2397
2398
|
v.value && y();
|
|
2398
|
-
}), (i, l) => (
|
|
2399
|
+
}), (i, l) => (w(), a(t, { to: "body" }, [f(r, {
|
|
2399
2400
|
"enter-active-class": "transition-opacity duration-200",
|
|
2400
2401
|
"enter-from-class": "opacity-0",
|
|
2401
2402
|
"leave-active-class": "transition-opacity duration-200",
|
|
2402
2403
|
"leave-to-class": "opacity-0"
|
|
2403
2404
|
}, {
|
|
2404
|
-
default:
|
|
2405
|
+
default: P(() => [M(v) ? (w(), s("div", {
|
|
2405
2406
|
key: 0,
|
|
2406
2407
|
class: "fixed inset-0 z-[60] bg-black/50",
|
|
2407
2408
|
"aria-hidden": "true",
|
|
2408
|
-
onClick: l[0] ||= (...e) =>
|
|
2409
|
+
onClick: l[0] ||= (...e) => M(y) && M(y)(...e)
|
|
2409
2410
|
})) : o("", !0)]),
|
|
2410
2411
|
_: 1
|
|
2411
2412
|
}), f(r, {
|
|
@@ -2414,55 +2415,55 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2414
2415
|
"leave-active-class": "transition-transform duration-300 ease-in",
|
|
2415
2416
|
"leave-to-class": "-translate-x-full"
|
|
2416
2417
|
}, {
|
|
2417
|
-
default:
|
|
2418
|
+
default: P(() => [M(v) ? (w(), s("aside", {
|
|
2418
2419
|
key: 0,
|
|
2419
2420
|
role: "dialog",
|
|
2420
2421
|
"aria-modal": "true",
|
|
2421
2422
|
"aria-label": n.title,
|
|
2422
|
-
class:
|
|
2423
|
+
class: _(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", M(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
|
|
2423
2424
|
}, [
|
|
2424
|
-
c("div", { class:
|
|
2425
|
+
c("div", { class: _(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", M(m).border]) }, [c("h2", { class: _(["text-lg font-semibold flex items-center gap-2", M(m).primaryText]) }, [d(j(n.title) + " ", 1), c("span", { class: _(["text-sm font-normal", M(m).dimTextAlt]) }, "— " + j(C.value), 3)], 2), c("button", {
|
|
2425
2426
|
type: "button",
|
|
2426
|
-
onClick: l[1] ||= (...e) =>
|
|
2427
|
+
onClick: l[1] ||= (...e) => M(y) && M(y)(...e),
|
|
2427
2428
|
"aria-label": "Close notifications",
|
|
2428
|
-
class:
|
|
2429
|
-
}, [f(
|
|
2429
|
+
class: _(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", M(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
|
|
2430
|
+
}, [f(M(De), {
|
|
2430
2431
|
class: "w-5 h-5",
|
|
2431
2432
|
"aria-hidden": "true"
|
|
2432
2433
|
})], 2)], 2),
|
|
2433
|
-
n.showMarkAllRead &&
|
|
2434
|
+
n.showMarkAllRead && M(g) > 0 ? (w(), s("div", {
|
|
2434
2435
|
key: 0,
|
|
2435
|
-
class:
|
|
2436
|
+
class: _(["px-5 py-2 border-b shrink-0 flex justify-end", M(m).border])
|
|
2436
2437
|
}, [c("button", {
|
|
2437
2438
|
type: "button",
|
|
2438
|
-
onClick: l[2] ||= (...e) =>
|
|
2439
|
-
class:
|
|
2439
|
+
onClick: l[2] ||= (...e) => M(b) && M(b)(...e),
|
|
2440
|
+
class: _(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", M(m).emeraldText])
|
|
2440
2441
|
}, " Mark all as read ", 2)], 2)) : o("", !0),
|
|
2441
|
-
c("div",
|
|
2442
|
-
class:
|
|
2442
|
+
c("div", vr, [C.value === 0 ? (w(), s("div", yr, [f(M(ue), {
|
|
2443
|
+
class: _(["w-10 h-10", M(m).illustration]),
|
|
2443
2444
|
"aria-hidden": "true"
|
|
2444
|
-
}, null, 8, ["class"]), c("p", { class:
|
|
2445
|
+
}, null, 8, ["class"]), c("p", { class: _(["text-sm", M(m).mutedText]) }, j(n.emptyText), 3)])) : (w(), s("ul", {
|
|
2445
2446
|
key: 1,
|
|
2446
|
-
class:
|
|
2447
|
-
}, [(
|
|
2447
|
+
class: _(["divide-y", M(p) ? "divide-gray-800" : "divide-gray-100"])
|
|
2448
|
+
}, [(w(!0), s(e, null, D(M(h), (e) => (w(), s("li", { key: e.id }, [c("button", {
|
|
2448
2449
|
type: "button",
|
|
2449
2450
|
onClick: (t) => T(e.id),
|
|
2450
|
-
class:
|
|
2451
|
+
class: _(["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 ? "" : M(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", M(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
|
|
2451
2452
|
}, [c("span", {
|
|
2452
|
-
class:
|
|
2453
|
+
class: _(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? M(p) ? "bg-gray-700" : "bg-gray-300" : S[e.type ?? "info"]]),
|
|
2453
2454
|
"aria-hidden": "true"
|
|
2454
|
-
}, null, 2), c("span",
|
|
2455
|
+
}, null, 2), c("span", xr, [c("span", Sr, [c("span", { class: _(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", M(m).primaryTextSoft]]) }, j(e.title), 3), e.time ? (w(), s("span", {
|
|
2455
2456
|
key: 0,
|
|
2456
|
-
class:
|
|
2457
|
-
},
|
|
2457
|
+
class: _(["text-xs shrink-0", M(m).dimText])
|
|
2458
|
+
}, j(e.time), 3)) : o("", !0)]), e.message ? (w(), s("span", {
|
|
2458
2459
|
key: 0,
|
|
2459
|
-
class:
|
|
2460
|
-
},
|
|
2461
|
-
], 10,
|
|
2460
|
+
class: _(["mt-0.5 block text-sm", M(m).mutedText])
|
|
2461
|
+
}, j(e.message), 3)) : o("", !0)])], 10, br)]))), 128))], 2))])
|
|
2462
|
+
], 10, _r)) : o("", !0)]),
|
|
2462
2463
|
_: 1
|
|
2463
2464
|
})]));
|
|
2464
2465
|
}
|
|
2465
|
-
}),
|
|
2466
|
+
}), wr = ["disabled"], Tr = /* @__PURE__ */ p({
|
|
2466
2467
|
__name: "BaseChipButton",
|
|
2467
2468
|
props: {
|
|
2468
2469
|
size: { default: "sm" },
|
|
@@ -2473,37 +2474,37 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2473
2474
|
},
|
|
2474
2475
|
emits: ["click"],
|
|
2475
2476
|
setup(e, { emit: t }) {
|
|
2476
|
-
let n = t, { isDark: r } =
|
|
2477
|
-
return (t, i) => (
|
|
2477
|
+
let n = t, { isDark: r } = B();
|
|
2478
|
+
return (t, i) => (w(), s("button", {
|
|
2478
2479
|
type: "button",
|
|
2479
2480
|
disabled: e.disabled,
|
|
2480
|
-
class:
|
|
2481
|
+
class: _(["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", M(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"]]),
|
|
2481
2482
|
onClick: i[0] ||= (e) => n("click")
|
|
2482
|
-
}, [
|
|
2483
|
+
}, [O(t.$slots, "default")], 10, wr));
|
|
2483
2484
|
}
|
|
2484
|
-
}),
|
|
2485
|
+
}), Er = /* @__PURE__ */ p({
|
|
2485
2486
|
__name: "BaseRemoveButton",
|
|
2486
2487
|
emits: ["click"],
|
|
2487
2488
|
setup(e, { emit: t }) {
|
|
2488
2489
|
let n = t;
|
|
2489
|
-
return (e, t) => (
|
|
2490
|
+
return (e, t) => (w(), s("button", {
|
|
2490
2491
|
type: "button",
|
|
2491
2492
|
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",
|
|
2492
2493
|
onClick: t[0] ||= (e) => n("click")
|
|
2493
2494
|
}, " × "));
|
|
2494
2495
|
}
|
|
2495
|
-
}),
|
|
2496
|
+
}), Dr = { class: "relative flex h-2 w-2" }, Or = {
|
|
2496
2497
|
key: 0,
|
|
2497
2498
|
class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
|
|
2498
2499
|
"aria-hidden": "true"
|
|
2499
|
-
},
|
|
2500
|
+
}, kr = /* @__PURE__ */ p({
|
|
2500
2501
|
__name: "BaseStatusPill",
|
|
2501
2502
|
props: {
|
|
2502
2503
|
status: {},
|
|
2503
2504
|
label: {}
|
|
2504
2505
|
},
|
|
2505
2506
|
setup(e) {
|
|
2506
|
-
let t = e, { isDark: n } =
|
|
2507
|
+
let t = e, { isDark: n } = B(), r = i(() => {
|
|
2507
2508
|
switch (t.status) {
|
|
2508
2509
|
case "ok": return n.value ? "bg-emerald-500/10 text-emerald-400" : "bg-emerald-50 text-emerald-700";
|
|
2509
2510
|
case "error": return n.value ? "bg-red-500/10 text-red-400" : "bg-red-50 text-red-700";
|
|
@@ -2516,13 +2517,13 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2516
2517
|
default: return "bg-gray-400";
|
|
2517
2518
|
}
|
|
2518
2519
|
});
|
|
2519
|
-
return (t, n) => (
|
|
2520
|
+
return (t, n) => (w(), s("div", { class: _(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [c("span", Dr, [e.status === "ok" ? (w(), s("span", Or)) : o("", !0), c("span", { class: _(["relative inline-flex rounded-full h-2 w-2", a.value]) }, null, 2)]), d(" " + j(e.label), 1)], 2));
|
|
2520
2521
|
}
|
|
2521
|
-
}),
|
|
2522
|
+
}), Ar = { class: "text-sm font-medium" }, jr = [
|
|
2522
2523
|
"accept",
|
|
2523
2524
|
"multiple",
|
|
2524
2525
|
"disabled"
|
|
2525
|
-
],
|
|
2526
|
+
], Mr = /* @__PURE__ */ p({
|
|
2526
2527
|
__name: "BaseFileDropzone",
|
|
2527
2528
|
props: {
|
|
2528
2529
|
label: {},
|
|
@@ -2539,7 +2540,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2539
2540
|
},
|
|
2540
2541
|
emits: ["files"],
|
|
2541
2542
|
setup(e, { emit: t }) {
|
|
2542
|
-
let n = e, r = t, { isDark: i } =
|
|
2543
|
+
let n = e, r = t, { isDark: i } = B(), a = E(!1);
|
|
2543
2544
|
function l(e) {
|
|
2544
2545
|
let t = e.target, n = Array.from(t.files ?? []);
|
|
2545
2546
|
t.value = "", n.length && r("files", n);
|
|
@@ -2552,13 +2553,13 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2552
2553
|
let t = Array.from(e.dataTransfer?.files ?? []);
|
|
2553
2554
|
t.length && r("files", n.multiple ? t : t.slice(0, 1));
|
|
2554
2555
|
}
|
|
2555
|
-
return (t, n) => (
|
|
2556
|
-
class:
|
|
2557
|
-
onDragover:
|
|
2558
|
-
onDragleave: n[0] ||=
|
|
2559
|
-
onDrop:
|
|
2556
|
+
return (t, n) => (w(), s("label", {
|
|
2557
|
+
class: _(["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 ? M(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : M(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"]]),
|
|
2558
|
+
onDragover: I(u, ["prevent"]),
|
|
2559
|
+
onDragleave: n[0] ||= I((e) => a.value = !1, ["prevent"]),
|
|
2560
|
+
onDrop: I(d, ["prevent"])
|
|
2560
2561
|
}, [
|
|
2561
|
-
|
|
2562
|
+
O(t.$slots, "icon", {}, () => [n[1] ||= c("svg", {
|
|
2562
2563
|
class: "w-10 h-10",
|
|
2563
2564
|
fill: "none",
|
|
2564
2565
|
viewBox: "0 0 24 24",
|
|
@@ -2570,11 +2571,11 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2570
2571
|
"stroke-linejoin": "round",
|
|
2571
2572
|
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"
|
|
2572
2573
|
})], -1)]),
|
|
2573
|
-
c("p",
|
|
2574
|
-
e.hint ? (
|
|
2574
|
+
c("p", Ar, j(e.label), 1),
|
|
2575
|
+
e.hint ? (w(), s("p", {
|
|
2575
2576
|
key: 0,
|
|
2576
|
-
class:
|
|
2577
|
-
},
|
|
2577
|
+
class: _(["text-xs", M(i) ? "text-gray-500" : "text-gray-400"])
|
|
2578
|
+
}, j(e.hint), 3)) : o("", !0),
|
|
2578
2579
|
c("input", {
|
|
2579
2580
|
type: "file",
|
|
2580
2581
|
class: "hidden",
|
|
@@ -2582,10 +2583,10 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2582
2583
|
multiple: e.multiple,
|
|
2583
2584
|
disabled: e.disabled,
|
|
2584
2585
|
onChange: l
|
|
2585
|
-
}, null, 40,
|
|
2586
|
+
}, null, 40, jr)
|
|
2586
2587
|
], 34));
|
|
2587
2588
|
}
|
|
2588
|
-
}),
|
|
2589
|
+
}), Nr = /* @__PURE__ */ p({
|
|
2589
2590
|
__name: "BaseCodeBlock",
|
|
2590
2591
|
props: {
|
|
2591
2592
|
code: {},
|
|
@@ -2594,7 +2595,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2594
2595
|
maxHeightClass: { default: "" }
|
|
2595
2596
|
},
|
|
2596
2597
|
setup(e) {
|
|
2597
|
-
let t = e, { isDark: n } =
|
|
2598
|
+
let t = e, { isDark: n } = B(), r = {
|
|
2598
2599
|
soft: {
|
|
2599
2600
|
dark: "bg-gray-800/70 text-gray-300",
|
|
2600
2601
|
light: "bg-gray-100 text-gray-700"
|
|
@@ -2610,13 +2611,13 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2610
2611
|
let e = r[t.variant];
|
|
2611
2612
|
return n.value ? e.dark : e.light;
|
|
2612
2613
|
}), c = i(() => a[t.size]);
|
|
2613
|
-
return (t, n) => (
|
|
2614
|
+
return (t, n) => (w(), s("pre", { class: _(["font-mono overflow-auto", [
|
|
2614
2615
|
c.value,
|
|
2615
2616
|
o.value,
|
|
2616
2617
|
e.maxHeightClass
|
|
2617
|
-
]]) },
|
|
2618
|
+
]]) }, j(e.code), 3));
|
|
2618
2619
|
}
|
|
2619
|
-
}),
|
|
2620
|
+
}), Pr = ["value", "type"], Q = /* @__PURE__ */ p({
|
|
2620
2621
|
__name: "BaseInput",
|
|
2621
2622
|
props: {
|
|
2622
2623
|
modelValue: { default: "" },
|
|
@@ -2633,14 +2634,14 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2633
2634
|
function r(e) {
|
|
2634
2635
|
n("update:modelValue", e.target.value);
|
|
2635
2636
|
}
|
|
2636
|
-
return (t, n) => (
|
|
2637
|
+
return (t, n) => (w(), s("input", {
|
|
2637
2638
|
value: e.modelValue,
|
|
2638
2639
|
type: e.type,
|
|
2639
|
-
class:
|
|
2640
|
+
class: _(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "sm" ? "px-2 py-1.5" : "px-3 py-2"]]),
|
|
2640
2641
|
onInput: r
|
|
2641
|
-
}, null, 42,
|
|
2642
|
+
}, null, 42, Pr));
|
|
2642
2643
|
}
|
|
2643
|
-
}),
|
|
2644
|
+
}), Fr = ["value"], Ir = /* @__PURE__ */ p({
|
|
2644
2645
|
__name: "BaseSelect",
|
|
2645
2646
|
props: {
|
|
2646
2647
|
modelValue: { default: void 0 },
|
|
@@ -2656,17 +2657,17 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2656
2657
|
function r(e) {
|
|
2657
2658
|
n("update:modelValue", e.target.value);
|
|
2658
2659
|
}
|
|
2659
|
-
return (t, n) => (
|
|
2660
|
+
return (t, n) => (w(), s("select", {
|
|
2660
2661
|
value: e.modelValue,
|
|
2661
|
-
class:
|
|
2662
|
+
class: _(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "md" ? "px-3 py-2" : "px-2 py-1.5"]]),
|
|
2662
2663
|
onChange: r
|
|
2663
|
-
}, [
|
|
2664
|
+
}, [O(t.$slots, "default")], 42, Fr));
|
|
2664
2665
|
}
|
|
2665
|
-
}),
|
|
2666
|
+
}), Lr = [
|
|
2666
2667
|
"disabled",
|
|
2667
2668
|
"aria-label",
|
|
2668
2669
|
"aria-expanded"
|
|
2669
|
-
],
|
|
2670
|
+
], Rr = ["aria-label"], zr = ["aria-selected", "title"], Br = ["disabled", "onClick"], Vr = /* @__PURE__ */ p({
|
|
2670
2671
|
__name: "BaseDropdown",
|
|
2671
2672
|
props: {
|
|
2672
2673
|
options: {},
|
|
@@ -2687,7 +2688,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2687
2688
|
},
|
|
2688
2689
|
emits: ["update:modelValue"],
|
|
2689
2690
|
setup(t, { emit: n }) {
|
|
2690
|
-
let r = t, a = n, l =
|
|
2691
|
+
let r = t, a = n, l = E(!1), u = E(null), d = i(() => r.options.find((e) => e.value === r.modelValue) ?? null), p = i(() => {
|
|
2691
2692
|
let e = "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed ";
|
|
2692
2693
|
if (r.triggerClass) return e + r.triggerClass;
|
|
2693
2694
|
let t = r.size === "sm" ? "px-3 py-2" : "px-4 py-2.5";
|
|
@@ -2699,36 +2700,36 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2699
2700
|
function h() {
|
|
2700
2701
|
r.disabled || (l.value = !l.value);
|
|
2701
2702
|
}
|
|
2702
|
-
function
|
|
2703
|
+
function g(e) {
|
|
2703
2704
|
e.disabled || (a("update:modelValue", e.value), l.value = !1);
|
|
2704
2705
|
}
|
|
2705
|
-
|
|
2706
|
+
Rt(() => {
|
|
2706
2707
|
l.value = !1;
|
|
2707
2708
|
});
|
|
2708
|
-
function
|
|
2709
|
+
function v(e) {
|
|
2709
2710
|
l.value && u.value && !u.value.contains(e.target) && (l.value = !1);
|
|
2710
2711
|
}
|
|
2711
|
-
return
|
|
2712
|
+
return x(() => document.addEventListener("click", v)), b(() => document.removeEventListener("click", v)), (n, r) => (w(), s("div", {
|
|
2712
2713
|
ref_key: "rootEl",
|
|
2713
2714
|
ref: u,
|
|
2714
|
-
class:
|
|
2715
|
+
class: _(t.block ? "relative w-full" : "relative inline-block")
|
|
2715
2716
|
}, [c("button", {
|
|
2716
2717
|
type: "button",
|
|
2717
|
-
class:
|
|
2718
|
+
class: _([p.value, t.block ? "w-full" : ""]),
|
|
2718
2719
|
disabled: t.disabled,
|
|
2719
2720
|
"aria-label": t.ariaLabel || void 0,
|
|
2720
2721
|
"aria-haspopup": "listbox",
|
|
2721
2722
|
"aria-expanded": l.value,
|
|
2722
2723
|
onClick: h
|
|
2723
|
-
}, [c("span", { class:
|
|
2724
|
-
class:
|
|
2724
|
+
}, [c("span", { class: _(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, j(d.value ? d.value.label : t.placeholder), 3), f(M(me), {
|
|
2725
|
+
class: _(["shrink-0 transition-transform", [t.chevronClass, l.value ? "rotate-180" : ""]]),
|
|
2725
2726
|
"aria-hidden": "true"
|
|
2726
|
-
}, null, 8, ["class"])], 10,
|
|
2727
|
+
}, null, 8, ["class"])], 10, Lr), l.value ? (w(), s("ul", {
|
|
2727
2728
|
key: 0,
|
|
2728
2729
|
role: "listbox",
|
|
2729
2730
|
"aria-label": t.ariaLabel || t.placeholder,
|
|
2730
2731
|
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"
|
|
2731
|
-
}, [(
|
|
2732
|
+
}, [(w(!0), s(e, null, D(t.options, (e) => (w(), s("li", {
|
|
2732
2733
|
key: String(e.value),
|
|
2733
2734
|
role: "option",
|
|
2734
2735
|
"aria-selected": e.value === t.modelValue,
|
|
@@ -2736,15 +2737,15 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2736
2737
|
}, [c("button", {
|
|
2737
2738
|
type: "button",
|
|
2738
2739
|
disabled: e.disabled,
|
|
2739
|
-
class:
|
|
2740
|
-
onClick: (t) =>
|
|
2741
|
-
},
|
|
2740
|
+
class: _(m(e)),
|
|
2741
|
+
onClick: (t) => g(e)
|
|
2742
|
+
}, j(e.label), 11, Br)], 8, zr))), 128))], 8, Rr)) : o("", !0)], 2));
|
|
2742
2743
|
}
|
|
2743
|
-
}),
|
|
2744
|
+
}), Hr = ["role", "aria-label"], Ur = [
|
|
2744
2745
|
"aria-pressed",
|
|
2745
2746
|
"title",
|
|
2746
2747
|
"onClick"
|
|
2747
|
-
],
|
|
2748
|
+
], Wr = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Gr = /* @__PURE__ */ p({
|
|
2748
2749
|
__name: "BaseSegmentedControl",
|
|
2749
2750
|
props: {
|
|
2750
2751
|
options: {},
|
|
@@ -2761,22 +2762,22 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2761
2762
|
let r = t, a = n, o = i(() => r.variant === "toolbar" ? "inline-flex h-9 divide-x divide-slate-300 dark:divide-slate-600 rounded-md border border-slate-300 dark:border-slate-600 overflow-hidden" : "inline-flex rounded border border-slate-300 dark:border-slate-600 overflow-hidden"), c = i(() => r.variant === "toolbar" ? "flex items-center px-3.5 text-xs font-semibold uppercase tracking-wide transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500" : `${r.variant === "wide" ? "px-4 py-2" : "px-3 py-2"} text-sm font-medium transition-colors cursor-pointer border-l first:border-l-0 border-slate-300 dark:border-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500`), l = i(() => r.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
|
|
2762
2763
|
function u(e) {
|
|
2763
2764
|
let t = e.value === r.modelValue;
|
|
2764
|
-
return r.optionClass ? r.optionClass(e, t) : t ? l.value :
|
|
2765
|
+
return r.optionClass ? r.optionClass(e, t) : t ? l.value : Wr;
|
|
2765
2766
|
}
|
|
2766
|
-
return (n, r) => (
|
|
2767
|
+
return (n, r) => (w(), s("div", {
|
|
2767
2768
|
role: t.ariaLabel ? "group" : void 0,
|
|
2768
2769
|
"aria-label": t.ariaLabel || void 0,
|
|
2769
|
-
class:
|
|
2770
|
-
}, [(
|
|
2770
|
+
class: _(o.value)
|
|
2771
|
+
}, [(w(!0), s(e, null, D(t.options, (e) => (w(), s("button", {
|
|
2771
2772
|
key: String(e.value),
|
|
2772
2773
|
type: "button",
|
|
2773
|
-
class:
|
|
2774
|
+
class: _([c.value, u(e)]),
|
|
2774
2775
|
"aria-pressed": e.value === t.modelValue,
|
|
2775
2776
|
title: e.title,
|
|
2776
2777
|
onClick: (t) => a("update:modelValue", e.value)
|
|
2777
|
-
},
|
|
2778
|
+
}, j(e.label), 11, Ur))), 128))], 10, Hr));
|
|
2778
2779
|
}
|
|
2779
|
-
}),
|
|
2780
|
+
}), Kr = { class: "w-full text-sm" }, qr = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Jr = { class: "text-left" }, Yr = { key: 0 }, Xr = ["colspan"], Zr = /* @__PURE__ */ p({
|
|
2780
2781
|
__name: "BaseTable",
|
|
2781
2782
|
props: {
|
|
2782
2783
|
columns: {},
|
|
@@ -2787,24 +2788,24 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2787
2788
|
emptyText: { default: "No rows." }
|
|
2788
2789
|
},
|
|
2789
2790
|
setup(t) {
|
|
2790
|
-
return (n, r) => (
|
|
2791
|
+
return (n, r) => (w(), s("table", Kr, [c("thead", qr, [c("tr", Jr, [(w(!0), s(e, null, D(t.columns, (e, t) => (w(), s("th", {
|
|
2791
2792
|
key: t,
|
|
2792
|
-
class:
|
|
2793
|
-
},
|
|
2793
|
+
class: _(["px-4 py-3", e.align === "right" ? "text-right" : ""])
|
|
2794
|
+
}, j(e.label), 3))), 128))])]), c("tbody", null, [t.empty ? (w(), s("tr", Yr, [c("td", {
|
|
2794
2795
|
colspan: t.columns.length,
|
|
2795
2796
|
class: "px-4 py-12 text-center text-slate-500"
|
|
2796
|
-
}, [
|
|
2797
|
+
}, [O(n.$slots, "empty", {}, () => [d(j(t.emptyText), 1)])], 8, Xr)])) : o("", !0), O(n.$slots, "default")])]));
|
|
2797
2798
|
}
|
|
2798
|
-
}),
|
|
2799
|
+
}), Qr = { class: "grid gap-3 md:grid-cols-2" }, $r = {
|
|
2799
2800
|
key: 0,
|
|
2800
2801
|
class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
|
|
2801
|
-
},
|
|
2802
|
+
}, ei = ["value"], ti = {
|
|
2802
2803
|
key: 2,
|
|
2803
2804
|
class: "flex items-center gap-2 mt-4"
|
|
2804
|
-
},
|
|
2805
|
+
}, ni = ["checked", "onChange"], ri = { class: "text-sm text-slate-900 dark:text-slate-100" }, ii = {
|
|
2805
2806
|
key: 4,
|
|
2806
2807
|
class: "text-[11px] text-slate-400 mt-1"
|
|
2807
|
-
},
|
|
2808
|
+
}, ai = /* @__PURE__ */ p({
|
|
2808
2809
|
__name: "BaseSpecFields",
|
|
2809
2810
|
props: {
|
|
2810
2811
|
specs: {},
|
|
@@ -2831,24 +2832,24 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2831
2832
|
let t = e.clipboardData?.getData("text") ?? "";
|
|
2832
2833
|
/^-?\d*$/.test(t.trim()) || e.preventDefault();
|
|
2833
2834
|
}
|
|
2834
|
-
return (n, f) => (
|
|
2835
|
-
f.type === "boolean" ? o("", !0) : (
|
|
2836
|
-
f.type === "select" ? (
|
|
2835
|
+
return (n, f) => (w(), s("div", Qr, [(w(!0), s(e, null, D(t.specs, (f) => (w(), s("div", { key: f.key }, [
|
|
2836
|
+
f.type === "boolean" ? o("", !0) : (w(), s("label", $r, j(f.label), 1)),
|
|
2837
|
+
f.type === "select" ? (w(), a(Ir, {
|
|
2837
2838
|
key: 1,
|
|
2838
2839
|
modelValue: String(t.params[f.key] ?? ""),
|
|
2839
2840
|
"onUpdate:modelValue": (e) => r("update", f.key, e)
|
|
2840
2841
|
}, {
|
|
2841
|
-
default:
|
|
2842
|
+
default: P(() => [(w(!0), s(e, null, D(f.options ?? [], (e) => (w(), s("option", {
|
|
2842
2843
|
key: e,
|
|
2843
2844
|
value: e
|
|
2844
|
-
},
|
|
2845
|
+
}, j(e), 9, ei))), 128))]),
|
|
2845
2846
|
_: 2
|
|
2846
|
-
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (
|
|
2847
|
+
}, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (w(), s("label", ti, [c("input", {
|
|
2847
2848
|
checked: !!t.params[f.key],
|
|
2848
2849
|
type: "checkbox",
|
|
2849
2850
|
class: "h-4 w-4",
|
|
2850
2851
|
onChange: (e) => i(f.key, e)
|
|
2851
|
-
}, null, 40,
|
|
2852
|
+
}, null, 40, ni), c("span", ri, j(f.label), 1)])) : (w(), a(Q, {
|
|
2852
2853
|
key: 3,
|
|
2853
2854
|
modelValue: t.params[f.key],
|
|
2854
2855
|
type: "number",
|
|
@@ -2867,11 +2868,11 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2867
2868
|
"onPaste",
|
|
2868
2869
|
"onUpdate:modelValue"
|
|
2869
2870
|
])),
|
|
2870
|
-
f.help ? (
|
|
2871
|
-
|
|
2871
|
+
f.help ? (w(), s("p", ii, j(f.help), 1)) : o("", !0),
|
|
2872
|
+
O(n.$slots, "after", { spec: f })
|
|
2872
2873
|
]))), 128))]));
|
|
2873
2874
|
}
|
|
2874
|
-
}),
|
|
2875
|
+
}), oi = { class: "mt-1.5 space-y-0.5 px-1" }, si = { class: "text-slate-400 dark:text-slate-500" }, ci = /* @__PURE__ */ p({
|
|
2875
2876
|
__name: "BaseStatBreakdown",
|
|
2876
2877
|
props: {
|
|
2877
2878
|
items: {},
|
|
@@ -2890,16 +2891,16 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2890
2891
|
function i(e) {
|
|
2891
2892
|
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";
|
|
2892
2893
|
}
|
|
2893
|
-
return (n, a) => (
|
|
2894
|
+
return (n, a) => (w(), s("div", oi, [(w(!0), s(e, null, D(t.items, (e) => (w(), s("div", {
|
|
2894
2895
|
key: e.label,
|
|
2895
2896
|
class: "flex items-center justify-between text-[11px]"
|
|
2896
|
-
}, [c("span",
|
|
2897
|
+
}, [c("span", si, j(e.label), 1), c("span", { class: _(["font-mono tabular-nums font-medium", i(e.value)]) }, j(r(e.value)), 3)]))), 128))]));
|
|
2897
2898
|
}
|
|
2898
|
-
}),
|
|
2899
|
+
}), li = [
|
|
2899
2900
|
"disabled",
|
|
2900
2901
|
"title",
|
|
2901
2902
|
"aria-pressed"
|
|
2902
|
-
],
|
|
2903
|
+
], ui = /* @__PURE__ */ p({
|
|
2903
2904
|
__name: "BaseFilterChip",
|
|
2904
2905
|
props: {
|
|
2905
2906
|
label: { default: "" },
|
|
@@ -2928,21 +2929,21 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2928
2929
|
red: "border-red-500 bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-500",
|
|
2929
2930
|
slate: "border-slate-600 bg-slate-600 text-white hover:bg-slate-700 focus-visible:ring-emerald-500"
|
|
2930
2931
|
};
|
|
2931
|
-
return (r, i) => (
|
|
2932
|
+
return (r, i) => (w(), s("button", {
|
|
2932
2933
|
type: "button",
|
|
2933
2934
|
disabled: e.disabled,
|
|
2934
2935
|
title: e.title,
|
|
2935
2936
|
"aria-pressed": e.active,
|
|
2936
|
-
class:
|
|
2937
|
-
}, [
|
|
2937
|
+
class: _(["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]])
|
|
2938
|
+
}, [O(r.$slots, "default", {}, () => [d(j(e.label), 1)])], 10, li));
|
|
2938
2939
|
}
|
|
2939
|
-
}),
|
|
2940
|
+
}), di = { class: "flex items-center justify-between mb-4" }, fi = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, pi = {
|
|
2940
2941
|
key: 0,
|
|
2941
2942
|
class: "text-xs text-slate-500 dark:text-slate-400"
|
|
2942
|
-
},
|
|
2943
|
+
}, mi = {
|
|
2943
2944
|
key: 0,
|
|
2944
2945
|
class: "inline-flex items-center gap-2 text-xs text-slate-500"
|
|
2945
|
-
},
|
|
2946
|
+
}, hi = { class: "grid gap-4 md:grid-cols-2" }, gi = { class: "md:col-span-2" }, _i = ["for"], vi = { class: "md:col-span-2" }, yi = ["for"], bi = { class: "text-[11px] text-slate-500 mt-1" }, xi = { class: "md:col-span-2" }, Si = ["for"], Ci = { class: "md:col-span-2" }, wi = ["for"], Ti = { class: "md:col-span-2" }, Ei = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", Di = /* @__PURE__ */ p({
|
|
2946
2947
|
__name: "BaseCredentialsForm",
|
|
2947
2948
|
props: {
|
|
2948
2949
|
title: {},
|
|
@@ -2968,7 +2969,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2968
2969
|
"load-error"
|
|
2969
2970
|
],
|
|
2970
2971
|
setup(t, { expose: n, emit: r }) {
|
|
2971
|
-
let i = t, l = r, u =
|
|
2972
|
+
let i = t, l = r, u = E(!1), p = E(!1), m = T({
|
|
2972
2973
|
keyId: "",
|
|
2973
2974
|
secretKey: "",
|
|
2974
2975
|
baseUrl: i.defaults.baseUrl,
|
|
@@ -2982,20 +2983,20 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
2982
2983
|
l("load-error", e instanceof Error ? e.message : "");
|
|
2983
2984
|
}
|
|
2984
2985
|
}
|
|
2985
|
-
function
|
|
2986
|
+
function g(e) {
|
|
2986
2987
|
return !e || !e.trim();
|
|
2987
2988
|
}
|
|
2988
2989
|
async function v() {
|
|
2989
2990
|
if (!u.value) {
|
|
2990
|
-
if (
|
|
2991
|
+
if (g(m.keyId)) {
|
|
2991
2992
|
l("error", i.requiredKeyMessage);
|
|
2992
2993
|
return;
|
|
2993
2994
|
}
|
|
2994
|
-
if (!p.value &&
|
|
2995
|
+
if (!p.value && g(m.secretKey)) {
|
|
2995
2996
|
l("error", i.requiredSecretMessage);
|
|
2996
2997
|
return;
|
|
2997
2998
|
}
|
|
2998
|
-
if (
|
|
2999
|
+
if (g(m.baseUrl) || g(m.dataUrl)) {
|
|
2999
3000
|
l("error", "Base URL and Data URL are required.");
|
|
3000
3001
|
return;
|
|
3001
3002
|
}
|
|
@@ -3003,7 +3004,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3003
3004
|
try {
|
|
3004
3005
|
let e = await i.updateFn({
|
|
3005
3006
|
keyId: m.keyId.trim(),
|
|
3006
|
-
secretKey:
|
|
3007
|
+
secretKey: g(m.secretKey) ? void 0 : m.secretKey.trim(),
|
|
3007
3008
|
baseUrl: m.baseUrl.trim(),
|
|
3008
3009
|
dataUrl: m.dataUrl.trim()
|
|
3009
3010
|
});
|
|
@@ -3015,31 +3016,31 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3015
3016
|
}
|
|
3016
3017
|
}
|
|
3017
3018
|
}
|
|
3018
|
-
return
|
|
3019
|
-
default:
|
|
3020
|
-
c("div",
|
|
3021
|
-
c("div",
|
|
3022
|
-
c("div",
|
|
3019
|
+
return x(h), n({ load: h }), (n, r) => (w(), a(pt, { class: "!p-6" }, {
|
|
3020
|
+
default: P(() => [
|
|
3021
|
+
c("div", di, [c("div", null, [c("h2", fi, j(t.title), 1), t.subtitle ? (w(), s("p", pi, j(t.subtitle), 1)) : o("", !0)]), u.value ? (w(), s("span", mi, [f(mt, { class: "!h-4 !w-4" }), r[4] ||= d(" Saving… ", -1)])) : o("", !0)]),
|
|
3022
|
+
c("div", hi, [
|
|
3023
|
+
c("div", gi, [c("label", {
|
|
3023
3024
|
for: `${t.idPrefix}-key-id`,
|
|
3024
3025
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3025
|
-
},
|
|
3026
|
+
}, j(t.keyLabel), 9, _i), f(Q, {
|
|
3026
3027
|
id: `${t.idPrefix}-key-id`,
|
|
3027
3028
|
modelValue: m.keyId,
|
|
3028
3029
|
"onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
|
|
3029
3030
|
type: "text",
|
|
3030
3031
|
autocomplete: "off",
|
|
3031
3032
|
placeholder: t.keyPlaceholder,
|
|
3032
|
-
class:
|
|
3033
|
+
class: _(Ei)
|
|
3033
3034
|
}, null, 8, [
|
|
3034
3035
|
"id",
|
|
3035
3036
|
"modelValue",
|
|
3036
3037
|
"placeholder"
|
|
3037
3038
|
])]),
|
|
3038
|
-
c("div",
|
|
3039
|
+
c("div", vi, [
|
|
3039
3040
|
c("label", {
|
|
3040
3041
|
for: `${t.idPrefix}-secret`,
|
|
3041
3042
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3042
|
-
},
|
|
3043
|
+
}, j(t.secretLabel), 9, yi),
|
|
3043
3044
|
f(Q, {
|
|
3044
3045
|
id: `${t.idPrefix}-secret`,
|
|
3045
3046
|
modelValue: m.secretKey,
|
|
@@ -3047,40 +3048,40 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3047
3048
|
type: "password",
|
|
3048
3049
|
autocomplete: "new-password",
|
|
3049
3050
|
placeholder: p.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
|
|
3050
|
-
class:
|
|
3051
|
+
class: _(Ei)
|
|
3051
3052
|
}, null, 8, [
|
|
3052
3053
|
"id",
|
|
3053
3054
|
"modelValue",
|
|
3054
3055
|
"placeholder"
|
|
3055
3056
|
]),
|
|
3056
|
-
c("p",
|
|
3057
|
+
c("p", bi, [p.value ? (w(), s(e, { key: 0 }, [d(j(t.secretSetHint), 1)], 64)) : O(n.$slots, "no-secret-hint", {}, () => [d(j(t.permissionsHint), 1)], void 0, 1)])
|
|
3057
3058
|
]),
|
|
3058
|
-
c("div",
|
|
3059
|
+
c("div", xi, [
|
|
3059
3060
|
c("label", {
|
|
3060
3061
|
for: `${t.idPrefix}-base-url`,
|
|
3061
3062
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3062
|
-
}, "Base URL (trading)", 8,
|
|
3063
|
+
}, "Base URL (trading)", 8, Si),
|
|
3063
3064
|
f(Q, {
|
|
3064
3065
|
id: `${t.idPrefix}-base-url`,
|
|
3065
3066
|
modelValue: m.baseUrl,
|
|
3066
3067
|
"onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
|
|
3067
3068
|
type: "text",
|
|
3068
|
-
class:
|
|
3069
|
+
class: _(Ei)
|
|
3069
3070
|
}, null, 8, ["id", "modelValue"]),
|
|
3070
|
-
|
|
3071
|
+
O(n.$slots, "base-url-extra", { form: m })
|
|
3071
3072
|
]),
|
|
3072
|
-
c("div",
|
|
3073
|
+
c("div", Ci, [c("label", {
|
|
3073
3074
|
for: `${t.idPrefix}-data-url`,
|
|
3074
3075
|
class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
|
|
3075
|
-
}, "Data URL (market data)", 8,
|
|
3076
|
+
}, "Data URL (market data)", 8, wi), f(Q, {
|
|
3076
3077
|
id: `${t.idPrefix}-data-url`,
|
|
3077
3078
|
modelValue: m.dataUrl,
|
|
3078
3079
|
"onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
|
|
3079
3080
|
type: "text",
|
|
3080
|
-
class:
|
|
3081
|
+
class: _(Ei)
|
|
3081
3082
|
}, null, 8, ["id", "modelValue"])]),
|
|
3082
|
-
c("div",
|
|
3083
|
-
color:
|
|
3083
|
+
c("div", Ti, [f(W, {
|
|
3084
|
+
color: M(H).GREEN,
|
|
3084
3085
|
description: t.saveLabel,
|
|
3085
3086
|
isDisable: u.value,
|
|
3086
3087
|
isLoading: u.value,
|
|
@@ -3092,21 +3093,21 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3092
3093
|
"isLoading"
|
|
3093
3094
|
])])
|
|
3094
3095
|
]),
|
|
3095
|
-
|
|
3096
|
+
O(n.$slots, "footer")
|
|
3096
3097
|
]),
|
|
3097
3098
|
_: 3
|
|
3098
3099
|
}));
|
|
3099
3100
|
}
|
|
3100
|
-
}),
|
|
3101
|
+
}), Oi = {
|
|
3101
3102
|
key: 0,
|
|
3102
3103
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3103
|
-
},
|
|
3104
|
+
}, ki = { class: "mb-3 flex flex-wrap items-center gap-2" }, Ai = { class: "relative min-w-[200px] flex-1" }, ji = ["placeholder"], Mi = {
|
|
3104
3105
|
key: 0,
|
|
3105
3106
|
class: "text-sm text-slate-500 dark:text-slate-400"
|
|
3106
|
-
},
|
|
3107
|
+
}, Ni = {
|
|
3107
3108
|
key: 1,
|
|
3108
3109
|
class: "flex flex-wrap gap-2"
|
|
3109
|
-
},
|
|
3110
|
+
}, Pi = ["title", "onClick"], Fi = "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", Ii = "\0all", Li = /* @__PURE__ */ p({
|
|
3110
3111
|
__name: "BasePillPickerModal",
|
|
3111
3112
|
props: {
|
|
3112
3113
|
title: {},
|
|
@@ -3128,11 +3129,11 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3128
3129
|
},
|
|
3129
3130
|
emits: ["pick", "close"],
|
|
3130
3131
|
setup(t, { emit: n }) {
|
|
3131
|
-
let r = t, l = n, u = i(() => r.icon ??
|
|
3132
|
-
value:
|
|
3132
|
+
let r = t, l = n, u = i(() => r.icon ?? Ce), d = E(""), p = E(Ii), m = i(() => r.groups && r.groups.length > 0 ? [{
|
|
3133
|
+
value: Ii,
|
|
3133
3134
|
label: r.allLabel
|
|
3134
|
-
}, ...r.groups] : []), h = i(() => r.items.filter((e) => (p.value ===
|
|
3135
|
-
return (n, r) => (
|
|
3135
|
+
}, ...r.groups] : []), h = i(() => r.items.filter((e) => (p.value === Ii || e.group === p.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
|
|
3136
|
+
return (n, r) => (w(), a(qt, {
|
|
3136
3137
|
title: t.title,
|
|
3137
3138
|
icon: u.value,
|
|
3138
3139
|
subtitle: t.subtitle,
|
|
@@ -3140,32 +3141,32 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3140
3141
|
"max-width-class": t.maxWidthClass,
|
|
3141
3142
|
onCancel: r[4] ||= (e) => l("close")
|
|
3142
3143
|
}, {
|
|
3143
|
-
footer:
|
|
3144
|
+
footer: P(() => [f(Yn, {
|
|
3144
3145
|
variant: "ghost",
|
|
3145
3146
|
label: t.closeText,
|
|
3146
3147
|
onClick: r[3] ||= (e) => l("close")
|
|
3147
3148
|
}, null, 8, ["label"])]),
|
|
3148
|
-
default:
|
|
3149
|
-
f(
|
|
3150
|
-
|
|
3149
|
+
default: P(() => [t.items.length === 0 ? (w(), s("p", Oi, j(t.emptyMessage), 1)) : (w(), s(e, { key: 1 }, [c("div", ki, [c("div", Ai, [
|
|
3150
|
+
f(M(Ce), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
|
|
3151
|
+
F(c("input", {
|
|
3151
3152
|
"onUpdate:modelValue": r[0] ||= (e) => d.value = e,
|
|
3152
3153
|
type: "text",
|
|
3153
3154
|
placeholder: t.searchPlaceholder,
|
|
3154
3155
|
autocomplete: "off",
|
|
3155
|
-
class:
|
|
3156
|
-
|
|
3156
|
+
class: _([
|
|
3157
|
+
Fi,
|
|
3157
3158
|
"w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
|
|
3158
3159
|
t.mono ? "font-mono" : ""
|
|
3159
3160
|
])
|
|
3160
|
-
}, null, 10,
|
|
3161
|
-
d.value ? (
|
|
3161
|
+
}, null, 10, ji), [[ie, d.value]]),
|
|
3162
|
+
d.value ? (w(), s("button", {
|
|
3162
3163
|
key: 0,
|
|
3163
3164
|
type: "button",
|
|
3164
3165
|
"aria-label": "Clear the filter",
|
|
3165
3166
|
class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
|
|
3166
3167
|
onClick: r[1] ||= (e) => d.value = ""
|
|
3167
3168
|
}, " ✕ ")) : o("", !0)
|
|
3168
|
-
]), m.value.length > 0 ? (
|
|
3169
|
+
]), m.value.length > 0 ? (w(), a(Gr, {
|
|
3169
3170
|
key: 0,
|
|
3170
3171
|
modelValue: p.value,
|
|
3171
3172
|
"onUpdate:modelValue": r[2] ||= (e) => p.value = e,
|
|
@@ -3175,13 +3176,13 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3175
3176
|
"modelValue",
|
|
3176
3177
|
"options",
|
|
3177
3178
|
"aria-label"
|
|
3178
|
-
])) : o("", !0)]), h.value.length === 0 ? (
|
|
3179
|
+
])) : o("", !0)]), h.value.length === 0 ? (w(), s("p", Mi, j(t.noMatchMessage), 1)) : (w(), s("div", Ni, [(w(!0), s(e, null, D(h.value, (e) => (w(), s("button", {
|
|
3179
3180
|
key: e.id,
|
|
3180
3181
|
type: "button",
|
|
3181
3182
|
title: e.title,
|
|
3182
|
-
class:
|
|
3183
|
+
class: _(["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" : ""]),
|
|
3183
3184
|
onClick: (t) => l("pick", e)
|
|
3184
|
-
},
|
|
3185
|
+
}, j(e.label), 11, Pi))), 128))]))], 64))]),
|
|
3185
3186
|
_: 1
|
|
3186
3187
|
}, 8, [
|
|
3187
3188
|
"title",
|
|
@@ -3190,7 +3191,7 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3190
3191
|
"max-width-class"
|
|
3191
3192
|
]));
|
|
3192
3193
|
}
|
|
3193
|
-
}),
|
|
3194
|
+
}), Ri = ["aria-label"], zi = ["title"], Bi = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, Vi = ["title"], Hi = /* @__PURE__ */ p({
|
|
3194
3195
|
__name: "BaseBarDistribution",
|
|
3195
3196
|
props: {
|
|
3196
3197
|
bars: {},
|
|
@@ -3202,43 +3203,96 @@ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }
|
|
|
3202
3203
|
},
|
|
3203
3204
|
setup(t) {
|
|
3204
3205
|
let n = t, r = i(() => Math.max(1, ...n.bars.map((e) => e.count))), a = (e) => Math.max(3, Math.round(e.count / r.value * n.maxBarHeight)), o = (e) => `${n.titlePrefix ? `${n.titlePrefix} ` : ""}${e.label}: ${e.count} ${n.countNoun}${e.count === 1 ? "" : "s"}`;
|
|
3205
|
-
return (n, r) => (
|
|
3206
|
+
return (n, r) => (w(), s("div", {
|
|
3206
3207
|
class: "flex items-end gap-1.5 overflow-x-auto pb-1",
|
|
3207
3208
|
role: "img",
|
|
3208
3209
|
"aria-label": t.ariaLabel
|
|
3209
|
-
}, [(
|
|
3210
|
+
}, [(w(!0), s(e, null, D(t.bars, (e) => (w(), s("div", {
|
|
3210
3211
|
key: e.label,
|
|
3211
3212
|
class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
|
|
3212
3213
|
title: o(e)
|
|
3213
3214
|
}, [
|
|
3214
|
-
c("span",
|
|
3215
|
+
c("span", Bi, j(e.count), 1),
|
|
3215
3216
|
c("div", {
|
|
3216
|
-
class:
|
|
3217
|
-
style:
|
|
3217
|
+
class: _(["w-full max-w-8 rounded-t", t.barClass]),
|
|
3218
|
+
style: y({ height: `${a(e)}px` })
|
|
3218
3219
|
}, null, 6),
|
|
3219
3220
|
c("span", {
|
|
3220
3221
|
class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
|
|
3221
3222
|
title: e.label
|
|
3222
|
-
},
|
|
3223
|
-
], 8,
|
|
3223
|
+
}, j(e.label), 9, Vi)
|
|
3224
|
+
], 8, zi))), 128))], 8, Ri));
|
|
3225
|
+
}
|
|
3226
|
+
}), Ui = /* @__PURE__ */ p({
|
|
3227
|
+
__name: "BaseDateTimePicker",
|
|
3228
|
+
props: {
|
|
3229
|
+
modelValue: { default: null },
|
|
3230
|
+
mode: { default: "datetime" },
|
|
3231
|
+
format: { default: void 0 },
|
|
3232
|
+
is24: {
|
|
3233
|
+
type: Boolean,
|
|
3234
|
+
default: !0
|
|
3235
|
+
},
|
|
3236
|
+
autoApply: {
|
|
3237
|
+
type: Boolean,
|
|
3238
|
+
default: !1
|
|
3239
|
+
},
|
|
3240
|
+
teleport: {
|
|
3241
|
+
type: [Boolean, String],
|
|
3242
|
+
default: !0
|
|
3243
|
+
},
|
|
3244
|
+
timeConfig: { default: void 0 }
|
|
3245
|
+
},
|
|
3246
|
+
emits: ["update:modelValue"],
|
|
3247
|
+
setup(e, { emit: t }) {
|
|
3248
|
+
let n = e, r = t, { isDark: o } = B(), s = i(() => ({
|
|
3249
|
+
enableTimePicker: n.mode !== "date",
|
|
3250
|
+
is24: n.is24,
|
|
3251
|
+
...n.timeConfig
|
|
3252
|
+
})), c = i(() => {
|
|
3253
|
+
if (n.format) return { input: n.format };
|
|
3254
|
+
let e = n.is24 ? "HH:mm" : "hh:mm a";
|
|
3255
|
+
return n.mode === "date" ? { input: "dd/MM/yyyy" } : n.mode === "time" ? { input: e } : { input: `dd/MM/yyyy ${e}` };
|
|
3256
|
+
});
|
|
3257
|
+
return (t, n) => (w(), a(M(je), {
|
|
3258
|
+
"model-value": e.modelValue,
|
|
3259
|
+
dark: M(o),
|
|
3260
|
+
"time-picker": e.mode === "time",
|
|
3261
|
+
"time-config": s.value,
|
|
3262
|
+
formats: c.value,
|
|
3263
|
+
"auto-apply": e.autoApply,
|
|
3264
|
+
teleport: e.teleport,
|
|
3265
|
+
"onUpdate:modelValue": n[0] ||= (e) => r("update:modelValue", e)
|
|
3266
|
+
}, l({ _: 2 }, [D(t.$slots, (e, n) => ({
|
|
3267
|
+
name: n,
|
|
3268
|
+
fn: P((e) => [O(t.$slots, n, v(h(e ?? {})))])
|
|
3269
|
+
}))]), 1032, [
|
|
3270
|
+
"model-value",
|
|
3271
|
+
"dark",
|
|
3272
|
+
"time-picker",
|
|
3273
|
+
"time-config",
|
|
3274
|
+
"formats",
|
|
3275
|
+
"auto-apply",
|
|
3276
|
+
"teleport"
|
|
3277
|
+
]));
|
|
3224
3278
|
}
|
|
3225
3279
|
});
|
|
3226
3280
|
//#endregion
|
|
3227
3281
|
//#region src/composables/useDebounce.ts
|
|
3228
|
-
function
|
|
3229
|
-
let n =
|
|
3230
|
-
return
|
|
3282
|
+
function Wi(e, t = 300) {
|
|
3283
|
+
let n = E(e.value), r = null;
|
|
3284
|
+
return N(e, (e) => {
|
|
3231
3285
|
r && clearTimeout(r), r = setTimeout(() => {
|
|
3232
3286
|
n.value = e, r = null;
|
|
3233
3287
|
}, t);
|
|
3234
|
-
}),
|
|
3288
|
+
}), S(() => {
|
|
3235
3289
|
r &&= (clearTimeout(r), null);
|
|
3236
3290
|
}), n;
|
|
3237
3291
|
}
|
|
3238
3292
|
//#endregion
|
|
3239
3293
|
//#region src/composables/useToast.ts
|
|
3240
|
-
function
|
|
3241
|
-
let t =
|
|
3294
|
+
function Gi(e = 3e3) {
|
|
3295
|
+
let t = E(!1), n = E(""), r = E(K.SUCCESS), i = null;
|
|
3242
3296
|
function a() {
|
|
3243
3297
|
i &&= (clearTimeout(i), null);
|
|
3244
3298
|
}
|
|
@@ -3247,7 +3301,7 @@ function Vi(e = 3e3) {
|
|
|
3247
3301
|
t.value = !1, i = null;
|
|
3248
3302
|
}, c);
|
|
3249
3303
|
}
|
|
3250
|
-
return
|
|
3304
|
+
return S(() => {
|
|
3251
3305
|
a();
|
|
3252
3306
|
}), {
|
|
3253
3307
|
showToast: t,
|
|
@@ -3258,8 +3312,8 @@ function Vi(e = 3e3) {
|
|
|
3258
3312
|
}
|
|
3259
3313
|
//#endregion
|
|
3260
3314
|
//#region src/composables/useQueryParamSync.ts
|
|
3261
|
-
function
|
|
3262
|
-
let e =
|
|
3315
|
+
function Ki() {
|
|
3316
|
+
let e = ke(), t = Ae();
|
|
3263
3317
|
function n(t) {
|
|
3264
3318
|
let n = e.query[t];
|
|
3265
3319
|
return typeof n == "string" ? n : "";
|
|
@@ -3280,8 +3334,8 @@ function Hi() {
|
|
|
3280
3334
|
}
|
|
3281
3335
|
//#endregion
|
|
3282
3336
|
//#region src/composables/useFieldClasses.ts
|
|
3283
|
-
function
|
|
3284
|
-
let { isDark: e } =
|
|
3337
|
+
function qi() {
|
|
3338
|
+
let { isDark: e } = B(), t = i(() => e.value ? "text-gray-300" : "text-gray-600"), n = i(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
|
|
3285
3339
|
function r(t) {
|
|
3286
3340
|
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;
|
|
3287
3341
|
}
|
|
@@ -3293,8 +3347,8 @@ function Ui() {
|
|
|
3293
3347
|
}
|
|
3294
3348
|
//#endregion
|
|
3295
3349
|
//#region src/composables/usePolling.ts
|
|
3296
|
-
function
|
|
3297
|
-
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o =
|
|
3350
|
+
function Ji(e, t, n = {}) {
|
|
3351
|
+
let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = E(!1), s = !1;
|
|
3298
3352
|
function c() {
|
|
3299
3353
|
a === null && t !== null && (a = setInterval(() => void e(), t));
|
|
3300
3354
|
}
|
|
@@ -3316,74 +3370,74 @@ function Wi(e, t, n = {}) {
|
|
|
3316
3370
|
o.value = !1, l(), s = !0;
|
|
3317
3371
|
}
|
|
3318
3372
|
}
|
|
3319
|
-
return
|
|
3373
|
+
return x(() => {
|
|
3320
3374
|
u(), i && document.addEventListener("visibilitychange", f);
|
|
3321
|
-
}),
|
|
3375
|
+
}), C(() => {
|
|
3322
3376
|
d(), i && document.removeEventListener("visibilitychange", f);
|
|
3323
3377
|
}), {
|
|
3324
3378
|
start: u,
|
|
3325
3379
|
stop: d,
|
|
3326
|
-
active:
|
|
3380
|
+
active: ee(o)
|
|
3327
3381
|
};
|
|
3328
3382
|
}
|
|
3329
3383
|
//#endregion
|
|
3330
3384
|
//#region src/enums/BaseBadgeEnum.ts
|
|
3331
|
-
var
|
|
3385
|
+
var Yi = /* @__PURE__ */ function(e) {
|
|
3332
3386
|
return e.WIN = "WIN", e.LOSE = "LOSE", e;
|
|
3333
3387
|
}({});
|
|
3334
3388
|
//#endregion
|
|
3335
3389
|
//#region src/utils/util.ts
|
|
3336
|
-
function
|
|
3390
|
+
function Xi(e) {
|
|
3337
3391
|
let t = "red";
|
|
3338
3392
|
switch (e) {
|
|
3339
|
-
case
|
|
3393
|
+
case L.ERROR:
|
|
3340
3394
|
t = "red";
|
|
3341
3395
|
break;
|
|
3342
|
-
case
|
|
3396
|
+
case L.SUCCESS:
|
|
3343
3397
|
t = "green";
|
|
3344
3398
|
break;
|
|
3345
|
-
case
|
|
3399
|
+
case L.INFO:
|
|
3346
3400
|
t = "gray";
|
|
3347
3401
|
break;
|
|
3348
|
-
case
|
|
3402
|
+
case L.WARNING: t = "yellow";
|
|
3349
3403
|
}
|
|
3350
3404
|
return t;
|
|
3351
3405
|
}
|
|
3352
|
-
function
|
|
3406
|
+
function Zi(e) {
|
|
3353
3407
|
let t = "red";
|
|
3354
3408
|
switch (e) {
|
|
3355
|
-
case
|
|
3409
|
+
case V.GREEN:
|
|
3356
3410
|
t = "green";
|
|
3357
3411
|
break;
|
|
3358
|
-
case
|
|
3412
|
+
case V.RED:
|
|
3359
3413
|
t = "red";
|
|
3360
3414
|
break;
|
|
3361
|
-
case
|
|
3415
|
+
case V.BLUE:
|
|
3362
3416
|
t = "blue";
|
|
3363
3417
|
break;
|
|
3364
|
-
case
|
|
3418
|
+
case V.YELLOW:
|
|
3365
3419
|
t = "yellow";
|
|
3366
3420
|
break;
|
|
3367
|
-
case
|
|
3421
|
+
case V.BLACK:
|
|
3368
3422
|
t = "black";
|
|
3369
3423
|
break;
|
|
3370
|
-
case
|
|
3424
|
+
case V.GRAY:
|
|
3371
3425
|
t = "gray";
|
|
3372
3426
|
break;
|
|
3373
|
-
case
|
|
3427
|
+
case V.NONE: t = "";
|
|
3374
3428
|
}
|
|
3375
3429
|
return t;
|
|
3376
3430
|
}
|
|
3377
3431
|
//#endregion
|
|
3378
3432
|
//#region src/utils/httpColors.ts
|
|
3379
|
-
var
|
|
3433
|
+
var Qi = {
|
|
3380
3434
|
GET: "bg-blue-600",
|
|
3381
3435
|
POST: "bg-emerald-600",
|
|
3382
3436
|
PUT: "bg-amber-600",
|
|
3383
3437
|
DELETE: "bg-red-600",
|
|
3384
3438
|
PATCH: "bg-purple-600",
|
|
3385
3439
|
HEAD: "bg-gray-600"
|
|
3386
|
-
},
|
|
3440
|
+
}, $i = {
|
|
3387
3441
|
GET: "bg-blue-500",
|
|
3388
3442
|
POST: "bg-green-500",
|
|
3389
3443
|
PUT: "bg-yellow-500",
|
|
@@ -3391,39 +3445,39 @@ var Ji = {
|
|
|
3391
3445
|
PATCH: "bg-purple-500",
|
|
3392
3446
|
HEAD: "bg-gray-500"
|
|
3393
3447
|
};
|
|
3394
|
-
function
|
|
3395
|
-
return e ?
|
|
3448
|
+
function ea(e) {
|
|
3449
|
+
return e ? Qi[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
3396
3450
|
}
|
|
3397
|
-
function
|
|
3398
|
-
return e ?
|
|
3451
|
+
function ta(e) {
|
|
3452
|
+
return e ? $i[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
|
|
3399
3453
|
}
|
|
3400
|
-
function
|
|
3454
|
+
function na(e) {
|
|
3401
3455
|
let t = e ?? 0;
|
|
3402
3456
|
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";
|
|
3403
3457
|
}
|
|
3404
|
-
function
|
|
3458
|
+
function ra(e, t) {
|
|
3405
3459
|
let n = (e || "ANY").toUpperCase();
|
|
3406
3460
|
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";
|
|
3407
3461
|
}
|
|
3408
|
-
function
|
|
3462
|
+
function ia(e, t) {
|
|
3409
3463
|
let n = e ?? 200;
|
|
3410
3464
|
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";
|
|
3411
3465
|
}
|
|
3412
|
-
function
|
|
3466
|
+
function aa(e, t) {
|
|
3413
3467
|
let n = e ?? 200;
|
|
3414
3468
|
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";
|
|
3415
3469
|
}
|
|
3416
3470
|
//#endregion
|
|
3417
3471
|
//#region src/utils/kvRows.ts
|
|
3418
|
-
function
|
|
3472
|
+
function oa(e) {
|
|
3419
3473
|
return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
|
|
3420
3474
|
}
|
|
3421
|
-
function
|
|
3475
|
+
function sa(e) {
|
|
3422
3476
|
return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
|
|
3423
3477
|
}
|
|
3424
3478
|
//#endregion
|
|
3425
3479
|
//#region src/utils/sanitizeHtml.ts
|
|
3426
|
-
var
|
|
3480
|
+
var ca = /* @__PURE__ */ new Set([
|
|
3427
3481
|
"A",
|
|
3428
3482
|
"B",
|
|
3429
3483
|
"STRONG",
|
|
@@ -3438,7 +3492,7 @@ var ia = /* @__PURE__ */ new Set([
|
|
|
3438
3492
|
"LI",
|
|
3439
3493
|
"SPAN",
|
|
3440
3494
|
"DIV"
|
|
3441
|
-
]),
|
|
3495
|
+
]), la = /* @__PURE__ */ new Set([
|
|
3442
3496
|
"SCRIPT",
|
|
3443
3497
|
"STYLE",
|
|
3444
3498
|
"IFRAME",
|
|
@@ -3446,40 +3500,40 @@ var ia = /* @__PURE__ */ new Set([
|
|
|
3446
3500
|
"EMBED",
|
|
3447
3501
|
"NOSCRIPT",
|
|
3448
3502
|
"TEMPLATE"
|
|
3449
|
-
]),
|
|
3450
|
-
function
|
|
3503
|
+
]), ua = { A: /* @__PURE__ */ new Set(["href", "title"]) };
|
|
3504
|
+
function da(e) {
|
|
3451
3505
|
let t = e.trim().toLowerCase();
|
|
3452
3506
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
|
|
3453
3507
|
}
|
|
3454
|
-
function
|
|
3508
|
+
function fa(e) {
|
|
3455
3509
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
3456
3510
|
let t = e, n = t.tagName.toUpperCase();
|
|
3457
|
-
if (!
|
|
3458
|
-
|
|
3511
|
+
if (!ca.has(n)) {
|
|
3512
|
+
la.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
|
|
3459
3513
|
return;
|
|
3460
3514
|
}
|
|
3461
|
-
let r =
|
|
3515
|
+
let r = ua[n] ?? /* @__PURE__ */ new Set();
|
|
3462
3516
|
for (let e of Array.from(t.attributes)) {
|
|
3463
3517
|
if (!r.has(e.name.toLowerCase())) {
|
|
3464
3518
|
t.removeAttribute(e.name);
|
|
3465
3519
|
continue;
|
|
3466
3520
|
}
|
|
3467
|
-
n === "A" && e.name.toLowerCase() === "href" && !
|
|
3521
|
+
n === "A" && e.name.toLowerCase() === "href" && !da(e.value) && t.removeAttribute(e.name);
|
|
3468
3522
|
}
|
|
3469
3523
|
n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
|
|
3470
|
-
for (let e of Array.from(t.childNodes))
|
|
3524
|
+
for (let e of Array.from(t.childNodes)) fa(e);
|
|
3471
3525
|
}
|
|
3472
|
-
function
|
|
3526
|
+
function pa(e) {
|
|
3473
3527
|
if (!e) return "";
|
|
3474
3528
|
let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
|
|
3475
3529
|
if (!t) return "";
|
|
3476
|
-
for (let e of Array.from(t.childNodes))
|
|
3530
|
+
for (let e of Array.from(t.childNodes)) fa(e);
|
|
3477
3531
|
return t.innerHTML;
|
|
3478
3532
|
}
|
|
3479
3533
|
//#endregion
|
|
3480
3534
|
//#region src/utils/format.ts
|
|
3481
3535
|
var $ = "—";
|
|
3482
|
-
function
|
|
3536
|
+
function ma(e, t = 4) {
|
|
3483
3537
|
if (e == null || typeof e == "string" && e.trim() === "") return $;
|
|
3484
3538
|
let n = typeof e == "string" ? Number(e) : e;
|
|
3485
3539
|
return isFinite(n) ? n.toLocaleString(void 0, {
|
|
@@ -3487,12 +3541,12 @@ function ua(e, t = 4) {
|
|
|
3487
3541
|
maximumFractionDigits: t
|
|
3488
3542
|
}) : $;
|
|
3489
3543
|
}
|
|
3490
|
-
function
|
|
3544
|
+
function ha(e) {
|
|
3491
3545
|
if (e == null || e === "") return $;
|
|
3492
3546
|
let t = new Date(e);
|
|
3493
3547
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
|
|
3494
3548
|
}
|
|
3495
|
-
function
|
|
3549
|
+
function ga(e) {
|
|
3496
3550
|
return new Date(e).toLocaleString(void 0, {
|
|
3497
3551
|
month: "short",
|
|
3498
3552
|
day: "numeric",
|
|
@@ -3500,13 +3554,13 @@ function fa(e) {
|
|
|
3500
3554
|
minute: "2-digit"
|
|
3501
3555
|
});
|
|
3502
3556
|
}
|
|
3503
|
-
function
|
|
3557
|
+
function _a(e) {
|
|
3504
3558
|
return new Date(e).toLocaleDateString(void 0, {
|
|
3505
3559
|
month: "short",
|
|
3506
3560
|
day: "numeric"
|
|
3507
3561
|
});
|
|
3508
3562
|
}
|
|
3509
|
-
function
|
|
3563
|
+
function va(e) {
|
|
3510
3564
|
try {
|
|
3511
3565
|
return new Date(e).toLocaleString(void 0, {
|
|
3512
3566
|
year: "numeric",
|
|
@@ -3522,7 +3576,7 @@ function ma(e) {
|
|
|
3522
3576
|
return String(e);
|
|
3523
3577
|
}
|
|
3524
3578
|
}
|
|
3525
|
-
function
|
|
3579
|
+
function ya(e) {
|
|
3526
3580
|
if (!isFinite(e) || e === 0) return e.toFixed(2);
|
|
3527
3581
|
let t = Math.abs(e), n = 2;
|
|
3528
3582
|
return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
|
|
@@ -3530,13 +3584,13 @@ function ha(e) {
|
|
|
3530
3584
|
maximumFractionDigits: n
|
|
3531
3585
|
});
|
|
3532
3586
|
}
|
|
3533
|
-
function
|
|
3587
|
+
function ba(e, t = 2) {
|
|
3534
3588
|
return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
|
|
3535
3589
|
}
|
|
3536
|
-
function
|
|
3590
|
+
function xa(e) {
|
|
3537
3591
|
return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
|
|
3538
3592
|
}
|
|
3539
|
-
function
|
|
3593
|
+
function Sa(e) {
|
|
3540
3594
|
if (e == null || e === "") return $;
|
|
3541
3595
|
let t = new Date(e);
|
|
3542
3596
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -3545,7 +3599,7 @@ function va(e) {
|
|
|
3545
3599
|
day: "numeric"
|
|
3546
3600
|
});
|
|
3547
3601
|
}
|
|
3548
|
-
function
|
|
3602
|
+
function Ca(e) {
|
|
3549
3603
|
if (e == null || e === "") return $;
|
|
3550
3604
|
let t = new Date(e);
|
|
3551
3605
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
|
|
@@ -3556,22 +3610,22 @@ function ya(e) {
|
|
|
3556
3610
|
minute: "2-digit"
|
|
3557
3611
|
});
|
|
3558
3612
|
}
|
|
3559
|
-
function
|
|
3613
|
+
function wa(e) {
|
|
3560
3614
|
if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
|
|
3561
3615
|
let t = e / 1e3, n = t < 1 ? 3 : 2;
|
|
3562
3616
|
return `= ${t.toFixed(n)} s`;
|
|
3563
3617
|
}
|
|
3564
|
-
function
|
|
3618
|
+
function Ta(e) {
|
|
3565
3619
|
return e ? e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1048576).toFixed(1)} MB` : "";
|
|
3566
3620
|
}
|
|
3567
|
-
function
|
|
3621
|
+
function Ea(e) {
|
|
3568
3622
|
try {
|
|
3569
3623
|
return JSON.stringify(JSON.parse(e), null, 2);
|
|
3570
3624
|
} catch {
|
|
3571
3625
|
return e;
|
|
3572
3626
|
}
|
|
3573
3627
|
}
|
|
3574
|
-
function
|
|
3628
|
+
function Da(e) {
|
|
3575
3629
|
if (e == null) return "";
|
|
3576
3630
|
if (typeof e == "string") return e;
|
|
3577
3631
|
try {
|
|
@@ -3580,14 +3634,14 @@ function Ca(e) {
|
|
|
3580
3634
|
return String(e);
|
|
3581
3635
|
}
|
|
3582
3636
|
}
|
|
3583
|
-
function
|
|
3637
|
+
function Oa(e, t = 2) {
|
|
3584
3638
|
if (e == null || !isFinite(e)) return $;
|
|
3585
3639
|
let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
|
|
3586
3640
|
return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
|
|
3587
3641
|
}
|
|
3588
3642
|
//#endregion
|
|
3589
3643
|
//#region src/utils/validate.ts
|
|
3590
|
-
function
|
|
3644
|
+
function ka(e) {
|
|
3591
3645
|
let t = (e ?? "").trim();
|
|
3592
3646
|
if (!t) return !1;
|
|
3593
3647
|
try {
|
|
@@ -3597,7 +3651,7 @@ function Ta(e) {
|
|
|
3597
3651
|
return !1;
|
|
3598
3652
|
}
|
|
3599
3653
|
}
|
|
3600
|
-
function
|
|
3654
|
+
function Aa(e) {
|
|
3601
3655
|
if (!e.trim()) return !0;
|
|
3602
3656
|
try {
|
|
3603
3657
|
return JSON.parse(e), !0;
|
|
@@ -3605,7 +3659,7 @@ function Ea(e) {
|
|
|
3605
3659
|
return !1;
|
|
3606
3660
|
}
|
|
3607
3661
|
}
|
|
3608
|
-
function
|
|
3662
|
+
function ja(e) {
|
|
3609
3663
|
if (!e.trim()) return !0;
|
|
3610
3664
|
try {
|
|
3611
3665
|
return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
|
|
@@ -3613,7 +3667,7 @@ function Da(e) {
|
|
|
3613
3667
|
return !1;
|
|
3614
3668
|
}
|
|
3615
3669
|
}
|
|
3616
|
-
function
|
|
3670
|
+
function Ma(e) {
|
|
3617
3671
|
if (!e.trim()) return !0;
|
|
3618
3672
|
let t = e.replace(/\s+/g, "");
|
|
3619
3673
|
if (!t) return !0;
|
|
@@ -3626,7 +3680,7 @@ function Oa(e) {
|
|
|
3626
3680
|
}
|
|
3627
3681
|
//#endregion
|
|
3628
3682
|
//#region src/utils/specForm.ts
|
|
3629
|
-
function
|
|
3683
|
+
function Na(e, t) {
|
|
3630
3684
|
let n = {};
|
|
3631
3685
|
if (!e) return n;
|
|
3632
3686
|
for (let r of e) {
|
|
@@ -3635,7 +3689,7 @@ function ka(e, t) {
|
|
|
3635
3689
|
}
|
|
3636
3690
|
return n;
|
|
3637
3691
|
}
|
|
3638
|
-
function
|
|
3692
|
+
function Pa(e, t) {
|
|
3639
3693
|
if (!e) return null;
|
|
3640
3694
|
for (let n of e) if (n.type === "decimal" || n.type === "integer") {
|
|
3641
3695
|
let e = t[n.key], r = e === "" || e == null;
|
|
@@ -3646,7 +3700,7 @@ function Aa(e, t) {
|
|
|
3646
3700
|
}
|
|
3647
3701
|
//#endregion
|
|
3648
3702
|
//#region src/utils/pnl.ts
|
|
3649
|
-
function
|
|
3703
|
+
function Fa(e) {
|
|
3650
3704
|
if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
|
|
3651
3705
|
pnlUsd: null,
|
|
3652
3706
|
pnlPct: null
|
|
@@ -3661,4 +3715,4 @@ function ja(e) {
|
|
|
3661
3715
|
};
|
|
3662
3716
|
}
|
|
3663
3717
|
//#endregion
|
|
3664
|
-
export {
|
|
3718
|
+
export { L as AlertEnum, Qn as BaseActionButton, Le as BaseAlert, Un as BaseAppLayout, ze as BaseBadge, Yi as BaseBadgeEnum, Hi as BaseBarDistribution, Ue as BaseBreadcrumb, W as BaseButton, H as BaseButtonEnum, U as BaseButtonSizeEnum, Tr as BaseChipButton, Nr as BaseCodeBlock, Xt as BaseCollapsibleSection, en as BaseConfirmModal, er as BaseCopyButton, Di as BaseCredentialsForm, Ui as BaseDateTimePicker, Vr as BaseDropdown, Bn as BaseEntityPickerModal, Mr as BaseFileDropzone, ui as BaseFilterChip, ir as BaseGoogleSignInButton, Q as BaseInput, nt as BaseLine, rt as BaseLoginEnum, gr as BaseLoginForm, at as BaseLogo, G as BaseLogoEnum, ft as BaseModal, ot as BaseModalEnum, qt as BaseModalShell, cn as BaseNotFoundPage, Cr as BaseNotificationPanel, Kn as BasePageHeader, Li as BasePillPickerModal, Er as BaseRemoveButton, pt as BaseRow, Gr as BaseSegmentedControl, Ir as BaseSelect, Dn as BaseSidebar, ai as BaseSpecFields, mt as BaseSpinner, ci as BaseStatBreakdown, kr as BaseStatusPill, Zr as BaseTable, an as BaseTextInputModal, _t as BaseToast, K as BaseToastEnum, Yn as BaseToolbarButton, yt as ColoredSquares, V as ColorsEnums, St as EarningsCard, Dt as EuroAmount, Qe as LineEnum, Mt as Pagination, q as PositioningEnum, Lt as TrendArrow, Na as buildSpecParams, Fa as computePnL, Pa as firstInvalidNumericSpec, Ta as fmtBytes, Sa as fmtCalendarDate, Ca as fmtCalendarDateTime, ha as fmtDate, _a as fmtDateShort, ga as fmtDateTime, va as fmtDateTimeMs, Oa as fmtDuration, wa as fmtMsAsSeconds, ma as fmtNumber, ba as fmtPct, ya as fmtPrice, xa as fmtUsd, Ea as formatJson, Xi as getBaseColor, Zi as getBaseColorOf, Pe as initTheme, da as isSafeHref, ka as isValidAbsoluteUrl, Ma as isValidBase64, Aa as isValidJson, ja as isValidXml, ta as methodBadgeBright, ea as methodBadgeSolid, ra as methodBadgeTinted, sa as rowKeyMissing, oa as rowValueMissing, pa as sanitizeHtml, ia as statusBadgeSoft, na as statusBadgeSolid, aa as statusBadgeTinted, Da as stringifyValue, Wi as useDebouncedRef, Rt as useEscapeKey, qi as useFieldClasses, un as useMobileSidebar, gn as useNotifications, Ji as usePolling, Ki as useQueryParamSync, mn as useSidebarCollapse, B as useTheme, J as useThemeClasses, Gi as useToast };
|