mgv-backoffice 1.18.0 → 1.20.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 +152 -9
- package/dist/{src/components → components}/BaseActionButton.vue.d.ts +9 -13
- package/dist/{src/components → components}/BaseAlert.vue.d.ts +3 -2
- package/dist/components/BaseAppLayout.vue.d.ts +28 -0
- package/dist/{src/components → components}/BaseBadge.vue.d.ts +7 -11
- package/dist/{src/components → components}/BaseBreadcrumb.vue.d.ts +3 -2
- package/dist/{src/components → components}/BaseButton.vue.d.ts +9 -12
- package/dist/{src/components → components}/BaseCollapsibleSection.vue.d.ts +7 -11
- package/dist/{src/components → components}/BaseConfirmModal.vue.d.ts +9 -12
- package/dist/{src/components → components}/BaseCopyButton.vue.d.ts +2 -1
- package/dist/{src/components → components}/BaseEntityPickerModal.vue.d.ts +8 -16
- package/dist/components/BaseGoogleSignInButton.vue.d.ts +22 -0
- package/dist/{src/components → components}/BaseLine.vue.d.ts +2 -1
- package/dist/components/BaseLoginForm.vue.d.ts +51 -0
- package/dist/{src/components → components}/BaseLogo.vue.d.ts +2 -1
- package/dist/{src/components → components}/BaseModal.vue.d.ts +7 -11
- package/dist/{src/components → components}/BaseModalShell.vue.d.ts +19 -17
- package/dist/{src/components → components}/BaseNotFoundPage.vue.d.ts +3 -2
- package/dist/components/BaseNotificationPanel.vue.d.ts +19 -0
- package/dist/components/BasePageHeader.vue.d.ts +28 -0
- package/dist/{src/components → components}/BaseRow.vue.d.ts +8 -12
- package/dist/components/BaseSidebar.vue.d.ts +47 -0
- package/dist/{src/components → components}/BaseSpinner.vue.d.ts +2 -1
- package/dist/{src/components → components}/BaseTextInputModal.vue.d.ts +8 -16
- package/dist/{src/components → components}/BaseToast.vue.d.ts +2 -1
- package/dist/{src/components → components}/BaseToolbarButton.vue.d.ts +9 -13
- package/dist/components/ColoredSquares.vue.d.ts +23 -0
- package/dist/{src/components → components}/EarningsCard.vue.d.ts +3 -2
- package/dist/{src/components → components}/EuroAmount.vue.d.ts +2 -1
- package/dist/{src/components → components}/Pagination.vue.d.ts +3 -2
- package/dist/{src/components → components}/TrendArrow.vue.d.ts +2 -1
- package/dist/composables/useNotifications.d.ts +29 -0
- package/dist/composables/useSidebarCollapse.d.ts +22 -0
- package/dist/index.d.ts +62 -1
- package/dist/types/auth.d.ts +11 -0
- package/dist/types/notification.d.ts +20 -0
- package/dist/ui-lib.css +2 -2
- package/dist/ui-lib.js +1088 -671
- package/dist/ui-lib.umd.cjs +1 -1
- package/package.json +14 -13
- package/src/components/BaseAppLayout.vue +4 -1
- package/src/components/BaseGoogleSignInButton.vue +83 -0
- package/src/components/BaseLoginForm.test.ts +52 -0
- package/src/components/BaseLoginForm.vue +204 -0
- package/src/components/BaseNotificationPanel.vue +183 -0
- package/src/components/BaseSidebar.vue +140 -31
- package/src/composables/useNotifications.test.ts +64 -0
- package/src/composables/useNotifications.ts +81 -0
- package/src/composables/useSidebarCollapse.ts +64 -0
- package/src/index.ts +8 -0
- package/src/types/auth.ts +11 -0
- package/src/types/notification.ts +20 -0
- package/dist/src/components/BaseAppLayout.vue.d.ts +0 -31
- package/dist/src/components/BasePageHeader.vue.d.ts +0 -31
- package/dist/src/components/BaseSidebar.vue.d.ts +0 -46
- package/dist/src/components/ColoredSquares.vue.d.ts +0 -27
- package/dist/src/index.d.ts +0 -54
- /package/dist/{src/composables → composables}/useDebounce.d.ts +0 -0
- /package/dist/{src/composables → composables}/useEscapeKey.d.ts +0 -0
- /package/dist/{src/composables → composables}/useMobileSidebar.d.ts +0 -0
- /package/dist/{src/composables → composables}/useTheme.d.ts +0 -0
- /package/dist/{src/composables → composables}/useThemeClasses.d.ts +0 -0
- /package/dist/{src/composables → composables}/useToast.d.ts +0 -0
- /package/dist/{src/enums → enums}/AlertEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/BaseBadgeEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/BaseButtonEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/BaseButtonSizeEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/BaseLogoEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/BaseModalEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/BaseToastEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/ColorsEnums.d.ts +0 -0
- /package/dist/{src/enums → enums}/LineEnum.d.ts +0 -0
- /package/dist/{src/enums → enums}/PositioningEnum.d.ts +0 -0
- /package/dist/{src/types → types}/entityPicker.d.ts +0 -0
- /package/dist/{src/types → types}/sidebar.d.ts +0 -0
- /package/dist/{src/utils → utils}/format.d.ts +0 -0
- /package/dist/{src/utils → utils}/httpColors.d.ts +0 -0
- /package/dist/{src/utils → utils}/pnl.d.ts +0 -0
- /package/dist/{src/utils → utils}/sanitizeHtml.d.ts +0 -0
- /package/dist/{src/utils → utils}/util.d.ts +0 -0
package/dist/ui-lib.js
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { Fragment as e, Teleport as t,
|
|
2
|
-
import { ArrowDownIcon as
|
|
3
|
-
import { HomeIcon as
|
|
4
|
-
import { useRoute as
|
|
1
|
+
import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createStaticVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, effectScope as f, nextTick as p, normalizeClass as m, onBeforeUnmount as h, onMounted as g, onScopeDispose as _, onUnmounted as v, openBlock as y, ref as b, renderList as x, renderSlot as S, resolveComponent as C, resolveDynamicComponent as w, toDisplayString as T, unref as E, useSlots as D, vModelCheckbox as O, vModelDynamic as k, vModelText as A, vShow as ee, watch as j, withCtx as M, withDirectives as N, withKeys as P, withModifiers as F } from "vue";
|
|
2
|
+
import { ArrowDownIcon as te, ArrowUpIcon as ne, Bars3Icon as re, BellIcon as ie, CheckCircleIcon as ae, ChevronDoubleLeftIcon as oe, ChevronDoubleRightIcon as se, ChevronRightIcon as ce, ClipboardDocumentCheckIcon as le, ClipboardDocumentIcon as ue, DocumentDuplicateIcon as de, ExclamationCircleIcon as fe, ExclamationTriangleIcon as pe, FolderIcon as me, InformationCircleIcon as he, MagnifyingGlassIcon as ge, MinusIcon as _e, MoonIcon as ve, SunIcon as ye, XMarkIcon as be } from "@heroicons/vue/24/outline";
|
|
3
|
+
import { HomeIcon as xe } from "@heroicons/vue/24/solid";
|
|
4
|
+
import { useRoute as Se, useRouter as Ce } from "vue-router";
|
|
5
5
|
//#region src/enums/AlertEnum.ts
|
|
6
|
-
var
|
|
6
|
+
var I = /* @__PURE__ */ function(e) {
|
|
7
7
|
return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
|
|
8
|
-
}({}),
|
|
8
|
+
}({}), L = /* @__PURE__ */ function(e) {
|
|
9
9
|
return e.NONE = "NONE", e.RED = "RED", e.YELLOW = "YELLOW", e.BLACK = "BLACK", e.GRAY = "GRAY", e.GREEN = "GREEN", e.BLUE = "BLUE", e;
|
|
10
10
|
}({});
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/utils/util.ts
|
|
13
|
-
function
|
|
13
|
+
function we(e) {
|
|
14
14
|
let t = "red";
|
|
15
15
|
switch (e) {
|
|
16
|
-
case
|
|
16
|
+
case I.ERROR:
|
|
17
17
|
t = "red";
|
|
18
18
|
break;
|
|
19
|
-
case
|
|
19
|
+
case I.SUCCESS:
|
|
20
20
|
t = "green";
|
|
21
21
|
break;
|
|
22
|
-
case
|
|
22
|
+
case I.INFO:
|
|
23
23
|
t = "gray";
|
|
24
24
|
break;
|
|
25
|
-
case
|
|
25
|
+
case I.WARNING:
|
|
26
26
|
t = "yellow";
|
|
27
27
|
break;
|
|
28
28
|
}
|
|
29
29
|
return t;
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function Te(e) {
|
|
32
32
|
let t = "red";
|
|
33
33
|
switch (e) {
|
|
34
|
-
case
|
|
34
|
+
case L.GREEN:
|
|
35
35
|
t = "green";
|
|
36
36
|
break;
|
|
37
|
-
case
|
|
37
|
+
case L.RED:
|
|
38
38
|
t = "red";
|
|
39
39
|
break;
|
|
40
|
-
case
|
|
40
|
+
case L.BLUE:
|
|
41
41
|
t = "blue";
|
|
42
42
|
break;
|
|
43
|
-
case
|
|
43
|
+
case L.YELLOW:
|
|
44
44
|
t = "yellow";
|
|
45
45
|
break;
|
|
46
|
-
case
|
|
46
|
+
case L.BLACK:
|
|
47
47
|
t = "black";
|
|
48
48
|
break;
|
|
49
|
-
case
|
|
49
|
+
case L.GRAY:
|
|
50
50
|
t = "gray";
|
|
51
51
|
break;
|
|
52
|
-
case
|
|
52
|
+
case L.NONE:
|
|
53
53
|
t = "";
|
|
54
54
|
break;
|
|
55
55
|
}
|
|
@@ -57,7 +57,7 @@ function he(e) {
|
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
59
|
//#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
|
|
60
|
-
var
|
|
60
|
+
var Ee = { class: "font-medium pl-1" }, De = /* @__PURE__ */ d({
|
|
61
61
|
__name: "BaseAlert",
|
|
62
62
|
props: {
|
|
63
63
|
title: {
|
|
@@ -68,62 +68,62 @@ var ge = { class: "font-medium pl-1" }, _e = /* @__PURE__ */ l({
|
|
|
68
68
|
color: {
|
|
69
69
|
type: String,
|
|
70
70
|
required: !1,
|
|
71
|
-
default:
|
|
71
|
+
default: I.ERROR
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
setup(e) {
|
|
75
|
-
let t = e,
|
|
75
|
+
let t = e, n = r(() => {
|
|
76
76
|
switch (t.color) {
|
|
77
|
-
case
|
|
78
|
-
case
|
|
79
|
-
case
|
|
80
|
-
default: return
|
|
77
|
+
case I.SUCCESS: return ae;
|
|
78
|
+
case I.WARNING: return pe;
|
|
79
|
+
case I.INFO: return he;
|
|
80
|
+
default: return fe;
|
|
81
81
|
}
|
|
82
|
-
}),
|
|
82
|
+
}), a = r(() => {
|
|
83
83
|
switch (t.color) {
|
|
84
|
-
case
|
|
85
|
-
case
|
|
86
|
-
case
|
|
84
|
+
case I.SUCCESS: return "text-green-500";
|
|
85
|
+
case I.WARNING: return "text-yellow-500";
|
|
86
|
+
case I.INFO: return "text-gray-500";
|
|
87
87
|
default: return "text-red-500";
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
90
|
function c() {
|
|
91
|
-
let e =
|
|
91
|
+
let e = we(t.color);
|
|
92
92
|
return "flex items-center p-4 mb-4 text-sm text-" + e + "-800 border border-" + e + "-300 rounded-lg bg-" + e + "-50 dark:bg-gray-800 dark:text-" + e + "-400 dark:border-" + e + "-800";
|
|
93
93
|
}
|
|
94
|
-
return (t,
|
|
95
|
-
class:
|
|
94
|
+
return (t, r) => (y(), o("div", {
|
|
95
|
+
class: m(c()),
|
|
96
96
|
role: "alert"
|
|
97
|
-
}, [(
|
|
97
|
+
}, [(y(), i(w(n.value), { class: m(["w-6 h-6 flex-shrink-0", a.value]) }, null, 8, ["class"])), s("div", null, [s("span", Ee, T(e.title), 1)])], 2));
|
|
98
98
|
}
|
|
99
|
-
}),
|
|
99
|
+
}), Oe = "bg-red-100 text-red-700 border-red-200", ke = /* @__PURE__ */ d({
|
|
100
100
|
__name: "BaseBadge",
|
|
101
101
|
props: { color: {
|
|
102
102
|
type: String,
|
|
103
103
|
required: !1
|
|
104
104
|
} },
|
|
105
105
|
setup(e) {
|
|
106
|
-
let t =
|
|
107
|
-
[
|
|
108
|
-
[
|
|
109
|
-
[
|
|
110
|
-
[
|
|
111
|
-
[
|
|
112
|
-
[
|
|
113
|
-
[
|
|
114
|
-
}, c =
|
|
115
|
-
return (e, t) =>
|
|
106
|
+
let t = D(), n = r(() => !!t.default), i = e, s = {
|
|
107
|
+
[L.RED]: "bg-red-100 text-red-700 border-red-200",
|
|
108
|
+
[L.GREEN]: "bg-green-100 text-green-700 border-green-200",
|
|
109
|
+
[L.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
|
|
110
|
+
[L.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
|
|
111
|
+
[L.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
|
|
112
|
+
[L.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
|
|
113
|
+
[L.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
|
|
114
|
+
}, c = r(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && s[i.color] || Oe}`);
|
|
115
|
+
return (e, t) => n.value ? (y(), o("span", {
|
|
116
116
|
key: 0,
|
|
117
|
-
class:
|
|
118
|
-
}, [
|
|
117
|
+
class: m(c.value)
|
|
118
|
+
}, [S(e.$slots, "default")], 2)) : a("", !0);
|
|
119
119
|
}
|
|
120
|
-
}),
|
|
120
|
+
}), Ae = {
|
|
121
121
|
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",
|
|
122
122
|
"aria-label": "Breadcrumb"
|
|
123
|
-
},
|
|
123
|
+
}, je = { class: "inline-flex items-center space-x-1 md:space-x-3" }, Me = {
|
|
124
124
|
class: "inline-flex items-center",
|
|
125
125
|
style: { "margin-left": "0" }
|
|
126
|
-
},
|
|
126
|
+
}, Ne = /* @__PURE__ */ d({
|
|
127
127
|
__name: "BaseBreadcrumb",
|
|
128
128
|
props: {
|
|
129
129
|
items: {
|
|
@@ -138,81 +138,81 @@ var ge = { class: "font-medium pl-1" }, _e = /* @__PURE__ */ l({
|
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
140
|
setup(t) {
|
|
141
|
-
let
|
|
142
|
-
if (
|
|
143
|
-
let e = (
|
|
141
|
+
let n = t, i = r(() => {
|
|
142
|
+
if (n.items && n.items.length > 0) return n.items;
|
|
143
|
+
let e = (n.path ?? (typeof window < "u" ? window.location.pathname : "/")).split("/").filter((e) => e !== ""), t = "";
|
|
144
144
|
return e.map((e) => (t += "/" + e, {
|
|
145
145
|
name: Number.isNaN(Number(e)) ? (e.charAt(0).toUpperCase() + e.slice(1)).replaceAll("-", " ") : e,
|
|
146
146
|
url: t
|
|
147
147
|
}));
|
|
148
148
|
});
|
|
149
149
|
return (t, n) => {
|
|
150
|
-
let r =
|
|
151
|
-
return
|
|
150
|
+
let r = C("router-link");
|
|
151
|
+
return y(), o("nav", Ae, [s("ol", je, [s("li", Me, [u(r, {
|
|
152
152
|
to: "/",
|
|
153
153
|
class: "inline-flex items-center text-sm font-medium text-gray-700 hover:text-blue-600 dark:text-gray-400 dark:hover:text-white"
|
|
154
154
|
}, {
|
|
155
|
-
default:
|
|
155
|
+
default: M(() => [u(E(xe), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= l(" Home ", -1)]),
|
|
156
156
|
_: 1
|
|
157
|
-
})]), (
|
|
157
|
+
})]), (y(!0), o(e, null, x(i.value, (e, t) => (y(), o("li", {
|
|
158
158
|
key: t,
|
|
159
159
|
class: "inline-flex items-center",
|
|
160
160
|
style: { "margin-left": "0" }
|
|
161
|
-
}, [
|
|
161
|
+
}, [u(E(ce), { class: "h-4 w-4 text-gray-500" }), u(r, {
|
|
162
162
|
to: e.url,
|
|
163
163
|
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"
|
|
164
164
|
}, {
|
|
165
|
-
default:
|
|
165
|
+
default: M(() => [l(T(e.name), 1)]),
|
|
166
166
|
_: 2
|
|
167
167
|
}, 1032, ["to"])]))), 128))])]);
|
|
168
168
|
};
|
|
169
169
|
}
|
|
170
|
-
}),
|
|
170
|
+
}), R = /* @__PURE__ */ function(e) {
|
|
171
171
|
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;
|
|
172
|
-
}({}),
|
|
172
|
+
}({}), z = /* @__PURE__ */ function(e) {
|
|
173
173
|
return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
|
|
174
|
-
}({}),
|
|
175
|
-
function
|
|
176
|
-
if (
|
|
177
|
-
e !==
|
|
174
|
+
}({}), B = b(!1), Pe = !1, V = "mgv-theme";
|
|
175
|
+
function Fe(e) {
|
|
176
|
+
if (Pe) {
|
|
177
|
+
e !== V && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${V}". Call initTheme({ storageKey }) before mounting any component.`);
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
|
-
if (
|
|
181
|
-
let e = window.localStorage?.getItem(
|
|
182
|
-
e ?
|
|
180
|
+
if (Pe = !0, V = e, typeof window < "u") {
|
|
181
|
+
let e = window.localStorage?.getItem(V);
|
|
182
|
+
e ? B.value = e === "dark" : typeof window.matchMedia == "function" && (B.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
183
183
|
}
|
|
184
|
-
typeof document < "u" &&
|
|
185
|
-
|
|
186
|
-
document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(
|
|
184
|
+
typeof document < "u" && f(!0).run(() => {
|
|
185
|
+
j(B, (e) => {
|
|
186
|
+
document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(V, e ? "dark" : "light");
|
|
187
187
|
}, { immediate: !0 });
|
|
188
188
|
});
|
|
189
189
|
}
|
|
190
|
-
function
|
|
191
|
-
|
|
190
|
+
function Ie(e) {
|
|
191
|
+
Fe(e?.storageKey ?? V);
|
|
192
192
|
}
|
|
193
|
-
function
|
|
194
|
-
|
|
193
|
+
function H(e) {
|
|
194
|
+
Fe(e?.storageKey ?? V);
|
|
195
195
|
function t() {
|
|
196
|
-
|
|
196
|
+
B.value = !B.value;
|
|
197
197
|
}
|
|
198
198
|
return {
|
|
199
|
-
isDark:
|
|
199
|
+
isDark: B,
|
|
200
200
|
toggleTheme: t
|
|
201
201
|
};
|
|
202
202
|
}
|
|
203
203
|
//#endregion
|
|
204
204
|
//#region src/components/BaseButton.vue?vue&type=script&setup=true&lang.ts
|
|
205
|
-
var
|
|
205
|
+
var Le = [
|
|
206
206
|
"type",
|
|
207
207
|
"disabled",
|
|
208
208
|
"onClick"
|
|
209
|
-
],
|
|
209
|
+
], Re = {
|
|
210
210
|
key: 0,
|
|
211
211
|
class: "inline-flex items-center"
|
|
212
|
-
},
|
|
212
|
+
}, ze = { key: 1 }, Be = { key: 2 }, Ve = ["type", "disabled"], He = {
|
|
213
213
|
key: 0,
|
|
214
214
|
class: "inline-flex items-center"
|
|
215
|
-
},
|
|
215
|
+
}, Ue = { key: 1 }, We = { key: 2 }, U = /* @__PURE__ */ d({
|
|
216
216
|
__name: "BaseButton",
|
|
217
217
|
props: {
|
|
218
218
|
description: {
|
|
@@ -222,7 +222,7 @@ var Ee = [
|
|
|
222
222
|
color: {
|
|
223
223
|
type: String,
|
|
224
224
|
required: !1,
|
|
225
|
-
default:
|
|
225
|
+
default: R.BLUE
|
|
226
226
|
},
|
|
227
227
|
to: {
|
|
228
228
|
type: String,
|
|
@@ -266,297 +266,297 @@ var Ee = [
|
|
|
266
266
|
}
|
|
267
267
|
},
|
|
268
268
|
setup(e) {
|
|
269
|
-
let { isDark: t } =
|
|
270
|
-
function
|
|
269
|
+
let { isDark: t } = H(), n = e;
|
|
270
|
+
function r() {
|
|
271
271
|
let e = {
|
|
272
|
-
[
|
|
272
|
+
[R.BLUE]: {
|
|
273
273
|
light: "text-blue-700 border-blue-300 hover:bg-blue-50",
|
|
274
274
|
dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
|
|
275
275
|
},
|
|
276
|
-
[
|
|
276
|
+
[R.GREEN]: {
|
|
277
277
|
light: "text-green-700 border-green-300 hover:bg-green-50",
|
|
278
278
|
dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
|
|
279
279
|
},
|
|
280
|
-
[
|
|
280
|
+
[R.EMERALD]: {
|
|
281
281
|
light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
|
|
282
282
|
dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
|
|
283
283
|
},
|
|
284
|
-
[
|
|
284
|
+
[R.RED]: {
|
|
285
285
|
light: "text-red-700 border-red-300 hover:bg-red-50",
|
|
286
286
|
dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
|
|
287
287
|
},
|
|
288
|
-
[
|
|
288
|
+
[R.YELLOW]: {
|
|
289
289
|
light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
|
|
290
290
|
dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
|
|
291
291
|
},
|
|
292
|
-
[
|
|
292
|
+
[R.PURPLE]: {
|
|
293
293
|
light: "text-purple-700 border-purple-300 hover:bg-purple-50",
|
|
294
294
|
dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
|
|
295
295
|
},
|
|
296
|
-
[
|
|
296
|
+
[R.SKY]: {
|
|
297
297
|
light: "text-sky-700 border-sky-300 hover:bg-sky-50",
|
|
298
298
|
dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
|
|
299
299
|
},
|
|
300
|
-
[
|
|
300
|
+
[R.AMBER]: {
|
|
301
301
|
light: "text-amber-700 border-amber-300 hover:bg-amber-50",
|
|
302
302
|
dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
|
|
303
303
|
},
|
|
304
|
-
[
|
|
304
|
+
[R.GRAY]: {
|
|
305
305
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
306
306
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
307
307
|
},
|
|
308
|
-
[
|
|
308
|
+
[R.DARK]: {
|
|
309
309
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
310
310
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
311
311
|
},
|
|
312
|
-
[
|
|
312
|
+
[R.WHITE]: {
|
|
313
313
|
light: "text-gray-700 border-gray-300 hover:bg-gray-50",
|
|
314
314
|
dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
|
|
315
315
|
}
|
|
316
|
-
}, r = e[n.color] ?? e[
|
|
316
|
+
}, r = e[n.color] ?? e[R.BLUE], i = t.value ? r.dark : r.light;
|
|
317
317
|
return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none border bg-transparent ${i}`;
|
|
318
318
|
}
|
|
319
319
|
function c() {
|
|
320
320
|
let e = {
|
|
321
|
-
[
|
|
321
|
+
[R.BLUE]: {
|
|
322
322
|
light: "text-blue-600 hover:bg-blue-50",
|
|
323
323
|
dark: "text-blue-400 hover:bg-blue-500/10"
|
|
324
324
|
},
|
|
325
|
-
[
|
|
325
|
+
[R.GREEN]: {
|
|
326
326
|
light: "text-green-600 hover:bg-green-50",
|
|
327
327
|
dark: "text-green-400 hover:bg-green-500/10"
|
|
328
328
|
},
|
|
329
|
-
[
|
|
329
|
+
[R.EMERALD]: {
|
|
330
330
|
light: "text-emerald-600 hover:bg-emerald-50",
|
|
331
331
|
dark: "text-emerald-400 hover:bg-emerald-500/10"
|
|
332
332
|
},
|
|
333
|
-
[
|
|
333
|
+
[R.SKY]: {
|
|
334
334
|
light: "text-sky-600 hover:bg-sky-50",
|
|
335
335
|
dark: "text-sky-400 hover:bg-sky-500/10"
|
|
336
336
|
},
|
|
337
|
-
[
|
|
337
|
+
[R.RED]: {
|
|
338
338
|
light: "text-red-500 hover:bg-red-50",
|
|
339
339
|
dark: "text-red-400 hover:bg-red-500/10"
|
|
340
340
|
},
|
|
341
|
-
[
|
|
341
|
+
[R.AMBER]: {
|
|
342
342
|
light: "text-amber-700 hover:bg-amber-50",
|
|
343
343
|
dark: "text-amber-300 hover:bg-amber-500/10"
|
|
344
344
|
},
|
|
345
|
-
[
|
|
345
|
+
[R.YELLOW]: {
|
|
346
346
|
light: "text-yellow-600 hover:bg-yellow-50",
|
|
347
347
|
dark: "text-yellow-400 hover:bg-yellow-500/10"
|
|
348
348
|
},
|
|
349
|
-
[
|
|
349
|
+
[R.PURPLE]: {
|
|
350
350
|
light: "text-purple-600 hover:bg-purple-50",
|
|
351
351
|
dark: "text-purple-400 hover:bg-purple-500/10"
|
|
352
352
|
},
|
|
353
|
-
[
|
|
353
|
+
[R.GRAY]: {
|
|
354
354
|
light: "text-gray-500 hover:bg-gray-100",
|
|
355
355
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
356
356
|
},
|
|
357
|
-
[
|
|
357
|
+
[R.DARK]: {
|
|
358
358
|
light: "text-gray-500 hover:bg-gray-100",
|
|
359
359
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
360
360
|
},
|
|
361
|
-
[
|
|
361
|
+
[R.WHITE]: {
|
|
362
362
|
light: "text-gray-500 hover:bg-gray-100",
|
|
363
363
|
dark: "text-gray-400 hover:bg-gray-800"
|
|
364
364
|
}
|
|
365
|
-
}, r = e[n.color] ?? e[
|
|
365
|
+
}, r = e[n.color] ?? e[R.GRAY], i = t.value ? r.dark : r.light;
|
|
366
366
|
return n.isDisable || n.isLoading ? `bg-transparent ${i} opacity-60 cursor-not-allowed` : `focus:outline-none bg-transparent ${i} cursor-pointer`;
|
|
367
367
|
}
|
|
368
368
|
function l() {
|
|
369
369
|
let e = n.isDisable || n.isLoading, t;
|
|
370
370
|
switch (n.color) {
|
|
371
|
-
case
|
|
371
|
+
case R.BLUE:
|
|
372
372
|
t = 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
373
|
break;
|
|
374
|
-
case
|
|
374
|
+
case R.WHITE:
|
|
375
375
|
t = 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";
|
|
376
376
|
break;
|
|
377
|
-
case
|
|
377
|
+
case R.DARK:
|
|
378
378
|
t = 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";
|
|
379
379
|
break;
|
|
380
|
-
case
|
|
380
|
+
case R.GREEN:
|
|
381
381
|
t = 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";
|
|
382
382
|
break;
|
|
383
|
-
case
|
|
383
|
+
case R.EMERALD:
|
|
384
384
|
t = 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";
|
|
385
385
|
break;
|
|
386
|
-
case
|
|
386
|
+
case R.RED:
|
|
387
387
|
t = 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";
|
|
388
388
|
break;
|
|
389
|
-
case
|
|
389
|
+
case R.YELLOW:
|
|
390
390
|
t = 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";
|
|
391
391
|
break;
|
|
392
|
-
case
|
|
392
|
+
case R.PURPLE:
|
|
393
393
|
t = 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";
|
|
394
394
|
break;
|
|
395
|
-
case
|
|
395
|
+
case R.SKY:
|
|
396
396
|
t = 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";
|
|
397
397
|
break;
|
|
398
|
-
case
|
|
398
|
+
case R.AMBER:
|
|
399
399
|
t = 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";
|
|
400
400
|
break;
|
|
401
|
-
case
|
|
401
|
+
case R.GRAY:
|
|
402
402
|
t = 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";
|
|
403
403
|
break;
|
|
404
404
|
default:
|
|
405
405
|
t = 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";
|
|
406
406
|
break;
|
|
407
407
|
}
|
|
408
|
-
n.outline && (t =
|
|
409
|
-
let
|
|
408
|
+
n.outline && (t = r()), n.ghost && (t = c());
|
|
409
|
+
let i = "px-5 py-2.5 mr-2 mb-2 text-sm";
|
|
410
410
|
switch (n.size) {
|
|
411
|
-
case
|
|
412
|
-
|
|
411
|
+
case z.EXTRA_SMALL:
|
|
412
|
+
i = "px-3 py-2 text-xs";
|
|
413
413
|
break;
|
|
414
|
-
case
|
|
415
|
-
|
|
414
|
+
case z.SMALL:
|
|
415
|
+
i = "px-3 py-2 text-sm";
|
|
416
416
|
break;
|
|
417
|
-
case
|
|
418
|
-
|
|
417
|
+
case z.BASE:
|
|
418
|
+
i = "px-5 py-2.5 text-sm";
|
|
419
419
|
break;
|
|
420
|
-
case
|
|
421
|
-
|
|
420
|
+
case z.LARGE:
|
|
421
|
+
i = "px-5 py-3 text-base";
|
|
422
422
|
break;
|
|
423
|
-
case
|
|
424
|
-
|
|
423
|
+
case z.EXTRA_LARGE:
|
|
424
|
+
i = "px-6 py-3.5 text-base";
|
|
425
425
|
break;
|
|
426
426
|
}
|
|
427
|
-
let
|
|
428
|
-
return n.isRounded && (
|
|
427
|
+
let a = "rounded-lg";
|
|
428
|
+
return n.isRounded && (a = "rounded-full"), "inline-flex items-center " + i + " " + t + " font-medium " + a;
|
|
429
429
|
}
|
|
430
|
-
return (t,
|
|
431
|
-
let c =
|
|
432
|
-
return e.to ? (
|
|
430
|
+
return (t, r) => {
|
|
431
|
+
let c = C("router-link");
|
|
432
|
+
return e.to ? (y(), i(c, {
|
|
433
433
|
key: 0,
|
|
434
434
|
to: e.to,
|
|
435
435
|
custom: ""
|
|
436
436
|
}, {
|
|
437
|
-
default:
|
|
437
|
+
default: M(({ navigate: i }) => [s("button", {
|
|
438
438
|
type: n.type,
|
|
439
|
-
class:
|
|
439
|
+
class: m(l()),
|
|
440
440
|
disabled: e.isDisable || e.isLoading,
|
|
441
|
-
onClick:
|
|
441
|
+
onClick: i
|
|
442
442
|
}, [
|
|
443
|
-
e.isLoading ? (
|
|
443
|
+
e.isLoading ? (y(), o("div", Re, [...r[0] ||= [s("svg", {
|
|
444
444
|
"aria-hidden": "true",
|
|
445
445
|
role: "status",
|
|
446
446
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
447
447
|
viewBox: "0 0 100 101",
|
|
448
448
|
fill: "none",
|
|
449
449
|
xmlns: "http://www.w3.org/2000/svg"
|
|
450
|
-
}, [
|
|
450
|
+
}, [s("path", {
|
|
451
451
|
d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
|
|
452
452
|
fill: "#E5E7EB"
|
|
453
|
-
}),
|
|
453
|
+
}), s("path", {
|
|
454
454
|
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",
|
|
455
455
|
fill: "currentColor"
|
|
456
|
-
})], -1)]])) :
|
|
457
|
-
e.iconLeft ?
|
|
458
|
-
|
|
459
|
-
e.iconLeft ? (
|
|
460
|
-
], 10,
|
|
456
|
+
})], -1)]])) : a("", !0),
|
|
457
|
+
e.iconLeft ? a("", !0) : (y(), o("span", ze, T(e.description), 1)),
|
|
458
|
+
S(t.$slots, "default"),
|
|
459
|
+
e.iconLeft ? (y(), o("span", Be, T(e.description), 1)) : a("", !0)
|
|
460
|
+
], 10, Le)]),
|
|
461
461
|
_: 3
|
|
462
|
-
}, 8, ["to"])) : (
|
|
462
|
+
}, 8, ["to"])) : (y(), o("button", {
|
|
463
463
|
key: 1,
|
|
464
464
|
type: n.type,
|
|
465
|
-
class:
|
|
465
|
+
class: m(l()),
|
|
466
466
|
disabled: e.isDisable || e.isLoading
|
|
467
467
|
}, [
|
|
468
|
-
e.isLoading ? (
|
|
468
|
+
e.isLoading ? (y(), o("div", He, [...r[1] ||= [s("svg", {
|
|
469
469
|
"aria-hidden": "true",
|
|
470
470
|
role: "status",
|
|
471
471
|
class: "inline w-4 h-4 me-3 animate-spin",
|
|
472
472
|
viewBox: "0 0 100 101",
|
|
473
473
|
fill: "none",
|
|
474
474
|
xmlns: "http://www.w3.org/2000/svg"
|
|
475
|
-
}, [
|
|
475
|
+
}, [s("path", {
|
|
476
476
|
d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
|
|
477
477
|
fill: "#E5E7EB"
|
|
478
|
-
}),
|
|
478
|
+
}), s("path", {
|
|
479
479
|
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",
|
|
480
480
|
fill: "currentColor"
|
|
481
|
-
})], -1)]])) :
|
|
482
|
-
e.iconLeft ?
|
|
483
|
-
|
|
484
|
-
e.iconLeft ? (
|
|
485
|
-
], 10,
|
|
481
|
+
})], -1)]])) : a("", !0),
|
|
482
|
+
e.iconLeft ? a("", !0) : (y(), o("span", Ue, T(e.description), 1)),
|
|
483
|
+
S(t.$slots, "default"),
|
|
484
|
+
e.iconLeft ? (y(), o("span", We, T(e.description), 1)) : a("", !0)
|
|
485
|
+
], 10, Ve));
|
|
486
486
|
};
|
|
487
487
|
}
|
|
488
|
-
}),
|
|
488
|
+
}), W = /* @__PURE__ */ function(e) {
|
|
489
489
|
return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
|
|
490
|
-
}({}),
|
|
490
|
+
}({}), Ge = {
|
|
491
491
|
key: 0,
|
|
492
492
|
class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
|
|
493
|
-
},
|
|
493
|
+
}, Ke = {
|
|
494
494
|
key: 1,
|
|
495
495
|
class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
|
|
496
|
-
},
|
|
496
|
+
}, qe = {
|
|
497
497
|
key: 2,
|
|
498
498
|
class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
|
|
499
|
-
},
|
|
499
|
+
}, Je = /* @__PURE__ */ d({
|
|
500
500
|
__name: "BaseLine",
|
|
501
501
|
props: { mode: {
|
|
502
502
|
type: String,
|
|
503
503
|
required: !1,
|
|
504
|
-
default:
|
|
504
|
+
default: W.BASE
|
|
505
505
|
} },
|
|
506
506
|
setup(t) {
|
|
507
|
-
return (n, r) => (
|
|
508
|
-
t.mode ===
|
|
509
|
-
t.mode ===
|
|
510
|
-
t.mode ===
|
|
507
|
+
return (n, r) => (y(), o(e, null, [
|
|
508
|
+
t.mode === E(W).BASE ? (y(), o("hr", Ge)) : a("", !0),
|
|
509
|
+
t.mode === E(W).BASE_SHORTER ? (y(), o("hr", Ke)) : a("", !0),
|
|
510
|
+
t.mode === E(W).SQUARE ? (y(), o("hr", qe)) : a("", !0)
|
|
511
511
|
], 64));
|
|
512
512
|
}
|
|
513
|
-
}),
|
|
513
|
+
}), G = /* @__PURE__ */ function(e) {
|
|
514
514
|
return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
|
|
515
|
-
}({}),
|
|
515
|
+
}({}), Ye = G, Xe = ["height", "width"], Ze = /* @__PURE__ */ d({
|
|
516
516
|
__name: "BaseLogo",
|
|
517
517
|
props: { size: {
|
|
518
518
|
type: String,
|
|
519
519
|
required: !1,
|
|
520
|
-
default:
|
|
520
|
+
default: G.MEDIUM
|
|
521
521
|
} },
|
|
522
522
|
setup(e) {
|
|
523
523
|
let t = e;
|
|
524
524
|
function n() {
|
|
525
525
|
let e = "";
|
|
526
526
|
switch (t.size) {
|
|
527
|
-
case
|
|
527
|
+
case G.SMALL:
|
|
528
528
|
e = "50px";
|
|
529
529
|
break;
|
|
530
|
-
case
|
|
530
|
+
case G.MEDIUM:
|
|
531
531
|
e = "100px";
|
|
532
532
|
break;
|
|
533
|
-
case
|
|
533
|
+
case G.LARGE:
|
|
534
534
|
e = "150px";
|
|
535
535
|
break;
|
|
536
536
|
}
|
|
537
537
|
return e;
|
|
538
538
|
}
|
|
539
539
|
return (e, t) => {
|
|
540
|
-
let
|
|
541
|
-
return
|
|
540
|
+
let r = C("router-link");
|
|
541
|
+
return y(), i(r, {
|
|
542
542
|
to: "/",
|
|
543
543
|
class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
|
|
544
544
|
}, {
|
|
545
|
-
default:
|
|
545
|
+
default: M(() => [(y(), o("svg", {
|
|
546
546
|
height: n(),
|
|
547
547
|
width: n(),
|
|
548
548
|
viewBox: "33.6 130.6 499.7 242.9",
|
|
549
549
|
xmlns: "http://www.w3.org/2000/svg",
|
|
550
550
|
"xmlns:xlink": "http://www.w3.org/1999/xlink"
|
|
551
551
|
}, [...t[0] ||= [
|
|
552
|
-
|
|
552
|
+
s("linearGradient", { id: "a" }, [s("stop", {
|
|
553
553
|
offset: ".085",
|
|
554
554
|
"stop-color": "#469e43"
|
|
555
|
-
}),
|
|
555
|
+
}), s("stop", {
|
|
556
556
|
offset: "1",
|
|
557
557
|
"stop-color": "#132d13"
|
|
558
558
|
})], -1),
|
|
559
|
-
|
|
559
|
+
s("linearGradient", {
|
|
560
560
|
id: "b",
|
|
561
561
|
gradientUnits: "userSpaceOnUse",
|
|
562
562
|
x1: "64.863",
|
|
@@ -565,7 +565,7 @@ var Ee = [
|
|
|
565
565
|
y1: "288.291",
|
|
566
566
|
y2: "369.4"
|
|
567
567
|
}, null, -1),
|
|
568
|
-
|
|
568
|
+
s("linearGradient", {
|
|
569
569
|
id: "c",
|
|
570
570
|
gradientUnits: "userSpaceOnUse",
|
|
571
571
|
x1: "138.367",
|
|
@@ -574,7 +574,7 @@ var Ee = [
|
|
|
574
574
|
y1: "308.454",
|
|
575
575
|
y2: "370.601"
|
|
576
576
|
}, null, -1),
|
|
577
|
-
|
|
577
|
+
s("linearGradient", {
|
|
578
578
|
id: "d",
|
|
579
579
|
gradientUnits: "userSpaceOnUse",
|
|
580
580
|
x1: "195.475",
|
|
@@ -583,7 +583,7 @@ var Ee = [
|
|
|
583
583
|
y1: "288.291",
|
|
584
584
|
y2: "369.85"
|
|
585
585
|
}, null, -1),
|
|
586
|
-
|
|
586
|
+
s("linearGradient", {
|
|
587
587
|
id: "e",
|
|
588
588
|
gradientUnits: "userSpaceOnUse",
|
|
589
589
|
x1: "249.634",
|
|
@@ -592,7 +592,7 @@ var Ee = [
|
|
|
592
592
|
y1: "307.312",
|
|
593
593
|
y2: "369.511"
|
|
594
594
|
}, null, -1),
|
|
595
|
-
|
|
595
|
+
s("linearGradient", {
|
|
596
596
|
id: "f",
|
|
597
597
|
gradientUnits: "userSpaceOnUse",
|
|
598
598
|
x1: "302.884",
|
|
@@ -601,7 +601,7 @@ var Ee = [
|
|
|
601
601
|
y1: "288.291",
|
|
602
602
|
y2: "367.857"
|
|
603
603
|
}, null, -1),
|
|
604
|
-
|
|
604
|
+
s("linearGradient", {
|
|
605
605
|
id: "g",
|
|
606
606
|
gradientUnits: "userSpaceOnUse",
|
|
607
607
|
x1: "354.118",
|
|
@@ -610,7 +610,7 @@ var Ee = [
|
|
|
610
610
|
y1: "307.312",
|
|
611
611
|
y2: "369.511"
|
|
612
612
|
}, null, -1),
|
|
613
|
-
|
|
613
|
+
s("linearGradient", {
|
|
614
614
|
id: "h",
|
|
615
615
|
gradientUnits: "userSpaceOnUse",
|
|
616
616
|
x1: "428.02",
|
|
@@ -619,7 +619,7 @@ var Ee = [
|
|
|
619
619
|
y1: "306.156",
|
|
620
620
|
y2: "367.742"
|
|
621
621
|
}, null, -1),
|
|
622
|
-
|
|
622
|
+
s("linearGradient", {
|
|
623
623
|
id: "i",
|
|
624
624
|
gradientUnits: "userSpaceOnUse",
|
|
625
625
|
x1: "502.066",
|
|
@@ -628,7 +628,7 @@ var Ee = [
|
|
|
628
628
|
y1: "288.291",
|
|
629
629
|
y2: "369.4"
|
|
630
630
|
}, null, -1),
|
|
631
|
-
|
|
631
|
+
s("linearGradient", {
|
|
632
632
|
id: "j",
|
|
633
633
|
gradientUnits: "userSpaceOnUse",
|
|
634
634
|
x1: "283.264",
|
|
@@ -637,78 +637,78 @@ var Ee = [
|
|
|
637
637
|
y1: "131.629",
|
|
638
638
|
y2: "232.559"
|
|
639
639
|
}, null, -1),
|
|
640
|
-
|
|
640
|
+
s("linearGradient", {
|
|
641
641
|
id: "k",
|
|
642
642
|
gradientUnits: "userSpaceOnUse",
|
|
643
643
|
x1: "283.46",
|
|
644
644
|
x2: "283.46",
|
|
645
645
|
y1: "202.275",
|
|
646
646
|
y2: "183.785"
|
|
647
|
-
}, [
|
|
647
|
+
}, [s("stop", {
|
|
648
648
|
offset: "0",
|
|
649
649
|
"stop-color": "#969799",
|
|
650
650
|
"stop-opacity": "0"
|
|
651
|
-
}),
|
|
651
|
+
}), s("stop", {
|
|
652
652
|
offset: "1",
|
|
653
653
|
"stop-color": "#808183"
|
|
654
654
|
})], -1),
|
|
655
|
-
|
|
655
|
+
s("path", {
|
|
656
656
|
d: "m65 307.2c-6.8 0-13.1 2.2-18.2 5.9v-24.8h-13.2v81.1h31.4c17.2 0 31.1-13.9 31.1-31.1s-13.9-31.1-31.1-31.1zm0 49.3h-18.2v-18.2c0-10.1 8.2-18.2 18.2-18.2 10.1 0 18.2 8.2 18.2 18.2.1 10.1-8.1 18.2-18.2 18.2z",
|
|
657
657
|
fill: "url(#b)"
|
|
658
658
|
}, null, -1),
|
|
659
|
-
|
|
659
|
+
s("path", {
|
|
660
660
|
d: "m168.8 343.9h-46.7c1.4 7.1 6.6 12 14.1 12.7 6.4.6 12.9.1 19.9.1v11.9c-15.2 4.9-33.3.5-42.1-10.4-3.8-4.7-17.3-34.7 11.5-47.4 39-11.4 45.3 22.4 43.3 33.1zm-14.2-12.7c-1.7-8.1-8.8-12.9-17.9-12.3-7.6.5-14 5.8-14.5 12.3z",
|
|
661
661
|
fill: "url(#c)"
|
|
662
662
|
}, null, -1),
|
|
663
|
-
|
|
663
|
+
s("path", {
|
|
664
664
|
d: "m195.5 320.2c0 10.5-.2 20 .1 29.6.2 5.8 4.4 8.4 13.2 8.6v10.5c-13.8 3.9-26.2-4.5-26.4-18-.2-18.7-.1-43.9-.1-62.6h14.1l-.3 18.5 12.7-.1v13.4h-13.3z",
|
|
665
665
|
fill: "url(#d)"
|
|
666
666
|
}, null, -1),
|
|
667
|
-
|
|
667
|
+
s("path", {
|
|
668
668
|
d: "m249.6 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
|
|
669
669
|
fill: "url(#e)"
|
|
670
670
|
}, null, -1),
|
|
671
|
-
|
|
671
|
+
s("path", {
|
|
672
672
|
d: "m296.4 288.3h13v79.6h-13z",
|
|
673
673
|
fill: "url(#f)"
|
|
674
674
|
}, null, -1),
|
|
675
|
-
|
|
675
|
+
s("path", {
|
|
676
676
|
d: "m354.1 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
|
|
677
677
|
fill: "url(#g)"
|
|
678
678
|
}, null, -1),
|
|
679
|
-
|
|
679
|
+
s("path", {
|
|
680
680
|
d: "m442.2 367.7c0-12.3.2-23.6 0-34.9-.2-3.4-3.6-13.8-14.1-13.4-10.3-.3-14.4 10-14.3 12.7.1 10.2.5 35.1.5 35.1l-13.6.1s-.3-25.7.2-36.2c.6-14.1 12.7-25 27.5-25 14.7 0 26.2 10.4 26.7 24.9.4 10.4.5 36.3.5 36.3z",
|
|
681
681
|
fill: "url(#h)"
|
|
682
682
|
}, null, -1),
|
|
683
|
-
|
|
683
|
+
s("path", {
|
|
684
684
|
d: "m501.9 307.2c6.8 0 13.1 2.2 18.2 5.9v-24.8h13.2v81.1h-31.4c-17.2 0-31.1-13.9-31.1-31.1s13.9-31.1 31.1-31.1zm0 49.3h18.2v-18.2c0-10.1-8.2-18.2-18.2-18.2-10.1 0-18.2 8.2-18.2 18.2 0 10.1 8.1 18.2 18.2 18.2z",
|
|
685
685
|
fill: "url(#i)"
|
|
686
686
|
}, null, -1),
|
|
687
|
-
|
|
687
|
+
s("path", {
|
|
688
688
|
d: "m309.2 180.6h-24v-24c0-12.6 10.2-24.1 22.8-25 14.8-1 27.1 11.3 26.1 26.1-.8 12.7-12.3 22.9-24.9 22.9zm-50.7-48.9c-14.8-1-27.1 11.3-26.1 26.1.8 12.6 12.4 22.8 25 22.8h23.9v-24c0-12.6-10.3-24.1-22.8-24.9zm50.7 51.9h-24v23.9c0 12.6 10.2 24.1 22.8 25 14.8 1 27.1-11.3 26.1-26.1-.8-12.6-12.3-22.8-24.9-22.8zm-52.4 0c-14 0-25.3 11.8-24.4 26 .8 12.2 10.7 22.1 22.9 22.9 14.2.9 26-10.4 26-24.4v-24.5z",
|
|
689
689
|
fill: "url(#j)"
|
|
690
690
|
}, null, -1),
|
|
691
|
-
|
|
691
|
+
s("path", {
|
|
692
692
|
d: "m281.7 183.8h3.6v18.5h-3.6z",
|
|
693
693
|
fill: "url(#k)"
|
|
694
694
|
}, null, -1)
|
|
695
|
-
]], 8,
|
|
695
|
+
]], 8, Xe))]),
|
|
696
696
|
_: 1
|
|
697
697
|
});
|
|
698
698
|
};
|
|
699
699
|
}
|
|
700
|
-
}),
|
|
700
|
+
}), Qe = /* @__PURE__ */ function(e) {
|
|
701
701
|
return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
|
|
702
|
-
}({}),
|
|
702
|
+
}({}), $e = {
|
|
703
703
|
key: 0,
|
|
704
704
|
class: "p-6 text-center"
|
|
705
|
-
},
|
|
705
|
+
}, et = { class: "flex justify-center" }, tt = {
|
|
706
706
|
key: 1,
|
|
707
707
|
class: "p-6 text-center"
|
|
708
|
-
},
|
|
708
|
+
}, nt = {
|
|
709
709
|
key: 0,
|
|
710
710
|
class: "mb-5 text-sm text-gray-500"
|
|
711
|
-
},
|
|
711
|
+
}, rt = { class: "flex justify-center" }, it = /* @__PURE__ */ d({
|
|
712
712
|
__name: "BaseModal",
|
|
713
713
|
props: {
|
|
714
714
|
title: {
|
|
@@ -727,58 +727,58 @@ var Ee = [
|
|
|
727
727
|
mode: {
|
|
728
728
|
type: String,
|
|
729
729
|
required: !1,
|
|
730
|
-
default:
|
|
730
|
+
default: Qe.SUCCESS
|
|
731
731
|
}
|
|
732
732
|
},
|
|
733
733
|
emits: ["closeModal", "confirmModal"],
|
|
734
734
|
setup(t, { emit: n }) {
|
|
735
|
-
let r = n,
|
|
736
|
-
function
|
|
735
|
+
let r = n, i = `modal-title-${Math.random().toString(36).slice(2, 9)}`;
|
|
736
|
+
function c(e) {
|
|
737
737
|
e.key === "Escape" && r("closeModal");
|
|
738
738
|
}
|
|
739
|
-
return
|
|
740
|
-
document.addEventListener("keydown",
|
|
741
|
-
}),
|
|
742
|
-
document.removeEventListener("keydown",
|
|
743
|
-
}), (n, r) => (
|
|
739
|
+
return g(() => {
|
|
740
|
+
document.addEventListener("keydown", c);
|
|
741
|
+
}), v(() => {
|
|
742
|
+
document.removeEventListener("keydown", c);
|
|
743
|
+
}), (n, r) => (y(), o(e, null, [s("div", {
|
|
744
744
|
class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
|
|
745
745
|
onClick: r[0] ||= (e) => n.$emit("closeModal")
|
|
746
|
-
}),
|
|
746
|
+
}), s("div", {
|
|
747
747
|
class: "fixed top-[20vh] left-1/2 -translate-x-1/2 w-96 z-50 rounded-xl shadow-lg bg-white overflow-hidden",
|
|
748
748
|
role: "dialog",
|
|
749
749
|
"aria-modal": "true",
|
|
750
|
-
"aria-labelledby":
|
|
751
|
-
}, [t.mode ===
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
id:
|
|
750
|
+
"aria-labelledby": i
|
|
751
|
+
}, [t.mode === E(Qe).DELETE ? (y(), o("div", $e, [
|
|
752
|
+
u(E(fe), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
|
|
753
|
+
s("h3", {
|
|
754
|
+
id: i,
|
|
755
755
|
class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
|
|
756
|
-
}, " Are you sure you want to delete this " +
|
|
757
|
-
|
|
758
|
-
color:
|
|
756
|
+
}, " Are you sure you want to delete this " + T(t.title) + "? ", 1),
|
|
757
|
+
s("div", et, [u(U, {
|
|
758
|
+
color: E(R).RED,
|
|
759
759
|
onClick: r[1] ||= (e) => n.$emit("confirmModal"),
|
|
760
760
|
description: "Yes, I'm sure"
|
|
761
|
-
}, null, 8, ["color"]),
|
|
762
|
-
color:
|
|
761
|
+
}, null, 8, ["color"]), u(U, {
|
|
762
|
+
color: E(R).WHITE,
|
|
763
763
|
onClick: r[2] ||= (e) => n.$emit("closeModal"),
|
|
764
764
|
description: "No, cancel"
|
|
765
765
|
}, null, 8, ["color"])])
|
|
766
|
-
])) : (
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
id:
|
|
766
|
+
])) : (y(), o("div", tt, [
|
|
767
|
+
u(E(ae), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
|
|
768
|
+
s("h3", {
|
|
769
|
+
id: i,
|
|
770
770
|
class: "mb-2 text-lg font-medium text-gray-900"
|
|
771
|
-
},
|
|
772
|
-
t.description ? (
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
color:
|
|
771
|
+
}, T(t.title), 1),
|
|
772
|
+
t.description ? (y(), o("p", nt, T(t.description), 1)) : a("", !0),
|
|
773
|
+
S(n.$slots, "default"),
|
|
774
|
+
s("div", rt, [u(U, {
|
|
775
|
+
color: E(R).BLUE,
|
|
776
776
|
onClick: r[3] ||= (e) => n.$emit("closeModal"),
|
|
777
777
|
description: "OK"
|
|
778
778
|
}, null, 8, ["color"])])
|
|
779
779
|
]))])], 64));
|
|
780
780
|
}
|
|
781
|
-
}),
|
|
781
|
+
}), at = /* @__PURE__ */ d({
|
|
782
782
|
__name: "BaseRow",
|
|
783
783
|
props: { bgColor: {
|
|
784
784
|
type: String,
|
|
@@ -790,21 +790,21 @@ var Ee = [
|
|
|
790
790
|
function n() {
|
|
791
791
|
return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
|
|
792
792
|
}
|
|
793
|
-
return (e, t) => (
|
|
793
|
+
return (e, t) => (y(), o("div", { class: m(n()) }, [S(e.$slots, "default")], 2));
|
|
794
794
|
}
|
|
795
|
-
}),
|
|
795
|
+
}), ot = /* @__PURE__ */ d({
|
|
796
796
|
__name: "BaseSpinner",
|
|
797
797
|
props: {
|
|
798
798
|
size: { default: "sm" },
|
|
799
799
|
color: { default: "blue" }
|
|
800
800
|
},
|
|
801
801
|
setup(e) {
|
|
802
|
-
let t = e,
|
|
802
|
+
let t = e, n = r(() => ({
|
|
803
803
|
sm: "w-4 h-4 border-2",
|
|
804
804
|
md: "w-6 h-6 border-2",
|
|
805
805
|
lg: "w-8 h-8 border-4",
|
|
806
806
|
xl: "w-12 h-12 border-4"
|
|
807
|
-
})[t.size]), i =
|
|
807
|
+
})[t.size]), i = r(() => ({
|
|
808
808
|
blue: "border-t-blue-500",
|
|
809
809
|
emerald: "border-t-emerald-500",
|
|
810
810
|
sky: "border-t-sky-500",
|
|
@@ -814,17 +814,17 @@ var Ee = [
|
|
|
814
814
|
red: "border-t-red-500",
|
|
815
815
|
amber: "border-t-amber-500"
|
|
816
816
|
})[t.color]);
|
|
817
|
-
return (e, t) => (
|
|
818
|
-
class:
|
|
817
|
+
return (e, t) => (y(), o("div", {
|
|
818
|
+
class: m(["border-gray-200 rounded-full animate-spin", [n.value, i.value]]),
|
|
819
819
|
role: "status",
|
|
820
820
|
"aria-label": "Loading"
|
|
821
821
|
}, null, 2));
|
|
822
822
|
}
|
|
823
|
-
}),
|
|
823
|
+
}), K = /* @__PURE__ */ function(e) {
|
|
824
824
|
return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
|
|
825
|
-
}({}),
|
|
825
|
+
}({}), q = /* @__PURE__ */ function(e) {
|
|
826
826
|
return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
|
|
827
|
-
}({}),
|
|
827
|
+
}({}), st = { 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" }, ct = { class: "ml-3 text-sm font-normal" }, lt = /* @__PURE__ */ d({
|
|
828
828
|
__name: "BaseToast",
|
|
829
829
|
props: {
|
|
830
830
|
mode: {
|
|
@@ -843,7 +843,7 @@ var Ee = [
|
|
|
843
843
|
positioning: {
|
|
844
844
|
type: String,
|
|
845
845
|
required: !1,
|
|
846
|
-
default:
|
|
846
|
+
default: q.TOP_RIGHT
|
|
847
847
|
},
|
|
848
848
|
duration: {
|
|
849
849
|
type: Number,
|
|
@@ -852,25 +852,25 @@ var Ee = [
|
|
|
852
852
|
}
|
|
853
853
|
},
|
|
854
854
|
setup(e) {
|
|
855
|
-
let t = e, n =
|
|
856
|
-
function
|
|
855
|
+
let t = e, n = b(!0), r = null;
|
|
856
|
+
function i() {
|
|
857
857
|
n.value = !1, r &&= (clearTimeout(r), null);
|
|
858
858
|
}
|
|
859
|
-
|
|
859
|
+
g(() => {
|
|
860
860
|
r = setTimeout(() => n.value = !1, t.duration);
|
|
861
|
-
}),
|
|
861
|
+
}), v(() => {
|
|
862
862
|
r && clearTimeout(r);
|
|
863
863
|
});
|
|
864
|
-
function
|
|
864
|
+
function c() {
|
|
865
865
|
let e = "";
|
|
866
866
|
switch (t.mode) {
|
|
867
|
-
case
|
|
867
|
+
case K.ERROR:
|
|
868
868
|
e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
|
|
869
869
|
break;
|
|
870
|
-
case
|
|
870
|
+
case K.SUCCESS:
|
|
871
871
|
e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
|
|
872
872
|
break;
|
|
873
|
-
case
|
|
873
|
+
case K.WARNING:
|
|
874
874
|
e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
|
|
875
875
|
break;
|
|
876
876
|
default:
|
|
@@ -879,51 +879,51 @@ var Ee = [
|
|
|
879
879
|
}
|
|
880
880
|
return "inline-flex items-center justify-center flex-shrink-0 w-8 h-8 rounded-lg " + e;
|
|
881
881
|
}
|
|
882
|
-
function
|
|
882
|
+
function l() {
|
|
883
883
|
let e = "top-5 right-5";
|
|
884
884
|
switch (t.positioning) {
|
|
885
|
-
case
|
|
885
|
+
case q.BOTTOM_LEFT:
|
|
886
886
|
e = "bottom-5 left-5";
|
|
887
887
|
break;
|
|
888
|
-
case
|
|
888
|
+
case q.TOP_LEFT:
|
|
889
889
|
e = "top-5 left-5";
|
|
890
890
|
break;
|
|
891
|
-
case
|
|
891
|
+
case q.TOP_RIGHT:
|
|
892
892
|
e = "top-5 right-5";
|
|
893
893
|
break;
|
|
894
|
-
case
|
|
894
|
+
case q.BOTTOM_RIGHT:
|
|
895
895
|
e = "bottom-5 right-5";
|
|
896
896
|
break;
|
|
897
897
|
}
|
|
898
898
|
return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
|
|
899
899
|
}
|
|
900
|
-
return (t, r) => n.value ? (
|
|
900
|
+
return (t, r) => n.value ? (y(), o("div", {
|
|
901
901
|
key: 0,
|
|
902
902
|
id: "toast-top-right",
|
|
903
|
-
class:
|
|
903
|
+
class: m(l()),
|
|
904
904
|
role: "alert"
|
|
905
|
-
}, [
|
|
906
|
-
e.mode ==
|
|
905
|
+
}, [s("div", st, [
|
|
906
|
+
e.mode == E(K).ERROR ? (y(), o("div", {
|
|
907
907
|
key: 0,
|
|
908
|
-
class:
|
|
909
|
-
}, [
|
|
908
|
+
class: m(c())
|
|
909
|
+
}, [u(E(fe), { class: "h-6 w-6 text-red-500" }), r[0] ||= s("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == E(K).SUCCESS ? (y(), o("div", {
|
|
910
910
|
key: 1,
|
|
911
|
-
class:
|
|
912
|
-
}, [
|
|
911
|
+
class: m(c())
|
|
912
|
+
}, [u(E(ae), { class: "h-6 w-6 text-green-500" }), r[1] ||= s("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == E(K).WARNING ? (y(), o("div", {
|
|
913
913
|
key: 2,
|
|
914
|
-
class:
|
|
915
|
-
}, [
|
|
916
|
-
|
|
917
|
-
e.hasCloseIcon ? (
|
|
914
|
+
class: m(c())
|
|
915
|
+
}, [u(E(pe), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= s("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : a("", !0),
|
|
916
|
+
s("div", ct, T(e.description), 1),
|
|
917
|
+
e.hasCloseIcon ? (y(), o("button", {
|
|
918
918
|
key: 3,
|
|
919
919
|
type: "button",
|
|
920
920
|
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",
|
|
921
921
|
"aria-label": "Close",
|
|
922
|
-
onClick:
|
|
923
|
-
}, [r[3] ||=
|
|
924
|
-
])], 2)) :
|
|
922
|
+
onClick: i
|
|
923
|
+
}, [r[3] ||= s("span", { class: "sr-only" }, "Close", -1), u(E(be), { class: "h-6 w-6 text-gray-500" })])) : a("", !0)
|
|
924
|
+
])], 2)) : a("", !0);
|
|
925
925
|
}
|
|
926
|
-
}),
|
|
926
|
+
}), ut = { class: "w-13" }, dt = /* @__PURE__ */ d({
|
|
927
927
|
__name: "ColoredSquares",
|
|
928
928
|
props: { color: {
|
|
929
929
|
type: String,
|
|
@@ -940,29 +940,29 @@ var Ee = [
|
|
|
940
940
|
"bg-yellow-300",
|
|
941
941
|
"bg-purple-300",
|
|
942
942
|
"bg-pink-300"
|
|
943
|
-
], r =
|
|
943
|
+
], r = b(n[Math.floor(Math.random() * n.length)]);
|
|
944
944
|
function i() {
|
|
945
|
-
let e = "
|
|
945
|
+
let e = "gray";
|
|
946
946
|
switch (t.color) {
|
|
947
|
-
case
|
|
948
|
-
|
|
947
|
+
case L.GREEN:
|
|
948
|
+
e = "green";
|
|
949
949
|
break;
|
|
950
|
-
case
|
|
951
|
-
|
|
950
|
+
case L.RED:
|
|
951
|
+
e = "red";
|
|
952
952
|
break;
|
|
953
|
-
case
|
|
954
|
-
|
|
953
|
+
case L.BLUE:
|
|
954
|
+
e = "blue";
|
|
955
955
|
break;
|
|
956
|
-
case
|
|
957
|
-
|
|
956
|
+
case L.YELLOW:
|
|
957
|
+
e = "yellow";
|
|
958
958
|
break;
|
|
959
|
-
case
|
|
959
|
+
case L.NONE: return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full";
|
|
960
960
|
}
|
|
961
|
-
return
|
|
961
|
+
return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full bg-" + e + "-100 text-" + e + "-800";
|
|
962
962
|
}
|
|
963
|
-
return (e, t) => (
|
|
963
|
+
return (e, t) => (y(), o("div", ut, [s("div", { class: m(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [S(e.$slots, "default"), s("div", { class: m(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
|
|
964
964
|
}
|
|
965
|
-
}),
|
|
965
|
+
}), ft = { class: "flex items-start justify-between" }, pt = { class: "text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, mt = /* @__PURE__ */ d({
|
|
966
966
|
__name: "EarningsCard",
|
|
967
967
|
props: {
|
|
968
968
|
title: { default: "TOTAL EARNINGS" },
|
|
@@ -974,7 +974,7 @@ var Ee = [
|
|
|
974
974
|
accent: { default: "orange" }
|
|
975
975
|
},
|
|
976
976
|
setup(e) {
|
|
977
|
-
let t = e,
|
|
977
|
+
let t = e, n = {
|
|
978
978
|
orange: {
|
|
979
979
|
border: "border-orange-300 dark:border-orange-700",
|
|
980
980
|
badge: "bg-orange-100 text-orange-500 dark:bg-orange-900/40 dark:text-orange-400",
|
|
@@ -991,34 +991,34 @@ var Ee = [
|
|
|
991
991
|
iconBox: "bg-emerald-50 dark:bg-emerald-900/30",
|
|
992
992
|
icon: "text-emerald-500"
|
|
993
993
|
}
|
|
994
|
-
},
|
|
994
|
+
}, i = r(() => n[t.accent]), c = r(() => {
|
|
995
995
|
let e = Number.isFinite(t.amount) ? t.amount : 0;
|
|
996
996
|
return t.currency + e.toLocaleString("en-US", {
|
|
997
997
|
minimumFractionDigits: t.decimals,
|
|
998
998
|
maximumFractionDigits: t.decimals
|
|
999
999
|
});
|
|
1000
1000
|
});
|
|
1001
|
-
return (t, n) => (
|
|
1001
|
+
return (t, n) => (y(), o("div", { class: m(["relative rounded-xl border-2 border-dashed bg-white p-6 dark:bg-slate-800", i.value.border]) }, [e.badge ? (y(), o("div", {
|
|
1002
1002
|
key: 0,
|
|
1003
|
-
class:
|
|
1004
|
-
},
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
]),
|
|
1009
|
-
class:
|
|
1003
|
+
class: m(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", i.value.badge])
|
|
1004
|
+
}, T(e.badge), 3)) : a("", !0), s("div", ft, [s("div", null, [
|
|
1005
|
+
s("p", pt, T(e.title), 1),
|
|
1006
|
+
s("p", { class: m(["mt-1 text-4xl font-bold", i.value.amount]) }, T(c.value), 3),
|
|
1007
|
+
s("p", { class: m(["mt-1 text-sm font-medium", i.value.subtitle]) }, T(e.subtitle), 3)
|
|
1008
|
+
]), s("div", { class: m(["mt-6 flex h-12 w-12 items-center justify-center rounded-xl", i.value.iconBox]) }, [(y(), o("svg", {
|
|
1009
|
+
class: m(["h-6 w-6", i.value.icon]),
|
|
1010
1010
|
viewBox: "0 0 24 24",
|
|
1011
1011
|
fill: "none",
|
|
1012
1012
|
stroke: "currentColor",
|
|
1013
1013
|
"stroke-width": "2.5",
|
|
1014
1014
|
"stroke-linecap": "round",
|
|
1015
1015
|
"stroke-linejoin": "round"
|
|
1016
|
-
}, [...n[0] ||= [
|
|
1016
|
+
}, [...n[0] ||= [s("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), s("polyline", { points: "16 7 22 7 22 13" }, null, -1)]], 2))], 2)])], 2));
|
|
1017
1017
|
}
|
|
1018
|
-
}),
|
|
1018
|
+
}), ht = {
|
|
1019
1019
|
key: 0,
|
|
1020
1020
|
class: "font-bold text-green-800"
|
|
1021
|
-
},
|
|
1021
|
+
}, gt = { key: 0 }, _t = { key: 0 }, vt = "font-bold", yt = /* @__PURE__ */ d({
|
|
1022
1022
|
__name: "EuroAmount",
|
|
1023
1023
|
props: {
|
|
1024
1024
|
amount: {
|
|
@@ -1037,16 +1037,16 @@ var Ee = [
|
|
|
1037
1037
|
}
|
|
1038
1038
|
},
|
|
1039
1039
|
setup(t) {
|
|
1040
|
-
let
|
|
1041
|
-
return (n, r) => (
|
|
1040
|
+
let n = t, i = r(() => n.amount !== null && n.amount !== void 0), s = r(() => i.value && n.amount < 0), c = r(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), u = r(() => s.value || c.value), d = r(() => !s.value && !c.value && !(n.beforeAmount === null || n.beforeAmount === void 0));
|
|
1041
|
+
return (n, r) => (y(), o(e, null, [i.value && d.value ? (y(), o("span", ht, [l(T(t.amount) + " ", 1), t.showCurrency ? (y(), o("span", gt, "€")) : a("", !0)])) : a("", !0), i.value && !d.value ? (y(), o("span", {
|
|
1042
1042
|
key: 1,
|
|
1043
|
-
class:
|
|
1044
|
-
}, [
|
|
1043
|
+
class: m([vt, u.value ? "text-red-800" : "text-gray-800"])
|
|
1044
|
+
}, [l(T(t.amount) + " ", 1), t.showCurrency ? (y(), o("span", _t, "€")) : a("", !0)], 2)) : a("", !0)], 64));
|
|
1045
1045
|
}
|
|
1046
|
-
}),
|
|
1046
|
+
}), bt = { class: "flex list-none p-0 m-0" }, xt = ["onClick", "onKeydown"], St = {
|
|
1047
1047
|
key: 1,
|
|
1048
1048
|
class: "inline-block border border-gray-300 rounded-lg p-3 text-black cursor-not-allowed"
|
|
1049
|
-
},
|
|
1049
|
+
}, Ct = /* @__PURE__ */ d({
|
|
1050
1050
|
__name: "Pagination",
|
|
1051
1051
|
props: {
|
|
1052
1052
|
totalItems: {
|
|
@@ -1060,44 +1060,44 @@ var Ee = [
|
|
|
1060
1060
|
},
|
|
1061
1061
|
emits: ["page-changed"],
|
|
1062
1062
|
setup(t, { emit: n }) {
|
|
1063
|
-
let r = t, i =
|
|
1063
|
+
let r = t, i = b(1), a = b(0), c = b([]), l = n;
|
|
1064
1064
|
function u(e) {
|
|
1065
|
-
if (
|
|
1066
|
-
c.value = Array.from({ length:
|
|
1065
|
+
if (a.value <= 5) {
|
|
1066
|
+
c.value = Array.from({ length: a.value }, (e, t) => t + 1);
|
|
1067
1067
|
return;
|
|
1068
1068
|
}
|
|
1069
|
-
let t = [], n = Math.max(1, e - 2), r = Math.min(
|
|
1069
|
+
let t = [], n = Math.max(1, e - 2), r = Math.min(a.value, e + 2);
|
|
1070
1070
|
n > 1 && (t.push(1), n > 2 && t.push(0));
|
|
1071
1071
|
for (let e = n; e <= r; e++) t.push(e);
|
|
1072
|
-
r <
|
|
1072
|
+
r < a.value && (r < a.value - 1 && t.push(0), t.push(a.value)), c.value = t;
|
|
1073
1073
|
}
|
|
1074
1074
|
function d(e) {
|
|
1075
|
-
e === i.value || e < 1 || e >
|
|
1075
|
+
e === i.value || e < 1 || e > a.value || (i.value = e, u(e), l("page-changed", e));
|
|
1076
1076
|
}
|
|
1077
|
-
return
|
|
1078
|
-
|
|
1079
|
-
}, { immediate: !0 }), (t, n) => (
|
|
1077
|
+
return j(() => [r.totalItems, r.itemsPerPage], () => {
|
|
1078
|
+
a.value = Math.ceil(r.totalItems / r.itemsPerPage), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
|
|
1079
|
+
}, { immediate: !0 }), (t, n) => (y(), o("div", null, [s("ul", bt, [(y(!0), o(e, null, x(c.value, (e, t) => (y(), o("li", {
|
|
1080
1080
|
key: t,
|
|
1081
1081
|
class: "mr-1"
|
|
1082
|
-
}, [e === 0 ? (
|
|
1082
|
+
}, [e === 0 ? (y(), o("span", St, "...")) : (y(), o("a", {
|
|
1083
1083
|
key: 0,
|
|
1084
1084
|
role: "button",
|
|
1085
1085
|
tabindex: "0",
|
|
1086
1086
|
onClick: (t) => d(e),
|
|
1087
|
-
onKeydown:
|
|
1088
|
-
class:
|
|
1089
|
-
},
|
|
1087
|
+
onKeydown: P((t) => d(e), ["enter"]),
|
|
1088
|
+
class: m(["inline-block border border-gray-300 rounded-lg p-3 no-underline text-black cursor-pointer hover:bg-gray-300", { "active font-bold bg-gray-200": e === i.value }])
|
|
1089
|
+
}, T(e), 43, xt))]))), 128))])]));
|
|
1090
1090
|
}
|
|
1091
|
-
}),
|
|
1091
|
+
}), wt = { key: 0 }, Tt = {
|
|
1092
1092
|
key: 0,
|
|
1093
1093
|
class: "flex items-center space-x-2"
|
|
1094
|
-
},
|
|
1094
|
+
}, Et = {
|
|
1095
1095
|
key: 1,
|
|
1096
1096
|
class: "flex items-center space-x-2"
|
|
1097
|
-
},
|
|
1097
|
+
}, Dt = {
|
|
1098
1098
|
key: 2,
|
|
1099
1099
|
class: "flex items-center space-x-2"
|
|
1100
|
-
},
|
|
1100
|
+
}, Ot = /* @__PURE__ */ d({
|
|
1101
1101
|
__name: "TrendArrow",
|
|
1102
1102
|
props: {
|
|
1103
1103
|
number: {
|
|
@@ -1110,58 +1110,58 @@ var Ee = [
|
|
|
1110
1110
|
}
|
|
1111
1111
|
},
|
|
1112
1112
|
setup(e) {
|
|
1113
|
-
let t = e,
|
|
1114
|
-
return (
|
|
1115
|
-
default:
|
|
1113
|
+
let t = e, n = r(() => t.number !== null && t.number !== void 0 && t.number < 0), i = r(() => t.number === 0);
|
|
1114
|
+
return (r, s) => e.number !== null && e.number !== void 0 ? (y(), o("div", wt, [n.value ? (y(), o("span", Tt, [u(ke, { color: E(L).RED }, {
|
|
1115
|
+
default: M(() => [l(T(e.number) + T(t.icon), 1)]),
|
|
1116
1116
|
_: 1
|
|
1117
|
-
}, 8, ["color"]),
|
|
1118
|
-
default:
|
|
1117
|
+
}, 8, ["color"]), u(E(te), { class: "h-5 w-5 text-red-500" })])) : i.value ? (y(), o("span", Et, [u(ke, { color: E(L).GRAY }, {
|
|
1118
|
+
default: M(() => [l(T(e.number) + T(t.icon), 1)]),
|
|
1119
1119
|
_: 1
|
|
1120
|
-
}, 8, ["color"]),
|
|
1121
|
-
default:
|
|
1120
|
+
}, 8, ["color"]), u(E(_e), { class: "h-5 w-5 text-gray-400" })])) : (y(), o("span", Dt, [u(ke, { color: E(L).GREEN }, {
|
|
1121
|
+
default: M(() => [l(T(e.number) + T(t.icon), 1)]),
|
|
1122
1122
|
_: 1
|
|
1123
|
-
}, 8, ["color"]),
|
|
1123
|
+
}, 8, ["color"]), u(E(ne), { class: "h-5 w-5 text-green-500" })]))])) : a("", !0);
|
|
1124
1124
|
}
|
|
1125
1125
|
});
|
|
1126
1126
|
//#endregion
|
|
1127
1127
|
//#region src/composables/useThemeClasses.ts
|
|
1128
|
-
function
|
|
1129
|
-
let { isDark: e } =
|
|
1128
|
+
function J() {
|
|
1129
|
+
let { isDark: e } = H();
|
|
1130
1130
|
return {
|
|
1131
|
-
card:
|
|
1132
|
-
cardAlt:
|
|
1133
|
-
pageBg:
|
|
1134
|
-
border:
|
|
1135
|
-
divider:
|
|
1136
|
-
primaryText:
|
|
1137
|
-
primaryTextSoft:
|
|
1138
|
-
bodyText:
|
|
1139
|
-
label:
|
|
1140
|
-
mutedText:
|
|
1141
|
-
subtleText:
|
|
1142
|
-
dimText:
|
|
1143
|
-
dimTextAlt:
|
|
1144
|
-
illustration:
|
|
1145
|
-
input:
|
|
1146
|
-
inputWithPlaceholder:
|
|
1147
|
-
ghostButton:
|
|
1148
|
-
emeraldText:
|
|
1149
|
-
amberText:
|
|
1150
|
-
amberTextStrong:
|
|
1151
|
-
redText:
|
|
1131
|
+
card: r(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
|
|
1132
|
+
cardAlt: r(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
|
|
1133
|
+
pageBg: r(() => e.value ? "bg-gray-900" : "bg-gray-50"),
|
|
1134
|
+
border: r(() => e.value ? "border-gray-700" : "border-gray-200"),
|
|
1135
|
+
divider: r(() => e.value ? "border-gray-800" : "border-gray-100"),
|
|
1136
|
+
primaryText: r(() => e.value ? "text-white" : "text-gray-900"),
|
|
1137
|
+
primaryTextSoft: r(() => e.value ? "text-gray-100" : "text-gray-800"),
|
|
1138
|
+
bodyText: r(() => e.value ? "text-gray-200" : "text-gray-700"),
|
|
1139
|
+
label: r(() => e.value ? "text-gray-300" : "text-gray-700"),
|
|
1140
|
+
mutedText: r(() => e.value ? "text-gray-400" : "text-gray-600"),
|
|
1141
|
+
subtleText: r(() => e.value ? "text-gray-500" : "text-gray-600"),
|
|
1142
|
+
dimText: r(() => e.value ? "text-gray-500" : "text-gray-400"),
|
|
1143
|
+
dimTextAlt: r(() => e.value ? "text-gray-400" : "text-gray-500"),
|
|
1144
|
+
illustration: r(() => e.value ? "text-gray-600" : "text-gray-300"),
|
|
1145
|
+
input: r(() => e.value ? "bg-gray-700 border-gray-600 text-white" : "bg-gray-50 border-gray-300 text-gray-900"),
|
|
1146
|
+
inputWithPlaceholder: r(() => e.value ? "bg-gray-700 border-gray-600 text-white placeholder-gray-400" : "bg-gray-50 border-gray-300 text-gray-900 placeholder-gray-500"),
|
|
1147
|
+
ghostButton: r(() => e.value ? "bg-gray-800 text-gray-200 border-gray-600 hover:bg-gray-700" : "bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),
|
|
1148
|
+
emeraldText: r(() => e.value ? "text-emerald-400" : "text-emerald-600"),
|
|
1149
|
+
amberText: r(() => e.value ? "text-amber-400" : "text-amber-600"),
|
|
1150
|
+
amberTextStrong: r(() => e.value ? "text-amber-300" : "text-amber-700"),
|
|
1151
|
+
redText: r(() => e.value ? "text-red-400" : "text-red-500")
|
|
1152
1152
|
};
|
|
1153
1153
|
}
|
|
1154
1154
|
//#endregion
|
|
1155
1155
|
//#region src/composables/useEscapeKey.ts
|
|
1156
|
-
function
|
|
1156
|
+
function Y(e) {
|
|
1157
1157
|
function t(t) {
|
|
1158
1158
|
t.key === "Escape" && e();
|
|
1159
1159
|
}
|
|
1160
|
-
|
|
1160
|
+
g(() => document.addEventListener("keydown", t)), h(() => document.removeEventListener("keydown", t));
|
|
1161
1161
|
}
|
|
1162
1162
|
//#endregion
|
|
1163
1163
|
//#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
|
|
1164
|
-
var
|
|
1164
|
+
var kt = { class: "flex items-start gap-4 min-w-0" }, At = { class: "flex-1 min-w-0" }, jt = { class: "p-6 overflow-y-auto flex-1" }, Mt = { class: "p-6" }, Nt = { class: "flex items-start gap-4" }, Pt = { class: "flex-1" }, Ft = { class: "mt-4" }, It = { class: "mt-6 flex gap-3 justify-end" }, Lt = /* @__PURE__ */ d({
|
|
1165
1165
|
__name: "BaseModalShell",
|
|
1166
1166
|
props: {
|
|
1167
1167
|
title: {},
|
|
@@ -1177,50 +1177,50 @@ var vt = { class: "flex items-start gap-4 min-w-0" }, yt = { class: "flex-1 min-
|
|
|
1177
1177
|
subtitle: { default: "" }
|
|
1178
1178
|
},
|
|
1179
1179
|
emits: ["cancel", "backdrop"],
|
|
1180
|
-
setup(e, { emit:
|
|
1181
|
-
let c = e, l =
|
|
1180
|
+
setup(e, { emit: n }) {
|
|
1181
|
+
let c = e, l = n, { isDark: u } = H(), d = J(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = r(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200");
|
|
1182
1182
|
function h() {
|
|
1183
1183
|
l("backdrop"), c.manualClose || l("cancel");
|
|
1184
1184
|
}
|
|
1185
|
-
return
|
|
1185
|
+
return Y(() => {
|
|
1186
1186
|
c.manualClose || l("cancel");
|
|
1187
|
-
}), (n,
|
|
1187
|
+
}), (n, r) => (y(), i(t, { to: "body" }, [s("div", {
|
|
1188
1188
|
class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
1189
1189
|
role: "dialog",
|
|
1190
1190
|
"aria-modal": "true",
|
|
1191
|
-
"aria-labelledby":
|
|
1191
|
+
"aria-labelledby": f,
|
|
1192
1192
|
onClick: h
|
|
1193
|
-
}, [e.scrollable ? (
|
|
1193
|
+
}, [e.scrollable ? (y(), o("div", {
|
|
1194
1194
|
key: 0,
|
|
1195
|
-
class:
|
|
1196
|
-
onClick:
|
|
1195
|
+
class: m(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
|
|
1196
|
+
onClick: r[0] ||= F(() => {}, ["stop"])
|
|
1197
1197
|
}, [
|
|
1198
|
-
|
|
1199
|
-
id:
|
|
1200
|
-
class:
|
|
1201
|
-
},
|
|
1198
|
+
s("div", { class: m(["flex items-start justify-between gap-4 p-6 border-b shrink-0", E(d).border]) }, [s("div", kt, [S(n.$slots, "icon"), s("div", At, [s("h3", {
|
|
1199
|
+
id: f,
|
|
1200
|
+
class: m(["text-lg font-medium", E(d).primaryText])
|
|
1201
|
+
}, T(e.title), 3), e.subtitle ? (y(), o("p", {
|
|
1202
1202
|
key: 0,
|
|
1203
|
-
class:
|
|
1204
|
-
},
|
|
1205
|
-
|
|
1206
|
-
n.$slots.footer ? (
|
|
1203
|
+
class: m(["text-sm mt-1 break-all", E(d).mutedText])
|
|
1204
|
+
}, T(e.subtitle), 3)) : a("", !0)])]), S(n.$slots, "header-actions")], 2),
|
|
1205
|
+
s("div", jt, [S(n.$slots, "default")]),
|
|
1206
|
+
n.$slots.footer ? (y(), o("div", {
|
|
1207
1207
|
key: 0,
|
|
1208
|
-
class:
|
|
1209
|
-
}, [
|
|
1210
|
-
], 2)) : (
|
|
1208
|
+
class: m(["flex gap-3 justify-end p-6 border-t shrink-0", E(d).border])
|
|
1209
|
+
}, [S(n.$slots, "footer")], 2)) : a("", !0)
|
|
1210
|
+
], 2)) : (y(), o("div", {
|
|
1211
1211
|
key: 1,
|
|
1212
|
-
class:
|
|
1213
|
-
onClick:
|
|
1214
|
-
}, [
|
|
1215
|
-
|
|
1216
|
-
id:
|
|
1217
|
-
class:
|
|
1218
|
-
},
|
|
1219
|
-
|
|
1220
|
-
|
|
1212
|
+
class: m(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
|
|
1213
|
+
onClick: r[1] ||= F(() => {}, ["stop"])
|
|
1214
|
+
}, [s("div", Mt, [
|
|
1215
|
+
s("div", Nt, [S(n.$slots, "icon"), s("div", Pt, [s("h3", {
|
|
1216
|
+
id: f,
|
|
1217
|
+
class: m(["text-lg font-medium", E(d).primaryText])
|
|
1218
|
+
}, T(e.title), 3)])]),
|
|
1219
|
+
s("div", Ft, [S(n.$slots, "default")]),
|
|
1220
|
+
s("div", It, [S(n.$slots, "footer")])
|
|
1221
1221
|
])], 2))])]));
|
|
1222
1222
|
}
|
|
1223
|
-
}),
|
|
1223
|
+
}), Rt = ["aria-expanded"], zt = { class: "flex items-center gap-3" }, Bt = /* @__PURE__ */ d({
|
|
1224
1224
|
__name: "BaseCollapsibleSection",
|
|
1225
1225
|
props: {
|
|
1226
1226
|
title: {},
|
|
@@ -1230,35 +1230,35 @@ var vt = { class: "flex items-start gap-4 min-w-0" }, yt = { class: "flex-1 min-
|
|
|
1230
1230
|
},
|
|
1231
1231
|
emits: ["toggle"],
|
|
1232
1232
|
setup(e, { emit: t }) {
|
|
1233
|
-
let
|
|
1234
|
-
return (t, n) => (
|
|
1233
|
+
let n = e, i = t, { isDark: c } = H(), l = J(), u = r(() => c.value ? "text-gray-100" : "text-gray-700"), d = r(() => c.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = r(() => c.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = r(() => n.bodyClass === void 0 ? c.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
|
|
1234
|
+
return (t, n) => (y(), o("section", { class: m(["rounded-xl border overflow-hidden transition-colors", E(l).cardAlt]) }, [s("button", {
|
|
1235
1235
|
type: "button",
|
|
1236
|
-
class:
|
|
1236
|
+
class: m(["w-full flex items-center justify-between p-4 text-left transition-colors", d.value]),
|
|
1237
1237
|
"aria-expanded": !e.collapsed,
|
|
1238
|
-
onClick: n[0] ||= (e) =>
|
|
1239
|
-
}, [
|
|
1238
|
+
onClick: n[0] ||= (e) => i("toggle")
|
|
1239
|
+
}, [s("div", zt, [s("h2", { class: m(["text-base font-semibold", u.value]) }, T(e.title), 3), e.badge ? (y(), o("span", {
|
|
1240
1240
|
key: 0,
|
|
1241
|
-
class:
|
|
1242
|
-
},
|
|
1243
|
-
class:
|
|
1241
|
+
class: m(["text-xs px-2 py-0.5 rounded-full", f.value])
|
|
1242
|
+
}, T(e.badge), 3)) : a("", !0)]), (y(), o("svg", {
|
|
1243
|
+
class: m(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", E(l).dimTextAlt]]),
|
|
1244
1244
|
fill: "none",
|
|
1245
1245
|
viewBox: "0 0 24 24",
|
|
1246
1246
|
stroke: "currentColor",
|
|
1247
1247
|
"stroke-width": "2",
|
|
1248
1248
|
"aria-hidden": "true"
|
|
1249
|
-
}, [...n[1] ||= [
|
|
1249
|
+
}, [...n[1] ||= [s("path", {
|
|
1250
1250
|
"stroke-linecap": "round",
|
|
1251
1251
|
"stroke-linejoin": "round",
|
|
1252
1252
|
d: "M19 9l-7 7-7-7"
|
|
1253
|
-
}, null, -1)]], 2))], 10,
|
|
1253
|
+
}, null, -1)]], 2))], 10, Rt), N(s("div", { class: m(["p-6 border-t", [E(l).border, p.value]]) }, [S(t.$slots, "default")], 2), [[ee, !e.collapsed]])], 2));
|
|
1254
1254
|
}
|
|
1255
|
-
}),
|
|
1255
|
+
}), Vt = ["disabled"], Ht = ["disabled"], Ut = {
|
|
1256
1256
|
key: 0,
|
|
1257
1257
|
class: "w-4 h-4 animate-spin",
|
|
1258
1258
|
fill: "none",
|
|
1259
1259
|
viewBox: "0 0 24 24",
|
|
1260
1260
|
"aria-hidden": "true"
|
|
1261
|
-
},
|
|
1261
|
+
}, Wt = /* @__PURE__ */ d({
|
|
1262
1262
|
__name: "BaseConfirmModal",
|
|
1263
1263
|
props: {
|
|
1264
1264
|
title: {},
|
|
@@ -1274,49 +1274,49 @@ var vt = { class: "flex items-start gap-4 min-w-0" }, yt = { class: "flex-1 min-
|
|
|
1274
1274
|
},
|
|
1275
1275
|
emits: ["confirm", "cancel"],
|
|
1276
1276
|
setup(e, { emit: t }) {
|
|
1277
|
-
let n = e,
|
|
1278
|
-
function
|
|
1279
|
-
n.submitting ||
|
|
1277
|
+
let n = e, r = t, { isDark: c } = H(), d = J();
|
|
1278
|
+
function f() {
|
|
1279
|
+
n.submitting || r("confirm");
|
|
1280
1280
|
}
|
|
1281
|
-
function
|
|
1282
|
-
n.submitting ||
|
|
1281
|
+
function p() {
|
|
1282
|
+
n.submitting || r("cancel");
|
|
1283
1283
|
}
|
|
1284
|
-
return (t, n) => (
|
|
1284
|
+
return (t, n) => (y(), i(Lt, {
|
|
1285
1285
|
title: e.title,
|
|
1286
1286
|
"manual-close": e.submitting,
|
|
1287
|
-
onCancel:
|
|
1287
|
+
onCancel: p
|
|
1288
1288
|
}, {
|
|
1289
|
-
icon:
|
|
1290
|
-
class:
|
|
1289
|
+
icon: M(() => [s("div", { class: m(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", [e.variant === "danger" ? E(c) ? "bg-red-900/30" : "bg-red-50" : E(c) ? "bg-amber-900/30" : "bg-amber-50"]]) }, [u(E(pe), {
|
|
1290
|
+
class: m(["h-6 w-6", e.variant === "danger" ? "text-red-600" : "text-amber-600"]),
|
|
1291
1291
|
"aria-hidden": "true"
|
|
1292
1292
|
}, null, 8, ["class"])], 2)]),
|
|
1293
|
-
footer:
|
|
1293
|
+
footer: M(() => [s("button", {
|
|
1294
1294
|
type: "button",
|
|
1295
1295
|
disabled: e.submitting,
|
|
1296
|
-
class:
|
|
1297
|
-
onClick:
|
|
1298
|
-
},
|
|
1296
|
+
class: m(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150", [E(d).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
|
|
1297
|
+
onClick: p
|
|
1298
|
+
}, T(e.cancelText), 11, Vt), s("button", {
|
|
1299
1299
|
type: "button",
|
|
1300
1300
|
disabled: e.submitting,
|
|
1301
|
-
class:
|
|
1302
|
-
onClick:
|
|
1303
|
-
}, [e.submitting ? (
|
|
1301
|
+
class: m(["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", [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"]]),
|
|
1302
|
+
onClick: f
|
|
1303
|
+
}, [e.submitting ? (y(), o("svg", Ut, [...n[0] ||= [s("circle", {
|
|
1304
1304
|
class: "opacity-25",
|
|
1305
1305
|
cx: "12",
|
|
1306
1306
|
cy: "12",
|
|
1307
1307
|
r: "10",
|
|
1308
1308
|
stroke: "currentColor",
|
|
1309
1309
|
"stroke-width": "4"
|
|
1310
|
-
}, null, -1),
|
|
1310
|
+
}, null, -1), s("path", {
|
|
1311
1311
|
class: "opacity-75",
|
|
1312
1312
|
fill: "currentColor",
|
|
1313
1313
|
d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
|
|
1314
|
-
}, null, -1)]])) :
|
|
1315
|
-
default:
|
|
1314
|
+
}, null, -1)]])) : a("", !0), l(" " + T(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Ht)]),
|
|
1315
|
+
default: M(() => [S(t.$slots, "message", {}, () => [s("p", { class: m(["text-sm", E(c) ? "text-gray-300" : "text-gray-600"]) }, T(e.message), 3)]), S(t.$slots, "default")]),
|
|
1316
1316
|
_: 3
|
|
1317
1317
|
}, 8, ["title", "manual-close"]));
|
|
1318
1318
|
}
|
|
1319
|
-
}),
|
|
1319
|
+
}), Gt = { class: "mt-4" }, Kt = ["placeholder"], qt = ["disabled"], Jt = /* @__PURE__ */ d({
|
|
1320
1320
|
__name: "BaseTextInputModal",
|
|
1321
1321
|
props: {
|
|
1322
1322
|
title: {},
|
|
@@ -1334,51 +1334,51 @@ var vt = { class: "flex items-start gap-4 min-w-0" }, yt = { class: "flex-1 min-
|
|
|
1334
1334
|
},
|
|
1335
1335
|
emits: ["confirm", "cancel"],
|
|
1336
1336
|
setup(e, { emit: t }) {
|
|
1337
|
-
let n = e,
|
|
1338
|
-
|
|
1339
|
-
await
|
|
1337
|
+
let n = e, r = t, { isDark: a } = H(), o = J(), c = b(n.initialValue), l = b(null);
|
|
1338
|
+
g(async () => {
|
|
1339
|
+
await p(), l.value?.focus();
|
|
1340
1340
|
});
|
|
1341
|
-
function
|
|
1342
|
-
!
|
|
1341
|
+
function d() {
|
|
1342
|
+
!c.value.trim() || n.submitting || r("confirm", c.value.trim());
|
|
1343
1343
|
}
|
|
1344
|
-
function
|
|
1345
|
-
|
|
1344
|
+
function f() {
|
|
1345
|
+
r("cancel");
|
|
1346
1346
|
}
|
|
1347
|
-
function
|
|
1348
|
-
|
|
1347
|
+
function h() {
|
|
1348
|
+
c.value.trim() === (n.initialValue ?? "").trim() && f();
|
|
1349
1349
|
}
|
|
1350
|
-
return
|
|
1350
|
+
return Y(f), (t, n) => (y(), i(Lt, {
|
|
1351
1351
|
title: e.title,
|
|
1352
1352
|
"manual-close": "",
|
|
1353
|
-
onBackdrop:
|
|
1353
|
+
onBackdrop: h
|
|
1354
1354
|
}, {
|
|
1355
|
-
icon:
|
|
1355
|
+
icon: M(() => [S(t.$slots, "icon", {}, () => [s("div", { class: m(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", E(a) ? "bg-emerald-900/30" : "bg-emerald-50"]) }, [u(E(de), {
|
|
1356
1356
|
class: "h-6 w-6 text-emerald-600",
|
|
1357
1357
|
"aria-hidden": "true"
|
|
1358
1358
|
})], 2)])]),
|
|
1359
|
-
footer:
|
|
1359
|
+
footer: M(() => [s("button", {
|
|
1360
1360
|
type: "button",
|
|
1361
|
-
class:
|
|
1362
|
-
onClick:
|
|
1363
|
-
},
|
|
1361
|
+
class: m(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150", E(o).ghostButton]),
|
|
1362
|
+
onClick: f
|
|
1363
|
+
}, T(e.cancelText), 3), s("button", {
|
|
1364
1364
|
type: "button",
|
|
1365
|
-
disabled: !
|
|
1366
|
-
class:
|
|
1367
|
-
onClick:
|
|
1368
|
-
},
|
|
1369
|
-
default:
|
|
1365
|
+
disabled: !c.value.trim() || e.submitting,
|
|
1366
|
+
class: m(["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", [!c.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
|
|
1367
|
+
onClick: d
|
|
1368
|
+
}, T(e.submitting ? e.submittingText : e.confirmText), 11, qt)]),
|
|
1369
|
+
default: M(() => [s("p", { class: m(["text-sm", E(a) ? "text-gray-300" : "text-gray-600"]) }, T(e.message), 3), s("div", Gt, [s("label", { class: m(["block text-sm font-medium mb-1", E(o).label]) }, T(e.inputLabel), 3), N(s("input", {
|
|
1370
1370
|
ref_key: "nameInput",
|
|
1371
|
-
ref:
|
|
1372
|
-
"onUpdate:modelValue": n[0] ||= (e) =>
|
|
1371
|
+
ref: l,
|
|
1372
|
+
"onUpdate:modelValue": n[0] ||= (e) => c.value = e,
|
|
1373
1373
|
type: "text",
|
|
1374
1374
|
placeholder: e.placeholder,
|
|
1375
|
-
class:
|
|
1376
|
-
onKeyup:
|
|
1377
|
-
}, null, 42,
|
|
1375
|
+
class: m(["w-full px-3 py-2 rounded-md border text-sm transition-colors", E(a) ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:outline-none focus:border-emerald-500" : "bg-white border-gray-300 text-gray-900 placeholder-gray-400 focus:outline-none focus:border-emerald-500"]),
|
|
1376
|
+
onKeyup: P(d, ["enter"])
|
|
1377
|
+
}, null, 42, Kt), [[A, c.value]])])]),
|
|
1378
1378
|
_: 3
|
|
1379
1379
|
}, 8, ["title"]));
|
|
1380
1380
|
}
|
|
1381
|
-
}),
|
|
1381
|
+
}), Yt = { class: "flex items-center justify-center min-h-[60vh]" }, Xt = { class: "text-center px-6" }, Zt = /* @__PURE__ */ d({
|
|
1382
1382
|
__name: "BaseNotFoundPage",
|
|
1383
1383
|
props: {
|
|
1384
1384
|
code: { default: "404" },
|
|
@@ -1387,49 +1387,143 @@ var vt = { class: "flex items-start gap-4 min-w-0" }, yt = { class: "flex-1 min-
|
|
|
1387
1387
|
homeLabel: { default: "Go home" }
|
|
1388
1388
|
},
|
|
1389
1389
|
setup(e) {
|
|
1390
|
-
let t = e, n =
|
|
1391
|
-
function
|
|
1390
|
+
let t = e, n = Ce(), { isDark: r } = H(), i = J();
|
|
1391
|
+
function a() {
|
|
1392
1392
|
n.push({ name: t.homeRouteName });
|
|
1393
1393
|
}
|
|
1394
|
-
return (t, n) => (
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
onClick:
|
|
1400
|
-
class:
|
|
1401
|
-
},
|
|
1394
|
+
return (t, n) => (y(), o("div", Yt, [s("div", Xt, [
|
|
1395
|
+
u(E(pe), { class: m(["w-16 h-16 mx-auto mb-4", E(i).illustration]) }, null, 8, ["class"]),
|
|
1396
|
+
s("h1", { class: m(["text-4xl font-bold mb-2", E(r) ? "text-gray-200" : "text-gray-800"]) }, T(e.code), 3),
|
|
1397
|
+
s("p", { class: m(["text-lg mb-6", E(i).dimTextAlt]) }, T(e.message), 3),
|
|
1398
|
+
s("button", {
|
|
1399
|
+
onClick: a,
|
|
1400
|
+
class: m(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer", E(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
|
|
1401
|
+
}, T(e.homeLabel), 3)
|
|
1402
1402
|
])]));
|
|
1403
1403
|
}
|
|
1404
|
-
}),
|
|
1405
|
-
function
|
|
1404
|
+
}), X = b(!1);
|
|
1405
|
+
function Qt() {
|
|
1406
1406
|
function e() {
|
|
1407
|
-
|
|
1407
|
+
X.value = !0;
|
|
1408
1408
|
}
|
|
1409
1409
|
function t() {
|
|
1410
|
-
|
|
1410
|
+
X.value = !1;
|
|
1411
1411
|
}
|
|
1412
1412
|
function n() {
|
|
1413
|
-
|
|
1413
|
+
X.value = !X.value;
|
|
1414
1414
|
}
|
|
1415
1415
|
return {
|
|
1416
|
-
mobileOpen:
|
|
1416
|
+
mobileOpen: X,
|
|
1417
1417
|
open: e,
|
|
1418
1418
|
close: t,
|
|
1419
1419
|
toggle: n
|
|
1420
1420
|
};
|
|
1421
1421
|
}
|
|
1422
1422
|
//#endregion
|
|
1423
|
+
//#region src/composables/useSidebarCollapse.ts
|
|
1424
|
+
var Z = b(!1), $t = !1, en = "mgv-sidebar-collapsed";
|
|
1425
|
+
function tn(e) {
|
|
1426
|
+
if (!$t && ($t = !0, en = e, typeof window < "u")) {
|
|
1427
|
+
let e = window.localStorage?.getItem(en);
|
|
1428
|
+
e && (Z.value = e === "true"), f(!0).run(() => {
|
|
1429
|
+
j(Z, (e) => {
|
|
1430
|
+
window.localStorage?.setItem(en, String(e));
|
|
1431
|
+
});
|
|
1432
|
+
});
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
function nn(e) {
|
|
1436
|
+
tn(e?.storageKey ?? en);
|
|
1437
|
+
function t() {
|
|
1438
|
+
Z.value = !0;
|
|
1439
|
+
}
|
|
1440
|
+
function n() {
|
|
1441
|
+
Z.value = !1;
|
|
1442
|
+
}
|
|
1443
|
+
function r() {
|
|
1444
|
+
Z.value = !Z.value;
|
|
1445
|
+
}
|
|
1446
|
+
return {
|
|
1447
|
+
collapsed: Z,
|
|
1448
|
+
collapse: t,
|
|
1449
|
+
expand: n,
|
|
1450
|
+
toggle: r
|
|
1451
|
+
};
|
|
1452
|
+
}
|
|
1453
|
+
//#endregion
|
|
1454
|
+
//#region src/composables/useNotifications.ts
|
|
1455
|
+
var Q = b([]), $ = b(!1), rn = r(() => Q.value.filter((e) => !e.read).length);
|
|
1456
|
+
function an() {
|
|
1457
|
+
function e() {
|
|
1458
|
+
$.value = !0;
|
|
1459
|
+
}
|
|
1460
|
+
function t() {
|
|
1461
|
+
$.value = !1;
|
|
1462
|
+
}
|
|
1463
|
+
function n() {
|
|
1464
|
+
$.value = !$.value;
|
|
1465
|
+
}
|
|
1466
|
+
function r(e) {
|
|
1467
|
+
Q.value = e;
|
|
1468
|
+
}
|
|
1469
|
+
function i(e) {
|
|
1470
|
+
Q.value = [e, ...Q.value];
|
|
1471
|
+
}
|
|
1472
|
+
function a(e) {
|
|
1473
|
+
Q.value = Q.value.filter((t) => t.id !== e);
|
|
1474
|
+
}
|
|
1475
|
+
function o(e) {
|
|
1476
|
+
Q.value = Q.value.map((t) => t.id === e ? {
|
|
1477
|
+
...t,
|
|
1478
|
+
read: !0
|
|
1479
|
+
} : t);
|
|
1480
|
+
}
|
|
1481
|
+
function s() {
|
|
1482
|
+
Q.value = Q.value.map((e) => e.read ? e : {
|
|
1483
|
+
...e,
|
|
1484
|
+
read: !0
|
|
1485
|
+
});
|
|
1486
|
+
}
|
|
1487
|
+
function c() {
|
|
1488
|
+
Q.value = [];
|
|
1489
|
+
}
|
|
1490
|
+
return {
|
|
1491
|
+
notifications: Q,
|
|
1492
|
+
unreadCount: rn,
|
|
1493
|
+
open: $,
|
|
1494
|
+
openPanel: e,
|
|
1495
|
+
closePanel: t,
|
|
1496
|
+
togglePanel: n,
|
|
1497
|
+
setNotifications: r,
|
|
1498
|
+
add: i,
|
|
1499
|
+
remove: a,
|
|
1500
|
+
markRead: o,
|
|
1501
|
+
markAllRead: s,
|
|
1502
|
+
clear: c
|
|
1503
|
+
};
|
|
1504
|
+
}
|
|
1505
|
+
//#endregion
|
|
1423
1506
|
//#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
|
|
1424
|
-
var
|
|
1507
|
+
var on = ["aria-label", "aria-expanded"], sn = { class: "flex flex-col h-full" }, cn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, ln = { class: "space-y-0.5" }, un = [
|
|
1508
|
+
"aria-current",
|
|
1509
|
+
"title",
|
|
1510
|
+
"onClick"
|
|
1511
|
+
], dn = ["aria-label"], fn = { class: "relative shrink-0" }, pn = {
|
|
1512
|
+
key: 0,
|
|
1513
|
+
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"
|
|
1514
|
+
}, mn = [
|
|
1515
|
+
"title",
|
|
1516
|
+
"aria-label",
|
|
1517
|
+
"aria-pressed"
|
|
1518
|
+
], hn = [
|
|
1425
1519
|
"title",
|
|
1426
1520
|
"aria-label",
|
|
1427
1521
|
"aria-pressed"
|
|
1428
|
-
],
|
|
1522
|
+
], gn = /*#__PURE__*/ ((e, t) => {
|
|
1429
1523
|
let n = e.__vccOpts || e;
|
|
1430
1524
|
for (let [e, r] of t) n[e] = r;
|
|
1431
1525
|
return n;
|
|
1432
|
-
})(/* @__PURE__ */
|
|
1526
|
+
})(/* @__PURE__ */ d({
|
|
1433
1527
|
__name: "BaseSidebar",
|
|
1434
1528
|
props: {
|
|
1435
1529
|
sections: {},
|
|
@@ -1439,119 +1533,162 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1439
1533
|
showThemeToggle: {
|
|
1440
1534
|
type: Boolean,
|
|
1441
1535
|
default: !0
|
|
1536
|
+
},
|
|
1537
|
+
collapsible: {
|
|
1538
|
+
type: Boolean,
|
|
1539
|
+
default: !0
|
|
1540
|
+
},
|
|
1541
|
+
showNotifications: {
|
|
1542
|
+
type: Boolean,
|
|
1543
|
+
default: !1
|
|
1442
1544
|
}
|
|
1443
1545
|
},
|
|
1444
1546
|
setup(t) {
|
|
1445
|
-
let n = t,
|
|
1446
|
-
|
|
1447
|
-
e ? (
|
|
1547
|
+
let n = t, c = Ce(), d = Se(), { isDark: f, toggleTheme: h } = H(), { mobileOpen: g, close: _, toggle: v } = Qt(), { collapsed: C, toggle: D } = nn(), { unreadCount: O, togglePanel: k } = an(), A = r(() => n.collapsible && C.value), ee = b(null), M = null;
|
|
1548
|
+
j(g, async (e) => {
|
|
1549
|
+
e ? (M = document.activeElement instanceof HTMLElement ? document.activeElement : null, await p(), ee.value?.focus()) : (M?.focus(), M = null);
|
|
1448
1550
|
});
|
|
1449
|
-
function
|
|
1450
|
-
|
|
1551
|
+
function N() {
|
|
1552
|
+
c.push({ name: n.homeRouteName }), _();
|
|
1451
1553
|
}
|
|
1452
|
-
function
|
|
1453
|
-
return
|
|
1554
|
+
function P(e) {
|
|
1555
|
+
return d.name === e;
|
|
1454
1556
|
}
|
|
1455
|
-
function
|
|
1456
|
-
|
|
1557
|
+
function F(e) {
|
|
1558
|
+
c.push({ name: e }), _();
|
|
1457
1559
|
}
|
|
1458
|
-
return (n,
|
|
1459
|
-
|
|
1560
|
+
return (n, r) => (y(), o("div", null, [
|
|
1561
|
+
s("div", { class: m(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", E(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [s("button", {
|
|
1460
1562
|
type: "button",
|
|
1461
|
-
onClick:
|
|
1563
|
+
onClick: N,
|
|
1462
1564
|
class: "cursor-pointer",
|
|
1463
1565
|
"aria-label": "Go to home"
|
|
1464
|
-
}, [
|
|
1566
|
+
}, [S(n.$slots, "logo", { size: 28 }, void 0, !0)]), s("button", {
|
|
1465
1567
|
type: "button",
|
|
1466
|
-
onClick:
|
|
1467
|
-
class:
|
|
1468
|
-
"aria-label":
|
|
1469
|
-
"aria-expanded":
|
|
1470
|
-
}, [
|
|
1568
|
+
onClick: r[0] ||= (...e) => E(v) && E(v)(...e),
|
|
1569
|
+
class: m(["p-2 rounded-lg cursor-pointer", E(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
|
|
1570
|
+
"aria-label": E(g) ? "Close navigation menu" : "Open navigation menu",
|
|
1571
|
+
"aria-expanded": E(g)
|
|
1572
|
+
}, [E(g) ? (y(), i(E(be), {
|
|
1471
1573
|
key: 1,
|
|
1472
1574
|
class: "w-6 h-6",
|
|
1473
1575
|
"aria-hidden": "true"
|
|
1474
|
-
})) : (
|
|
1576
|
+
})) : (y(), i(E(re), {
|
|
1475
1577
|
key: 0,
|
|
1476
1578
|
class: "w-6 h-6",
|
|
1477
1579
|
"aria-hidden": "true"
|
|
1478
|
-
}))], 10,
|
|
1479
|
-
|
|
1580
|
+
}))], 10, on)], 2),
|
|
1581
|
+
E(g) ? (y(), o("div", {
|
|
1480
1582
|
key: 0,
|
|
1481
1583
|
class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
|
|
1482
1584
|
"aria-hidden": "true",
|
|
1483
|
-
onClick:
|
|
1484
|
-
})) :
|
|
1485
|
-
|
|
1585
|
+
onClick: r[1] ||= (...e) => E(_) && E(_)(...e)
|
|
1586
|
+
})) : a("", !0),
|
|
1587
|
+
s("aside", {
|
|
1486
1588
|
role: "navigation",
|
|
1487
1589
|
"aria-label": "Main navigation",
|
|
1488
|
-
class:
|
|
1489
|
-
|
|
1490
|
-
|
|
1590
|
+
class: m(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
|
|
1591
|
+
E(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
|
|
1592
|
+
E(g) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
|
|
1593
|
+
t.collapsible && E(C) ? "lg:w-16" : "lg:w-60"
|
|
1594
|
+
]])
|
|
1595
|
+
}, [s("div", sn, [
|
|
1596
|
+
s("div", { class: m(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": A.value }]) }, [s("button", {
|
|
1491
1597
|
type: "button",
|
|
1492
|
-
onClick:
|
|
1598
|
+
onClick: N,
|
|
1493
1599
|
class: "cursor-pointer",
|
|
1494
1600
|
"aria-label": "Go to home"
|
|
1495
|
-
}, [
|
|
1601
|
+
}, [S(n.$slots, "logo", { size: A.value ? 36 : 52 }, void 0, !0)]), s("button", {
|
|
1496
1602
|
ref_key: "closeMobileButton",
|
|
1497
|
-
ref:
|
|
1603
|
+
ref: ee,
|
|
1498
1604
|
type: "button",
|
|
1499
|
-
onClick:
|
|
1500
|
-
class:
|
|
1605
|
+
onClick: r[2] ||= (...e) => E(_) && E(_)(...e),
|
|
1606
|
+
class: m(["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", E(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
|
|
1501
1607
|
"aria-label": "Close navigation menu"
|
|
1502
|
-
}, [
|
|
1608
|
+
}, [u(E(be), {
|
|
1503
1609
|
class: "w-5 h-5",
|
|
1504
1610
|
"aria-hidden": "true"
|
|
1505
|
-
})], 2)]),
|
|
1506
|
-
|
|
1611
|
+
})], 2)], 2),
|
|
1612
|
+
s("nav", cn, [(y(!0), o(e, null, x(t.sections, (t) => (y(), o("div", { key: t.title }, [s("p", { class: m(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": A.value }]) }, T(t.title), 3), s("ul", ln, [(y(!0), o(e, null, x(t.items, (e) => (y(), o("li", { key: e.name }, [s("button", {
|
|
1507
1613
|
type: "button",
|
|
1508
|
-
"aria-current":
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1614
|
+
"aria-current": P(e.name) ? "page" : void 0,
|
|
1615
|
+
title: A.value ? e.label : void 0,
|
|
1616
|
+
onClick: (t) => F(e.name),
|
|
1617
|
+
class: m(["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", [P(e.name) ? E(f) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : E(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
|
|
1618
|
+
}, [(y(), i(w(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s("span", { class: m({ "lg:hidden": A.value }) }, T(e.label), 3)], 10, un)]))), 128))])]))), 128))]),
|
|
1619
|
+
s("div", { class: m(["px-4 py-4 border-t transition-colors space-y-3", E(f) ? "border-gray-800" : "border-gray-200"]) }, [
|
|
1620
|
+
t.showNotifications ? (y(), o("button", {
|
|
1514
1621
|
key: 0,
|
|
1515
1622
|
type: "button",
|
|
1516
|
-
onClick:
|
|
1517
|
-
title:
|
|
1518
|
-
"aria-label":
|
|
1519
|
-
"
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1623
|
+
onClick: r[3] ||= (...e) => E(k) && E(k)(...e),
|
|
1624
|
+
title: "Notifications",
|
|
1625
|
+
"aria-label": E(O) > 0 ? `Notifications, ${E(O)} unread` : "Notifications",
|
|
1626
|
+
class: m(["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", [E(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
|
|
1627
|
+
}, [s("span", fn, [u(E(ie), {
|
|
1628
|
+
class: "w-[18px] h-[18px]",
|
|
1629
|
+
"aria-hidden": "true"
|
|
1630
|
+
}), E(O) > 0 ? (y(), o("span", pn, T(E(O) > 99 ? "99+" : E(O)), 1)) : a("", !0)]), s("span", { class: m({ "lg:hidden": A.value }) }, "Notifications", 2)], 10, dn)) : a("", !0),
|
|
1631
|
+
t.showThemeToggle ? (y(), o("button", {
|
|
1632
|
+
key: 1,
|
|
1633
|
+
type: "button",
|
|
1634
|
+
onClick: r[4] ||= (...e) => E(h) && E(h)(...e),
|
|
1635
|
+
title: E(f) ? "Switch to light mode" : "Switch to dark mode",
|
|
1636
|
+
"aria-label": E(f) ? "Switch to light mode" : "Switch to dark mode",
|
|
1637
|
+
"aria-pressed": E(f),
|
|
1638
|
+
class: m(["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", [E(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
|
|
1639
|
+
}, [
|
|
1640
|
+
(y(), i(w(E(f) ? E(ye) : E(ve)), {
|
|
1641
|
+
class: m(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": A.value }]),
|
|
1642
|
+
"aria-hidden": "true"
|
|
1643
|
+
}, null, 8, ["class"])),
|
|
1644
|
+
s("span", { class: m({ "lg:hidden": A.value }) }, T(E(f) ? "Switch to light" : "Switch to dark"), 3),
|
|
1645
|
+
s("span", { class: m(["ml-auto relative w-9 h-5 rounded-full transition-colors", [E(f) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": A.value }]]) }, [s("span", { class: m(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", E(f) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
|
|
1646
|
+
], 10, mn)) : a("", !0),
|
|
1647
|
+
t.collapsible ? (y(), o("button", {
|
|
1648
|
+
key: 2,
|
|
1649
|
+
type: "button",
|
|
1650
|
+
onClick: r[5] ||= (...e) => E(D) && E(D)(...e),
|
|
1651
|
+
title: E(C) ? "Expand sidebar" : "Collapse sidebar",
|
|
1652
|
+
"aria-label": E(C) ? "Expand sidebar" : "Collapse sidebar",
|
|
1653
|
+
"aria-pressed": E(C),
|
|
1654
|
+
class: m(["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", [E(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
|
|
1655
|
+
}, [(y(), i(w(E(C) ? E(se) : E(oe)), {
|
|
1656
|
+
class: "w-[18px] h-[18px] shrink-0",
|
|
1657
|
+
"aria-hidden": "true"
|
|
1658
|
+
})), s("span", { class: m({ "lg:hidden": A.value }) }, "Collapse", 2)], 10, hn)) : a("", !0),
|
|
1659
|
+
s("div", { class: m({ "lg:hidden": A.value }) }, [S(n.$slots, "status", {}, void 0, !0)], 2),
|
|
1660
|
+
s("div", { class: m({ "lg:hidden": A.value }) }, [S(n.$slots, "footer", {}, () => [t.appName || t.version ? (y(), o("div", {
|
|
1524
1661
|
key: 0,
|
|
1525
|
-
class:
|
|
1526
|
-
}, [
|
|
1527
|
-
|
|
1528
|
-
t.appName && t.version ? (
|
|
1529
|
-
t.version ? (
|
|
1530
|
-
])], 2)) :
|
|
1662
|
+
class: m(["flex items-center justify-center gap-2 text-xs", (E(f), "text-gray-500")])
|
|
1663
|
+
}, [s("span", null, [
|
|
1664
|
+
l(T(t.appName), 1),
|
|
1665
|
+
t.appName && t.version ? (y(), o(e, { key: 0 }, [], 64)) : a("", !0),
|
|
1666
|
+
t.version ? (y(), o(e, { key: 1 }, [l("v" + T(t.version), 1)], 64)) : a("", !0)
|
|
1667
|
+
])], 2)) : a("", !0)], !0)], 2)
|
|
1531
1668
|
], 2)
|
|
1532
1669
|
])], 2)
|
|
1533
1670
|
]));
|
|
1534
1671
|
}
|
|
1535
|
-
}), [["__scopeId", "data-v-
|
|
1672
|
+
}), [["__scopeId", "data-v-6fca021f"]]), _n = {
|
|
1536
1673
|
key: 1,
|
|
1537
1674
|
class: "mt-4 flex justify-center py-6"
|
|
1538
|
-
},
|
|
1675
|
+
}, vn = {
|
|
1539
1676
|
key: 2,
|
|
1540
1677
|
class: "mt-4 text-sm text-red-500",
|
|
1541
1678
|
role: "alert"
|
|
1542
|
-
},
|
|
1679
|
+
}, yn = {
|
|
1543
1680
|
key: 3,
|
|
1544
1681
|
class: "mt-4"
|
|
1545
|
-
},
|
|
1682
|
+
}, bn = { class: "relative" }, xn = ["placeholder"], Sn = {
|
|
1546
1683
|
key: 4,
|
|
1547
1684
|
class: "mt-3 max-h-64 overflow-y-auto"
|
|
1548
|
-
},
|
|
1685
|
+
}, Cn = ["onClick"], wn = { class: "flex-1 min-w-0" }, Tn = {
|
|
1549
1686
|
key: 0,
|
|
1550
1687
|
class: "text-center py-6"
|
|
1551
|
-
},
|
|
1688
|
+
}, En = {
|
|
1552
1689
|
key: 1,
|
|
1553
1690
|
class: "text-center py-6"
|
|
1554
|
-
},
|
|
1691
|
+
}, Dn = ["disabled"], On = ["disabled"], kn = /* @__PURE__ */ d({
|
|
1555
1692
|
__name: "BaseEntityPickerModal",
|
|
1556
1693
|
props: {
|
|
1557
1694
|
title: {},
|
|
@@ -1572,11 +1709,11 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1572
1709
|
}
|
|
1573
1710
|
},
|
|
1574
1711
|
emits: ["confirm", "cancel"],
|
|
1575
|
-
setup(t, { emit:
|
|
1576
|
-
let
|
|
1577
|
-
let e =
|
|
1578
|
-
return
|
|
1579
|
-
}),
|
|
1712
|
+
setup(t, { emit: n }) {
|
|
1713
|
+
let c = t, l = n, { isDark: d } = H(), f = J(), h = b([]), _ = b(!1), v = b(""), C = b(null), w = b(""), D = b(null), O = r(() => {
|
|
1714
|
+
let e = c.loader ? h.value : c.items;
|
|
1715
|
+
return c.excludeId ? e.filter((e) => e.id !== c.excludeId) : e;
|
|
1716
|
+
}), k = r(() => O.value.filter((e) => e.label.toLowerCase().includes(w.value.toLowerCase()))), ee = {
|
|
1580
1717
|
emerald: {
|
|
1581
1718
|
iconBg: "bg-emerald-50",
|
|
1582
1719
|
iconText: "text-emerald-600",
|
|
@@ -1622,7 +1759,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1622
1759
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1623
1760
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1624
1761
|
}
|
|
1625
|
-
},
|
|
1762
|
+
}, j = {
|
|
1626
1763
|
emerald: {
|
|
1627
1764
|
iconBg: "bg-emerald-900/30",
|
|
1628
1765
|
iconText: "text-emerald-400",
|
|
@@ -1668,94 +1805,94 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1668
1805
|
confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
|
|
1669
1806
|
confirmDisabled: "bg-amber-400 cursor-not-allowed"
|
|
1670
1807
|
}
|
|
1671
|
-
},
|
|
1672
|
-
|
|
1673
|
-
if (
|
|
1674
|
-
|
|
1808
|
+
}, P = r(() => (d.value ? j : ee)[c.variant]);
|
|
1809
|
+
g(async () => {
|
|
1810
|
+
if (c.loader) {
|
|
1811
|
+
_.value = !0;
|
|
1675
1812
|
try {
|
|
1676
|
-
|
|
1813
|
+
h.value = await c.loader();
|
|
1677
1814
|
} catch {
|
|
1678
|
-
|
|
1815
|
+
v.value = "Failed to load items";
|
|
1679
1816
|
} finally {
|
|
1680
|
-
|
|
1817
|
+
_.value = !1;
|
|
1681
1818
|
}
|
|
1682
1819
|
}
|
|
1683
|
-
await
|
|
1820
|
+
await p(), D.value?.focus();
|
|
1684
1821
|
});
|
|
1685
|
-
function P() {
|
|
1686
|
-
!T.value || l.submitting || u("confirm", T.value);
|
|
1687
|
-
}
|
|
1688
1822
|
function F() {
|
|
1689
|
-
|
|
1823
|
+
!C.value || c.submitting || l("confirm", C.value);
|
|
1824
|
+
}
|
|
1825
|
+
function te() {
|
|
1826
|
+
c.submitting || l("cancel");
|
|
1690
1827
|
}
|
|
1691
|
-
return (n,
|
|
1828
|
+
return (n, r) => (y(), i(Lt, {
|
|
1692
1829
|
title: t.title,
|
|
1693
1830
|
"manual-close": t.submitting,
|
|
1694
|
-
onCancel:
|
|
1831
|
+
onCancel: te
|
|
1695
1832
|
}, {
|
|
1696
|
-
icon:
|
|
1697
|
-
class:
|
|
1833
|
+
icon: M(() => [S(n.$slots, "icon", {}, () => [s("div", { class: m(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", P.value.iconBg]) }, [u(E(me), {
|
|
1834
|
+
class: m(["h-6 w-6", P.value.iconText]),
|
|
1698
1835
|
"aria-hidden": "true"
|
|
1699
1836
|
}, null, 8, ["class"])], 2)])]),
|
|
1700
|
-
footer:
|
|
1837
|
+
footer: M(() => [s("button", {
|
|
1701
1838
|
type: "button",
|
|
1702
1839
|
disabled: t.submitting,
|
|
1703
|
-
class:
|
|
1704
|
-
onClick:
|
|
1705
|
-
},
|
|
1840
|
+
class: m(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed", E(f).ghostButton]),
|
|
1841
|
+
onClick: te
|
|
1842
|
+
}, T(t.cancelText), 11, Dn), s("button", {
|
|
1706
1843
|
type: "button",
|
|
1707
|
-
disabled: !
|
|
1708
|
-
class:
|
|
1709
|
-
onClick:
|
|
1710
|
-
},
|
|
1711
|
-
default:
|
|
1712
|
-
t.message ? (
|
|
1844
|
+
disabled: !C.value || t.submitting,
|
|
1845
|
+
class: m(["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", !C.value || t.submitting ? P.value.confirmDisabled : P.value.confirmActive]),
|
|
1846
|
+
onClick: F
|
|
1847
|
+
}, T(t.submitting ? t.submittingText : t.confirmText), 11, On)]),
|
|
1848
|
+
default: M(() => [
|
|
1849
|
+
t.message ? (y(), o("p", {
|
|
1713
1850
|
key: 0,
|
|
1714
|
-
class:
|
|
1715
|
-
},
|
|
1716
|
-
|
|
1717
|
-
!
|
|
1718
|
-
class:
|
|
1851
|
+
class: m(["text-sm", E(d) ? "text-gray-300" : "text-gray-600"])
|
|
1852
|
+
}, T(t.message), 3)) : a("", !0),
|
|
1853
|
+
_.value ? (y(), o("div", _n, [u(ot, { color: "emerald" })])) : v.value ? (y(), o("div", vn, T(v.value), 1)) : a("", !0),
|
|
1854
|
+
!_.value && !v.value && O.value.length > 0 ? (y(), o("div", yn, [s("div", bn, [u(E(ge), {
|
|
1855
|
+
class: m(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", E(f).dimText]),
|
|
1719
1856
|
"aria-hidden": "true"
|
|
1720
|
-
}, null, 8, ["class"]),
|
|
1857
|
+
}, null, 8, ["class"]), N(s("input", {
|
|
1721
1858
|
ref_key: "searchInputRef",
|
|
1722
|
-
ref:
|
|
1723
|
-
"onUpdate:modelValue":
|
|
1859
|
+
ref: D,
|
|
1860
|
+
"onUpdate:modelValue": r[0] ||= (e) => w.value = e,
|
|
1724
1861
|
type: "text",
|
|
1725
1862
|
placeholder: t.searchPlaceholder,
|
|
1726
|
-
class:
|
|
1727
|
-
}, null, 10,
|
|
1728
|
-
!
|
|
1863
|
+
class: m(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [E(d) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", P.value.inputFocus]])
|
|
1864
|
+
}, null, 10, xn), [[A, w.value]])])])) : a("", !0),
|
|
1865
|
+
!_.value && !v.value ? (y(), o("div", Sn, [(y(!0), o(e, null, x(k.value, (e) => (y(), o("div", {
|
|
1729
1866
|
key: e.id,
|
|
1730
|
-
class:
|
|
1731
|
-
onClick: (t) =>
|
|
1867
|
+
class: m(["flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors", [C.value === e.id ? P.value.selectedRow : E(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
|
|
1868
|
+
onClick: (t) => C.value = e.id
|
|
1732
1869
|
}, [
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1870
|
+
u(E(me), { class: m(["w-5 h-5 flex-shrink-0", E(f).dimText]) }, null, 8, ["class"]),
|
|
1871
|
+
s("div", wn, [s("p", { class: m(["text-sm font-medium truncate", E(f).bodyText]) }, T(e.label), 3)]),
|
|
1872
|
+
C.value === e.id ? (y(), o("div", {
|
|
1736
1873
|
key: 0,
|
|
1737
|
-
class:
|
|
1738
|
-
}, [...
|
|
1874
|
+
class: m(["w-5 h-5 rounded-full flex items-center justify-center", P.value.checkBg])
|
|
1875
|
+
}, [...r[1] ||= [s("svg", {
|
|
1739
1876
|
class: "w-3 h-3 text-white",
|
|
1740
1877
|
fill: "none",
|
|
1741
1878
|
viewBox: "0 0 24 24",
|
|
1742
1879
|
stroke: "currentColor",
|
|
1743
1880
|
"stroke-width": "3",
|
|
1744
1881
|
"aria-hidden": "true"
|
|
1745
|
-
}, [
|
|
1882
|
+
}, [s("path", {
|
|
1746
1883
|
"stroke-linecap": "round",
|
|
1747
1884
|
"stroke-linejoin": "round",
|
|
1748
1885
|
d: "M5 13l4 4L19 7"
|
|
1749
|
-
})], -1)]], 2)) :
|
|
1750
|
-
], 10,
|
|
1886
|
+
})], -1)]], 2)) : a("", !0)
|
|
1887
|
+
], 10, Cn))), 128)), O.value.length === 0 ? (y(), o("div", Tn, [s("p", { class: m(["text-sm", E(f).dimText]) }, T(t.emptyMessage), 3)])) : k.value.length === 0 ? (y(), o("div", En, [s("p", { class: m(["text-sm", E(f).dimText]) }, T(t.noMatchMessage), 3)])) : a("", !0)])) : a("", !0)
|
|
1751
1888
|
]),
|
|
1752
1889
|
_: 3
|
|
1753
1890
|
}, 8, ["title", "manual-close"]));
|
|
1754
1891
|
}
|
|
1755
|
-
}),
|
|
1892
|
+
}), An = {
|
|
1756
1893
|
href: "#main-content",
|
|
1757
1894
|
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"
|
|
1758
|
-
},
|
|
1895
|
+
}, jn = ["inert"], Mn = /* @__PURE__ */ d({
|
|
1759
1896
|
__name: "BaseAppLayout",
|
|
1760
1897
|
props: {
|
|
1761
1898
|
showSidebar: {
|
|
@@ -1765,19 +1902,19 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1765
1902
|
skipLinkLabel: { default: "Skip to main content" }
|
|
1766
1903
|
},
|
|
1767
1904
|
setup(e) {
|
|
1768
|
-
let t = e, { isDark:
|
|
1769
|
-
return (t,
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1905
|
+
let t = e, { isDark: n } = H(), { mobileOpen: i } = Qt(), { collapsed: c } = nn(), l = r(() => t.showSidebar);
|
|
1906
|
+
return (t, r) => (y(), o("div", { class: m(["min-h-screen transition-colors duration-300", E(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
|
|
1907
|
+
s("a", An, T(e.skipLinkLabel), 1),
|
|
1908
|
+
l.value ? S(t.$slots, "sidebar", { key: 0 }) : a("", !0),
|
|
1909
|
+
s("main", {
|
|
1773
1910
|
id: "main-content",
|
|
1774
1911
|
tabindex: "-1",
|
|
1775
|
-
inert:
|
|
1776
|
-
class:
|
|
1777
|
-
}, [
|
|
1912
|
+
inert: l.value && E(i) ? !0 : void 0,
|
|
1913
|
+
class: m(["transition-all duration-300", l.value ? E(c) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
|
|
1914
|
+
}, [S(t.$slots, "default")], 10, jn)
|
|
1778
1915
|
], 2));
|
|
1779
1916
|
}
|
|
1780
|
-
}),
|
|
1917
|
+
}), Nn = { class: "flex flex-wrap items-center justify-between gap-3 mb-8" }, Pn = { class: "flex items-center gap-3 min-w-0" }, Fn = { class: "flex items-center gap-2" }, In = /* @__PURE__ */ d({
|
|
1781
1918
|
__name: "BasePageHeader",
|
|
1782
1919
|
props: {
|
|
1783
1920
|
title: {},
|
|
@@ -1786,7 +1923,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1786
1923
|
maxWidthClass: { default: "max-w-4xl" }
|
|
1787
1924
|
},
|
|
1788
1925
|
setup(e) {
|
|
1789
|
-
let t = e, { isDark:
|
|
1926
|
+
let t = e, { isDark: n } = H(), i = J(), c = r(() => {
|
|
1790
1927
|
let e = {
|
|
1791
1928
|
emerald: {
|
|
1792
1929
|
dark: "bg-emerald-500/10",
|
|
@@ -1805,8 +1942,8 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1805
1942
|
light: "bg-amber-50"
|
|
1806
1943
|
}
|
|
1807
1944
|
}[t.iconColor];
|
|
1808
|
-
return
|
|
1809
|
-
}), l =
|
|
1945
|
+
return n.value ? e.dark : e.light;
|
|
1946
|
+
}), l = r(() => {
|
|
1810
1947
|
let e = {
|
|
1811
1948
|
emerald: {
|
|
1812
1949
|
dark: "text-emerald-400",
|
|
@@ -1825,18 +1962,18 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1825
1962
|
light: "text-amber-600"
|
|
1826
1963
|
}
|
|
1827
1964
|
}[t.iconColor];
|
|
1828
|
-
return
|
|
1965
|
+
return n.value ? e.dark : e.light;
|
|
1829
1966
|
});
|
|
1830
|
-
return (t, n) => (
|
|
1967
|
+
return (t, n) => (y(), o("div", { class: m(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [s("div", Nn, [s("div", Pn, [s("div", { class: m(["w-10 h-10 rounded-lg flex items-center justify-center", c.value]) }, [S(t.$slots, "icon", { iconClass: l.value })], 2), s("div", null, [s("h1", { class: m(["text-2xl font-bold", E(i).primaryTextSoft]) }, T(e.title), 3), e.subtitle ? (y(), o("p", {
|
|
1831
1968
|
key: 0,
|
|
1832
|
-
class:
|
|
1833
|
-
},
|
|
1969
|
+
class: m(["text-sm", E(i).dimTextAlt])
|
|
1970
|
+
}, T(e.subtitle), 3)) : a("", !0)])]), s("div", Fn, [S(t.$slots, "actions")])])], 2));
|
|
1834
1971
|
}
|
|
1835
|
-
}),
|
|
1972
|
+
}), Ln = [
|
|
1836
1973
|
"type",
|
|
1837
1974
|
"disabled",
|
|
1838
1975
|
"title"
|
|
1839
|
-
],
|
|
1976
|
+
], Rn = { key: 0 }, zn = /* @__PURE__ */ d({
|
|
1840
1977
|
__name: "BaseToolbarButton",
|
|
1841
1978
|
props: {
|
|
1842
1979
|
label: { default: "" },
|
|
@@ -1850,7 +1987,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1850
1987
|
},
|
|
1851
1988
|
emits: ["click"],
|
|
1852
1989
|
setup(e) {
|
|
1853
|
-
let t = e, { isDark:
|
|
1990
|
+
let t = e, { isDark: n } = H(), i = r(() => {
|
|
1854
1991
|
let e = {
|
|
1855
1992
|
neutral: {
|
|
1856
1993
|
dark: "bg-gray-800 text-gray-100 border-gray-700 hover:bg-gray-700",
|
|
@@ -1861,22 +1998,22 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1861
1998
|
light: "bg-red-600 text-white border-red-600 hover:bg-red-700"
|
|
1862
1999
|
}
|
|
1863
2000
|
}[t.variant];
|
|
1864
|
-
return
|
|
2001
|
+
return n.value ? e.dark : e.light;
|
|
1865
2002
|
});
|
|
1866
|
-
return (t, n) => (
|
|
2003
|
+
return (t, n) => (y(), o("button", {
|
|
1867
2004
|
type: e.type,
|
|
1868
2005
|
disabled: e.disabled,
|
|
1869
2006
|
title: e.title,
|
|
1870
|
-
class:
|
|
2007
|
+
class: m(["inline-flex shrink-0 items-center gap-2 px-3 py-2 rounded-lg text-sm font-medium border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap", i.value]),
|
|
1871
2008
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
1872
|
-
}, [
|
|
2009
|
+
}, [S(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (y(), o("span", Rn, T(e.label), 1)) : a("", !0)], 10, Ln));
|
|
1873
2010
|
}
|
|
1874
|
-
}),
|
|
2011
|
+
}), Bn = [
|
|
1875
2012
|
"type",
|
|
1876
2013
|
"disabled",
|
|
1877
2014
|
"title",
|
|
1878
2015
|
"aria-label"
|
|
1879
|
-
],
|
|
2016
|
+
], Vn = { key: 0 }, Hn = /* @__PURE__ */ d({
|
|
1880
2017
|
__name: "BaseActionButton",
|
|
1881
2018
|
props: {
|
|
1882
2019
|
label: { default: "" },
|
|
@@ -1895,7 +2032,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1895
2032
|
},
|
|
1896
2033
|
emits: ["click"],
|
|
1897
2034
|
setup(e) {
|
|
1898
|
-
let t = e, { isDark:
|
|
2035
|
+
let t = e, { isDark: n } = H(), i = r(() => {
|
|
1899
2036
|
let e = {
|
|
1900
2037
|
emerald: {
|
|
1901
2038
|
dark: "text-emerald-400 hover:bg-emerald-500/10",
|
|
@@ -1930,8 +2067,8 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1930
2067
|
light: "text-amber-700 hover:bg-amber-50"
|
|
1931
2068
|
}
|
|
1932
2069
|
}[t.color];
|
|
1933
|
-
return
|
|
1934
|
-
}), s =
|
|
2070
|
+
return n.value ? e.dark : e.light;
|
|
2071
|
+
}), s = r(() => {
|
|
1935
2072
|
let e = {
|
|
1936
2073
|
emerald: {
|
|
1937
2074
|
dark: "text-emerald-400",
|
|
@@ -1966,18 +2103,18 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1966
2103
|
light: "text-amber-700"
|
|
1967
2104
|
}
|
|
1968
2105
|
}[t.color];
|
|
1969
|
-
return
|
|
1970
|
-
}), c =
|
|
1971
|
-
return (t, n) => (
|
|
2106
|
+
return n.value ? e.dark : e.light;
|
|
2107
|
+
}), c = r(() => t.disabled ? `${s.value} opacity-50 cursor-not-allowed` : `${i.value} cursor-pointer`);
|
|
2108
|
+
return (t, n) => (y(), o("button", {
|
|
1972
2109
|
type: e.type,
|
|
1973
2110
|
disabled: e.disabled,
|
|
1974
2111
|
title: e.title,
|
|
1975
2112
|
"aria-label": e.ariaLabel,
|
|
1976
|
-
class:
|
|
2113
|
+
class: m(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors", [e.fullWidth ? "flex-1" : "", c.value]]),
|
|
1977
2114
|
onClick: n[0] ||= (e) => t.$emit("click", e)
|
|
1978
|
-
}, [
|
|
2115
|
+
}, [S(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (y(), o("span", Vn, T(e.label), 1)) : a("", !0)], 10, Bn));
|
|
1979
2116
|
}
|
|
1980
|
-
}),
|
|
2117
|
+
}), Un = ["title", "aria-label"], Wn = /* @__PURE__ */ d({
|
|
1981
2118
|
__name: "BaseCopyButton",
|
|
1982
2119
|
props: {
|
|
1983
2120
|
text: {},
|
|
@@ -1988,8 +2125,8 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
1988
2125
|
},
|
|
1989
2126
|
emits: ["copied", "error"],
|
|
1990
2127
|
setup(e, { emit: t }) {
|
|
1991
|
-
let
|
|
1992
|
-
async function
|
|
2128
|
+
let n = e, a = t, { isDark: s } = H(), c = b(!1), l = null, u = r(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = r(() => n.label ? `Copy ${n.label}` : "Copy"), f = r(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 ${c.value ? s.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : s.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer ${s.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
|
|
2129
|
+
async function p(e) {
|
|
1993
2130
|
try {
|
|
1994
2131
|
if (navigator.clipboard?.writeText) {
|
|
1995
2132
|
await navigator.clipboard.writeText(e);
|
|
@@ -2003,57 +2140,337 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
|
|
|
2003
2140
|
}
|
|
2004
2141
|
async function h() {
|
|
2005
2142
|
try {
|
|
2006
|
-
await
|
|
2143
|
+
await p(n.text), c.value = !0, l && clearTimeout(l), l = setTimeout(() => {
|
|
2007
2144
|
c.value = !1;
|
|
2008
|
-
},
|
|
2145
|
+
}, n.resetMs), a("copied");
|
|
2009
2146
|
} catch (e) {
|
|
2010
|
-
|
|
2147
|
+
a("error", e);
|
|
2011
2148
|
}
|
|
2012
2149
|
}
|
|
2013
|
-
return
|
|
2150
|
+
return v(() => {
|
|
2014
2151
|
l && clearTimeout(l);
|
|
2015
|
-
}), (t, n) => (
|
|
2152
|
+
}), (t, n) => (y(), o("button", {
|
|
2016
2153
|
type: "button",
|
|
2017
2154
|
title: u.value,
|
|
2018
2155
|
"aria-label": d.value,
|
|
2019
|
-
class: f
|
|
2156
|
+
class: m(f.value),
|
|
2020
2157
|
onClick: h
|
|
2021
|
-
}, [c.value ? (
|
|
2158
|
+
}, [c.value ? (y(), i(E(le), {
|
|
2022
2159
|
key: 0,
|
|
2023
|
-
class:
|
|
2160
|
+
class: m(e.iconClass),
|
|
2024
2161
|
"aria-hidden": "true"
|
|
2025
|
-
}, null, 8, ["class"])) : (
|
|
2162
|
+
}, null, 8, ["class"])) : (y(), i(E(ue), {
|
|
2026
2163
|
key: 1,
|
|
2027
|
-
class:
|
|
2164
|
+
class: m(e.iconClass),
|
|
2028
2165
|
"aria-hidden": "true"
|
|
2029
|
-
}, null, 8, ["class"]))], 10,
|
|
2166
|
+
}, null, 8, ["class"]))], 10, Un));
|
|
2167
|
+
}
|
|
2168
|
+
}), Gn = ["disabled", "aria-busy"], Kn = {
|
|
2169
|
+
key: 0,
|
|
2170
|
+
class: "w-5 h-5 animate-spin shrink-0",
|
|
2171
|
+
viewBox: "0 0 24 24",
|
|
2172
|
+
fill: "none",
|
|
2173
|
+
"aria-hidden": "true"
|
|
2174
|
+
}, qn = {
|
|
2175
|
+
key: 1,
|
|
2176
|
+
class: "w-5 h-5 shrink-0",
|
|
2177
|
+
viewBox: "0 0 48 48",
|
|
2178
|
+
"aria-hidden": "true"
|
|
2179
|
+
}, Jn = /* @__PURE__ */ d({
|
|
2180
|
+
__name: "BaseGoogleSignInButton",
|
|
2181
|
+
props: {
|
|
2182
|
+
label: { default: "Sign in with Google" },
|
|
2183
|
+
loading: {
|
|
2184
|
+
type: Boolean,
|
|
2185
|
+
default: !1
|
|
2186
|
+
},
|
|
2187
|
+
disabled: {
|
|
2188
|
+
type: Boolean,
|
|
2189
|
+
default: !1
|
|
2190
|
+
},
|
|
2191
|
+
block: {
|
|
2192
|
+
type: Boolean,
|
|
2193
|
+
default: !0
|
|
2194
|
+
}
|
|
2195
|
+
},
|
|
2196
|
+
emits: ["click"],
|
|
2197
|
+
setup(e, { emit: t }) {
|
|
2198
|
+
let n = e, i = t, { isDark: a } = H(), l = r(() => n.disabled || n.loading);
|
|
2199
|
+
function u() {
|
|
2200
|
+
l.value || i("click");
|
|
2201
|
+
}
|
|
2202
|
+
return (t, n) => (y(), o("button", {
|
|
2203
|
+
type: "button",
|
|
2204
|
+
disabled: l.value,
|
|
2205
|
+
"aria-busy": e.loading,
|
|
2206
|
+
onClick: u,
|
|
2207
|
+
class: m(["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" : "", E(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"]])
|
|
2208
|
+
}, [e.loading ? (y(), o("svg", Kn, [...n[0] ||= [s("circle", {
|
|
2209
|
+
class: "opacity-25",
|
|
2210
|
+
cx: "12",
|
|
2211
|
+
cy: "12",
|
|
2212
|
+
r: "10",
|
|
2213
|
+
stroke: "currentColor",
|
|
2214
|
+
"stroke-width": "4"
|
|
2215
|
+
}, null, -1), s("path", {
|
|
2216
|
+
class: "opacity-75",
|
|
2217
|
+
fill: "currentColor",
|
|
2218
|
+
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2219
|
+
}, null, -1)]])) : (y(), o("svg", qn, [...n[1] ||= [c("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), s("span", null, T(e.label), 1)], 10, Gn));
|
|
2220
|
+
}
|
|
2221
|
+
}), Yn = {
|
|
2222
|
+
key: 0,
|
|
2223
|
+
class: "flex justify-center mb-6"
|
|
2224
|
+
}, Xn = { class: "mb-6 text-center" }, Zn = { class: "flex items-center gap-3 my-5" }, Qn = ["disabled"], $n = { class: "flex items-center justify-between mb-1.5" }, er = { class: "relative" }, tr = ["type", "disabled"], nr = ["aria-label", "aria-pressed"], rr = ["disabled"], ir = ["disabled", "aria-busy"], ar = {
|
|
2225
|
+
key: 0,
|
|
2226
|
+
class: "w-4 h-4 animate-spin",
|
|
2227
|
+
viewBox: "0 0 24 24",
|
|
2228
|
+
fill: "none",
|
|
2229
|
+
"aria-hidden": "true"
|
|
2230
|
+
}, or = /* @__PURE__ */ d({
|
|
2231
|
+
__name: "BaseLoginForm",
|
|
2232
|
+
props: {
|
|
2233
|
+
title: { default: "Sign in" },
|
|
2234
|
+
subtitle: { default: "" },
|
|
2235
|
+
submitLabel: { default: "Sign in" },
|
|
2236
|
+
loading: {
|
|
2237
|
+
type: Boolean,
|
|
2238
|
+
default: !1
|
|
2239
|
+
},
|
|
2240
|
+
googleLoading: {
|
|
2241
|
+
type: Boolean,
|
|
2242
|
+
default: !1
|
|
2243
|
+
},
|
|
2244
|
+
error: { default: "" },
|
|
2245
|
+
showGoogle: {
|
|
2246
|
+
type: Boolean,
|
|
2247
|
+
default: !0
|
|
2248
|
+
},
|
|
2249
|
+
showRemember: {
|
|
2250
|
+
type: Boolean,
|
|
2251
|
+
default: !1
|
|
2252
|
+
}
|
|
2253
|
+
},
|
|
2254
|
+
emits: ["submit", "google-sign-in"],
|
|
2255
|
+
setup(t, { emit: n }) {
|
|
2256
|
+
let i = t, c = n, { isDark: d } = H(), f = J(), p = b(""), h = b(""), g = b(!1), _ = b(!1), v = r(() => i.loading || i.googleLoading);
|
|
2257
|
+
function x() {
|
|
2258
|
+
v.value || c("submit", {
|
|
2259
|
+
email: p.value,
|
|
2260
|
+
password: h.value,
|
|
2261
|
+
...i.showRemember ? { remember: g.value } : {}
|
|
2262
|
+
});
|
|
2263
|
+
}
|
|
2264
|
+
return (n, r) => (y(), o("div", { class: m(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", E(f).card]) }, [
|
|
2265
|
+
n.$slots.logo ? (y(), o("div", Yn, [S(n.$slots, "logo")])) : a("", !0),
|
|
2266
|
+
s("div", Xn, [s("h1", { class: m(["text-xl font-semibold", E(f).primaryText]) }, T(t.title), 3), t.subtitle ? (y(), o("p", {
|
|
2267
|
+
key: 0,
|
|
2268
|
+
class: m(["mt-1 text-sm", E(f).mutedText])
|
|
2269
|
+
}, T(t.subtitle), 3)) : a("", !0)]),
|
|
2270
|
+
t.error ? (y(), o("div", {
|
|
2271
|
+
key: 1,
|
|
2272
|
+
role: "alert",
|
|
2273
|
+
class: m(["mb-4 rounded-lg border px-3 py-2 text-sm", E(d) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
|
|
2274
|
+
}, T(t.error), 3)) : a("", !0),
|
|
2275
|
+
t.showGoogle ? (y(), o(e, { key: 2 }, [u(Jn, {
|
|
2276
|
+
loading: t.googleLoading,
|
|
2277
|
+
disabled: t.loading,
|
|
2278
|
+
onClick: r[0] ||= (e) => c("google-sign-in")
|
|
2279
|
+
}, null, 8, ["loading", "disabled"]), s("div", Zn, [
|
|
2280
|
+
s("span", { class: m(["h-px flex-1", E(d) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
|
|
2281
|
+
s("span", { class: m(["text-xs uppercase tracking-wider", E(f).dimTextAlt]) }, "or", 2),
|
|
2282
|
+
s("span", { class: m(["h-px flex-1", E(d) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
|
|
2283
|
+
])], 64)) : a("", !0),
|
|
2284
|
+
s("form", {
|
|
2285
|
+
class: "space-y-4",
|
|
2286
|
+
onSubmit: F(x, ["prevent"])
|
|
2287
|
+
}, [
|
|
2288
|
+
s("div", null, [s("label", {
|
|
2289
|
+
for: "login-email",
|
|
2290
|
+
class: m(["block mb-1.5 text-sm font-medium", E(f).label])
|
|
2291
|
+
}, " Email ", 2), N(s("input", {
|
|
2292
|
+
id: "login-email",
|
|
2293
|
+
"onUpdate:modelValue": r[1] ||= (e) => p.value = e,
|
|
2294
|
+
type: "email",
|
|
2295
|
+
name: "email",
|
|
2296
|
+
autocomplete: "email",
|
|
2297
|
+
required: "",
|
|
2298
|
+
disabled: v.value,
|
|
2299
|
+
placeholder: "you@example.com",
|
|
2300
|
+
class: m(["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", E(f).inputWithPlaceholder])
|
|
2301
|
+
}, null, 10, Qn), [[A, p.value]])]),
|
|
2302
|
+
s("div", null, [s("div", $n, [s("label", {
|
|
2303
|
+
for: "login-password",
|
|
2304
|
+
class: m(["block text-sm font-medium", E(f).label])
|
|
2305
|
+
}, " Password ", 2), S(n.$slots, "forgot")]), s("div", er, [N(s("input", {
|
|
2306
|
+
id: "login-password",
|
|
2307
|
+
"onUpdate:modelValue": r[2] ||= (e) => h.value = e,
|
|
2308
|
+
type: _.value ? "text" : "password",
|
|
2309
|
+
name: "password",
|
|
2310
|
+
autocomplete: "current-password",
|
|
2311
|
+
required: "",
|
|
2312
|
+
disabled: v.value,
|
|
2313
|
+
placeholder: "••••••••",
|
|
2314
|
+
class: m(["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", E(f).inputWithPlaceholder])
|
|
2315
|
+
}, null, 10, tr), [[k, h.value]]), s("button", {
|
|
2316
|
+
type: "button",
|
|
2317
|
+
onClick: r[3] ||= (e) => _.value = !_.value,
|
|
2318
|
+
"aria-label": _.value ? "Hide password" : "Show password",
|
|
2319
|
+
"aria-pressed": _.value,
|
|
2320
|
+
class: m(["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", E(f).mutedText])
|
|
2321
|
+
}, T(_.value ? "Hide" : "Show"), 11, nr)])]),
|
|
2322
|
+
t.showRemember ? (y(), o("label", {
|
|
2323
|
+
key: 0,
|
|
2324
|
+
class: m(["flex items-center gap-2 text-sm cursor-pointer select-none", E(f).bodyText])
|
|
2325
|
+
}, [N(s("input", {
|
|
2326
|
+
"onUpdate:modelValue": r[4] ||= (e) => g.value = e,
|
|
2327
|
+
type: "checkbox",
|
|
2328
|
+
disabled: v.value,
|
|
2329
|
+
class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
|
|
2330
|
+
}, null, 8, rr), [[O, g.value]]), r[5] ||= l(" Remember me ", -1)], 2)) : a("", !0),
|
|
2331
|
+
s("button", {
|
|
2332
|
+
type: "submit",
|
|
2333
|
+
disabled: v.value,
|
|
2334
|
+
"aria-busy": t.loading,
|
|
2335
|
+
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"
|
|
2336
|
+
}, [t.loading ? (y(), o("svg", ar, [...r[6] ||= [s("circle", {
|
|
2337
|
+
class: "opacity-25",
|
|
2338
|
+
cx: "12",
|
|
2339
|
+
cy: "12",
|
|
2340
|
+
r: "10",
|
|
2341
|
+
stroke: "currentColor",
|
|
2342
|
+
"stroke-width": "4"
|
|
2343
|
+
}, null, -1), s("path", {
|
|
2344
|
+
class: "opacity-75",
|
|
2345
|
+
fill: "currentColor",
|
|
2346
|
+
d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
|
|
2347
|
+
}, null, -1)]])) : a("", !0), l(" " + T(t.submitLabel), 1)], 8, ir)
|
|
2348
|
+
], 32),
|
|
2349
|
+
n.$slots.footer ? (y(), o("div", {
|
|
2350
|
+
key: 3,
|
|
2351
|
+
class: m(["mt-6 text-center text-sm", E(f).mutedText])
|
|
2352
|
+
}, [S(n.$slots, "footer")], 2)) : a("", !0)
|
|
2353
|
+
], 2));
|
|
2354
|
+
}
|
|
2355
|
+
}), sr = ["aria-label"], cr = { class: "flex-1 overflow-y-auto" }, lr = {
|
|
2356
|
+
key: 0,
|
|
2357
|
+
class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
|
|
2358
|
+
}, ur = ["onClick"], dr = { class: "min-w-0 flex-1" }, fr = { class: "flex items-baseline justify-between gap-2" }, pr = /* @__PURE__ */ d({
|
|
2359
|
+
__name: "BaseNotificationPanel",
|
|
2360
|
+
props: {
|
|
2361
|
+
title: { default: "Notifications" },
|
|
2362
|
+
emptyText: { default: "You have no notifications." },
|
|
2363
|
+
showMarkAllRead: {
|
|
2364
|
+
type: Boolean,
|
|
2365
|
+
default: !0
|
|
2366
|
+
}
|
|
2367
|
+
},
|
|
2368
|
+
emits: ["select"],
|
|
2369
|
+
setup(c, { emit: d }) {
|
|
2370
|
+
let f = d, { isDark: p } = H(), h = J(), { notifications: g, unreadCount: _, open: v, closePanel: b, markAllRead: S, markRead: C } = an(), w = {
|
|
2371
|
+
info: "bg-sky-500",
|
|
2372
|
+
success: "bg-emerald-500",
|
|
2373
|
+
warning: "bg-amber-500",
|
|
2374
|
+
error: "bg-red-500"
|
|
2375
|
+
}, D = r(() => g.value.length);
|
|
2376
|
+
function O(e) {
|
|
2377
|
+
C(e), f("select", e);
|
|
2378
|
+
}
|
|
2379
|
+
return Y(() => {
|
|
2380
|
+
v.value && b();
|
|
2381
|
+
}), (r, d) => (y(), i(t, { to: "body" }, [u(n, {
|
|
2382
|
+
"enter-active-class": "transition-opacity duration-200",
|
|
2383
|
+
"enter-from-class": "opacity-0",
|
|
2384
|
+
"leave-active-class": "transition-opacity duration-200",
|
|
2385
|
+
"leave-to-class": "opacity-0"
|
|
2386
|
+
}, {
|
|
2387
|
+
default: M(() => [E(v) ? (y(), o("div", {
|
|
2388
|
+
key: 0,
|
|
2389
|
+
class: "fixed inset-0 z-[60] bg-black/50",
|
|
2390
|
+
"aria-hidden": "true",
|
|
2391
|
+
onClick: d[0] ||= (...e) => E(b) && E(b)(...e)
|
|
2392
|
+
})) : a("", !0)]),
|
|
2393
|
+
_: 1
|
|
2394
|
+
}), u(n, {
|
|
2395
|
+
"enter-active-class": "transition-transform duration-300 ease-out",
|
|
2396
|
+
"enter-from-class": "-translate-x-full",
|
|
2397
|
+
"leave-active-class": "transition-transform duration-300 ease-in",
|
|
2398
|
+
"leave-to-class": "-translate-x-full"
|
|
2399
|
+
}, {
|
|
2400
|
+
default: M(() => [E(v) ? (y(), o("aside", {
|
|
2401
|
+
key: 0,
|
|
2402
|
+
role: "dialog",
|
|
2403
|
+
"aria-modal": "true",
|
|
2404
|
+
"aria-label": c.title,
|
|
2405
|
+
class: m(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", E(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
|
|
2406
|
+
}, [
|
|
2407
|
+
s("div", { class: m(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", E(h).border]) }, [s("h2", { class: m(["text-lg font-semibold flex items-center gap-2", E(h).primaryText]) }, [l(T(c.title) + " ", 1), s("span", { class: m(["text-sm font-normal", E(h).dimTextAlt]) }, "— " + T(D.value), 3)], 2), s("button", {
|
|
2408
|
+
type: "button",
|
|
2409
|
+
onClick: d[1] ||= (...e) => E(b) && E(b)(...e),
|
|
2410
|
+
"aria-label": "Close notifications",
|
|
2411
|
+
class: m(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", E(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
|
|
2412
|
+
}, [u(E(be), {
|
|
2413
|
+
class: "w-5 h-5",
|
|
2414
|
+
"aria-hidden": "true"
|
|
2415
|
+
})], 2)], 2),
|
|
2416
|
+
c.showMarkAllRead && E(_) > 0 ? (y(), o("div", {
|
|
2417
|
+
key: 0,
|
|
2418
|
+
class: m(["px-5 py-2 border-b shrink-0 flex justify-end", E(h).border])
|
|
2419
|
+
}, [s("button", {
|
|
2420
|
+
type: "button",
|
|
2421
|
+
onClick: d[2] ||= (...e) => E(S) && E(S)(...e),
|
|
2422
|
+
class: m(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", E(h).emeraldText])
|
|
2423
|
+
}, " Mark all as read ", 2)], 2)) : a("", !0),
|
|
2424
|
+
s("div", cr, [D.value === 0 ? (y(), o("div", lr, [u(E(ie), {
|
|
2425
|
+
class: m(["w-10 h-10", E(h).illustration]),
|
|
2426
|
+
"aria-hidden": "true"
|
|
2427
|
+
}, null, 8, ["class"]), s("p", { class: m(["text-sm", E(h).mutedText]) }, T(c.emptyText), 3)])) : (y(), o("ul", {
|
|
2428
|
+
key: 1,
|
|
2429
|
+
class: m(["divide-y", E(p) ? "divide-gray-800" : "divide-gray-100"])
|
|
2430
|
+
}, [(y(!0), o(e, null, x(E(g), (e) => (y(), o("li", { key: e.id }, [s("button", {
|
|
2431
|
+
type: "button",
|
|
2432
|
+
onClick: (t) => O(e.id),
|
|
2433
|
+
class: m(["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 ? "" : E(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", E(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
|
|
2434
|
+
}, [s("span", {
|
|
2435
|
+
class: m(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? E(p) ? "bg-gray-700" : "bg-gray-300" : w[e.type ?? "info"]]),
|
|
2436
|
+
"aria-hidden": "true"
|
|
2437
|
+
}, null, 2), s("span", dr, [s("span", fr, [s("span", { class: m(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", E(h).primaryTextSoft]]) }, T(e.title), 3), e.time ? (y(), o("span", {
|
|
2438
|
+
key: 0,
|
|
2439
|
+
class: m(["text-xs shrink-0", E(h).dimText])
|
|
2440
|
+
}, T(e.time), 3)) : a("", !0)]), e.message ? (y(), o("span", {
|
|
2441
|
+
key: 0,
|
|
2442
|
+
class: m(["mt-0.5 block text-sm", E(h).mutedText])
|
|
2443
|
+
}, T(e.message), 3)) : a("", !0)])], 10, ur)]))), 128))], 2))])
|
|
2444
|
+
], 10, sr)) : a("", !0)]),
|
|
2445
|
+
_: 1
|
|
2446
|
+
})]));
|
|
2030
2447
|
}
|
|
2031
2448
|
});
|
|
2032
2449
|
//#endregion
|
|
2033
2450
|
//#region src/composables/useDebounce.ts
|
|
2034
|
-
function
|
|
2035
|
-
let n =
|
|
2036
|
-
return
|
|
2451
|
+
function mr(e, t = 300) {
|
|
2452
|
+
let n = b(e.value), r = null;
|
|
2453
|
+
return j(e, (e) => {
|
|
2037
2454
|
r && clearTimeout(r), r = setTimeout(() => {
|
|
2038
2455
|
n.value = e, r = null;
|
|
2039
2456
|
}, t);
|
|
2040
|
-
}),
|
|
2457
|
+
}), _(() => {
|
|
2041
2458
|
r &&= (clearTimeout(r), null);
|
|
2042
2459
|
}), n;
|
|
2043
2460
|
}
|
|
2044
2461
|
//#endregion
|
|
2045
2462
|
//#region src/composables/useToast.ts
|
|
2046
|
-
function
|
|
2047
|
-
let t =
|
|
2463
|
+
function hr(e = 3e3) {
|
|
2464
|
+
let t = b(!1), n = b(""), r = b(K.SUCCESS), i = null;
|
|
2048
2465
|
function a() {
|
|
2049
2466
|
i &&= (clearTimeout(i), null);
|
|
2050
2467
|
}
|
|
2051
|
-
function o(o, s =
|
|
2468
|
+
function o(o, s = K.SUCCESS, c = e) {
|
|
2052
2469
|
n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
|
|
2053
2470
|
t.value = !1, i = null;
|
|
2054
2471
|
}, c);
|
|
2055
2472
|
}
|
|
2056
|
-
return
|
|
2473
|
+
return _(() => {
|
|
2057
2474
|
a();
|
|
2058
2475
|
}), {
|
|
2059
2476
|
showToast: t,
|
|
@@ -2064,16 +2481,16 @@ function En(e = 3e3) {
|
|
|
2064
2481
|
}
|
|
2065
2482
|
//#endregion
|
|
2066
2483
|
//#region src/enums/BaseBadgeEnum.ts
|
|
2067
|
-
var
|
|
2484
|
+
var gr = /* @__PURE__ */ function(e) {
|
|
2068
2485
|
return e.WIN = "WIN", e.LOSE = "LOSE", e;
|
|
2069
|
-
}({}),
|
|
2486
|
+
}({}), _r = {
|
|
2070
2487
|
GET: "bg-blue-600",
|
|
2071
2488
|
POST: "bg-emerald-600",
|
|
2072
2489
|
PUT: "bg-amber-600",
|
|
2073
2490
|
DELETE: "bg-red-600",
|
|
2074
2491
|
PATCH: "bg-purple-600",
|
|
2075
2492
|
HEAD: "bg-gray-600"
|
|
2076
|
-
},
|
|
2493
|
+
}, vr = {
|
|
2077
2494
|
GET: "bg-blue-500",
|
|
2078
2495
|
POST: "bg-green-500",
|
|
2079
2496
|
PUT: "bg-yellow-500",
|
|
@@ -2081,23 +2498,23 @@ var Dn = /* @__PURE__ */ function(e) {
|
|
|
2081
2498
|
PATCH: "bg-purple-500",
|
|
2082
2499
|
HEAD: "bg-gray-500"
|
|
2083
2500
|
};
|
|
2084
|
-
function
|
|
2085
|
-
return e ?
|
|
2501
|
+
function yr(e) {
|
|
2502
|
+
return e ? _r[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
|
|
2086
2503
|
}
|
|
2087
|
-
function
|
|
2088
|
-
return e ?
|
|
2504
|
+
function br(e) {
|
|
2505
|
+
return e ? vr[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
|
|
2089
2506
|
}
|
|
2090
|
-
function
|
|
2507
|
+
function xr(e) {
|
|
2091
2508
|
let t = e ?? 0;
|
|
2092
2509
|
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";
|
|
2093
2510
|
}
|
|
2094
|
-
function
|
|
2511
|
+
function Sr(e, t) {
|
|
2095
2512
|
let n = e ?? 200;
|
|
2096
2513
|
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";
|
|
2097
2514
|
}
|
|
2098
2515
|
//#endregion
|
|
2099
2516
|
//#region src/utils/sanitizeHtml.ts
|
|
2100
|
-
var
|
|
2517
|
+
var Cr = /* @__PURE__ */ new Set([
|
|
2101
2518
|
"A",
|
|
2102
2519
|
"B",
|
|
2103
2520
|
"STRONG",
|
|
@@ -2112,7 +2529,7 @@ var Pn = new Set([
|
|
|
2112
2529
|
"LI",
|
|
2113
2530
|
"SPAN",
|
|
2114
2531
|
"DIV"
|
|
2115
|
-
]),
|
|
2532
|
+
]), wr = /* @__PURE__ */ new Set([
|
|
2116
2533
|
"SCRIPT",
|
|
2117
2534
|
"STYLE",
|
|
2118
2535
|
"IFRAME",
|
|
@@ -2120,53 +2537,53 @@ var Pn = new Set([
|
|
|
2120
2537
|
"EMBED",
|
|
2121
2538
|
"NOSCRIPT",
|
|
2122
2539
|
"TEMPLATE"
|
|
2123
|
-
]),
|
|
2124
|
-
function
|
|
2540
|
+
]), Tr = { A: /* @__PURE__ */ new Set(["href", "title"]) };
|
|
2541
|
+
function Er(e) {
|
|
2125
2542
|
let t = e.trim().toLowerCase();
|
|
2126
2543
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
|
|
2127
2544
|
}
|
|
2128
|
-
function
|
|
2545
|
+
function Dr(e) {
|
|
2129
2546
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
2130
2547
|
let t = e, n = t.tagName.toUpperCase();
|
|
2131
|
-
if (!
|
|
2132
|
-
|
|
2548
|
+
if (!Cr.has(n)) {
|
|
2549
|
+
wr.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
|
|
2133
2550
|
return;
|
|
2134
2551
|
}
|
|
2135
|
-
let r =
|
|
2552
|
+
let r = Tr[n] ?? /* @__PURE__ */ new Set();
|
|
2136
2553
|
for (let e of Array.from(t.attributes)) {
|
|
2137
2554
|
if (!r.has(e.name.toLowerCase())) {
|
|
2138
2555
|
t.removeAttribute(e.name);
|
|
2139
2556
|
continue;
|
|
2140
2557
|
}
|
|
2141
|
-
n === "A" && e.name.toLowerCase() === "href" && !
|
|
2558
|
+
n === "A" && e.name.toLowerCase() === "href" && !Er(e.value) && t.removeAttribute(e.name);
|
|
2142
2559
|
}
|
|
2143
2560
|
n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
|
|
2144
|
-
for (let e of Array.from(t.childNodes))
|
|
2561
|
+
for (let e of Array.from(t.childNodes)) Dr(e);
|
|
2145
2562
|
}
|
|
2146
|
-
function
|
|
2563
|
+
function Or(e) {
|
|
2147
2564
|
if (!e) return "";
|
|
2148
2565
|
let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
|
|
2149
2566
|
if (!t) return "";
|
|
2150
|
-
for (let e of Array.from(t.childNodes))
|
|
2567
|
+
for (let e of Array.from(t.childNodes)) Dr(e);
|
|
2151
2568
|
return t.innerHTML;
|
|
2152
2569
|
}
|
|
2153
2570
|
//#endregion
|
|
2154
2571
|
//#region src/utils/format.ts
|
|
2155
|
-
var
|
|
2156
|
-
function
|
|
2157
|
-
if (e == null || typeof e == "string" && e.trim() === "") return
|
|
2572
|
+
var kr = "—";
|
|
2573
|
+
function Ar(e, t = 4) {
|
|
2574
|
+
if (e == null || typeof e == "string" && e.trim() === "") return kr;
|
|
2158
2575
|
let n = typeof e == "string" ? Number(e) : e;
|
|
2159
2576
|
return isFinite(n) ? n.toLocaleString(void 0, {
|
|
2160
2577
|
minimumFractionDigits: t,
|
|
2161
2578
|
maximumFractionDigits: t
|
|
2162
|
-
}) :
|
|
2579
|
+
}) : kr;
|
|
2163
2580
|
}
|
|
2164
|
-
function
|
|
2165
|
-
if (e == null || e === "") return
|
|
2581
|
+
function jr(e) {
|
|
2582
|
+
if (e == null || e === "") return kr;
|
|
2166
2583
|
let t = new Date(e);
|
|
2167
2584
|
return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
|
|
2168
2585
|
}
|
|
2169
|
-
function
|
|
2586
|
+
function Mr(e) {
|
|
2170
2587
|
return new Date(e).toLocaleString(void 0, {
|
|
2171
2588
|
month: "short",
|
|
2172
2589
|
day: "numeric",
|
|
@@ -2174,13 +2591,13 @@ function Un(e) {
|
|
|
2174
2591
|
minute: "2-digit"
|
|
2175
2592
|
});
|
|
2176
2593
|
}
|
|
2177
|
-
function
|
|
2594
|
+
function Nr(e) {
|
|
2178
2595
|
return new Date(e).toLocaleDateString(void 0, {
|
|
2179
2596
|
month: "short",
|
|
2180
2597
|
day: "numeric"
|
|
2181
2598
|
});
|
|
2182
2599
|
}
|
|
2183
|
-
function
|
|
2600
|
+
function Pr(e) {
|
|
2184
2601
|
if (!isFinite(e) || e === 0) return e.toFixed(2);
|
|
2185
2602
|
let t = Math.abs(e), n = 2;
|
|
2186
2603
|
return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
|
|
@@ -2188,15 +2605,15 @@ function Gn(e) {
|
|
|
2188
2605
|
maximumFractionDigits: n
|
|
2189
2606
|
});
|
|
2190
2607
|
}
|
|
2191
|
-
function
|
|
2608
|
+
function Fr(e, t = 2) {
|
|
2192
2609
|
return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
|
|
2193
2610
|
}
|
|
2194
|
-
function
|
|
2611
|
+
function Ir(e) {
|
|
2195
2612
|
return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
|
|
2196
2613
|
}
|
|
2197
2614
|
//#endregion
|
|
2198
2615
|
//#region src/utils/pnl.ts
|
|
2199
|
-
function
|
|
2616
|
+
function Lr(e) {
|
|
2200
2617
|
if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
|
|
2201
2618
|
pnlUsd: null,
|
|
2202
2619
|
pnlPct: null
|
|
@@ -2211,4 +2628,4 @@ function Jn(e) {
|
|
|
2211
2628
|
};
|
|
2212
2629
|
}
|
|
2213
2630
|
//#endregion
|
|
2214
|
-
export {
|
|
2631
|
+
export { I as AlertEnum, Hn as BaseActionButton, De as BaseAlert, Mn as BaseAppLayout, ke as BaseBadge, gr as BaseBadgeEnum, Ne as BaseBreadcrumb, U as BaseButton, R as BaseButtonEnum, z as BaseButtonSizeEnum, Bt as BaseCollapsibleSection, Wt as BaseConfirmModal, Wn as BaseCopyButton, kn as BaseEntityPickerModal, Jn as BaseGoogleSignInButton, Je as BaseLine, Ye as BaseLoginEnum, or as BaseLoginForm, Ze as BaseLogo, G as BaseLogoEnum, it as BaseModal, Qe as BaseModalEnum, Lt as BaseModalShell, Zt as BaseNotFoundPage, pr as BaseNotificationPanel, In as BasePageHeader, at as BaseRow, gn as BaseSidebar, ot as BaseSpinner, Jt as BaseTextInputModal, lt as BaseToast, K as BaseToastEnum, zn as BaseToolbarButton, dt as ColoredSquares, L as ColorsEnums, mt as EarningsCard, yt as EuroAmount, W as LineEnum, Ct as Pagination, q as PositioningEnum, Ot as TrendArrow, Lr as computePnL, jr as fmtDate, Nr as fmtDateShort, Mr as fmtDateTime, Ar as fmtNumber, Fr as fmtPct, Pr as fmtPrice, Ir as fmtUsd, we as getBaseColor, Te as getBaseColorOf, Ie as initTheme, Er as isSafeHref, br as methodBadgeBright, yr as methodBadgeSolid, Or as sanitizeHtml, xr as statusBadgeSolid, Sr as statusBadgeTinted, mr as useDebouncedRef, Y as useEscapeKey, Qt as useMobileSidebar, an as useNotifications, nn as useSidebarCollapse, H as useTheme, J as useThemeClasses, hr as useToast };
|