mgv-backoffice 1.16.0 → 1.18.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/dist/ui-lib.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { Fragment as e, Teleport as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, effectScope as u, nextTick as d, normalizeClass as f, onBeforeUnmount as p, onMounted as m, onScopeDispose as h, onUnmounted as g, openBlock as _, ref as v, renderList as y, renderSlot as b, resolveComponent as x, resolveDynamicComponent as S, toDisplayString as C, unref as w, useSlots as T, vModelText as E, vShow as D, watch as O, withCtx as k, withDirectives as A, withKeys as j, withModifiers as M } from "vue";
2
- import { ArrowDownIcon as ee, ArrowUpIcon as te, Bars3Icon as N, CheckCircleIcon as ne, ChevronRightIcon as re, ClipboardDocumentCheckIcon as ie, ClipboardDocumentIcon as ae, DocumentDuplicateIcon as oe, ExclamationCircleIcon as se, ExclamationTriangleIcon as P, FolderIcon as ce, InformationCircleIcon as le, MagnifyingGlassIcon as ue, XMarkIcon as F } from "@heroicons/vue/24/outline";
2
+ import { ArrowDownIcon as ee, ArrowUpIcon as te, Bars3Icon as N, CheckCircleIcon as P, ChevronRightIcon as F, ClipboardDocumentCheckIcon as ne, ClipboardDocumentIcon as re, DocumentDuplicateIcon as ie, ExclamationCircleIcon as ae, ExclamationTriangleIcon as I, FolderIcon as oe, InformationCircleIcon as se, MagnifyingGlassIcon as ce, MinusIcon as le, XMarkIcon as ue } from "@heroicons/vue/24/outline";
3
3
  import { HomeIcon as de } from "@heroicons/vue/24/solid";
4
4
  import { useRoute as fe, useRouter as pe } from "vue-router";
5
5
  //#region src/enums/AlertEnum.ts
6
- var I = /* @__PURE__ */ function(e) {
6
+ var L = /* @__PURE__ */ function(e) {
7
7
  return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
8
- }({}), L = /* @__PURE__ */ function(e) {
8
+ }({}), R = /* @__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
@@ -13,16 +13,16 @@ var I = /* @__PURE__ */ function(e) {
13
13
  function me(e) {
14
14
  let t = "red";
15
15
  switch (e) {
16
- case I.ERROR:
16
+ case L.ERROR:
17
17
  t = "red";
18
18
  break;
19
- case I.SUCCESS:
19
+ case L.SUCCESS:
20
20
  t = "green";
21
21
  break;
22
- case I.INFO:
22
+ case L.INFO:
23
23
  t = "gray";
24
24
  break;
25
- case I.WARNING:
25
+ case L.WARNING:
26
26
  t = "yellow";
27
27
  break;
28
28
  }
@@ -31,25 +31,25 @@ function me(e) {
31
31
  function he(e) {
32
32
  let t = "red";
33
33
  switch (e) {
34
- case L.GREEN:
34
+ case R.GREEN:
35
35
  t = "green";
36
36
  break;
37
- case L.RED:
37
+ case R.RED:
38
38
  t = "red";
39
39
  break;
40
- case L.BLUE:
40
+ case R.BLUE:
41
41
  t = "blue";
42
42
  break;
43
- case L.YELLOW:
43
+ case R.YELLOW:
44
44
  t = "yellow";
45
45
  break;
46
- case L.BLACK:
46
+ case R.BLACK:
47
47
  t = "black";
48
48
  break;
49
- case L.GRAY:
49
+ case R.GRAY:
50
50
  t = "gray";
51
51
  break;
52
- case L.NONE:
52
+ case R.NONE:
53
53
  t = "";
54
54
  break;
55
55
  }
@@ -68,21 +68,35 @@ var ge = { class: "font-medium pl-1" }, _e = /* @__PURE__ */ l({
68
68
  color: {
69
69
  type: String,
70
70
  required: !1,
71
- default: I.ERROR
71
+ default: L.ERROR
72
72
  }
73
73
  },
74
74
  setup(e) {
75
- let t = e;
76
- function n() {
75
+ let t = e, i = n(() => {
76
+ switch (t.color) {
77
+ case L.SUCCESS: return P;
78
+ case L.WARNING: return I;
79
+ case L.INFO: return se;
80
+ default: return ae;
81
+ }
82
+ }), s = n(() => {
83
+ switch (t.color) {
84
+ case L.SUCCESS: return "text-green-500";
85
+ case L.WARNING: return "text-yellow-500";
86
+ case L.INFO: return "text-gray-500";
87
+ default: return "text-red-500";
88
+ }
89
+ });
90
+ function c() {
77
91
  let e = me(t.color);
78
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";
79
93
  }
80
- return (t, r) => (_(), a("div", {
81
- class: f(n()),
94
+ return (t, n) => (_(), a("div", {
95
+ class: f(c()),
82
96
  role: "alert"
83
- }, [c(w(le), { class: "w-6 h-6 text-gray-400" }), o("div", null, [o("span", ge, C(e.title), 1)])], 2));
97
+ }, [(_(), r(S(i.value), { class: f(["w-6 h-6 flex-shrink-0", s.value]) }, null, 8, ["class"])), o("div", null, [o("span", ge, C(e.title), 1)])], 2));
84
98
  }
85
- }), ve = "bg-red-100 text-red-700 border-red-200", R = /* @__PURE__ */ l({
99
+ }), ve = "bg-red-100 text-red-700 border-red-200", z = /* @__PURE__ */ l({
86
100
  __name: "BaseBadge",
87
101
  props: { color: {
88
102
  type: String,
@@ -90,12 +104,13 @@ var ge = { class: "font-medium pl-1" }, _e = /* @__PURE__ */ l({
90
104
  } },
91
105
  setup(e) {
92
106
  let t = T(), r = n(() => !!t.default), o = e, s = {
93
- [L.RED]: "bg-red-100 text-red-700 border-red-200",
94
- [L.GREEN]: "bg-green-100 text-green-700 border-green-200",
95
- [L.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
96
- [L.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
97
- [L.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
98
- [L.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
107
+ [R.RED]: "bg-red-100 text-red-700 border-red-200",
108
+ [R.GREEN]: "bg-green-100 text-green-700 border-green-200",
109
+ [R.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
110
+ [R.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
111
+ [R.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
112
+ [R.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
113
+ [R.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
99
114
  }, c = n(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${o.color && s[o.color] || ve}`);
100
115
  return (e, t) => r.value ? (_(), a("span", {
101
116
  key: 0,
@@ -143,7 +158,7 @@ var ge = { class: "font-medium pl-1" }, _e = /* @__PURE__ */ l({
143
158
  key: t,
144
159
  class: "inline-flex items-center",
145
160
  style: { "margin-left": "0" }
146
- }, [c(w(re), { class: "h-4 w-4 text-gray-500" }), c(r, {
161
+ }, [c(w(F), { class: "h-4 w-4 text-gray-500" }), c(r, {
147
162
  to: e.url,
148
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"
149
164
  }, {
@@ -152,47 +167,52 @@ var ge = { class: "font-medium pl-1" }, _e = /* @__PURE__ */ l({
152
167
  }, 1032, ["to"])]))), 128))])]);
153
168
  };
154
169
  }
155
- }), z = /* @__PURE__ */ function(e) {
170
+ }), B = /* @__PURE__ */ function(e) {
156
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;
157
- }({}), B = /* @__PURE__ */ function(e) {
172
+ }({}), V = /* @__PURE__ */ function(e) {
158
173
  return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
159
- }({}), V = v(!1), Ce = !1, H = "mgv-theme";
174
+ }({}), H = v(!1), Ce = !1, U = "mgv-theme";
160
175
  function we(e) {
161
- if (!Ce) {
162
- if (Ce = !0, H = e, typeof window < "u") {
163
- let e = window.localStorage?.getItem(H);
164
- e ? V.value = e === "dark" : typeof window.matchMedia == "function" && (V.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
165
- }
166
- typeof document < "u" && u(!0).run(() => {
167
- O(V, (e) => {
168
- document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(H, e ? "dark" : "light");
169
- }, { immediate: !0 });
170
- });
176
+ if (Ce) {
177
+ e !== U && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${U}". Call initTheme({ storageKey }) before mounting any component.`);
178
+ return;
171
179
  }
180
+ if (Ce = !0, U = e, typeof window < "u") {
181
+ let e = window.localStorage?.getItem(U);
182
+ e ? H.value = e === "dark" : typeof window.matchMedia == "function" && (H.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
183
+ }
184
+ typeof document < "u" && u(!0).run(() => {
185
+ O(H, (e) => {
186
+ document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(U, e ? "dark" : "light");
187
+ }, { immediate: !0 });
188
+ });
172
189
  }
173
- function U(e) {
174
- we(e?.storageKey ?? H);
190
+ function Te(e) {
191
+ we(e?.storageKey ?? U);
192
+ }
193
+ function W(e) {
194
+ we(e?.storageKey ?? U);
175
195
  function t() {
176
- V.value = !V.value;
196
+ H.value = !H.value;
177
197
  }
178
198
  return {
179
- isDark: V,
199
+ isDark: H,
180
200
  toggleTheme: t
181
201
  };
182
202
  }
183
203
  //#endregion
184
204
  //#region src/components/BaseButton.vue?vue&type=script&setup=true&lang.ts
185
- var Te = [
205
+ var Ee = [
186
206
  "type",
187
207
  "disabled",
188
208
  "onClick"
189
- ], Ee = {
209
+ ], De = {
190
210
  key: 0,
191
211
  class: "inline-flex items-center"
192
- }, De = { key: 1 }, Oe = { key: 2 }, ke = ["type", "disabled"], Ae = {
212
+ }, Oe = { key: 1 }, ke = { key: 2 }, Ae = ["type", "disabled"], je = {
193
213
  key: 0,
194
214
  class: "inline-flex items-center"
195
- }, je = { key: 1 }, Me = { key: 2 }, Ne = /* @__PURE__ */ l({
215
+ }, Me = { key: 1 }, Ne = { key: 2 }, G = /* @__PURE__ */ l({
196
216
  __name: "BaseButton",
197
217
  props: {
198
218
  description: {
@@ -202,7 +222,7 @@ var Te = [
202
222
  color: {
203
223
  type: String,
204
224
  required: !1,
205
- default: z.BLUE
225
+ default: B.BLUE
206
226
  },
207
227
  to: {
208
228
  type: String,
@@ -213,14 +233,6 @@ var Te = [
213
233
  required: !1,
214
234
  default: "button"
215
235
  },
216
- icon: {
217
- type: String,
218
- required: !1
219
- },
220
- iconSize: {
221
- type: String,
222
- required: !1
223
- },
224
236
  iconLeft: {
225
237
  type: Boolean,
226
238
  required: !1,
@@ -254,139 +266,139 @@ var Te = [
254
266
  }
255
267
  },
256
268
  setup(e) {
257
- let { isDark: t } = U(), n = e;
269
+ let { isDark: t } = W(), n = e;
258
270
  function s() {
259
271
  let e = {
260
- [z.BLUE]: {
272
+ [B.BLUE]: {
261
273
  light: "text-blue-700 border-blue-300 hover:bg-blue-50",
262
274
  dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
263
275
  },
264
- [z.GREEN]: {
276
+ [B.GREEN]: {
265
277
  light: "text-green-700 border-green-300 hover:bg-green-50",
266
278
  dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
267
279
  },
268
- [z.EMERALD]: {
280
+ [B.EMERALD]: {
269
281
  light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
270
282
  dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
271
283
  },
272
- [z.RED]: {
284
+ [B.RED]: {
273
285
  light: "text-red-700 border-red-300 hover:bg-red-50",
274
286
  dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
275
287
  },
276
- [z.YELLOW]: {
288
+ [B.YELLOW]: {
277
289
  light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
278
290
  dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
279
291
  },
280
- [z.PURPLE]: {
292
+ [B.PURPLE]: {
281
293
  light: "text-purple-700 border-purple-300 hover:bg-purple-50",
282
294
  dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
283
295
  },
284
- [z.SKY]: {
296
+ [B.SKY]: {
285
297
  light: "text-sky-700 border-sky-300 hover:bg-sky-50",
286
298
  dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
287
299
  },
288
- [z.AMBER]: {
300
+ [B.AMBER]: {
289
301
  light: "text-amber-700 border-amber-300 hover:bg-amber-50",
290
302
  dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
291
303
  },
292
- [z.GRAY]: {
304
+ [B.GRAY]: {
293
305
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
294
306
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
295
307
  },
296
- [z.DARK]: {
308
+ [B.DARK]: {
297
309
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
298
310
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
299
311
  },
300
- [z.WHITE]: {
312
+ [B.WHITE]: {
301
313
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
302
314
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
303
315
  }
304
- }, r = e[n.color] ?? e[z.BLUE], i = t.value ? r.dark : r.light;
316
+ }, r = e[n.color] ?? e[B.BLUE], i = t.value ? r.dark : r.light;
305
317
  return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none border bg-transparent ${i}`;
306
318
  }
307
319
  function c() {
308
320
  let e = {
309
- [z.BLUE]: {
321
+ [B.BLUE]: {
310
322
  light: "text-blue-600 hover:bg-blue-50",
311
323
  dark: "text-blue-400 hover:bg-blue-500/10"
312
324
  },
313
- [z.GREEN]: {
325
+ [B.GREEN]: {
314
326
  light: "text-green-600 hover:bg-green-50",
315
327
  dark: "text-green-400 hover:bg-green-500/10"
316
328
  },
317
- [z.EMERALD]: {
329
+ [B.EMERALD]: {
318
330
  light: "text-emerald-600 hover:bg-emerald-50",
319
331
  dark: "text-emerald-400 hover:bg-emerald-500/10"
320
332
  },
321
- [z.SKY]: {
333
+ [B.SKY]: {
322
334
  light: "text-sky-600 hover:bg-sky-50",
323
335
  dark: "text-sky-400 hover:bg-sky-500/10"
324
336
  },
325
- [z.RED]: {
337
+ [B.RED]: {
326
338
  light: "text-red-500 hover:bg-red-50",
327
339
  dark: "text-red-400 hover:bg-red-500/10"
328
340
  },
329
- [z.AMBER]: {
341
+ [B.AMBER]: {
330
342
  light: "text-amber-700 hover:bg-amber-50",
331
343
  dark: "text-amber-300 hover:bg-amber-500/10"
332
344
  },
333
- [z.YELLOW]: {
345
+ [B.YELLOW]: {
334
346
  light: "text-yellow-600 hover:bg-yellow-50",
335
347
  dark: "text-yellow-400 hover:bg-yellow-500/10"
336
348
  },
337
- [z.PURPLE]: {
349
+ [B.PURPLE]: {
338
350
  light: "text-purple-600 hover:bg-purple-50",
339
351
  dark: "text-purple-400 hover:bg-purple-500/10"
340
352
  },
341
- [z.GRAY]: {
353
+ [B.GRAY]: {
342
354
  light: "text-gray-500 hover:bg-gray-100",
343
355
  dark: "text-gray-400 hover:bg-gray-800"
344
356
  },
345
- [z.DARK]: {
357
+ [B.DARK]: {
346
358
  light: "text-gray-500 hover:bg-gray-100",
347
359
  dark: "text-gray-400 hover:bg-gray-800"
348
360
  },
349
- [z.WHITE]: {
361
+ [B.WHITE]: {
350
362
  light: "text-gray-500 hover:bg-gray-100",
351
363
  dark: "text-gray-400 hover:bg-gray-800"
352
364
  }
353
- }, r = e[n.color] ?? e[z.GRAY], i = t.value ? r.dark : r.light;
365
+ }, r = e[n.color] ?? e[B.GRAY], i = t.value ? r.dark : r.light;
354
366
  return n.isDisable || n.isLoading ? `bg-transparent ${i} opacity-60 cursor-not-allowed` : `focus:outline-none bg-transparent ${i} cursor-pointer`;
355
367
  }
356
368
  function l() {
357
369
  let e = n.isDisable || n.isLoading, t;
358
370
  switch (n.color) {
359
- case z.BLUE:
371
+ case B.BLUE:
360
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";
361
373
  break;
362
- case z.WHITE:
374
+ case B.WHITE:
363
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";
364
376
  break;
365
- case z.DARK:
377
+ case B.DARK:
366
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";
367
379
  break;
368
- case z.GREEN:
380
+ case B.GREEN:
369
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";
370
382
  break;
371
- case z.EMERALD:
383
+ case B.EMERALD:
372
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";
373
385
  break;
374
- case z.RED:
386
+ case B.RED:
375
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";
376
388
  break;
377
- case z.YELLOW:
389
+ case B.YELLOW:
378
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";
379
391
  break;
380
- case z.PURPLE:
381
- 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 px-5 py-2.5 mb-2";
392
+ case B.PURPLE:
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";
382
394
  break;
383
- case z.SKY:
395
+ case B.SKY:
384
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";
385
397
  break;
386
- case z.AMBER:
398
+ case B.AMBER:
387
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";
388
400
  break;
389
- case z.GRAY:
401
+ case B.GRAY:
390
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";
391
403
  break;
392
404
  default:
@@ -396,19 +408,19 @@ var Te = [
396
408
  n.outline && (t = s()), n.ghost && (t = c());
397
409
  let r = "px-5 py-2.5 mr-2 mb-2 text-sm";
398
410
  switch (n.size) {
399
- case B.EXTRA_SMALL:
411
+ case V.EXTRA_SMALL:
400
412
  r = "px-3 py-2 text-xs";
401
413
  break;
402
- case B.SMALL:
414
+ case V.SMALL:
403
415
  r = "px-3 py-2 text-sm";
404
416
  break;
405
- case B.BASE:
417
+ case V.BASE:
406
418
  r = "px-5 py-2.5 text-sm";
407
419
  break;
408
- case B.LARGE:
420
+ case V.LARGE:
409
421
  r = "px-5 py-3 text-base";
410
422
  break;
411
- case B.EXTRA_LARGE:
423
+ case V.EXTRA_LARGE:
412
424
  r = "px-6 py-3.5 text-base";
413
425
  break;
414
426
  }
@@ -428,7 +440,7 @@ var Te = [
428
440
  disabled: e.isDisable || e.isLoading,
429
441
  onClick: r
430
442
  }, [
431
- e.isLoading ? (_(), a("div", Ee, [...s[0] ||= [o("svg", {
443
+ e.isLoading ? (_(), a("div", De, [...s[0] ||= [o("svg", {
432
444
  "aria-hidden": "true",
433
445
  role: "status",
434
446
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -442,10 +454,10 @@ var Te = [
442
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",
443
455
  fill: "currentColor"
444
456
  })], -1)]])) : i("", !0),
445
- e.iconLeft ? i("", !0) : (_(), a("span", De, C(e.description), 1)),
457
+ e.iconLeft ? i("", !0) : (_(), a("span", Oe, C(e.description), 1)),
446
458
  b(t.$slots, "default"),
447
- e.iconLeft ? (_(), a("span", Oe, C(e.description), 1)) : i("", !0)
448
- ], 10, Te)]),
459
+ e.iconLeft ? (_(), a("span", ke, C(e.description), 1)) : i("", !0)
460
+ ], 10, Ee)]),
449
461
  _: 3
450
462
  }, 8, ["to"])) : (_(), a("button", {
451
463
  key: 1,
@@ -453,7 +465,7 @@ var Te = [
453
465
  class: f(l()),
454
466
  disabled: e.isDisable || e.isLoading
455
467
  }, [
456
- e.isLoading ? (_(), a("div", Ae, [...s[1] ||= [o("svg", {
468
+ e.isLoading ? (_(), a("div", je, [...s[1] ||= [o("svg", {
457
469
  "aria-hidden": "true",
458
470
  role: "status",
459
471
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -467,13 +479,13 @@ var Te = [
467
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",
468
480
  fill: "currentColor"
469
481
  })], -1)]])) : i("", !0),
470
- e.iconLeft ? i("", !0) : (_(), a("span", je, C(e.description), 1)),
482
+ e.iconLeft ? i("", !0) : (_(), a("span", Me, C(e.description), 1)),
471
483
  b(t.$slots, "default"),
472
- e.iconLeft ? (_(), a("span", Me, C(e.description), 1)) : i("", !0)
473
- ], 10, ke));
484
+ e.iconLeft ? (_(), a("span", Ne, C(e.description), 1)) : i("", !0)
485
+ ], 10, Ae));
474
486
  };
475
487
  }
476
- }), W = /* @__PURE__ */ function(e) {
488
+ }), K = /* @__PURE__ */ function(e) {
477
489
  return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
478
490
  }({}), Pe = {
479
491
  key: 0,
@@ -489,36 +501,36 @@ var Te = [
489
501
  props: { mode: {
490
502
  type: String,
491
503
  required: !1,
492
- default: W.BASE
504
+ default: K.BASE
493
505
  } },
494
506
  setup(t) {
495
507
  return (n, r) => (_(), a(e, null, [
496
- t.mode === w(W).BASE ? (_(), a("hr", Pe)) : i("", !0),
497
- t.mode === w(W).BASE_SHORTER ? (_(), a("hr", Fe)) : i("", !0),
498
- t.mode === w(W).SQUARE ? (_(), a("hr", Ie)) : i("", !0)
508
+ t.mode === w(K).BASE ? (_(), a("hr", Pe)) : i("", !0),
509
+ t.mode === w(K).BASE_SHORTER ? (_(), a("hr", Fe)) : i("", !0),
510
+ t.mode === w(K).SQUARE ? (_(), a("hr", Ie)) : i("", !0)
499
511
  ], 64));
500
512
  }
501
- }), G = /* @__PURE__ */ function(e) {
513
+ }), q = /* @__PURE__ */ function(e) {
502
514
  return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
503
- }({}), Re = G, ze = ["height", "width"], Be = /* @__PURE__ */ l({
515
+ }({}), Re = q, ze = ["height", "width"], Be = /* @__PURE__ */ l({
504
516
  __name: "BaseLogo",
505
517
  props: { size: {
506
518
  type: String,
507
519
  required: !1,
508
- default: G.MEDIUM
520
+ default: q.MEDIUM
509
521
  } },
510
522
  setup(e) {
511
523
  let t = e;
512
524
  function n() {
513
525
  let e = "";
514
526
  switch (t.size) {
515
- case G.SMALL:
527
+ case q.SMALL:
516
528
  e = "50px";
517
529
  break;
518
- case G.MEDIUM:
530
+ case q.MEDIUM:
519
531
  e = "100px";
520
532
  break;
521
- case G.LARGE:
533
+ case q.LARGE:
522
534
  e = "150px";
523
535
  break;
524
536
  }
@@ -685,12 +697,18 @@ var Te = [
685
697
  });
686
698
  };
687
699
  }
688
- }), K = /* @__PURE__ */ function(e) {
700
+ }), J = /* @__PURE__ */ function(e) {
689
701
  return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
690
- }({}), Ve = ["aria-labelledby"], He = {
702
+ }({}), Ve = {
691
703
  key: 0,
692
704
  class: "p-6 text-center"
693
- }, Ue = ["id"], We = { class: "flex justify-center" }, Ge = /* @__PURE__ */ l({
705
+ }, He = { class: "flex justify-center" }, Ue = {
706
+ key: 1,
707
+ class: "p-6 text-center"
708
+ }, We = {
709
+ key: 0,
710
+ class: "mb-5 text-sm text-gray-500"
711
+ }, Ge = { class: "flex justify-center" }, Ke = /* @__PURE__ */ l({
694
712
  __name: "BaseModal",
695
713
  props: {
696
714
  title: {
@@ -709,57 +727,63 @@ var Te = [
709
727
  mode: {
710
728
  type: String,
711
729
  required: !1,
712
- default: K.SUCCESS
730
+ default: J.SUCCESS
713
731
  }
714
732
  },
715
733
  emits: ["closeModal", "confirmModal"],
716
734
  setup(t, { emit: n }) {
717
- let r = n;
718
- function s(e) {
735
+ let r = n, s = `modal-title-${Math.random().toString(36).slice(2, 9)}`;
736
+ function l(e) {
719
737
  e.key === "Escape" && r("closeModal");
720
738
  }
721
739
  return m(() => {
722
- document.addEventListener("keydown", s);
740
+ document.addEventListener("keydown", l);
723
741
  }), g(() => {
724
- document.removeEventListener("keydown", s);
725
- }), (n, r) => {
726
- let s = x("base-button");
727
- return _(), a(e, null, [o("div", {
728
- class: "outside",
729
- onClick: r[0] ||= (e) => n.$emit("closeModal")
730
- }), o("div", {
731
- class: "dialog relative top-20 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white",
732
- role: "dialog",
733
- "aria-modal": "true",
734
- "aria-labelledby": "modal-title-" + t.title
735
- }, [t.mode === w(K).DELETE ? (_(), a("div", He, [
736
- c(w(se), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
737
- o("h3", {
738
- id: "modal-title-" + t.title,
739
- class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
740
- }, " Are you sure you want to delete this " + C(t.title) + "? ", 9, Ue),
741
- o("div", We, [c(s, {
742
- color: w(z).RED,
743
- onClick: r[1] ||= (e) => n.$emit("confirmModal"),
744
- description: "Yes, I'm sure"
745
- }, null, 8, ["color"]), c(s, {
746
- color: w(z).WHITE,
747
- onClick: r[2] ||= (e) => n.$emit("closeModal"),
748
- description: "No, cancel"
749
- }, null, 8, ["color"])])
750
- ])) : i("", !0)], 8, Ve)], 64);
751
- };
742
+ document.removeEventListener("keydown", l);
743
+ }), (n, r) => (_(), a(e, null, [o("div", {
744
+ class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
745
+ onClick: r[0] ||= (e) => n.$emit("closeModal")
746
+ }), o("div", {
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
+ role: "dialog",
749
+ "aria-modal": "true",
750
+ "aria-labelledby": s
751
+ }, [t.mode === w(J).DELETE ? (_(), a("div", Ve, [
752
+ c(w(ae), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
753
+ o("h3", {
754
+ id: s,
755
+ class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
756
+ }, " Are you sure you want to delete this " + C(t.title) + "? ", 1),
757
+ o("div", He, [c(G, {
758
+ color: w(B).RED,
759
+ onClick: r[1] ||= (e) => n.$emit("confirmModal"),
760
+ description: "Yes, I'm sure"
761
+ }, null, 8, ["color"]), c(G, {
762
+ color: w(B).WHITE,
763
+ onClick: r[2] ||= (e) => n.$emit("closeModal"),
764
+ description: "No, cancel"
765
+ }, null, 8, ["color"])])
766
+ ])) : (_(), a("div", Ue, [
767
+ c(w(P), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
768
+ o("h3", {
769
+ id: s,
770
+ class: "mb-2 text-lg font-medium text-gray-900"
771
+ }, C(t.title), 1),
772
+ t.description ? (_(), a("p", We, C(t.description), 1)) : i("", !0),
773
+ b(n.$slots, "default"),
774
+ o("div", Ge, [c(G, {
775
+ color: w(B).BLUE,
776
+ onClick: r[3] ||= (e) => n.$emit("closeModal"),
777
+ description: "OK"
778
+ }, null, 8, ["color"])])
779
+ ]))])], 64));
752
780
  }
753
- }), q = (e, t) => {
754
- let n = e.__vccOpts || e;
755
- for (let [e, r] of t) n[e] = r;
756
- return n;
757
- }, Ke = /* @__PURE__ */ q(Ge, [["__scopeId", "data-v-1db4f0ac"]]), qe = /* @__PURE__ */ l({
781
+ }), qe = /* @__PURE__ */ l({
758
782
  __name: "BaseRow",
759
783
  props: { bgColor: {
760
784
  type: String,
761
785
  required: !1,
762
- default: "white"
786
+ default: "bg-white"
763
787
  } },
764
788
  setup(e) {
765
789
  let t = e;
@@ -796,21 +820,15 @@ var Te = [
796
820
  "aria-label": "Loading"
797
821
  }, null, 2));
798
822
  }
799
- }), J = /* @__PURE__ */ function(e) {
823
+ }), Y = /* @__PURE__ */ function(e) {
800
824
  return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
801
- }({}), Y = /* @__PURE__ */ function(e) {
825
+ }({}), X = /* @__PURE__ */ function(e) {
802
826
  return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
803
- }({}), Ye = { 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" }, Xe = { class: "ml-3 text-sm font-normal" }, Ze = {
804
- key: 3,
805
- type: "button",
806
- 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",
807
- "data-dismiss-target": "#toast-danger",
808
- "aria-label": "Close"
809
- }, Qe = /* @__PURE__ */ l({
827
+ }({}), Ye = { 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" }, Xe = { class: "ml-3 text-sm font-normal" }, Ze = /* @__PURE__ */ l({
810
828
  __name: "BaseToast",
811
829
  props: {
812
830
  mode: {
813
- type: Object,
831
+ type: String,
814
832
  required: !0
815
833
  },
816
834
  description: {
@@ -825,7 +843,7 @@ var Te = [
825
843
  positioning: {
826
844
  type: String,
827
845
  required: !1,
828
- default: Y.TOP_RIGHT
846
+ default: X.TOP_RIGHT
829
847
  },
830
848
  duration: {
831
849
  type: Number,
@@ -846,13 +864,13 @@ var Te = [
846
864
  function l() {
847
865
  let e = "";
848
866
  switch (t.mode) {
849
- case J.ERROR:
867
+ case Y.ERROR:
850
868
  e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
851
869
  break;
852
- case J.SUCCESS:
870
+ case Y.SUCCESS:
853
871
  e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
854
872
  break;
855
- case J.WARNING:
873
+ case Y.WARNING:
856
874
  e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
857
875
  break;
858
876
  default:
@@ -864,16 +882,16 @@ var Te = [
864
882
  function u() {
865
883
  let e = "top-5 right-5";
866
884
  switch (t.positioning) {
867
- case Y.BOTTOM_LEFT:
885
+ case X.BOTTOM_LEFT:
868
886
  e = "bottom-5 left-5";
869
887
  break;
870
- case Y.TOP_LEFT:
888
+ case X.TOP_LEFT:
871
889
  e = "top-5 left-5";
872
890
  break;
873
- case Y.TOP_RIGHT:
891
+ case X.TOP_RIGHT:
874
892
  e = "top-5 right-5";
875
893
  break;
876
- case Y.BOTTOM_RIGHT:
894
+ case X.BOTTOM_RIGHT:
877
895
  e = "bottom-5 right-5";
878
896
  break;
879
897
  }
@@ -885,24 +903,27 @@ var Te = [
885
903
  class: f(u()),
886
904
  role: "alert"
887
905
  }, [o("div", Ye, [
888
- e.mode == w(J).ERROR ? (_(), a("div", {
906
+ e.mode == w(Y).ERROR ? (_(), a("div", {
889
907
  key: 0,
890
908
  class: f(l())
891
- }, [c(w(se), { class: "h-6 w-6 text-red-500" }), r[0] ||= o("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == w(J).SUCCESS ? (_(), a("div", {
909
+ }, [c(w(ae), { class: "h-6 w-6 text-red-500" }), r[0] ||= o("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == w(Y).SUCCESS ? (_(), a("div", {
892
910
  key: 1,
893
911
  class: f(l())
894
- }, [c(w(ne), { class: "h-6 w-6 text-green-500" }), r[1] ||= o("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == w(J).WARNING ? (_(), a("div", {
912
+ }, [c(w(P), { class: "h-6 w-6 text-green-500" }), r[1] ||= o("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == w(Y).WARNING ? (_(), a("div", {
895
913
  key: 2,
896
914
  class: f(l())
897
- }, [c(w(P), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= o("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : i("", !0),
915
+ }, [c(w(I), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= o("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : i("", !0),
898
916
  o("div", Xe, C(e.description), 1),
899
- e.hasCloseIcon ? (_(), a("button", Ze, [r[3] ||= o("span", { class: "sr-only" }, "Close", -1), c(w(F), {
900
- class: "h-6 w-6 text-gray-500 cursor-pointer",
917
+ e.hasCloseIcon ? (_(), a("button", {
918
+ key: 3,
919
+ type: "button",
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
+ "aria-label": "Close",
901
922
  onClick: s
902
- })])) : i("", !0)
923
+ }, [r[3] ||= o("span", { class: "sr-only" }, "Close", -1), c(w(ue), { class: "h-6 w-6 text-gray-500" })])) : i("", !0)
903
924
  ])], 2)) : i("", !0);
904
925
  }
905
- }), $e = { class: "w-13" }, et = /* @__PURE__ */ l({
926
+ }), Qe = { class: "w-13" }, $e = /* @__PURE__ */ l({
906
927
  __name: "ColoredSquares",
907
928
  props: { color: {
908
929
  type: String,
@@ -921,29 +942,27 @@ var Te = [
921
942
  "bg-pink-300"
922
943
  ], r = v(n[Math.floor(Math.random() * n.length)]);
923
944
  function i() {
924
- let e = "gray";
945
+ let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
925
946
  switch (t.color) {
926
- case L.GREEN:
927
- e = "green";
928
- break;
929
- case L.RED:
930
- e = "red";
947
+ case R.GREEN:
948
+ n = "green";
931
949
  break;
932
- case L.BLUE:
933
- e = "blue";
950
+ case R.RED:
951
+ n = "red";
934
952
  break;
935
- case L.YELLOW:
936
- e = "yellow";
953
+ case R.BLUE:
954
+ n = "blue";
937
955
  break;
938
- case L.NONE:
939
- e = "";
956
+ case R.YELLOW:
957
+ n = "yellow";
940
958
  break;
959
+ case R.NONE: return e;
941
960
  }
942
- return "font-bold bg-" + e + "-100 text-" + e + "-800 text-xs mr-2 px-2.5 py-0.5 rounded-full";
961
+ return e + " bg-" + n + "-100 text-" + n + "-800";
943
962
  }
944
- return (e, t) => (_(), a("div", $e, [o("div", { class: f(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [b(e.$slots, "default"), o("div", { class: f(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
963
+ return (e, t) => (_(), a("div", Qe, [o("div", { class: f(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [b(e.$slots, "default"), o("div", { class: f(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
945
964
  }
946
- }), tt = { class: "flex items-start justify-between" }, nt = { class: "text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, rt = /* @__PURE__ */ l({
965
+ }), et = { class: "flex items-start justify-between" }, tt = { class: "text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, nt = /* @__PURE__ */ l({
947
966
  __name: "EarningsCard",
948
967
  props: {
949
968
  title: { default: "TOTAL EARNINGS" },
@@ -982,8 +1001,8 @@ var Te = [
982
1001
  return (t, n) => (_(), a("div", { class: f(["relative rounded-xl border-2 border-dashed bg-white p-6 dark:bg-slate-800", s.value.border]) }, [e.badge ? (_(), a("div", {
983
1002
  key: 0,
984
1003
  class: f(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", s.value.badge])
985
- }, C(e.badge), 3)) : i("", !0), o("div", tt, [o("div", null, [
986
- o("p", nt, C(e.title), 1),
1004
+ }, C(e.badge), 3)) : i("", !0), o("div", et, [o("div", null, [
1005
+ o("p", tt, C(e.title), 1),
987
1006
  o("p", { class: f(["mt-1 text-4xl font-bold", s.value.amount]) }, C(c.value), 3),
988
1007
  o("p", { class: f(["mt-1 text-sm font-medium", s.value.subtitle]) }, C(e.subtitle), 3)
989
1008
  ]), o("div", { class: f(["mt-6 flex h-12 w-12 items-center justify-center rounded-xl", s.value.iconBox]) }, [(_(), a("svg", {
@@ -996,10 +1015,10 @@ var Te = [
996
1015
  "stroke-linejoin": "round"
997
1016
  }, [...n[0] ||= [o("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), o("polyline", { points: "16 7 22 7 22 13" }, null, -1)]], 2))], 2)])], 2));
998
1017
  }
999
- }), it = {
1018
+ }), rt = {
1000
1019
  key: 0,
1001
1020
  class: "font-bold text-green-800"
1002
- }, at = { key: 0 }, ot = { key: 0 }, st = "font-bold", ct = /* @__PURE__ */ l({
1021
+ }, it = { key: 0 }, at = { key: 0 }, ot = "font-bold", st = /* @__PURE__ */ l({
1003
1022
  __name: "EuroAmount",
1004
1023
  props: {
1005
1024
  amount: {
@@ -1019,15 +1038,15 @@ var Te = [
1019
1038
  },
1020
1039
  setup(t) {
1021
1040
  let r = t, o = n(() => r.amount !== null && r.amount !== void 0), c = n(() => o.value && r.amount < 0), l = n(() => r.beforeAmount === null || r.beforeAmount === void 0 ? !1 : r.amount < r.beforeAmount), u = n(() => c.value || l.value), d = n(() => !c.value && !l.value && !(r.beforeAmount === null || r.beforeAmount === void 0));
1022
- return (n, r) => (_(), a(e, null, [o.value && d.value ? (_(), a("span", it, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", at, "€")) : i("", !0)])) : i("", !0), o.value && !d.value ? (_(), a("span", {
1041
+ return (n, r) => (_(), a(e, null, [o.value && d.value ? (_(), a("span", rt, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", it, "€")) : i("", !0)])) : i("", !0), o.value && !d.value ? (_(), a("span", {
1023
1042
  key: 1,
1024
- class: f([st, u.value ? "text-red-800" : "text-gray-800"])
1025
- }, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", ot, "€")) : i("", !0)], 2)) : i("", !0)], 64));
1043
+ class: f([ot, u.value ? "text-red-800" : "text-gray-800"])
1044
+ }, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", at, "€")) : i("", !0)], 2)) : i("", !0)], 64));
1026
1045
  }
1027
- }), lt = ["onClick", "onKeydown"], ut = {
1046
+ }), ct = { class: "flex list-none p-0 m-0" }, lt = ["onClick", "onKeydown"], ut = {
1028
1047
  key: 1,
1029
- style: { cursor: "not-allowed" }
1030
- }, dt = /* @__PURE__ */ q(/* @__PURE__ */ l({
1048
+ class: "inline-block border border-gray-300 rounded-lg p-3 text-black cursor-not-allowed"
1049
+ }, dt = /* @__PURE__ */ l({
1031
1050
  __name: "Pagination",
1032
1051
  props: {
1033
1052
  totalItems: {
@@ -1041,44 +1060,44 @@ var Te = [
1041
1060
  },
1042
1061
  emits: ["page-changed"],
1043
1062
  setup(t, { emit: n }) {
1044
- let r = t, s = v(1), c = v(0), l = v([]), u = n;
1045
- function d(e) {
1046
- if (e !== s.value && e >= 1 && e <= c.value && (s.value = e), c.value > 5) {
1047
- l.value = [], e - 3 > 0 && (l.value.push(1), l.value.push(0));
1048
- for (let t = 1; t <= 2; t++) {
1049
- let n = e - t;
1050
- n > 0 && l.value.push(n);
1051
- }
1052
- l.value.length, l.value.push(s.value);
1053
- let t = c.value - e;
1054
- if (t > 2) {
1055
- for (let t = 1; t <= 2; t++) l.value.push(e + t);
1056
- l.value.push(0), l.value.push(c.value);
1057
- } else for (let n = 1; n <= t; n++) l.value.push(e + n);
1063
+ let r = t, i = v(1), s = v(0), c = v([]), l = n;
1064
+ function u(e) {
1065
+ if (s.value <= 5) {
1066
+ c.value = Array.from({ length: s.value }, (e, t) => t + 1);
1067
+ return;
1058
1068
  }
1059
- u("page-changed", e);
1069
+ let t = [], n = Math.max(1, e - 2), r = Math.min(s.value, e + 2);
1070
+ n > 1 && (t.push(1), n > 2 && t.push(0));
1071
+ for (let e = n; e <= r; e++) t.push(e);
1072
+ r < s.value && (r < s.value - 1 && t.push(0), t.push(s.value)), c.value = t;
1073
+ }
1074
+ function d(e) {
1075
+ e === i.value || e < 1 || e > s.value || (i.value = e, u(e), l("page-changed", e));
1060
1076
  }
1061
- return O(() => r.totalItems, () => {
1062
- if (c.value = Math.ceil(r.totalItems / r.itemsPerPage), l.value = [], c.value > 5) {
1063
- for (let e = 1; e < 5; e++) l.value.push(e);
1064
- l.value.push(0), l.value.push(c.value);
1065
- } else for (let e = 1; e <= c.value; e++) l.value.push(e);
1066
- }, { immediate: !0 }), (t, n) => (_(), a("div", null, [o("ul", null, [(_(!0), a(e, null, y(l.value, (e, t) => (_(), a("li", { key: t }, [e === 0 ? i("", !0) : (_(), a("a", {
1077
+ return O(() => [r.totalItems, r.itemsPerPage], () => {
1078
+ s.value = Math.ceil(r.totalItems / r.itemsPerPage), i.value > s.value && (i.value = Math.max(1, s.value)), u(i.value);
1079
+ }, { immediate: !0 }), (t, n) => (_(), a("div", null, [o("ul", ct, [(_(!0), a(e, null, y(c.value, (e, t) => (_(), a("li", {
1080
+ key: t,
1081
+ class: "mr-1"
1082
+ }, [e === 0 ? (_(), a("span", ut, "...")) : (_(), a("a", {
1067
1083
  key: 0,
1068
1084
  role: "button",
1069
1085
  tabindex: "0",
1070
1086
  onClick: (t) => d(e),
1071
1087
  onKeydown: j((t) => d(e), ["enter"]),
1072
- class: f({ active: e === s.value })
1073
- }, C(e), 43, lt)), e === 0 ? (_(), a("span", ut, "...")) : i("", !0)]))), 128))])]));
1088
+ class: f(["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
+ }, C(e), 43, lt))]))), 128))])]));
1074
1090
  }
1075
- }), [["__scopeId", "data-v-d7ebb6ac"]]), ft = { key: 0 }, pt = {
1091
+ }), ft = { key: 0 }, pt = {
1076
1092
  key: 0,
1077
1093
  class: "flex items-center space-x-2"
1078
1094
  }, mt = {
1079
1095
  key: 1,
1080
1096
  class: "flex items-center space-x-2"
1081
- }, ht = /* @__PURE__ */ l({
1097
+ }, ht = {
1098
+ key: 2,
1099
+ class: "flex items-center space-x-2"
1100
+ }, gt = /* @__PURE__ */ l({
1082
1101
  __name: "TrendArrow",
1083
1102
  props: {
1084
1103
  number: {
@@ -1091,11 +1110,14 @@ var Te = [
1091
1110
  }
1092
1111
  },
1093
1112
  setup(e) {
1094
- let t = e, r = n(() => t.number !== null && t.number !== void 0 && t.number < 0);
1095
- return (n, o) => e.number !== null && e.number !== void 0 ? (_(), a("div", ft, [r.value ? (_(), a("span", pt, [c(R, { color: w(L).RED }, {
1113
+ let t = e, r = n(() => t.number !== null && t.number !== void 0 && t.number < 0), o = n(() => t.number === 0);
1114
+ return (n, l) => e.number !== null && e.number !== void 0 ? (_(), a("div", ft, [r.value ? (_(), a("span", pt, [c(z, { color: w(R).RED }, {
1115
+ default: k(() => [s(C(e.number) + C(t.icon), 1)]),
1116
+ _: 1
1117
+ }, 8, ["color"]), c(w(ee), { class: "h-5 w-5 text-red-500" })])) : o.value ? (_(), a("span", mt, [c(z, { color: w(R).GRAY }, {
1096
1118
  default: k(() => [s(C(e.number) + C(t.icon), 1)]),
1097
1119
  _: 1
1098
- }, 8, ["color"]), c(w(ee), { class: "h-5 w-5 text-red-500" })])) : (_(), a("span", mt, [c(R, { color: w(L).GREEN }, {
1120
+ }, 8, ["color"]), c(w(le), { class: "h-5 w-5 text-gray-400" })])) : (_(), a("span", ht, [c(z, { color: w(R).GREEN }, {
1099
1121
  default: k(() => [s(C(e.number) + C(t.icon), 1)]),
1100
1122
  _: 1
1101
1123
  }, 8, ["color"]), c(w(te), { class: "h-5 w-5 text-green-500" })]))])) : i("", !0);
@@ -1103,8 +1125,8 @@ var Te = [
1103
1125
  });
1104
1126
  //#endregion
1105
1127
  //#region src/composables/useThemeClasses.ts
1106
- function X() {
1107
- let { isDark: e } = U();
1128
+ function Z() {
1129
+ let { isDark: e } = W();
1108
1130
  return {
1109
1131
  card: n(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
1110
1132
  cardAlt: n(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
@@ -1131,7 +1153,7 @@ function X() {
1131
1153
  }
1132
1154
  //#endregion
1133
1155
  //#region src/composables/useEscapeKey.ts
1134
- function Z(e) {
1156
+ function _t(e) {
1135
1157
  function t(t) {
1136
1158
  t.key === "Escape" && e();
1137
1159
  }
@@ -1139,7 +1161,7 @@ function Z(e) {
1139
1161
  }
1140
1162
  //#endregion
1141
1163
  //#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
1142
- var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-w-0" }, vt = { class: "p-6 overflow-y-auto flex-1" }, yt = { class: "p-6" }, bt = { class: "flex items-start gap-4" }, xt = { class: "flex-1" }, St = { class: "mt-4" }, Ct = { class: "mt-6 flex gap-3 justify-end" }, Q = /* @__PURE__ */ l({
1164
+ var vt = { class: "flex items-start gap-4 min-w-0" }, yt = { class: "flex-1 min-w-0" }, bt = { class: "p-6 overflow-y-auto flex-1" }, xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { class: "flex-1" }, wt = { class: "mt-4" }, Tt = { class: "mt-6 flex gap-3 justify-end" }, Q = /* @__PURE__ */ l({
1143
1165
  __name: "BaseModalShell",
1144
1166
  props: {
1145
1167
  title: {},
@@ -1156,11 +1178,11 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1156
1178
  },
1157
1179
  emits: ["cancel", "backdrop"],
1158
1180
  setup(e, { emit: s }) {
1159
- let c = e, l = s, { isDark: u } = U(), d = X(), p = `modal-title-${Math.random().toString(36).slice(2, 9)}`, m = n(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200");
1181
+ let c = e, l = s, { isDark: u } = W(), d = Z(), p = `modal-title-${Math.random().toString(36).slice(2, 9)}`, m = n(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200");
1160
1182
  function h() {
1161
1183
  l("backdrop"), c.manualClose || l("cancel");
1162
1184
  }
1163
- return Z(() => {
1185
+ return _t(() => {
1164
1186
  c.manualClose || l("cancel");
1165
1187
  }), (n, s) => (_(), r(t, { to: "body" }, [o("div", {
1166
1188
  class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
@@ -1173,14 +1195,14 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1173
1195
  class: f(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, m.value]]),
1174
1196
  onClick: s[0] ||= M(() => {}, ["stop"])
1175
1197
  }, [
1176
- o("div", { class: f(["flex items-start justify-between gap-4 p-6 border-b shrink-0", w(d).border]) }, [o("div", gt, [b(n.$slots, "icon"), o("div", _t, [o("h3", {
1198
+ o("div", { class: f(["flex items-start justify-between gap-4 p-6 border-b shrink-0", w(d).border]) }, [o("div", vt, [b(n.$slots, "icon"), o("div", yt, [o("h3", {
1177
1199
  id: p,
1178
1200
  class: f(["text-lg font-medium", w(d).primaryText])
1179
1201
  }, C(e.title), 3), e.subtitle ? (_(), a("p", {
1180
1202
  key: 0,
1181
1203
  class: f(["text-sm mt-1 break-all", w(d).mutedText])
1182
1204
  }, C(e.subtitle), 3)) : i("", !0)])]), b(n.$slots, "header-actions")], 2),
1183
- o("div", vt, [b(n.$slots, "default")]),
1205
+ o("div", bt, [b(n.$slots, "default")]),
1184
1206
  n.$slots.footer ? (_(), a("div", {
1185
1207
  key: 0,
1186
1208
  class: f(["flex gap-3 justify-end p-6 border-t shrink-0", w(d).border])
@@ -1189,16 +1211,16 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1189
1211
  key: 1,
1190
1212
  class: f(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, m.value]]),
1191
1213
  onClick: s[1] ||= M(() => {}, ["stop"])
1192
- }, [o("div", yt, [
1193
- o("div", bt, [b(n.$slots, "icon"), o("div", xt, [o("h3", {
1214
+ }, [o("div", xt, [
1215
+ o("div", St, [b(n.$slots, "icon"), o("div", Ct, [o("h3", {
1194
1216
  id: p,
1195
1217
  class: f(["text-lg font-medium", w(d).primaryText])
1196
1218
  }, C(e.title), 3)])]),
1197
- o("div", St, [b(n.$slots, "default")]),
1198
- o("div", Ct, [b(n.$slots, "footer")])
1219
+ o("div", wt, [b(n.$slots, "default")]),
1220
+ o("div", Tt, [b(n.$slots, "footer")])
1199
1221
  ])], 2))])]));
1200
1222
  }
1201
- }), wt = ["aria-expanded"], Tt = { class: "flex items-center gap-3" }, Et = /* @__PURE__ */ l({
1223
+ }), Et = ["aria-expanded"], Dt = { class: "flex items-center gap-3" }, Ot = /* @__PURE__ */ l({
1202
1224
  __name: "BaseCollapsibleSection",
1203
1225
  props: {
1204
1226
  title: {},
@@ -1208,13 +1230,13 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1208
1230
  },
1209
1231
  emits: ["toggle"],
1210
1232
  setup(e, { emit: t }) {
1211
- let r = e, s = t, { isDark: c } = U(), l = X(), u = n(() => c.value ? "text-gray-100" : "text-gray-700"), d = n(() => c.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), p = n(() => c.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), m = n(() => r.bodyClass === void 0 ? c.value ? "bg-gray-800" : "bg-white" : r.bodyClass);
1233
+ let r = e, s = t, { isDark: c } = W(), l = Z(), u = n(() => c.value ? "text-gray-100" : "text-gray-700"), d = n(() => c.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), p = n(() => c.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), m = n(() => r.bodyClass === void 0 ? c.value ? "bg-gray-800" : "bg-white" : r.bodyClass);
1212
1234
  return (t, n) => (_(), a("section", { class: f(["rounded-xl border overflow-hidden transition-colors", w(l).cardAlt]) }, [o("button", {
1213
1235
  type: "button",
1214
1236
  class: f(["w-full flex items-center justify-between p-4 text-left transition-colors", d.value]),
1215
1237
  "aria-expanded": !e.collapsed,
1216
1238
  onClick: n[0] ||= (e) => s("toggle")
1217
- }, [o("div", Tt, [o("h2", { class: f(["text-base font-semibold", u.value]) }, C(e.title), 3), e.badge ? (_(), a("span", {
1239
+ }, [o("div", Dt, [o("h2", { class: f(["text-base font-semibold", u.value]) }, C(e.title), 3), e.badge ? (_(), a("span", {
1218
1240
  key: 0,
1219
1241
  class: f(["text-xs px-2 py-0.5 rounded-full", p.value])
1220
1242
  }, C(e.badge), 3)) : i("", !0)]), (_(), a("svg", {
@@ -1228,15 +1250,15 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1228
1250
  "stroke-linecap": "round",
1229
1251
  "stroke-linejoin": "round",
1230
1252
  d: "M19 9l-7 7-7-7"
1231
- }, null, -1)]], 2))], 10, wt), A(o("div", { class: f(["p-6 border-t", [w(l).border, m.value]]) }, [b(t.$slots, "default")], 2), [[D, !e.collapsed]])], 2));
1253
+ }, null, -1)]], 2))], 10, Et), A(o("div", { class: f(["p-6 border-t", [w(l).border, m.value]]) }, [b(t.$slots, "default")], 2), [[D, !e.collapsed]])], 2));
1232
1254
  }
1233
- }), Dt = ["disabled"], Ot = ["disabled"], kt = {
1255
+ }), kt = ["disabled"], At = ["disabled"], jt = {
1234
1256
  key: 0,
1235
1257
  class: "w-4 h-4 animate-spin",
1236
1258
  fill: "none",
1237
1259
  viewBox: "0 0 24 24",
1238
1260
  "aria-hidden": "true"
1239
- }, At = /* @__PURE__ */ l({
1261
+ }, Mt = /* @__PURE__ */ l({
1240
1262
  __name: "BaseConfirmModal",
1241
1263
  props: {
1242
1264
  title: {},
@@ -1252,7 +1274,7 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1252
1274
  },
1253
1275
  emits: ["confirm", "cancel"],
1254
1276
  setup(e, { emit: t }) {
1255
- let n = e, l = t, { isDark: u } = U(), d = X();
1277
+ let n = e, l = t, { isDark: u } = W(), d = Z();
1256
1278
  function p() {
1257
1279
  n.submitting || l("confirm");
1258
1280
  }
@@ -1264,7 +1286,7 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1264
1286
  "manual-close": e.submitting,
1265
1287
  onCancel: m
1266
1288
  }, {
1267
- icon: k(() => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", [e.variant === "danger" ? w(u) ? "bg-red-900/30" : "bg-red-50" : w(u) ? "bg-amber-900/30" : "bg-amber-50"]]) }, [c(w(P), {
1289
+ icon: k(() => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", [e.variant === "danger" ? w(u) ? "bg-red-900/30" : "bg-red-50" : w(u) ? "bg-amber-900/30" : "bg-amber-50"]]) }, [c(w(I), {
1268
1290
  class: f(["h-6 w-6", e.variant === "danger" ? "text-red-600" : "text-amber-600"]),
1269
1291
  "aria-hidden": "true"
1270
1292
  }, null, 8, ["class"])], 2)]),
@@ -1273,12 +1295,12 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1273
1295
  disabled: e.submitting,
1274
1296
  class: f(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150", [w(d).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1275
1297
  onClick: m
1276
- }, C(e.cancelText), 11, Dt), o("button", {
1298
+ }, C(e.cancelText), 11, kt), o("button", {
1277
1299
  type: "button",
1278
1300
  disabled: e.submitting,
1279
1301
  class: f(["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"]]),
1280
1302
  onClick: p
1281
- }, [e.submitting ? (_(), a("svg", kt, [...n[0] ||= [o("circle", {
1303
+ }, [e.submitting ? (_(), a("svg", jt, [...n[0] ||= [o("circle", {
1282
1304
  class: "opacity-25",
1283
1305
  cx: "12",
1284
1306
  cy: "12",
@@ -1289,12 +1311,12 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1289
1311
  class: "opacity-75",
1290
1312
  fill: "currentColor",
1291
1313
  d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
1292
- }, null, -1)]])) : i("", !0), s(" " + C(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Ot)]),
1293
- default: k(() => [o("p", { class: f(["text-sm", w(u) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), b(t.$slots, "default")]),
1314
+ }, null, -1)]])) : i("", !0), s(" " + C(e.submitting ? e.submittingText : e.confirmText), 1)], 10, At)]),
1315
+ default: k(() => [b(t.$slots, "message", {}, () => [o("p", { class: f(["text-sm", w(u) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3)]), b(t.$slots, "default")]),
1294
1316
  _: 3
1295
1317
  }, 8, ["title", "manual-close"]));
1296
1318
  }
1297
- }), jt = { class: "mt-4" }, Mt = ["placeholder"], Nt = ["disabled"], Pt = /* @__PURE__ */ l({
1319
+ }), Nt = { class: "mt-4" }, Pt = ["placeholder"], Ft = ["disabled"], It = /* @__PURE__ */ l({
1298
1320
  __name: "BaseTextInputModal",
1299
1321
  props: {
1300
1322
  title: {},
@@ -1312,7 +1334,7 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1312
1334
  },
1313
1335
  emits: ["confirm", "cancel"],
1314
1336
  setup(e, { emit: t }) {
1315
- let n = e, i = t, { isDark: a } = U(), s = X(), l = v(n.initialValue), u = v(null);
1337
+ let n = e, i = t, { isDark: a } = W(), s = Z(), l = v(n.initialValue), u = v(null);
1316
1338
  m(async () => {
1317
1339
  await d(), u.value?.focus();
1318
1340
  });
@@ -1325,12 +1347,12 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1325
1347
  function g() {
1326
1348
  l.value.trim() === (n.initialValue ?? "").trim() && h();
1327
1349
  }
1328
- return Z(h), (t, n) => (_(), r(Q, {
1350
+ return _t(h), (t, n) => (_(), r(Q, {
1329
1351
  title: e.title,
1330
1352
  "manual-close": "",
1331
1353
  onBackdrop: g
1332
1354
  }, {
1333
- icon: k(() => [b(t.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", w(a) ? "bg-emerald-900/30" : "bg-emerald-50"]) }, [c(w(oe), {
1355
+ icon: k(() => [b(t.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", w(a) ? "bg-emerald-900/30" : "bg-emerald-50"]) }, [c(w(ie), {
1334
1356
  class: "h-6 w-6 text-emerald-600",
1335
1357
  "aria-hidden": "true"
1336
1358
  })], 2)])]),
@@ -1343,8 +1365,8 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1343
1365
  disabled: !l.value.trim() || e.submitting,
1344
1366
  class: f(["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", [!l.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
1345
1367
  onClick: p
1346
- }, C(e.submitting ? e.submittingText : e.confirmText), 11, Nt)]),
1347
- default: k(() => [o("p", { class: f(["text-sm", w(a) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), o("div", jt, [o("label", { class: f(["block text-sm font-medium mb-1", w(s).label]) }, C(e.inputLabel), 3), A(o("input", {
1368
+ }, C(e.submitting ? e.submittingText : e.confirmText), 11, Ft)]),
1369
+ default: k(() => [o("p", { class: f(["text-sm", w(a) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), o("div", Nt, [o("label", { class: f(["block text-sm font-medium mb-1", w(s).label]) }, C(e.inputLabel), 3), A(o("input", {
1348
1370
  ref_key: "nameInput",
1349
1371
  ref: u,
1350
1372
  "onUpdate:modelValue": n[0] ||= (e) => l.value = e,
@@ -1352,11 +1374,11 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1352
1374
  placeholder: e.placeholder,
1353
1375
  class: f(["w-full px-3 py-2 rounded-md border text-sm transition-colors", w(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"]),
1354
1376
  onKeyup: j(p, ["enter"])
1355
- }, null, 42, Mt), [[E, l.value]])])]),
1377
+ }, null, 42, Pt), [[E, l.value]])])]),
1356
1378
  _: 3
1357
1379
  }, 8, ["title"]));
1358
1380
  }
1359
- }), Ft = { class: "flex items-center justify-center min-h-[60vh]" }, It = { class: "text-center px-6" }, Lt = /* @__PURE__ */ l({
1381
+ }), Lt = { class: "flex items-center justify-center min-h-[60vh]" }, Rt = { class: "text-center px-6" }, zt = /* @__PURE__ */ l({
1360
1382
  __name: "BaseNotFoundPage",
1361
1383
  props: {
1362
1384
  code: { default: "404" },
@@ -1365,12 +1387,12 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1365
1387
  homeLabel: { default: "Go home" }
1366
1388
  },
1367
1389
  setup(e) {
1368
- let t = e, n = pe(), { isDark: r } = U(), i = X();
1390
+ let t = e, n = pe(), { isDark: r } = W(), i = Z();
1369
1391
  function s() {
1370
1392
  n.push({ name: t.homeRouteName });
1371
1393
  }
1372
- return (t, n) => (_(), a("div", Ft, [o("div", It, [
1373
- c(w(P), { class: f(["w-16 h-16 mx-auto mb-4", w(i).illustration]) }, null, 8, ["class"]),
1394
+ return (t, n) => (_(), a("div", Lt, [o("div", Rt, [
1395
+ c(w(I), { class: f(["w-16 h-16 mx-auto mb-4", w(i).illustration]) }, null, 8, ["class"]),
1374
1396
  o("h1", { class: f(["text-4xl font-bold mb-2", w(r) ? "text-gray-200" : "text-gray-800"]) }, C(e.code), 3),
1375
1397
  o("p", { class: f(["text-lg mb-6", w(i).dimTextAlt]) }, C(e.message), 3),
1376
1398
  o("button", {
@@ -1380,7 +1402,7 @@ var gt = { class: "flex items-start gap-4 min-w-0" }, _t = { class: "flex-1 min-
1380
1402
  ])]));
1381
1403
  }
1382
1404
  }), $ = v(!1);
1383
- function Rt() {
1405
+ function Bt() {
1384
1406
  function e() {
1385
1407
  $.value = !0;
1386
1408
  }
@@ -1399,11 +1421,15 @@ function Rt() {
1399
1421
  }
1400
1422
  //#endregion
1401
1423
  //#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
1402
- var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }, Vt = { class: "px-5 pt-5 pb-4 flex items-center justify-center relative" }, Ht = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Ut = { class: "px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500" }, Wt = { class: "space-y-0.5" }, Gt = ["aria-current", "onClick"], Kt = [
1424
+ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }, Ut = { class: "px-5 pt-5 pb-4 flex items-center justify-center relative" }, Wt = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Gt = { class: "px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500" }, Kt = { class: "space-y-0.5" }, qt = ["aria-current", "onClick"], Jt = [
1403
1425
  "title",
1404
1426
  "aria-label",
1405
1427
  "aria-pressed"
1406
- ], qt = /* @__PURE__ */ q(/* @__PURE__ */ l({
1428
+ ], Yt = /* @__PURE__ */ ((e, t) => {
1429
+ let n = e.__vccOpts || e;
1430
+ for (let [e, r] of t) n[e] = r;
1431
+ return n;
1432
+ })(/* @__PURE__ */ l({
1407
1433
  __name: "BaseSidebar",
1408
1434
  props: {
1409
1435
  sections: {},
@@ -1416,32 +1442,32 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1416
1442
  }
1417
1443
  },
1418
1444
  setup(t) {
1419
- let n = t, l = pe(), u = fe(), { isDark: p, toggleTheme: h } = U(), { mobileOpen: x, close: T, toggle: E } = Rt(), D = v(null), k = null;
1420
- O(x, async (e) => {
1421
- e ? (k = document.activeElement instanceof HTMLElement ? document.activeElement : null, await d(), D.value?.focus()) : (k?.focus(), k = null);
1422
- }), m(() => {}), g(() => {});
1423
- function A() {
1424
- l.push({ name: n.homeRouteName }), T();
1445
+ let n = t, l = pe(), u = fe(), { isDark: p, toggleTheme: m } = W(), { mobileOpen: h, close: g, toggle: x } = Bt(), T = v(null), E = null;
1446
+ O(h, async (e) => {
1447
+ e ? (E = document.activeElement instanceof HTMLElement ? document.activeElement : null, await d(), T.value?.focus()) : (E?.focus(), E = null);
1448
+ });
1449
+ function D() {
1450
+ l.push({ name: n.homeRouteName }), g();
1425
1451
  }
1426
- function j(e) {
1452
+ function k(e) {
1427
1453
  return u.name === e;
1428
1454
  }
1429
- function M(e) {
1430
- l.push({ name: e }), T();
1455
+ function A(e) {
1456
+ l.push({ name: e }), g();
1431
1457
  }
1432
1458
  return (n, l) => (_(), a("div", null, [
1433
1459
  o("div", { class: f(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", w(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [o("button", {
1434
1460
  type: "button",
1435
- onClick: A,
1461
+ onClick: D,
1436
1462
  class: "cursor-pointer",
1437
1463
  "aria-label": "Go to home"
1438
1464
  }, [b(n.$slots, "logo", { size: 28 }, void 0, !0)]), o("button", {
1439
1465
  type: "button",
1440
- onClick: l[0] ||= (...e) => w(E) && w(E)(...e),
1466
+ onClick: l[0] ||= (...e) => w(x) && w(x)(...e),
1441
1467
  class: f(["p-2 rounded-lg cursor-pointer", w(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1442
- "aria-label": w(x) ? "Close navigation menu" : "Open navigation menu",
1443
- "aria-expanded": w(x)
1444
- }, [w(x) ? (_(), r(w(F), {
1468
+ "aria-label": w(h) ? "Close navigation menu" : "Open navigation menu",
1469
+ "aria-expanded": w(h)
1470
+ }, [w(h) ? (_(), r(w(ue), {
1445
1471
  key: 1,
1446
1472
  class: "w-6 h-6",
1447
1473
  "aria-hidden": "true"
@@ -1449,50 +1475,50 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1449
1475
  key: 0,
1450
1476
  class: "w-6 h-6",
1451
1477
  "aria-hidden": "true"
1452
- }))], 10, zt)], 2),
1453
- w(x) ? (_(), a("div", {
1478
+ }))], 10, Vt)], 2),
1479
+ w(h) ? (_(), a("div", {
1454
1480
  key: 0,
1455
1481
  class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
1456
1482
  "aria-hidden": "true",
1457
- onClick: l[1] ||= (...e) => w(T) && w(T)(...e)
1483
+ onClick: l[1] ||= (...e) => w(g) && w(g)(...e)
1458
1484
  })) : i("", !0),
1459
1485
  o("aside", {
1460
1486
  role: "navigation",
1461
1487
  "aria-label": "Main navigation",
1462
- class: f(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-transform duration-300 lg:pointer-events-auto", [w(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200", w(x) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50"]])
1463
- }, [o("div", Bt, [
1464
- o("div", Vt, [o("button", {
1488
+ class: f(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-transform duration-300 lg:pointer-events-auto", [w(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200", w(h) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50"]])
1489
+ }, [o("div", Ht, [
1490
+ o("div", Ut, [o("button", {
1465
1491
  type: "button",
1466
- onClick: A,
1492
+ onClick: D,
1467
1493
  class: "cursor-pointer",
1468
1494
  "aria-label": "Go to home"
1469
1495
  }, [b(n.$slots, "logo", { size: 52 }, void 0, !0)]), o("button", {
1470
1496
  ref_key: "closeMobileButton",
1471
- ref: D,
1497
+ ref: T,
1472
1498
  type: "button",
1473
- onClick: l[2] ||= (...e) => w(T) && w(T)(...e),
1499
+ onClick: l[2] ||= (...e) => w(g) && w(g)(...e),
1474
1500
  class: f(["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", w(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1475
1501
  "aria-label": "Close navigation menu"
1476
- }, [c(w(F), {
1502
+ }, [c(w(ue), {
1477
1503
  class: "w-5 h-5",
1478
1504
  "aria-hidden": "true"
1479
1505
  })], 2)]),
1480
- o("nav", Ht, [(_(!0), a(e, null, y(t.sections, (t) => (_(), a("div", { key: t.title }, [o("p", Ut, C(t.title), 1), o("ul", Wt, [(_(!0), a(e, null, y(t.items, (e) => (_(), a("li", { key: e.name }, [o("button", {
1506
+ o("nav", Wt, [(_(!0), a(e, null, y(t.sections, (t) => (_(), a("div", { key: t.title }, [o("p", Gt, C(t.title), 1), o("ul", Kt, [(_(!0), a(e, null, y(t.items, (e) => (_(), a("li", { key: e.name }, [o("button", {
1481
1507
  type: "button",
1482
- "aria-current": j(e.name) ? "page" : void 0,
1483
- onClick: (t) => M(e.name),
1484
- class: f(["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", j(e.name) ? w(p) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : w(p) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100"])
1485
- }, [(_(), r(S(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s(" " + C(e.label), 1)], 10, Gt)]))), 128))])]))), 128))]),
1508
+ "aria-current": k(e.name) ? "page" : void 0,
1509
+ onClick: (t) => A(e.name),
1510
+ class: f(["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", k(e.name) ? w(p) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : w(p) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100"])
1511
+ }, [(_(), r(S(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s(" " + C(e.label), 1)], 10, qt)]))), 128))])]))), 128))]),
1486
1512
  o("div", { class: f(["px-4 py-4 border-t transition-colors space-y-3", w(p) ? "border-gray-800" : "border-gray-200"]) }, [
1487
1513
  t.showThemeToggle ? (_(), a("button", {
1488
1514
  key: 0,
1489
1515
  type: "button",
1490
- onClick: l[3] ||= (...e) => w(h) && w(h)(...e),
1516
+ onClick: l[3] ||= (...e) => w(m) && w(m)(...e),
1491
1517
  title: w(p) ? "Switch to light mode" : "Switch to dark mode",
1492
1518
  "aria-label": w(p) ? "Switch to light mode" : "Switch to dark mode",
1493
1519
  "aria-pressed": w(p),
1494
1520
  class: f(["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", w(p) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100"])
1495
- }, [s(C(w(p) ? "Switch to light" : "Switch to dark") + " ", 1), o("span", { class: f(["ml-auto relative w-9 h-5 rounded-full transition-colors", w(p) ? "bg-emerald-600" : "bg-gray-300"]) }, [o("span", { class: f(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", w(p) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)], 10, Kt)) : i("", !0),
1521
+ }, [s(C(w(p) ? "Switch to light" : "Switch to dark") + " ", 1), o("span", { class: f(["ml-auto relative w-9 h-5 rounded-full transition-colors", w(p) ? "bg-emerald-600" : "bg-gray-300"]) }, [o("span", { class: f(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", w(p) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)], 10, Jt)) : i("", !0),
1496
1522
  b(n.$slots, "status", {}, void 0, !0),
1497
1523
  b(n.$slots, "footer", {}, () => [t.appName || t.version ? (_(), a("div", {
1498
1524
  key: 0,
@@ -1506,26 +1532,26 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1506
1532
  ])], 2)
1507
1533
  ]));
1508
1534
  }
1509
- }), [["__scopeId", "data-v-e27f267e"]]), Jt = {
1535
+ }), [["__scopeId", "data-v-1a9948c5"]]), Xt = {
1510
1536
  key: 1,
1511
1537
  class: "mt-4 flex justify-center py-6"
1512
- }, Yt = {
1538
+ }, Zt = {
1513
1539
  key: 2,
1514
1540
  class: "mt-4 text-sm text-red-500",
1515
1541
  role: "alert"
1516
- }, Xt = {
1542
+ }, Qt = {
1517
1543
  key: 3,
1518
1544
  class: "mt-4"
1519
- }, Zt = { class: "relative" }, Qt = ["placeholder"], $t = {
1545
+ }, $t = { class: "relative" }, en = ["placeholder"], tn = {
1520
1546
  key: 4,
1521
1547
  class: "mt-3 max-h-64 overflow-y-auto"
1522
- }, en = ["onClick"], tn = { class: "flex-1 min-w-0" }, nn = {
1548
+ }, nn = ["onClick"], rn = { class: "flex-1 min-w-0" }, an = {
1523
1549
  key: 0,
1524
1550
  class: "text-center py-6"
1525
- }, rn = {
1551
+ }, on = {
1526
1552
  key: 1,
1527
1553
  class: "text-center py-6"
1528
- }, an = ["disabled"], on = ["disabled"], sn = /* @__PURE__ */ l({
1554
+ }, sn = ["disabled"], cn = ["disabled"], ln = /* @__PURE__ */ l({
1529
1555
  __name: "BaseEntityPickerModal",
1530
1556
  props: {
1531
1557
  title: {},
@@ -1547,7 +1573,7 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1547
1573
  },
1548
1574
  emits: ["confirm", "cancel"],
1549
1575
  setup(t, { emit: s }) {
1550
- let l = t, u = s, { isDark: p } = U(), h = X(), g = v([]), x = v(!1), S = v(""), T = v(null), D = v(""), O = v(null), j = n(() => {
1576
+ let l = t, u = s, { isDark: p } = W(), h = Z(), g = v([]), x = v(!1), S = v(""), T = v(null), D = v(""), O = v(null), j = n(() => {
1551
1577
  let e = l.loader ? g.value : l.items;
1552
1578
  return l.excludeId ? e.filter((e) => e.id !== l.excludeId) : e;
1553
1579
  }), M = n(() => j.value.filter((e) => e.label.toLowerCase().includes(D.value.toLowerCase()))), ee = {
@@ -1656,18 +1682,18 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1656
1682
  }
1657
1683
  await d(), O.value?.focus();
1658
1684
  });
1659
- function ne() {
1685
+ function P() {
1660
1686
  !T.value || l.submitting || u("confirm", T.value);
1661
1687
  }
1662
- function re() {
1688
+ function F() {
1663
1689
  l.submitting || u("cancel");
1664
1690
  }
1665
1691
  return (n, s) => (_(), r(Q, {
1666
1692
  title: t.title,
1667
1693
  "manual-close": t.submitting,
1668
- onCancel: re
1694
+ onCancel: F
1669
1695
  }, {
1670
- icon: k(() => [b(n.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", N.value.iconBg]) }, [c(w(ce), {
1696
+ icon: k(() => [b(n.$slots, "icon", {}, () => [o("div", { class: f(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", N.value.iconBg]) }, [c(w(oe), {
1671
1697
  class: f(["h-6 w-6", N.value.iconText]),
1672
1698
  "aria-hidden": "true"
1673
1699
  }, null, 8, ["class"])], 2)])]),
@@ -1675,20 +1701,20 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1675
1701
  type: "button",
1676
1702
  disabled: t.submitting,
1677
1703
  class: f(["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", w(h).ghostButton]),
1678
- onClick: re
1679
- }, C(t.cancelText), 11, an), o("button", {
1704
+ onClick: F
1705
+ }, C(t.cancelText), 11, sn), o("button", {
1680
1706
  type: "button",
1681
1707
  disabled: !T.value || t.submitting,
1682
1708
  class: f(["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", !T.value || t.submitting ? N.value.confirmDisabled : N.value.confirmActive]),
1683
- onClick: ne
1684
- }, C(t.submitting ? t.submittingText : t.confirmText), 11, on)]),
1709
+ onClick: P
1710
+ }, C(t.submitting ? t.submittingText : t.confirmText), 11, cn)]),
1685
1711
  default: k(() => [
1686
1712
  t.message ? (_(), a("p", {
1687
1713
  key: 0,
1688
1714
  class: f(["text-sm", w(p) ? "text-gray-300" : "text-gray-600"])
1689
1715
  }, C(t.message), 3)) : i("", !0),
1690
- x.value ? (_(), a("div", Jt, [c(Je, { color: "emerald" })])) : S.value ? (_(), a("div", Yt, C(S.value), 1)) : i("", !0),
1691
- !x.value && !S.value && j.value.length > 0 ? (_(), a("div", Xt, [o("div", Zt, [c(w(ue), {
1716
+ x.value ? (_(), a("div", Xt, [c(Je, { color: "emerald" })])) : S.value ? (_(), a("div", Zt, C(S.value), 1)) : i("", !0),
1717
+ !x.value && !S.value && j.value.length > 0 ? (_(), a("div", Qt, [o("div", $t, [c(w(ce), {
1692
1718
  class: f(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", w(h).dimText]),
1693
1719
  "aria-hidden": "true"
1694
1720
  }, null, 8, ["class"]), A(o("input", {
@@ -1698,14 +1724,14 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1698
1724
  type: "text",
1699
1725
  placeholder: t.searchPlaceholder,
1700
1726
  class: f(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [w(p) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", N.value.inputFocus]])
1701
- }, null, 10, Qt), [[E, D.value]])])])) : i("", !0),
1702
- !x.value && !S.value ? (_(), a("div", $t, [(_(!0), a(e, null, y(M.value, (e) => (_(), a("div", {
1727
+ }, null, 10, en), [[E, D.value]])])])) : i("", !0),
1728
+ !x.value && !S.value ? (_(), a("div", tn, [(_(!0), a(e, null, y(M.value, (e) => (_(), a("div", {
1703
1729
  key: e.id,
1704
1730
  class: f(["flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors", [T.value === e.id ? N.value.selectedRow : w(p) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1705
1731
  onClick: (t) => T.value = e.id
1706
1732
  }, [
1707
- c(w(ce), { class: f(["w-5 h-5 flex-shrink-0", w(h).dimText]) }, null, 8, ["class"]),
1708
- o("div", tn, [o("p", { class: f(["text-sm font-medium truncate", w(h).bodyText]) }, C(e.label), 3)]),
1733
+ c(w(oe), { class: f(["w-5 h-5 flex-shrink-0", w(h).dimText]) }, null, 8, ["class"]),
1734
+ o("div", rn, [o("p", { class: f(["text-sm font-medium truncate", w(h).bodyText]) }, C(e.label), 3)]),
1709
1735
  T.value === e.id ? (_(), a("div", {
1710
1736
  key: 0,
1711
1737
  class: f(["w-5 h-5 rounded-full flex items-center justify-center", N.value.checkBg])
@@ -1721,15 +1747,15 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1721
1747
  "stroke-linejoin": "round",
1722
1748
  d: "M5 13l4 4L19 7"
1723
1749
  })], -1)]], 2)) : i("", !0)
1724
- ], 10, en))), 128)), j.value.length === 0 ? (_(), a("div", nn, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.emptyMessage), 3)])) : M.value.length === 0 ? (_(), a("div", rn, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.noMatchMessage), 3)])) : i("", !0)])) : i("", !0)
1750
+ ], 10, nn))), 128)), j.value.length === 0 ? (_(), a("div", an, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.emptyMessage), 3)])) : M.value.length === 0 ? (_(), a("div", on, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.noMatchMessage), 3)])) : i("", !0)])) : i("", !0)
1725
1751
  ]),
1726
1752
  _: 3
1727
1753
  }, 8, ["title", "manual-close"]));
1728
1754
  }
1729
- }), cn = {
1755
+ }), un = {
1730
1756
  href: "#main-content",
1731
1757
  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"
1732
- }, ln = ["inert"], un = /* @__PURE__ */ l({
1758
+ }, dn = ["inert"], fn = /* @__PURE__ */ l({
1733
1759
  __name: "BaseAppLayout",
1734
1760
  props: {
1735
1761
  showSidebar: {
@@ -1739,19 +1765,19 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1739
1765
  skipLinkLabel: { default: "Skip to main content" }
1740
1766
  },
1741
1767
  setup(e) {
1742
- let t = e, { isDark: r } = U(), { mobileOpen: s } = Rt(), c = n(() => t.showSidebar);
1768
+ let t = e, { isDark: r } = W(), { mobileOpen: s } = Bt(), c = n(() => t.showSidebar);
1743
1769
  return (t, n) => (_(), a("div", { class: f(["min-h-screen transition-colors duration-300", w(r) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1744
- o("a", cn, C(e.skipLinkLabel), 1),
1770
+ o("a", un, C(e.skipLinkLabel), 1),
1745
1771
  c.value ? b(t.$slots, "sidebar", { key: 0 }) : i("", !0),
1746
1772
  o("main", {
1747
1773
  id: "main-content",
1748
1774
  tabindex: "-1",
1749
1775
  inert: c.value && w(s) ? !0 : void 0,
1750
1776
  class: f(c.value ? "pt-14 lg:pt-0 lg:ml-60" : "")
1751
- }, [b(t.$slots, "default")], 10, ln)
1777
+ }, [b(t.$slots, "default")], 10, dn)
1752
1778
  ], 2));
1753
1779
  }
1754
- }), dn = { class: "flex items-center justify-between mb-8" }, fn = { class: "flex items-center gap-3" }, pn = { class: "flex items-center gap-2" }, mn = /* @__PURE__ */ l({
1780
+ }), pn = { class: "flex flex-wrap items-center justify-between gap-3 mb-8" }, mn = { class: "flex items-center gap-3 min-w-0" }, hn = { class: "flex items-center gap-2" }, gn = /* @__PURE__ */ l({
1755
1781
  __name: "BasePageHeader",
1756
1782
  props: {
1757
1783
  title: {},
@@ -1760,7 +1786,7 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1760
1786
  maxWidthClass: { default: "max-w-4xl" }
1761
1787
  },
1762
1788
  setup(e) {
1763
- let t = e, { isDark: r } = U(), s = X(), c = n(() => {
1789
+ let t = e, { isDark: r } = W(), s = Z(), c = n(() => {
1764
1790
  let e = {
1765
1791
  emerald: {
1766
1792
  dark: "bg-emerald-500/10",
@@ -1801,16 +1827,16 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1801
1827
  }[t.iconColor];
1802
1828
  return r.value ? e.dark : e.light;
1803
1829
  });
1804
- return (t, n) => (_(), a("div", { class: f(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [o("div", dn, [o("div", fn, [o("div", { class: f(["w-10 h-10 rounded-lg flex items-center justify-center", c.value]) }, [b(t.$slots, "icon", { iconClass: l.value })], 2), o("div", null, [o("h1", { class: f(["text-2xl font-bold", w(s).primaryTextSoft]) }, C(e.title), 3), e.subtitle ? (_(), a("p", {
1830
+ return (t, n) => (_(), a("div", { class: f(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [o("div", pn, [o("div", mn, [o("div", { class: f(["w-10 h-10 rounded-lg flex items-center justify-center", c.value]) }, [b(t.$slots, "icon", { iconClass: l.value })], 2), o("div", null, [o("h1", { class: f(["text-2xl font-bold", w(s).primaryTextSoft]) }, C(e.title), 3), e.subtitle ? (_(), a("p", {
1805
1831
  key: 0,
1806
1832
  class: f(["text-sm", w(s).dimTextAlt])
1807
- }, C(e.subtitle), 3)) : i("", !0)])]), o("div", pn, [b(t.$slots, "actions")])])], 2));
1833
+ }, C(e.subtitle), 3)) : i("", !0)])]), o("div", hn, [b(t.$slots, "actions")])])], 2));
1808
1834
  }
1809
- }), hn = [
1835
+ }), _n = [
1810
1836
  "type",
1811
1837
  "disabled",
1812
1838
  "title"
1813
- ], gn = { key: 0 }, _n = /* @__PURE__ */ l({
1839
+ ], vn = { key: 0 }, yn = /* @__PURE__ */ l({
1814
1840
  __name: "BaseToolbarButton",
1815
1841
  props: {
1816
1842
  label: { default: "" },
@@ -1824,7 +1850,7 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1824
1850
  },
1825
1851
  emits: ["click"],
1826
1852
  setup(e) {
1827
- let t = e, { isDark: r } = U(), o = n(() => {
1853
+ let t = e, { isDark: r } = W(), o = n(() => {
1828
1854
  let e = {
1829
1855
  neutral: {
1830
1856
  dark: "bg-gray-800 text-gray-100 border-gray-700 hover:bg-gray-700",
@@ -1843,14 +1869,14 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1843
1869
  title: e.title,
1844
1870
  class: f(["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", o.value]),
1845
1871
  onClick: n[0] ||= (e) => t.$emit("click", e)
1846
- }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", gn, C(e.label), 1)) : i("", !0)], 10, hn));
1872
+ }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", vn, C(e.label), 1)) : i("", !0)], 10, _n));
1847
1873
  }
1848
- }), vn = [
1874
+ }), bn = [
1849
1875
  "type",
1850
1876
  "disabled",
1851
1877
  "title",
1852
1878
  "aria-label"
1853
- ], yn = { key: 0 }, bn = /* @__PURE__ */ l({
1879
+ ], xn = { key: 0 }, Sn = /* @__PURE__ */ l({
1854
1880
  __name: "BaseActionButton",
1855
1881
  props: {
1856
1882
  label: { default: "" },
@@ -1869,7 +1895,7 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1869
1895
  },
1870
1896
  emits: ["click"],
1871
1897
  setup(e) {
1872
- let t = e, { isDark: r } = U(), o = n(() => {
1898
+ let t = e, { isDark: r } = W(), o = n(() => {
1873
1899
  let e = {
1874
1900
  emerald: {
1875
1901
  dark: "text-emerald-400 hover:bg-emerald-500/10",
@@ -1949,9 +1975,9 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1949
1975
  "aria-label": e.ariaLabel,
1950
1976
  class: f(["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]]),
1951
1977
  onClick: n[0] ||= (e) => t.$emit("click", e)
1952
- }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", yn, C(e.label), 1)) : i("", !0)], 10, vn));
1978
+ }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", xn, C(e.label), 1)) : i("", !0)], 10, bn));
1953
1979
  }
1954
- }), xn = ["title", "aria-label"], Sn = /* @__PURE__ */ l({
1980
+ }), Cn = ["title", "aria-label"], wn = /* @__PURE__ */ l({
1955
1981
  __name: "BaseCopyButton",
1956
1982
  props: {
1957
1983
  text: {},
@@ -1962,7 +1988,7 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1962
1988
  },
1963
1989
  emits: ["copied", "error"],
1964
1990
  setup(e, { emit: t }) {
1965
- let i = e, o = t, { isDark: s } = U(), c = v(!1), l = null, u = n(() => c.value ? "Copied!" : i.label ? `Copy ${i.label}` : "Copy"), d = n(() => i.label ? `Copy ${i.label}` : "Copy"), p = n(() => i.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"}`);
1991
+ let i = e, o = t, { isDark: s } = W(), c = v(!1), l = null, u = n(() => c.value ? "Copied!" : i.label ? `Copy ${i.label}` : "Copy"), d = n(() => i.label ? `Copy ${i.label}` : "Copy"), p = n(() => i.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"}`);
1966
1992
  async function m(e) {
1967
1993
  try {
1968
1994
  if (navigator.clipboard?.writeText) {
@@ -1992,20 +2018,20 @@ var zt = ["aria-label", "aria-expanded"], Bt = { class: "flex flex-col h-full" }
1992
2018
  "aria-label": d.value,
1993
2019
  class: f(p.value),
1994
2020
  onClick: h
1995
- }, [c.value ? (_(), r(w(ie), {
2021
+ }, [c.value ? (_(), r(w(ne), {
1996
2022
  key: 0,
1997
2023
  class: f(e.iconClass),
1998
2024
  "aria-hidden": "true"
1999
- }, null, 8, ["class"])) : (_(), r(w(ae), {
2025
+ }, null, 8, ["class"])) : (_(), r(w(re), {
2000
2026
  key: 1,
2001
2027
  class: f(e.iconClass),
2002
2028
  "aria-hidden": "true"
2003
- }, null, 8, ["class"]))], 10, xn));
2029
+ }, null, 8, ["class"]))], 10, Cn));
2004
2030
  }
2005
2031
  });
2006
2032
  //#endregion
2007
2033
  //#region src/composables/useDebounce.ts
2008
- function Cn(e, t = 300) {
2034
+ function Tn(e, t = 300) {
2009
2035
  let n = v(e.value), r = null;
2010
2036
  return O(e, (e) => {
2011
2037
  r && clearTimeout(r), r = setTimeout(() => {
@@ -2017,12 +2043,12 @@ function Cn(e, t = 300) {
2017
2043
  }
2018
2044
  //#endregion
2019
2045
  //#region src/composables/useToast.ts
2020
- function wn(e = 3e3) {
2021
- let t = v(!1), n = v(""), r = v(J.SUCCESS), i = null;
2046
+ function En(e = 3e3) {
2047
+ let t = v(!1), n = v(""), r = v(Y.SUCCESS), i = null;
2022
2048
  function a() {
2023
2049
  i &&= (clearTimeout(i), null);
2024
2050
  }
2025
- function o(o, s = J.SUCCESS, c = e) {
2051
+ function o(o, s = Y.SUCCESS, c = e) {
2026
2052
  n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
2027
2053
  t.value = !1, i = null;
2028
2054
  }, c);
@@ -2038,16 +2064,16 @@ function wn(e = 3e3) {
2038
2064
  }
2039
2065
  //#endregion
2040
2066
  //#region src/enums/BaseBadgeEnum.ts
2041
- var Tn = /* @__PURE__ */ function(e) {
2067
+ var Dn = /* @__PURE__ */ function(e) {
2042
2068
  return e.WIN = "WIN", e.LOSE = "LOSE", e;
2043
- }({}), En = {
2069
+ }({}), On = {
2044
2070
  GET: "bg-blue-600",
2045
2071
  POST: "bg-emerald-600",
2046
2072
  PUT: "bg-amber-600",
2047
2073
  DELETE: "bg-red-600",
2048
2074
  PATCH: "bg-purple-600",
2049
2075
  HEAD: "bg-gray-600"
2050
- }, Dn = {
2076
+ }, kn = {
2051
2077
  GET: "bg-blue-500",
2052
2078
  POST: "bg-green-500",
2053
2079
  PUT: "bg-yellow-500",
@@ -2055,23 +2081,23 @@ var Tn = /* @__PURE__ */ function(e) {
2055
2081
  PATCH: "bg-purple-500",
2056
2082
  HEAD: "bg-gray-500"
2057
2083
  };
2058
- function On(e) {
2059
- return e ? En[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
2084
+ function An(e) {
2085
+ return e ? On[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
2060
2086
  }
2061
- function kn(e) {
2062
- return e ? Dn[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
2087
+ function jn(e) {
2088
+ return e ? kn[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
2063
2089
  }
2064
- function An(e) {
2090
+ function Mn(e) {
2065
2091
  let t = e ?? 0;
2066
2092
  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";
2067
2093
  }
2068
- function jn(e, t) {
2094
+ function Nn(e, t) {
2069
2095
  let n = e ?? 200;
2070
2096
  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";
2071
2097
  }
2072
2098
  //#endregion
2073
2099
  //#region src/utils/sanitizeHtml.ts
2074
- var Mn = new Set([
2100
+ var Pn = new Set([
2075
2101
  "A",
2076
2102
  "B",
2077
2103
  "STRONG",
@@ -2086,7 +2112,7 @@ var Mn = new Set([
2086
2112
  "LI",
2087
2113
  "SPAN",
2088
2114
  "DIV"
2089
- ]), Nn = new Set([
2115
+ ]), Fn = new Set([
2090
2116
  "SCRIPT",
2091
2117
  "STYLE",
2092
2118
  "IFRAME",
@@ -2094,53 +2120,53 @@ var Mn = new Set([
2094
2120
  "EMBED",
2095
2121
  "NOSCRIPT",
2096
2122
  "TEMPLATE"
2097
- ]), Pn = { A: new Set(["href", "title"]) };
2098
- function Fn(e) {
2123
+ ]), In = { A: new Set(["href", "title"]) };
2124
+ function Ln(e) {
2099
2125
  let t = e.trim().toLowerCase();
2100
2126
  return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
2101
2127
  }
2102
- function In(e) {
2128
+ function Rn(e) {
2103
2129
  if (e.nodeType !== Node.ELEMENT_NODE) return;
2104
2130
  let t = e, n = t.tagName.toUpperCase();
2105
- if (!Mn.has(n)) {
2106
- Nn.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
2131
+ if (!Pn.has(n)) {
2132
+ Fn.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
2107
2133
  return;
2108
2134
  }
2109
- let r = Pn[n] ?? /* @__PURE__ */ new Set();
2135
+ let r = In[n] ?? /* @__PURE__ */ new Set();
2110
2136
  for (let e of Array.from(t.attributes)) {
2111
2137
  if (!r.has(e.name.toLowerCase())) {
2112
2138
  t.removeAttribute(e.name);
2113
2139
  continue;
2114
2140
  }
2115
- n === "A" && e.name.toLowerCase() === "href" && !Fn(e.value) && t.removeAttribute(e.name);
2141
+ n === "A" && e.name.toLowerCase() === "href" && !Ln(e.value) && t.removeAttribute(e.name);
2116
2142
  }
2117
2143
  n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
2118
- for (let e of Array.from(t.childNodes)) In(e);
2144
+ for (let e of Array.from(t.childNodes)) Rn(e);
2119
2145
  }
2120
- function Ln(e) {
2146
+ function zn(e) {
2121
2147
  if (!e) return "";
2122
2148
  let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
2123
2149
  if (!t) return "";
2124
- for (let e of Array.from(t.childNodes)) In(e);
2150
+ for (let e of Array.from(t.childNodes)) Rn(e);
2125
2151
  return t.innerHTML;
2126
2152
  }
2127
2153
  //#endregion
2128
2154
  //#region src/utils/format.ts
2129
- var Rn = "—";
2130
- function zn(e, t = 4) {
2131
- if (e == null || typeof e == "string" && e.trim() === "") return Rn;
2155
+ var Bn = "—";
2156
+ function Vn(e, t = 4) {
2157
+ if (e == null || typeof e == "string" && e.trim() === "") return Bn;
2132
2158
  let n = typeof e == "string" ? Number(e) : e;
2133
2159
  return isFinite(n) ? n.toLocaleString(void 0, {
2134
2160
  minimumFractionDigits: t,
2135
2161
  maximumFractionDigits: t
2136
- }) : Rn;
2162
+ }) : Bn;
2137
2163
  }
2138
- function Bn(e) {
2139
- if (e == null || e === "") return Rn;
2164
+ function Hn(e) {
2165
+ if (e == null || e === "") return Bn;
2140
2166
  let t = new Date(e);
2141
2167
  return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
2142
2168
  }
2143
- function Vn(e) {
2169
+ function Un(e) {
2144
2170
  return new Date(e).toLocaleString(void 0, {
2145
2171
  month: "short",
2146
2172
  day: "numeric",
@@ -2148,13 +2174,13 @@ function Vn(e) {
2148
2174
  minute: "2-digit"
2149
2175
  });
2150
2176
  }
2151
- function Hn(e) {
2177
+ function Wn(e) {
2152
2178
  return new Date(e).toLocaleDateString(void 0, {
2153
2179
  month: "short",
2154
2180
  day: "numeric"
2155
2181
  });
2156
2182
  }
2157
- function Un(e) {
2183
+ function Gn(e) {
2158
2184
  if (!isFinite(e) || e === 0) return e.toFixed(2);
2159
2185
  let t = Math.abs(e), n = 2;
2160
2186
  return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
@@ -2162,15 +2188,15 @@ function Un(e) {
2162
2188
  maximumFractionDigits: n
2163
2189
  });
2164
2190
  }
2165
- function Wn(e, t = 2) {
2191
+ function Kn(e, t = 2) {
2166
2192
  return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
2167
2193
  }
2168
- function Gn(e) {
2194
+ function qn(e) {
2169
2195
  return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
2170
2196
  }
2171
2197
  //#endregion
2172
2198
  //#region src/utils/pnl.ts
2173
- function Kn(e) {
2199
+ function Jn(e) {
2174
2200
  if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
2175
2201
  pnlUsd: null,
2176
2202
  pnlPct: null
@@ -2185,4 +2211,4 @@ function Kn(e) {
2185
2211
  };
2186
2212
  }
2187
2213
  //#endregion
2188
- export { I as AlertEnum, bn as BaseActionButton, _e as BaseAlert, un as BaseAppLayout, R as BaseBadge, Tn as BaseBadgeEnum, Se as BaseBreadcrumb, Ne as BaseButton, z as BaseButtonEnum, B as BaseButtonSizeEnum, Et as BaseCollapsibleSection, At as BaseConfirmModal, Sn as BaseCopyButton, sn as BaseEntityPickerModal, Le as BaseLine, Re as BaseLoginEnum, Be as BaseLogo, G as BaseLogoEnum, Ke as BaseModal, K as BaseModalEnum, Q as BaseModalShell, Lt as BaseNotFoundPage, mn as BasePageHeader, qe as BaseRow, qt as BaseSidebar, Je as BaseSpinner, Pt as BaseTextInputModal, Qe as BaseToast, J as BaseToastEnum, _n as BaseToolbarButton, et as ColoredSquares, L as ColorsEnums, rt as EarningsCard, ct as EuroAmount, W as LineEnum, dt as Pagination, Y as PositioningEnum, ht as TrendArrow, Kn as computePnL, Bn as fmtDate, Hn as fmtDateShort, Vn as fmtDateTime, zn as fmtNumber, Wn as fmtPct, Un as fmtPrice, Gn as fmtUsd, me as getBaseColor, he as getBaseColorOf, Fn as isSafeHref, kn as methodBadgeBright, On as methodBadgeSolid, Ln as sanitizeHtml, An as statusBadgeSolid, jn as statusBadgeTinted, Cn as useDebouncedRef, Z as useEscapeKey, Rt as useMobileSidebar, U as useTheme, X as useThemeClasses, wn as useToast };
2214
+ export { L as AlertEnum, Sn as BaseActionButton, _e as BaseAlert, fn as BaseAppLayout, z as BaseBadge, Dn as BaseBadgeEnum, Se as BaseBreadcrumb, G as BaseButton, B as BaseButtonEnum, V as BaseButtonSizeEnum, Ot as BaseCollapsibleSection, Mt as BaseConfirmModal, wn as BaseCopyButton, ln as BaseEntityPickerModal, Le as BaseLine, Re as BaseLoginEnum, Be as BaseLogo, q as BaseLogoEnum, Ke as BaseModal, J as BaseModalEnum, Q as BaseModalShell, zt as BaseNotFoundPage, gn as BasePageHeader, qe as BaseRow, Yt as BaseSidebar, Je as BaseSpinner, It as BaseTextInputModal, Ze as BaseToast, Y as BaseToastEnum, yn as BaseToolbarButton, $e as ColoredSquares, R as ColorsEnums, nt as EarningsCard, st as EuroAmount, K as LineEnum, dt as Pagination, X as PositioningEnum, gt as TrendArrow, Jn as computePnL, Hn as fmtDate, Wn as fmtDateShort, Un as fmtDateTime, Vn as fmtNumber, Kn as fmtPct, Gn as fmtPrice, qn as fmtUsd, me as getBaseColor, he as getBaseColorOf, Te as initTheme, Ln as isSafeHref, jn as methodBadgeBright, An as methodBadgeSolid, zn as sanitizeHtml, Mn as statusBadgeSolid, Nn as statusBadgeTinted, Tn as useDebouncedRef, _t as useEscapeKey, Bt as useMobileSidebar, W as useTheme, Z as useThemeClasses, En as useToast };