mgv-backoffice 1.9.0 → 1.13.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,5 +1,5 @@
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 P, DocumentDuplicateIcon as re, ExclamationCircleIcon as ie, ExclamationTriangleIcon as ae, FolderIcon as oe, InformationCircleIcon as se, MagnifyingGlassIcon as ce, XMarkIcon as F } from "@heroicons/vue/24/outline";
2
+ import { ArrowDownIcon as ee, ArrowUpIcon as te, Bars3Icon as N, CheckCircleIcon as ne, ChevronRightIcon as re, DocumentDuplicateIcon as ie, ExclamationCircleIcon as ae, ExclamationTriangleIcon as P, FolderIcon as oe, InformationCircleIcon as se, MagnifyingGlassIcon as ce, XMarkIcon as F } from "@heroicons/vue/24/outline";
3
3
  import { HomeIcon as le } from "@heroicons/vue/24/solid";
4
4
  import { useRoute as ue, useRouter as de } from "vue-router";
5
5
  //#region src/enums/AlertEnum.ts
@@ -143,7 +143,7 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
143
143
  key: t,
144
144
  class: "inline-flex items-center",
145
145
  style: { "margin-left": "0" }
146
- }, [c(w(P), { class: "h-4 w-4 text-gray-500" }), c(r, {
146
+ }, [c(w(re), { class: "h-4 w-4 text-gray-500" }), c(r, {
147
147
  to: e.url,
148
148
  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
149
  }, {
@@ -153,20 +153,46 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
153
153
  };
154
154
  }
155
155
  }), z = /* @__PURE__ */ function(e) {
156
- return e.RED = "RED", e.BLUE = "BLUE", e.WHITE = "WHITE", e.DARK = "DARK", e.GREEN = "GREEN", e.YELLOW = "YELLOW", e.PURPLE = "PURPLE", e;
156
+ 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
157
  }({}), B = /* @__PURE__ */ function(e) {
158
158
  return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
159
- }({}), xe = [
159
+ }({}), V = v(!1), xe = !1, H = "mgv-theme";
160
+ function Se(e) {
161
+ if (!xe) {
162
+ if (xe = !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
+ });
171
+ }
172
+ }
173
+ function U(e) {
174
+ Se(e?.storageKey ?? H);
175
+ function t() {
176
+ V.value = !V.value;
177
+ }
178
+ return {
179
+ isDark: V,
180
+ toggleTheme: t
181
+ };
182
+ }
183
+ //#endregion
184
+ //#region src/components/BaseButton.vue?vue&type=script&setup=true&lang.ts
185
+ var Ce = [
160
186
  "type",
161
187
  "disabled",
162
188
  "onClick"
163
- ], Se = {
189
+ ], we = {
164
190
  key: 0,
165
191
  class: "inline-flex items-center"
166
- }, Ce = { key: 1 }, we = { key: 2 }, Te = ["type", "disabled"], Ee = {
192
+ }, Te = { key: 1 }, Ee = { key: 2 }, De = ["type", "disabled"], Oe = {
167
193
  key: 0,
168
194
  class: "inline-flex items-center"
169
- }, De = { key: 1 }, Oe = { key: 2 }, ke = /* @__PURE__ */ l({
195
+ }, ke = { key: 1 }, Ae = { key: 2 }, je = /* @__PURE__ */ l({
170
196
  __name: "BaseButton",
171
197
  props: {
172
198
  description: {
@@ -204,6 +230,16 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
204
230
  type: Boolean,
205
231
  required: !1
206
232
  },
233
+ outline: {
234
+ type: Boolean,
235
+ required: !1,
236
+ default: !1
237
+ },
238
+ ghost: {
239
+ type: Boolean,
240
+ required: !1,
241
+ default: !1
242
+ },
207
243
  isDisable: {
208
244
  type: Boolean,
209
245
  required: !1
@@ -218,37 +254,148 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
218
254
  }
219
255
  },
220
256
  setup(e) {
221
- let t = e;
222
- function n() {
223
- let e = t.isDisable || t.isLoading, n;
224
- switch (t.color) {
257
+ let { isDark: t } = U(), n = e;
258
+ function s() {
259
+ let e = {
260
+ [z.BLUE]: {
261
+ light: "text-blue-700 border-blue-300 hover:bg-blue-50",
262
+ dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
263
+ },
264
+ [z.GREEN]: {
265
+ light: "text-green-700 border-green-300 hover:bg-green-50",
266
+ dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
267
+ },
268
+ [z.EMERALD]: {
269
+ light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
270
+ dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
271
+ },
272
+ [z.RED]: {
273
+ light: "text-red-700 border-red-300 hover:bg-red-50",
274
+ dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
275
+ },
276
+ [z.YELLOW]: {
277
+ light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
278
+ dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
279
+ },
280
+ [z.PURPLE]: {
281
+ light: "text-purple-700 border-purple-300 hover:bg-purple-50",
282
+ dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
283
+ },
284
+ [z.SKY]: {
285
+ light: "text-sky-700 border-sky-300 hover:bg-sky-50",
286
+ dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
287
+ },
288
+ [z.AMBER]: {
289
+ light: "text-amber-700 border-amber-300 hover:bg-amber-50",
290
+ dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
291
+ },
292
+ [z.GRAY]: {
293
+ light: "text-gray-700 border-gray-300 hover:bg-gray-50",
294
+ dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
295
+ },
296
+ [z.DARK]: {
297
+ light: "text-gray-700 border-gray-300 hover:bg-gray-50",
298
+ dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
299
+ },
300
+ [z.WHITE]: {
301
+ light: "text-gray-700 border-gray-300 hover:bg-gray-50",
302
+ dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
303
+ }
304
+ }, r = e[n.color] ?? e[z.BLUE], i = t.value ? r.dark : r.light;
305
+ return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none border bg-transparent ${i}`;
306
+ }
307
+ function c() {
308
+ let e = {
309
+ [z.BLUE]: {
310
+ light: "text-blue-600 hover:bg-blue-50",
311
+ dark: "text-blue-400 hover:bg-blue-500/10"
312
+ },
313
+ [z.GREEN]: {
314
+ light: "text-green-600 hover:bg-green-50",
315
+ dark: "text-green-400 hover:bg-green-500/10"
316
+ },
317
+ [z.EMERALD]: {
318
+ light: "text-emerald-600 hover:bg-emerald-50",
319
+ dark: "text-emerald-400 hover:bg-emerald-500/10"
320
+ },
321
+ [z.SKY]: {
322
+ light: "text-sky-600 hover:bg-sky-50",
323
+ dark: "text-sky-400 hover:bg-sky-500/10"
324
+ },
325
+ [z.RED]: {
326
+ light: "text-red-500 hover:bg-red-50",
327
+ dark: "text-red-400 hover:bg-red-500/10"
328
+ },
329
+ [z.AMBER]: {
330
+ light: "text-amber-700 hover:bg-amber-50",
331
+ dark: "text-amber-300 hover:bg-amber-500/10"
332
+ },
333
+ [z.YELLOW]: {
334
+ light: "text-yellow-600 hover:bg-yellow-50",
335
+ dark: "text-yellow-400 hover:bg-yellow-500/10"
336
+ },
337
+ [z.PURPLE]: {
338
+ light: "text-purple-600 hover:bg-purple-50",
339
+ dark: "text-purple-400 hover:bg-purple-500/10"
340
+ },
341
+ [z.GRAY]: {
342
+ light: "text-gray-500 hover:bg-gray-100",
343
+ dark: "text-gray-400 hover:bg-gray-800"
344
+ },
345
+ [z.DARK]: {
346
+ light: "text-gray-500 hover:bg-gray-100",
347
+ dark: "text-gray-400 hover:bg-gray-800"
348
+ },
349
+ [z.WHITE]: {
350
+ light: "text-gray-500 hover:bg-gray-100",
351
+ dark: "text-gray-400 hover:bg-gray-800"
352
+ }
353
+ }, r = e[n.color] ?? e[z.GRAY], i = t.value ? r.dark : r.light;
354
+ return n.isDisable || n.isLoading ? `bg-transparent ${i} opacity-60 cursor-not-allowed` : `focus:outline-none bg-transparent ${i} cursor-pointer`;
355
+ }
356
+ function l() {
357
+ let e = n.isDisable || n.isLoading, t;
358
+ switch (n.color) {
225
359
  case z.BLUE:
226
- n = 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";
360
+ 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";
227
361
  break;
228
362
  case z.WHITE:
229
- n = 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";
363
+ 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";
230
364
  break;
231
365
  case z.DARK:
232
- n = 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";
366
+ 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";
233
367
  break;
234
368
  case z.GREEN:
235
- n = 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";
369
+ 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
+ break;
371
+ case z.EMERALD:
372
+ 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";
236
373
  break;
237
374
  case z.RED:
238
- n = 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";
375
+ 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";
239
376
  break;
240
377
  case z.YELLOW:
241
- n = 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";
378
+ 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";
242
379
  break;
243
380
  case z.PURPLE:
244
- n = 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";
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";
382
+ break;
383
+ case z.SKY:
384
+ 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
+ break;
386
+ case z.AMBER:
387
+ 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
+ break;
389
+ case z.GRAY:
390
+ 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";
245
391
  break;
246
392
  default:
247
- n = 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";
393
+ 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";
248
394
  break;
249
395
  }
396
+ n.outline && (t = s()), n.ghost && (t = c());
250
397
  let r = "px-5 py-2.5 mr-2 mb-2 text-sm";
251
- switch (t.size) {
398
+ switch (n.size) {
252
399
  case B.EXTRA_SMALL:
253
400
  r = "px-3 py-2 text-xs";
254
401
  break;
@@ -266,25 +413,25 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
266
413
  break;
267
414
  }
268
415
  let i = "rounded-lg";
269
- return t.isRounded && (i = "rounded-full"), "inline-flex items-center " + r + " " + n + " font-medium " + i;
416
+ return n.isRounded && (i = "rounded-full"), "inline-flex items-center " + r + " " + t + " font-medium " + i;
270
417
  }
271
- return (s, c) => {
272
- let l = x("router-link");
273
- return e.to ? (_(), r(l, {
418
+ return (t, s) => {
419
+ let c = x("router-link");
420
+ return e.to ? (_(), r(c, {
274
421
  key: 0,
275
422
  to: e.to,
276
423
  custom: ""
277
424
  }, {
278
425
  default: k(({ navigate: r }) => [o("button", {
279
- type: t.type,
280
- class: f(n()),
426
+ type: n.type,
427
+ class: f(l()),
281
428
  disabled: e.isDisable || e.isLoading,
282
429
  onClick: r
283
430
  }, [
284
- e.isLoading ? (_(), a("div", Se, [...c[0] ||= [o("svg", {
431
+ e.isLoading ? (_(), a("div", we, [...s[0] ||= [o("svg", {
285
432
  "aria-hidden": "true",
286
433
  role: "status",
287
- class: "inline w-4 h-4 me-3 text-white animate-spin",
434
+ class: "inline w-4 h-4 me-3 animate-spin",
288
435
  viewBox: "0 0 100 101",
289
436
  fill: "none",
290
437
  xmlns: "http://www.w3.org/2000/svg"
@@ -295,21 +442,21 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
295
442
  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",
296
443
  fill: "currentColor"
297
444
  })], -1)]])) : i("", !0),
298
- e.iconLeft ? i("", !0) : (_(), a("span", Ce, C(e.description), 1)),
299
- b(s.$slots, "default"),
300
- e.iconLeft ? (_(), a("span", we, C(e.description), 1)) : i("", !0)
301
- ], 10, xe)]),
445
+ e.iconLeft ? i("", !0) : (_(), a("span", Te, C(e.description), 1)),
446
+ b(t.$slots, "default"),
447
+ e.iconLeft ? (_(), a("span", Ee, C(e.description), 1)) : i("", !0)
448
+ ], 10, Ce)]),
302
449
  _: 3
303
450
  }, 8, ["to"])) : (_(), a("button", {
304
451
  key: 1,
305
- type: t.type,
306
- class: f(n()),
452
+ type: n.type,
453
+ class: f(l()),
307
454
  disabled: e.isDisable || e.isLoading
308
455
  }, [
309
- e.isLoading ? (_(), a("div", Ee, [...c[1] ||= [o("svg", {
456
+ e.isLoading ? (_(), a("div", Oe, [...s[1] ||= [o("svg", {
310
457
  "aria-hidden": "true",
311
458
  role: "status",
312
- class: "inline w-4 h-4 me-3 text-white animate-spin",
459
+ class: "inline w-4 h-4 me-3 animate-spin",
313
460
  viewBox: "0 0 100 101",
314
461
  fill: "none",
315
462
  xmlns: "http://www.w3.org/2000/svg"
@@ -320,58 +467,58 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
320
467
  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",
321
468
  fill: "currentColor"
322
469
  })], -1)]])) : i("", !0),
323
- e.iconLeft ? i("", !0) : (_(), a("span", De, C(e.description), 1)),
324
- b(s.$slots, "default"),
325
- e.iconLeft ? (_(), a("span", Oe, C(e.description), 1)) : i("", !0)
326
- ], 10, Te));
470
+ e.iconLeft ? i("", !0) : (_(), a("span", ke, C(e.description), 1)),
471
+ b(t.$slots, "default"),
472
+ e.iconLeft ? (_(), a("span", Ae, C(e.description), 1)) : i("", !0)
473
+ ], 10, De));
327
474
  };
328
475
  }
329
- }), V = /* @__PURE__ */ function(e) {
476
+ }), W = /* @__PURE__ */ function(e) {
330
477
  return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
331
- }({}), Ae = {
478
+ }({}), Me = {
332
479
  key: 0,
333
480
  class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
334
- }, je = {
481
+ }, Ne = {
335
482
  key: 1,
336
483
  class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
337
- }, Me = {
484
+ }, Pe = {
338
485
  key: 2,
339
486
  class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
340
- }, Ne = /* @__PURE__ */ l({
487
+ }, Fe = /* @__PURE__ */ l({
341
488
  __name: "BaseLine",
342
489
  props: { mode: {
343
490
  type: String,
344
491
  required: !1,
345
- default: V.BASE
492
+ default: W.BASE
346
493
  } },
347
494
  setup(t) {
348
495
  return (n, r) => (_(), a(e, null, [
349
- t.mode === w(V).BASE ? (_(), a("hr", Ae)) : i("", !0),
350
- t.mode === w(V).BASE_SHORTER ? (_(), a("hr", je)) : i("", !0),
351
- t.mode === w(V).SQUARE ? (_(), a("hr", Me)) : i("", !0)
496
+ t.mode === w(W).BASE ? (_(), a("hr", Me)) : i("", !0),
497
+ t.mode === w(W).BASE_SHORTER ? (_(), a("hr", Ne)) : i("", !0),
498
+ t.mode === w(W).SQUARE ? (_(), a("hr", Pe)) : i("", !0)
352
499
  ], 64));
353
500
  }
354
- }), H = /* @__PURE__ */ function(e) {
501
+ }), G = /* @__PURE__ */ function(e) {
355
502
  return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
356
- }({}), Pe = H, Fe = ["height", "width"], Ie = /* @__PURE__ */ l({
503
+ }({}), Ie = G, Le = ["height", "width"], Re = /* @__PURE__ */ l({
357
504
  __name: "BaseLogo",
358
505
  props: { size: {
359
506
  type: String,
360
507
  required: !1,
361
- default: H.MEDIUM
508
+ default: G.MEDIUM
362
509
  } },
363
510
  setup(e) {
364
511
  let t = e;
365
512
  function n() {
366
513
  let e = "";
367
514
  switch (t.size) {
368
- case H.SMALL:
515
+ case G.SMALL:
369
516
  e = "50px";
370
517
  break;
371
- case H.MEDIUM:
518
+ case G.MEDIUM:
372
519
  e = "100px";
373
520
  break;
374
- case H.LARGE:
521
+ case G.LARGE:
375
522
  e = "150px";
376
523
  break;
377
524
  }
@@ -533,17 +680,17 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
533
680
  d: "m281.7 183.8h3.6v18.5h-3.6z",
534
681
  fill: "url(#k)"
535
682
  }, null, -1)
536
- ]], 8, Fe))]),
683
+ ]], 8, Le))]),
537
684
  _: 1
538
685
  });
539
686
  };
540
687
  }
541
- }), U = /* @__PURE__ */ function(e) {
688
+ }), K = /* @__PURE__ */ function(e) {
542
689
  return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
543
- }({}), Le = ["aria-labelledby"], Re = {
690
+ }({}), ze = ["aria-labelledby"], Be = {
544
691
  key: 0,
545
692
  class: "p-6 text-center"
546
- }, ze = ["id"], Be = { class: "flex justify-center" }, Ve = /* @__PURE__ */ l({
693
+ }, Ve = ["id"], He = { class: "flex justify-center" }, Ue = /* @__PURE__ */ l({
547
694
  __name: "BaseModal",
548
695
  props: {
549
696
  title: {
@@ -562,7 +709,7 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
562
709
  mode: {
563
710
  type: String,
564
711
  required: !1,
565
- default: U.SUCCESS
712
+ default: K.SUCCESS
566
713
  }
567
714
  },
568
715
  emits: ["closeModal", "confirmModal"],
@@ -585,13 +732,13 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
585
732
  role: "dialog",
586
733
  "aria-modal": "true",
587
734
  "aria-labelledby": "modal-title-" + t.title
588
- }, [t.mode === w(U).DELETE ? (_(), a("div", Re, [
589
- c(w(ie), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
735
+ }, [t.mode === w(K).DELETE ? (_(), a("div", Be, [
736
+ c(w(ae), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
590
737
  o("h3", {
591
738
  id: "modal-title-" + t.title,
592
739
  class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
593
- }, " Are you sure you want to delete this " + C(t.title) + "? ", 9, ze),
594
- o("div", Be, [c(s, {
740
+ }, " Are you sure you want to delete this " + C(t.title) + "? ", 9, Ve),
741
+ o("div", He, [c(s, {
595
742
  color: w(z).RED,
596
743
  onClick: r[1] ||= (e) => n.$emit("confirmModal"),
597
744
  description: "Yes, I'm sure"
@@ -600,14 +747,14 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
600
747
  onClick: r[2] ||= (e) => n.$emit("closeModal"),
601
748
  description: "No, cancel"
602
749
  }, null, 8, ["color"])])
603
- ])) : i("", !0)], 8, Le)], 64);
750
+ ])) : i("", !0)], 8, ze)], 64);
604
751
  };
605
752
  }
606
- }), W = (e, t) => {
753
+ }), q = (e, t) => {
607
754
  let n = e.__vccOpts || e;
608
755
  for (let [e, r] of t) n[e] = r;
609
756
  return n;
610
- }, He = /* @__PURE__ */ W(Ve, [["__scopeId", "data-v-1db4f0ac"]]), Ue = /* @__PURE__ */ l({
757
+ }, We = /* @__PURE__ */ q(Ue, [["__scopeId", "data-v-1db4f0ac"]]), Ge = /* @__PURE__ */ l({
611
758
  __name: "BaseRow",
612
759
  props: { bgColor: {
613
760
  type: String,
@@ -621,21 +768,45 @@ var me = { class: "font-medium pl-1" }, he = /* @__PURE__ */ l({
621
768
  }
622
769
  return (e, t) => (_(), a("div", { class: f(n()) }, [b(e.$slots, "default")], 2));
623
770
  }
624
- }), We = {}, Ge = { class: "w-4 h-4 border-2 border-gray-200 border-t-blue-500 rounded-full animate-spin" };
625
- function Ke(e, t) {
626
- return _(), a("div", Ge);
627
- }
628
- var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e) {
771
+ }), Ke = /* @__PURE__ */ l({
772
+ __name: "BaseSpinner",
773
+ props: {
774
+ size: { default: "sm" },
775
+ color: { default: "blue" }
776
+ },
777
+ setup(e) {
778
+ let t = e, r = n(() => ({
779
+ sm: "w-4 h-4 border-2",
780
+ md: "w-6 h-6 border-2",
781
+ lg: "w-8 h-8 border-4",
782
+ xl: "w-12 h-12 border-4"
783
+ })[t.size]), i = n(() => ({
784
+ blue: "border-t-blue-500",
785
+ emerald: "border-t-emerald-500",
786
+ sky: "border-t-sky-500",
787
+ indigo: "border-t-indigo-500",
788
+ teal: "border-t-teal-500",
789
+ purple: "border-t-purple-500",
790
+ red: "border-t-red-500",
791
+ amber: "border-t-amber-500"
792
+ })[t.color]);
793
+ return (e, t) => (_(), a("div", {
794
+ class: f(["border-gray-200 rounded-full animate-spin", [r.value, i.value]]),
795
+ role: "status",
796
+ "aria-label": "Loading"
797
+ }, null, 2));
798
+ }
799
+ }), J = /* @__PURE__ */ function(e) {
629
800
  return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
630
- }({}), K = /* @__PURE__ */ function(e) {
801
+ }({}), Y = /* @__PURE__ */ function(e) {
631
802
  return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
632
- }({}), Je = { 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" }, Ye = { class: "ml-3 text-sm font-normal" }, Xe = {
803
+ }({}), qe = { 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" }, Je = { class: "ml-3 text-sm font-normal" }, Ye = {
633
804
  key: 3,
634
805
  type: "button",
635
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",
636
807
  "data-dismiss-target": "#toast-danger",
637
808
  "aria-label": "Close"
638
- }, Ze = /* @__PURE__ */ l({
809
+ }, Xe = /* @__PURE__ */ l({
639
810
  __name: "BaseToast",
640
811
  props: {
641
812
  mode: {
@@ -654,7 +825,7 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
654
825
  positioning: {
655
826
  type: String,
656
827
  required: !1,
657
- default: K.TOP_RIGHT
828
+ default: Y.TOP_RIGHT
658
829
  },
659
830
  duration: {
660
831
  type: Number,
@@ -675,13 +846,13 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
675
846
  function l() {
676
847
  let e = "";
677
848
  switch (t.mode) {
678
- case G.ERROR:
849
+ case J.ERROR:
679
850
  e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
680
851
  break;
681
- case G.SUCCESS:
852
+ case J.SUCCESS:
682
853
  e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
683
854
  break;
684
- case G.WARNING:
855
+ case J.WARNING:
685
856
  e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
686
857
  break;
687
858
  default:
@@ -693,16 +864,16 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
693
864
  function u() {
694
865
  let e = "top-5 right-5";
695
866
  switch (t.positioning) {
696
- case K.BOTTOM_LEFT:
867
+ case Y.BOTTOM_LEFT:
697
868
  e = "bottom-5 left-5";
698
869
  break;
699
- case K.TOP_LEFT:
870
+ case Y.TOP_LEFT:
700
871
  e = "top-5 left-5";
701
872
  break;
702
- case K.TOP_RIGHT:
873
+ case Y.TOP_RIGHT:
703
874
  e = "top-5 right-5";
704
875
  break;
705
- case K.BOTTOM_RIGHT:
876
+ case Y.BOTTOM_RIGHT:
706
877
  e = "bottom-5 right-5";
707
878
  break;
708
879
  }
@@ -713,25 +884,25 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
713
884
  id: "toast-top-right",
714
885
  class: f(u()),
715
886
  role: "alert"
716
- }, [o("div", Je, [
717
- e.mode == w(G).ERROR ? (_(), a("div", {
887
+ }, [o("div", qe, [
888
+ e.mode == w(J).ERROR ? (_(), a("div", {
718
889
  key: 0,
719
890
  class: f(l())
720
- }, [c(w(ie), { class: "h-6 w-6 text-red-500" }), r[0] ||= o("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == w(G).SUCCESS ? (_(), a("div", {
891
+ }, [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(J).SUCCESS ? (_(), a("div", {
721
892
  key: 1,
722
893
  class: f(l())
723
- }, [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(G).WARNING ? (_(), a("div", {
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", {
724
895
  key: 2,
725
896
  class: f(l())
726
- }, [c(w(ae), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= o("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : i("", !0),
727
- o("div", Ye, C(e.description), 1),
728
- e.hasCloseIcon ? (_(), a("button", Xe, [r[3] ||= o("span", { class: "sr-only" }, "Close", -1), c(w(F), {
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),
898
+ o("div", Je, C(e.description), 1),
899
+ e.hasCloseIcon ? (_(), a("button", Ye, [r[3] ||= o("span", { class: "sr-only" }, "Close", -1), c(w(F), {
729
900
  class: "h-6 w-6 text-gray-500 cursor-pointer",
730
901
  onClick: s
731
902
  })])) : i("", !0)
732
903
  ])], 2)) : i("", !0);
733
904
  }
734
- }), Qe = { class: "w-13" }, $e = /* @__PURE__ */ l({
905
+ }), Ze = { class: "w-13" }, Qe = /* @__PURE__ */ l({
735
906
  __name: "ColoredSquares",
736
907
  props: { color: {
737
908
  type: String,
@@ -770,12 +941,9 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
770
941
  }
771
942
  return "font-bold bg-" + e + "-100 text-" + e + "-800 text-xs mr-2 px-2.5 py-0.5 rounded-full";
772
943
  }
773
- 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)]));
944
+ return (e, t) => (_(), a("div", Ze, [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)]));
774
945
  }
775
- }), et = { class: "relative rounded-xl border-2 border-dashed border-orange-300 bg-white p-6 dark:border-orange-700 dark:bg-slate-800" }, tt = {
776
- key: 0,
777
- class: "absolute right-4 top-4 rounded-md bg-orange-100 px-3 py-1 text-xs font-bold tracking-wide text-orange-500 dark:bg-orange-900/40 dark:text-orange-400"
778
- }, nt = { class: "flex items-start justify-between" }, rt = { class: "text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, it = { class: "mt-1 text-4xl font-bold text-gray-400 dark:text-slate-300" }, at = { class: "mt-1 text-sm font-medium text-orange-400 dark:text-orange-400" }, ot = /* @__PURE__ */ l({
946
+ }), $e = { class: "flex items-start justify-between" }, et = { class: "text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, tt = /* @__PURE__ */ l({
779
947
  __name: "EarningsCard",
780
948
  props: {
781
949
  title: { default: "TOTAL EARNINGS" },
@@ -783,31 +951,55 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
783
951
  subtitle: { default: "Lifetime commission" },
784
952
  badge: { default: "" },
785
953
  currency: { default: "$" },
786
- decimals: { default: 2 }
954
+ decimals: { default: 2 },
955
+ accent: { default: "orange" }
787
956
  },
788
957
  setup(e) {
789
- let t = e, r = n(() => t.currency + t.amount.toLocaleString("en-US", {
790
- minimumFractionDigits: t.decimals,
791
- maximumFractionDigits: t.decimals
792
- }));
793
- return (t, n) => (_(), a("div", et, [e.badge ? (_(), a("div", tt, C(e.badge), 1)) : i("", !0), o("div", nt, [o("div", null, [
794
- o("p", rt, C(e.title), 1),
795
- o("p", it, C(r.value), 1),
796
- o("p", at, C(e.subtitle), 1)
797
- ]), n[0] ||= o("div", { class: "mt-6 flex h-12 w-12 items-center justify-center rounded-xl bg-orange-50 dark:bg-orange-900/30" }, [o("svg", {
798
- class: "h-6 w-6 text-orange-400",
958
+ let t = e, r = {
959
+ orange: {
960
+ border: "border-orange-300 dark:border-orange-700",
961
+ badge: "bg-orange-100 text-orange-500 dark:bg-orange-900/40 dark:text-orange-400",
962
+ amount: "text-gray-400 dark:text-slate-300",
963
+ subtitle: "text-orange-400 dark:text-orange-400",
964
+ iconBox: "bg-orange-50 dark:bg-orange-900/30",
965
+ icon: "text-orange-400"
966
+ },
967
+ emerald: {
968
+ border: "border-emerald-300 dark:border-emerald-700",
969
+ badge: "bg-emerald-100 text-emerald-600 dark:bg-emerald-900/40 dark:text-emerald-400",
970
+ amount: "text-emerald-500 dark:text-emerald-400",
971
+ subtitle: "text-emerald-500 dark:text-emerald-400",
972
+ iconBox: "bg-emerald-50 dark:bg-emerald-900/30",
973
+ icon: "text-emerald-500"
974
+ }
975
+ }, s = n(() => r[t.accent]), c = n(() => {
976
+ let e = Number.isFinite(t.amount) ? t.amount : 0;
977
+ return t.currency + e.toLocaleString("en-US", {
978
+ minimumFractionDigits: t.decimals,
979
+ maximumFractionDigits: t.decimals
980
+ });
981
+ });
982
+ 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
+ key: 0,
984
+ 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", $e, [o("div", null, [
986
+ o("p", et, C(e.title), 1),
987
+ o("p", { class: f(["mt-1 text-4xl font-bold", s.value.amount]) }, C(c.value), 3),
988
+ o("p", { class: f(["mt-1 text-sm font-medium", s.value.subtitle]) }, C(e.subtitle), 3)
989
+ ]), o("div", { class: f(["mt-6 flex h-12 w-12 items-center justify-center rounded-xl", s.value.iconBox]) }, [(_(), a("svg", {
990
+ class: f(["h-6 w-6", s.value.icon]),
799
991
  viewBox: "0 0 24 24",
800
992
  fill: "none",
801
993
  stroke: "currentColor",
802
994
  "stroke-width": "2.5",
803
995
  "stroke-linecap": "round",
804
996
  "stroke-linejoin": "round"
805
- }, [o("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }), o("polyline", { points: "16 7 22 7 22 13" })])], -1)])]));
997
+ }, [...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));
806
998
  }
807
- }), st = {
999
+ }), nt = {
808
1000
  key: 0,
809
1001
  class: "font-bold text-green-800"
810
- }, ct = { key: 0 }, lt = { key: 0 }, ut = "font-bold", dt = /* @__PURE__ */ l({
1002
+ }, rt = { key: 0 }, it = { key: 0 }, at = "font-bold", ot = /* @__PURE__ */ l({
811
1003
  __name: "EuroAmount",
812
1004
  props: {
813
1005
  amount: {
@@ -827,15 +1019,15 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
827
1019
  },
828
1020
  setup(t) {
829
1021
  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));
830
- return (n, r) => (_(), a(e, null, [o.value && d.value ? (_(), a("span", st, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", ct, "€")) : i("", !0)])) : i("", !0), o.value && !d.value ? (_(), a("span", {
1022
+ return (n, r) => (_(), a(e, null, [o.value && d.value ? (_(), a("span", nt, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", rt, "€")) : i("", !0)])) : i("", !0), o.value && !d.value ? (_(), a("span", {
831
1023
  key: 1,
832
- class: f([ut, u.value ? "text-red-800" : "text-gray-800"])
833
- }, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", lt, "€")) : i("", !0)], 2)) : i("", !0)], 64));
1024
+ class: f([at, u.value ? "text-red-800" : "text-gray-800"])
1025
+ }, [s(C(t.amount) + " ", 1), t.showCurrency ? (_(), a("span", it, "€")) : i("", !0)], 2)) : i("", !0)], 64));
834
1026
  }
835
- }), ft = ["onClick", "onKeydown"], pt = {
1027
+ }), st = ["onClick", "onKeydown"], ct = {
836
1028
  key: 1,
837
1029
  style: { cursor: "not-allowed" }
838
- }, mt = /* @__PURE__ */ W(/* @__PURE__ */ l({
1030
+ }, lt = /* @__PURE__ */ q(/* @__PURE__ */ l({
839
1031
  __name: "Pagination",
840
1032
  props: {
841
1033
  totalItems: {
@@ -878,15 +1070,15 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
878
1070
  onClick: (t) => d(e),
879
1071
  onKeydown: j((t) => d(e), ["enter"]),
880
1072
  class: f({ active: e === s.value })
881
- }, C(e), 43, ft)), e === 0 ? (_(), a("span", pt, "...")) : i("", !0)]))), 128))])]));
1073
+ }, C(e), 43, st)), e === 0 ? (_(), a("span", ct, "...")) : i("", !0)]))), 128))])]));
882
1074
  }
883
- }), [["__scopeId", "data-v-d7ebb6ac"]]), ht = { key: 0 }, gt = {
1075
+ }), [["__scopeId", "data-v-d7ebb6ac"]]), ut = { key: 0 }, dt = {
884
1076
  key: 0,
885
1077
  class: "flex items-center space-x-2"
886
- }, _t = {
1078
+ }, ft = {
887
1079
  key: 1,
888
1080
  class: "flex items-center space-x-2"
889
- }, vt = /* @__PURE__ */ l({
1081
+ }, pt = /* @__PURE__ */ l({
890
1082
  __name: "TrendArrow",
891
1083
  props: {
892
1084
  number: {
@@ -900,42 +1092,19 @@ var qe = /* @__PURE__ */ W(We, [["render", Ke]]), G = /* @__PURE__ */ function(e
900
1092
  },
901
1093
  setup(e) {
902
1094
  let t = e, r = n(() => t.number !== null && t.number !== void 0 && t.number < 0);
903
- return (n, o) => e.number !== null && e.number !== void 0 ? (_(), a("div", ht, [r.value ? (_(), a("span", gt, [c(R, { color: w(L).RED }, {
1095
+ return (n, o) => e.number !== null && e.number !== void 0 ? (_(), a("div", ut, [r.value ? (_(), a("span", dt, [c(R, { color: w(L).RED }, {
904
1096
  default: k(() => [s(C(e.number) + C(t.icon), 1)]),
905
1097
  _: 1
906
- }, 8, ["color"]), c(w(ee), { class: "h-5 w-5 text-red-500" })])) : (_(), a("span", _t, [c(R, { color: w(L).GREEN }, {
1098
+ }, 8, ["color"]), c(w(ee), { class: "h-5 w-5 text-red-500" })])) : (_(), a("span", ft, [c(R, { color: w(L).GREEN }, {
907
1099
  default: k(() => [s(C(e.number) + C(t.icon), 1)]),
908
1100
  _: 1
909
1101
  }, 8, ["color"]), c(w(te), { class: "h-5 w-5 text-green-500" })]))])) : i("", !0);
910
1102
  }
911
- }), q = v(!1), yt = !1, J = "mgv-theme";
912
- function bt(e) {
913
- if (!yt) {
914
- if (yt = !0, J = e, typeof window < "u") {
915
- let e = window.localStorage?.getItem(J);
916
- e ? q.value = e === "dark" : typeof window.matchMedia == "function" && (q.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
917
- }
918
- typeof document < "u" && u(!0).run(() => {
919
- O(q, (e) => {
920
- document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(J, e ? "dark" : "light");
921
- }, { immediate: !0 });
922
- });
923
- }
924
- }
925
- function Y(e) {
926
- bt(e?.storageKey ?? J);
927
- function t() {
928
- q.value = !q.value;
929
- }
930
- return {
931
- isDark: q,
932
- toggleTheme: t
933
- };
934
- }
1103
+ });
935
1104
  //#endregion
936
1105
  //#region src/composables/useThemeClasses.ts
937
1106
  function X() {
938
- let { isDark: e } = Y();
1107
+ let { isDark: e } = U();
939
1108
  return {
940
1109
  card: n(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
941
1110
  cardAlt: n(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
@@ -970,7 +1139,7 @@ function Z(e) {
970
1139
  }
971
1140
  //#endregion
972
1141
  //#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
973
- var 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({
1142
+ var mt = { class: "p-6" }, ht = { class: "flex items-start gap-4" }, gt = { class: "flex-1" }, _t = { class: "mt-4" }, vt = { class: "mt-6 flex gap-3 justify-end" }, Q = /* @__PURE__ */ l({
974
1143
  __name: "BaseModalShell",
975
1144
  props: {
976
1145
  title: {},
@@ -982,7 +1151,7 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
982
1151
  },
983
1152
  emits: ["cancel", "backdrop"],
984
1153
  setup(e, { emit: i }) {
985
- let a = e, s = i, { isDark: c } = Y(), l = X(), u = `modal-title-${Math.random().toString(36).slice(2, 9)}`, d = n(() => c.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200");
1154
+ let a = e, s = i, { isDark: c } = U(), l = X(), u = `modal-title-${Math.random().toString(36).slice(2, 9)}`, d = n(() => c.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200");
986
1155
  function p() {
987
1156
  s("backdrop"), a.manualClose || s("cancel");
988
1157
  }
@@ -997,16 +1166,16 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
997
1166
  }, [o("div", {
998
1167
  class: f(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, d.value]]),
999
1168
  onClick: i[0] ||= M(() => {}, ["stop"])
1000
- }, [o("div", xt, [
1001
- o("div", St, [b(n.$slots, "icon"), o("div", Ct, [o("h3", {
1169
+ }, [o("div", mt, [
1170
+ o("div", ht, [b(n.$slots, "icon"), o("div", gt, [o("h3", {
1002
1171
  id: u,
1003
1172
  class: f(["text-lg font-medium", w(l).primaryText])
1004
1173
  }, C(e.title), 3)])]),
1005
- o("div", wt, [b(n.$slots, "default")]),
1006
- o("div", Tt, [b(n.$slots, "footer")])
1174
+ o("div", _t, [b(n.$slots, "default")]),
1175
+ o("div", vt, [b(n.$slots, "footer")])
1007
1176
  ])], 2)])]));
1008
1177
  }
1009
- }), Et = ["aria-expanded"], Dt = { class: "flex items-center gap-3" }, Ot = /* @__PURE__ */ l({
1178
+ }), yt = ["aria-expanded"], bt = { class: "flex items-center gap-3" }, xt = /* @__PURE__ */ l({
1010
1179
  __name: "BaseCollapsibleSection",
1011
1180
  props: {
1012
1181
  title: {},
@@ -1016,13 +1185,13 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1016
1185
  },
1017
1186
  emits: ["toggle"],
1018
1187
  setup(e, { emit: t }) {
1019
- let r = e, s = t, { isDark: c } = Y(), 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);
1188
+ 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);
1020
1189
  return (t, n) => (_(), a("section", { class: f(["rounded-xl border overflow-hidden transition-colors", w(l).cardAlt]) }, [o("button", {
1021
1190
  type: "button",
1022
1191
  class: f(["w-full flex items-center justify-between p-4 text-left transition-colors", d.value]),
1023
1192
  "aria-expanded": !e.collapsed,
1024
1193
  onClick: n[0] ||= (e) => s("toggle")
1025
- }, [o("div", Dt, [o("h2", { class: f(["text-base font-semibold", u.value]) }, C(e.title), 3), e.badge ? (_(), a("span", {
1194
+ }, [o("div", bt, [o("h2", { class: f(["text-base font-semibold", u.value]) }, C(e.title), 3), e.badge ? (_(), a("span", {
1026
1195
  key: 0,
1027
1196
  class: f(["text-xs px-2 py-0.5 rounded-full", p.value])
1028
1197
  }, C(e.badge), 3)) : i("", !0)]), (_(), a("svg", {
@@ -1036,15 +1205,15 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1036
1205
  "stroke-linecap": "round",
1037
1206
  "stroke-linejoin": "round",
1038
1207
  d: "M19 9l-7 7-7-7"
1039
- }, 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));
1208
+ }, null, -1)]], 2))], 10, yt), A(o("div", { class: f(["p-6 border-t", [w(l).border, m.value]]) }, [b(t.$slots, "default")], 2), [[D, !e.collapsed]])], 2));
1040
1209
  }
1041
- }), kt = ["disabled"], At = ["disabled"], jt = {
1210
+ }), St = ["disabled"], Ct = ["disabled"], wt = {
1042
1211
  key: 0,
1043
1212
  class: "w-4 h-4 animate-spin",
1044
1213
  fill: "none",
1045
1214
  viewBox: "0 0 24 24",
1046
1215
  "aria-hidden": "true"
1047
- }, Mt = /* @__PURE__ */ l({
1216
+ }, Tt = /* @__PURE__ */ l({
1048
1217
  __name: "BaseConfirmModal",
1049
1218
  props: {
1050
1219
  title: {},
@@ -1060,7 +1229,7 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1060
1229
  },
1061
1230
  emits: ["confirm", "cancel"],
1062
1231
  setup(e, { emit: t }) {
1063
- let n = e, l = t, { isDark: u } = Y(), d = X();
1232
+ let n = e, l = t, { isDark: u } = U(), d = X();
1064
1233
  function p() {
1065
1234
  n.submitting || l("confirm");
1066
1235
  }
@@ -1072,7 +1241,7 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1072
1241
  "manual-close": e.submitting,
1073
1242
  onCancel: m
1074
1243
  }, {
1075
- 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(ae), {
1244
+ 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), {
1076
1245
  class: f(["h-6 w-6", e.variant === "danger" ? "text-red-600" : "text-amber-600"]),
1077
1246
  "aria-hidden": "true"
1078
1247
  }, null, 8, ["class"])], 2)]),
@@ -1081,12 +1250,12 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1081
1250
  disabled: e.submitting,
1082
1251
  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"]]),
1083
1252
  onClick: m
1084
- }, C(e.cancelText), 11, kt), o("button", {
1253
+ }, C(e.cancelText), 11, St), o("button", {
1085
1254
  type: "button",
1086
1255
  disabled: e.submitting,
1087
1256
  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"]]),
1088
1257
  onClick: p
1089
- }, [e.submitting ? (_(), a("svg", jt, [...n[0] ||= [o("circle", {
1258
+ }, [e.submitting ? (_(), a("svg", wt, [...n[0] ||= [o("circle", {
1090
1259
  class: "opacity-25",
1091
1260
  cx: "12",
1092
1261
  cy: "12",
@@ -1097,12 +1266,12 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1097
1266
  class: "opacity-75",
1098
1267
  fill: "currentColor",
1099
1268
  d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
1100
- }, null, -1)]])) : i("", !0), s(" " + C(e.submitting ? e.submittingText : e.confirmText), 1)], 10, At)]),
1101
- default: k(() => [o("p", { class: f(["text-sm", w(u) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3)]),
1102
- _: 1
1269
+ }, null, -1)]])) : i("", !0), s(" " + C(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Ct)]),
1270
+ default: k(() => [o("p", { class: f(["text-sm", w(u) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), b(t.$slots, "default")]),
1271
+ _: 3
1103
1272
  }, 8, ["title", "manual-close"]));
1104
1273
  }
1105
- }), Nt = { class: "mt-4" }, Pt = ["placeholder"], Ft = ["disabled"], It = /* @__PURE__ */ l({
1274
+ }), Et = { class: "mt-4" }, Dt = ["placeholder"], Ot = ["disabled"], kt = /* @__PURE__ */ l({
1106
1275
  __name: "BaseTextInputModal",
1107
1276
  props: {
1108
1277
  title: {},
@@ -1120,7 +1289,7 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1120
1289
  },
1121
1290
  emits: ["confirm", "cancel"],
1122
1291
  setup(e, { emit: t }) {
1123
- let n = e, i = t, { isDark: a } = Y(), s = X(), l = v(n.initialValue), u = v(null);
1292
+ let n = e, i = t, { isDark: a } = U(), s = X(), l = v(n.initialValue), u = v(null);
1124
1293
  m(async () => {
1125
1294
  await d(), u.value?.focus();
1126
1295
  });
@@ -1138,7 +1307,7 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1138
1307
  "manual-close": "",
1139
1308
  onBackdrop: g
1140
1309
  }, {
1141
- 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(re), {
1310
+ 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), {
1142
1311
  class: "h-6 w-6 text-emerald-600",
1143
1312
  "aria-hidden": "true"
1144
1313
  })], 2)])]),
@@ -1151,8 +1320,8 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1151
1320
  disabled: !l.value.trim() || e.submitting,
1152
1321
  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"]]),
1153
1322
  onClick: p
1154
- }, C(e.submitting ? e.submittingText : e.confirmText), 11, Ft)]),
1155
- 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", {
1323
+ }, C(e.submitting ? e.submittingText : e.confirmText), 11, Ot)]),
1324
+ default: k(() => [o("p", { class: f(["text-sm", w(a) ? "text-gray-300" : "text-gray-600"]) }, C(e.message), 3), o("div", Et, [o("label", { class: f(["block text-sm font-medium mb-1", w(s).label]) }, C(e.inputLabel), 3), A(o("input", {
1156
1325
  ref_key: "nameInput",
1157
1326
  ref: u,
1158
1327
  "onUpdate:modelValue": n[0] ||= (e) => l.value = e,
@@ -1160,11 +1329,11 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1160
1329
  placeholder: e.placeholder,
1161
1330
  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"]),
1162
1331
  onKeyup: j(p, ["enter"])
1163
- }, null, 42, Pt), [[E, l.value]])])]),
1332
+ }, null, 42, Dt), [[E, l.value]])])]),
1164
1333
  _: 3
1165
1334
  }, 8, ["title"]));
1166
1335
  }
1167
- }), Lt = { class: "flex items-center justify-center min-h-[60vh]" }, Rt = { class: "text-center px-6" }, zt = /* @__PURE__ */ l({
1336
+ }), At = { class: "flex items-center justify-center min-h-[60vh]" }, jt = { class: "text-center px-6" }, Mt = /* @__PURE__ */ l({
1168
1337
  __name: "BaseNotFoundPage",
1169
1338
  props: {
1170
1339
  code: { default: "404" },
@@ -1173,12 +1342,12 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1173
1342
  homeLabel: { default: "Go home" }
1174
1343
  },
1175
1344
  setup(e) {
1176
- let t = e, n = de(), { isDark: r } = Y(), i = X();
1345
+ let t = e, n = de(), { isDark: r } = U(), i = X();
1177
1346
  function s() {
1178
1347
  n.push({ name: t.homeRouteName });
1179
1348
  }
1180
- return (t, n) => (_(), a("div", Lt, [o("div", Rt, [
1181
- c(w(ae), { class: f(["w-16 h-16 mx-auto mb-4", w(i).illustration]) }, null, 8, ["class"]),
1349
+ return (t, n) => (_(), a("div", At, [o("div", jt, [
1350
+ c(w(P), { class: f(["w-16 h-16 mx-auto mb-4", w(i).illustration]) }, null, 8, ["class"]),
1182
1351
  o("h1", { class: f(["text-4xl font-bold mb-2", w(r) ? "text-gray-200" : "text-gray-800"]) }, C(e.code), 3),
1183
1352
  o("p", { class: f(["text-lg mb-6", w(i).dimTextAlt]) }, C(e.message), 3),
1184
1353
  o("button", {
@@ -1188,7 +1357,7 @@ var xt = { class: "p-6" }, St = { class: "flex items-start gap-4" }, Ct = { clas
1188
1357
  ])]));
1189
1358
  }
1190
1359
  }), $ = v(!1);
1191
- function Bt() {
1360
+ function Nt() {
1192
1361
  function e() {
1193
1362
  $.value = !0;
1194
1363
  }
@@ -1207,11 +1376,11 @@ function Bt() {
1207
1376
  }
1208
1377
  //#endregion
1209
1378
  //#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
1210
- 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 = [
1379
+ var Pt = ["aria-label", "aria-expanded"], Ft = { class: "flex flex-col h-full" }, It = { class: "px-5 pt-5 pb-4 flex items-center justify-center relative" }, Lt = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Rt = { class: "px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500" }, zt = { class: "space-y-0.5" }, Bt = ["aria-current", "onClick"], Vt = [
1211
1380
  "title",
1212
1381
  "aria-label",
1213
1382
  "aria-pressed"
1214
- ], Yt = /* @__PURE__ */ W(/* @__PURE__ */ l({
1383
+ ], Ht = /* @__PURE__ */ q(/* @__PURE__ */ l({
1215
1384
  __name: "BaseSidebar",
1216
1385
  props: {
1217
1386
  sections: {},
@@ -1224,7 +1393,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1224
1393
  }
1225
1394
  },
1226
1395
  setup(t) {
1227
- let n = t, l = de(), u = ue(), { isDark: p, toggleTheme: h } = Y(), { mobileOpen: x, close: T, toggle: E } = Bt(), D = v(null), k = null;
1396
+ let n = t, l = de(), u = ue(), { isDark: p, toggleTheme: h } = U(), { mobileOpen: x, close: T, toggle: E } = Nt(), D = v(null), k = null;
1228
1397
  O(x, async (e) => {
1229
1398
  e ? (k = document.activeElement instanceof HTMLElement ? document.activeElement : null, await d(), D.value?.focus()) : (k?.focus(), k = null);
1230
1399
  }), m(() => {}), g(() => {});
@@ -1257,7 +1426,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1257
1426
  key: 0,
1258
1427
  class: "w-6 h-6",
1259
1428
  "aria-hidden": "true"
1260
- }))], 10, Vt)], 2),
1429
+ }))], 10, Pt)], 2),
1261
1430
  w(x) ? (_(), a("div", {
1262
1431
  key: 0,
1263
1432
  class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
@@ -1268,8 +1437,8 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1268
1437
  role: "navigation",
1269
1438
  "aria-label": "Main navigation",
1270
1439
  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"]])
1271
- }, [o("div", Ht, [
1272
- o("div", Ut, [o("button", {
1440
+ }, [o("div", Ft, [
1441
+ o("div", It, [o("button", {
1273
1442
  type: "button",
1274
1443
  onClick: A,
1275
1444
  class: "cursor-pointer",
@@ -1285,12 +1454,12 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1285
1454
  class: "w-5 h-5",
1286
1455
  "aria-hidden": "true"
1287
1456
  })], 2)]),
1288
- 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", {
1457
+ o("nav", Lt, [(_(!0), a(e, null, y(t.sections, (t) => (_(), a("div", { key: t.title }, [o("p", Rt, C(t.title), 1), o("ul", zt, [(_(!0), a(e, null, y(t.items, (e) => (_(), a("li", { key: e.name }, [o("button", {
1289
1458
  type: "button",
1290
1459
  "aria-current": j(e.name) ? "page" : void 0,
1291
1460
  onClick: (t) => M(e.name),
1292
1461
  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"])
1293
- }, [(_(), r(S(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s(" " + C(e.label), 1)], 10, qt)]))), 128))])]))), 128))]),
1462
+ }, [(_(), r(S(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s(" " + C(e.label), 1)], 10, Bt)]))), 128))])]))), 128))]),
1294
1463
  o("div", { class: f(["px-4 py-4 border-t transition-colors space-y-3", w(p) ? "border-gray-800" : "border-gray-200"]) }, [
1295
1464
  t.showThemeToggle ? (_(), a("button", {
1296
1465
  key: 0,
@@ -1300,7 +1469,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1300
1469
  "aria-label": w(p) ? "Switch to light mode" : "Switch to dark mode",
1301
1470
  "aria-pressed": w(p),
1302
1471
  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"])
1303
- }, [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),
1472
+ }, [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, Vt)) : i("", !0),
1304
1473
  b(n.$slots, "status", {}, void 0, !0),
1305
1474
  b(n.$slots, "footer", {}, () => [t.appName || t.version ? (_(), a("div", {
1306
1475
  key: 0,
@@ -1314,26 +1483,26 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1314
1483
  ])], 2)
1315
1484
  ]));
1316
1485
  }
1317
- }), [["__scopeId", "data-v-e27f267e"]]), Xt = {
1486
+ }), [["__scopeId", "data-v-e27f267e"]]), Ut = {
1318
1487
  key: 1,
1319
1488
  class: "mt-4 flex justify-center py-6"
1320
- }, Zt = {
1489
+ }, Wt = {
1321
1490
  key: 2,
1322
1491
  class: "mt-4 text-sm text-red-500",
1323
1492
  role: "alert"
1324
- }, Qt = {
1493
+ }, Gt = {
1325
1494
  key: 3,
1326
1495
  class: "mt-4"
1327
- }, $t = { class: "relative" }, en = ["placeholder"], tn = {
1496
+ }, Kt = { class: "relative" }, qt = ["placeholder"], Jt = {
1328
1497
  key: 4,
1329
1498
  class: "mt-3 max-h-64 overflow-y-auto"
1330
- }, nn = ["onClick"], rn = { class: "flex-1 min-w-0" }, an = {
1499
+ }, Yt = ["onClick"], Xt = { class: "flex-1 min-w-0" }, Zt = {
1331
1500
  key: 0,
1332
1501
  class: "text-center py-6"
1333
- }, on = {
1502
+ }, Qt = {
1334
1503
  key: 1,
1335
1504
  class: "text-center py-6"
1336
- }, sn = ["disabled"], cn = ["disabled"], ln = /* @__PURE__ */ l({
1505
+ }, $t = ["disabled"], en = ["disabled"], tn = /* @__PURE__ */ l({
1337
1506
  __name: "BaseEntityPickerModal",
1338
1507
  props: {
1339
1508
  title: {},
@@ -1355,7 +1524,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1355
1524
  },
1356
1525
  emits: ["confirm", "cancel"],
1357
1526
  setup(t, { emit: s }) {
1358
- let l = t, u = s, { isDark: p } = Y(), h = X(), g = v([]), x = v(!1), S = v(""), T = v(null), D = v(""), O = v(null), j = n(() => {
1527
+ 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(() => {
1359
1528
  let e = l.loader ? g.value : l.items;
1360
1529
  return l.excludeId ? e.filter((e) => e.id !== l.excludeId) : e;
1361
1530
  }), M = n(() => j.value.filter((e) => e.label.toLowerCase().includes(D.value.toLowerCase()))), ee = {
@@ -1467,13 +1636,13 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1467
1636
  function ne() {
1468
1637
  !T.value || l.submitting || u("confirm", T.value);
1469
1638
  }
1470
- function P() {
1639
+ function re() {
1471
1640
  l.submitting || u("cancel");
1472
1641
  }
1473
1642
  return (n, s) => (_(), r(Q, {
1474
1643
  title: t.title,
1475
1644
  "manual-close": t.submitting,
1476
- onCancel: P
1645
+ onCancel: re
1477
1646
  }, {
1478
1647
  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), {
1479
1648
  class: f(["h-6 w-6", N.value.iconText]),
@@ -1483,20 +1652,20 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1483
1652
  type: "button",
1484
1653
  disabled: t.submitting,
1485
1654
  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]),
1486
- onClick: P
1487
- }, C(t.cancelText), 11, sn), o("button", {
1655
+ onClick: re
1656
+ }, C(t.cancelText), 11, $t), o("button", {
1488
1657
  type: "button",
1489
1658
  disabled: !T.value || t.submitting,
1490
1659
  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]),
1491
1660
  onClick: ne
1492
- }, C(t.submitting ? t.submittingText : t.confirmText), 11, cn)]),
1661
+ }, C(t.submitting ? t.submittingText : t.confirmText), 11, en)]),
1493
1662
  default: k(() => [
1494
1663
  t.message ? (_(), a("p", {
1495
1664
  key: 0,
1496
1665
  class: f(["text-sm", w(p) ? "text-gray-300" : "text-gray-600"])
1497
1666
  }, C(t.message), 3)) : i("", !0),
1498
- x.value ? (_(), a("div", Xt, [c(qe)])) : S.value ? (_(), a("div", Zt, C(S.value), 1)) : i("", !0),
1499
- !x.value && !S.value && j.value.length > 0 ? (_(), a("div", Qt, [o("div", $t, [c(w(ce), {
1667
+ x.value ? (_(), a("div", Ut, [c(Ke)])) : S.value ? (_(), a("div", Wt, C(S.value), 1)) : i("", !0),
1668
+ !x.value && !S.value && j.value.length > 0 ? (_(), a("div", Gt, [o("div", Kt, [c(w(ce), {
1500
1669
  class: f(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", w(h).dimText]),
1501
1670
  "aria-hidden": "true"
1502
1671
  }, null, 8, ["class"]), A(o("input", {
@@ -1506,14 +1675,14 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1506
1675
  type: "text",
1507
1676
  placeholder: t.searchPlaceholder,
1508
1677
  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]])
1509
- }, null, 10, en), [[E, D.value]])])])) : i("", !0),
1510
- !x.value && !S.value ? (_(), a("div", tn, [(_(!0), a(e, null, y(M.value, (e) => (_(), a("div", {
1678
+ }, null, 10, qt), [[E, D.value]])])])) : i("", !0),
1679
+ !x.value && !S.value ? (_(), a("div", Jt, [(_(!0), a(e, null, y(M.value, (e) => (_(), a("div", {
1511
1680
  key: e.id,
1512
1681
  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"]]),
1513
1682
  onClick: (t) => T.value = e.id
1514
1683
  }, [
1515
1684
  c(w(oe), { class: f(["w-5 h-5 flex-shrink-0", w(h).dimText]) }, null, 8, ["class"]),
1516
- o("div", rn, [o("p", { class: f(["text-sm font-medium truncate", w(h).bodyText]) }, C(e.label), 3)]),
1685
+ o("div", Xt, [o("p", { class: f(["text-sm font-medium truncate", w(h).bodyText]) }, C(e.label), 3)]),
1517
1686
  T.value === e.id ? (_(), a("div", {
1518
1687
  key: 0,
1519
1688
  class: f(["w-5 h-5 rounded-full flex items-center justify-center", N.value.checkBg])
@@ -1529,15 +1698,15 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1529
1698
  "stroke-linejoin": "round",
1530
1699
  d: "M5 13l4 4L19 7"
1531
1700
  })], -1)]], 2)) : i("", !0)
1532
- ], 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)
1701
+ ], 10, Yt))), 128)), j.value.length === 0 ? (_(), a("div", Zt, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.emptyMessage), 3)])) : M.value.length === 0 ? (_(), a("div", Qt, [o("p", { class: f(["text-sm", w(h).dimText]) }, C(t.noMatchMessage), 3)])) : i("", !0)])) : i("", !0)
1533
1702
  ]),
1534
1703
  _: 3
1535
1704
  }, 8, ["title", "manual-close"]));
1536
1705
  }
1537
- }), un = {
1706
+ }), nn = {
1538
1707
  href: "#main-content",
1539
1708
  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"
1540
- }, dn = ["inert"], fn = /* @__PURE__ */ l({
1709
+ }, rn = ["inert"], an = /* @__PURE__ */ l({
1541
1710
  __name: "BaseAppLayout",
1542
1711
  props: {
1543
1712
  showSidebar: {
@@ -1547,19 +1716,19 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1547
1716
  skipLinkLabel: { default: "Skip to main content" }
1548
1717
  },
1549
1718
  setup(e) {
1550
- let t = e, { isDark: r } = Y(), { mobileOpen: s } = Bt(), c = n(() => t.showSidebar);
1719
+ let t = e, { isDark: r } = U(), { mobileOpen: s } = Nt(), c = n(() => t.showSidebar);
1551
1720
  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"]) }, [
1552
- o("a", un, C(e.skipLinkLabel), 1),
1721
+ o("a", nn, C(e.skipLinkLabel), 1),
1553
1722
  c.value ? b(t.$slots, "sidebar", { key: 0 }) : i("", !0),
1554
1723
  o("main", {
1555
1724
  id: "main-content",
1556
1725
  tabindex: "-1",
1557
1726
  inert: c.value && w(s) ? !0 : void 0,
1558
1727
  class: f(c.value ? "pt-14 lg:pt-0 lg:ml-60" : "")
1559
- }, [b(t.$slots, "default")], 10, dn)
1728
+ }, [b(t.$slots, "default")], 10, rn)
1560
1729
  ], 2));
1561
1730
  }
1562
- }), pn = { class: "flex items-center justify-between mb-8" }, mn = { class: "flex items-center gap-3" }, hn = { class: "flex items-center gap-2" }, gn = /* @__PURE__ */ l({
1731
+ }), on = { class: "flex items-center justify-between mb-8" }, sn = { class: "flex items-center gap-3" }, cn = { class: "flex items-center gap-2" }, ln = /* @__PURE__ */ l({
1563
1732
  __name: "BasePageHeader",
1564
1733
  props: {
1565
1734
  title: {},
@@ -1568,7 +1737,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1568
1737
  maxWidthClass: { default: "max-w-4xl" }
1569
1738
  },
1570
1739
  setup(e) {
1571
- let t = e, { isDark: r } = Y(), s = X(), c = n(() => {
1740
+ let t = e, { isDark: r } = U(), s = X(), c = n(() => {
1572
1741
  let e = {
1573
1742
  emerald: {
1574
1743
  dark: "bg-emerald-500/10",
@@ -1609,16 +1778,16 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1609
1778
  }[t.iconColor];
1610
1779
  return r.value ? e.dark : e.light;
1611
1780
  });
1612
- 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", {
1781
+ return (t, n) => (_(), a("div", { class: f(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [o("div", on, [o("div", sn, [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", {
1613
1782
  key: 0,
1614
1783
  class: f(["text-sm", w(s).dimTextAlt])
1615
- }, C(e.subtitle), 3)) : i("", !0)])]), o("div", hn, [b(t.$slots, "actions")])])], 2));
1784
+ }, C(e.subtitle), 3)) : i("", !0)])]), o("div", cn, [b(t.$slots, "actions")])])], 2));
1616
1785
  }
1617
- }), _n = [
1786
+ }), un = [
1618
1787
  "type",
1619
1788
  "disabled",
1620
1789
  "title"
1621
- ], vn = { key: 0 }, yn = /* @__PURE__ */ l({
1790
+ ], dn = { key: 0 }, fn = /* @__PURE__ */ l({
1622
1791
  __name: "BaseToolbarButton",
1623
1792
  props: {
1624
1793
  label: { default: "" },
@@ -1632,7 +1801,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1632
1801
  },
1633
1802
  emits: ["click"],
1634
1803
  setup(e) {
1635
- let t = e, { isDark: r } = Y(), o = n(() => {
1804
+ let t = e, { isDark: r } = U(), o = n(() => {
1636
1805
  let e = {
1637
1806
  neutral: {
1638
1807
  dark: "bg-gray-800 text-gray-100 border-gray-700 hover:bg-gray-700",
@@ -1651,14 +1820,14 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1651
1820
  title: e.title,
1652
1821
  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]),
1653
1822
  onClick: n[0] ||= (e) => t.$emit("click", e)
1654
- }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", vn, C(e.label), 1)) : i("", !0)], 10, _n));
1823
+ }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", dn, C(e.label), 1)) : i("", !0)], 10, un));
1655
1824
  }
1656
- }), bn = [
1825
+ }), pn = [
1657
1826
  "type",
1658
1827
  "disabled",
1659
1828
  "title",
1660
1829
  "aria-label"
1661
- ], xn = { key: 0 }, Sn = /* @__PURE__ */ l({
1830
+ ], mn = { key: 0 }, hn = /* @__PURE__ */ l({
1662
1831
  __name: "BaseActionButton",
1663
1832
  props: {
1664
1833
  label: { default: "" },
@@ -1677,7 +1846,7 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1677
1846
  },
1678
1847
  emits: ["click"],
1679
1848
  setup(e) {
1680
- let t = e, { isDark: r } = Y(), o = n(() => {
1849
+ let t = e, { isDark: r } = U(), o = n(() => {
1681
1850
  let e = {
1682
1851
  emerald: {
1683
1852
  dark: "text-emerald-400 hover:bg-emerald-500/10",
@@ -1757,12 +1926,12 @@ var Vt = ["aria-label", "aria-expanded"], Ht = { class: "flex flex-col h-full" }
1757
1926
  "aria-label": e.ariaLabel,
1758
1927
  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]]),
1759
1928
  onClick: n[0] ||= (e) => t.$emit("click", e)
1760
- }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", xn, C(e.label), 1)) : i("", !0)], 10, bn));
1929
+ }, [b(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (_(), a("span", mn, C(e.label), 1)) : i("", !0)], 10, pn));
1761
1930
  }
1762
1931
  });
1763
1932
  //#endregion
1764
1933
  //#region src/composables/useDebounce.ts
1765
- function Cn(e, t = 300) {
1934
+ function gn(e, t = 300) {
1766
1935
  let n = v(e.value), r = null;
1767
1936
  return O(e, (e) => {
1768
1937
  r && clearTimeout(r), r = setTimeout(() => {
@@ -1774,12 +1943,12 @@ function Cn(e, t = 300) {
1774
1943
  }
1775
1944
  //#endregion
1776
1945
  //#region src/composables/useToast.ts
1777
- function wn(e = 3e3) {
1778
- let t = v(!1), n = v(""), r = v(G.SUCCESS), i = null;
1946
+ function _n(e = 3e3) {
1947
+ let t = v(!1), n = v(""), r = v(J.SUCCESS), i = null;
1779
1948
  function a() {
1780
1949
  i &&= (clearTimeout(i), null);
1781
1950
  }
1782
- function o(o, s = G.SUCCESS, c = e) {
1951
+ function o(o, s = J.SUCCESS, c = e) {
1783
1952
  n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
1784
1953
  t.value = !1, i = null;
1785
1954
  }, c);
@@ -1795,16 +1964,16 @@ function wn(e = 3e3) {
1795
1964
  }
1796
1965
  //#endregion
1797
1966
  //#region src/enums/BaseBadgeEnum.ts
1798
- var Tn = /* @__PURE__ */ function(e) {
1967
+ var vn = /* @__PURE__ */ function(e) {
1799
1968
  return e.WIN = "WIN", e.LOSE = "LOSE", e;
1800
- }({}), En = {
1969
+ }({}), yn = {
1801
1970
  GET: "bg-blue-600",
1802
1971
  POST: "bg-emerald-600",
1803
1972
  PUT: "bg-amber-600",
1804
1973
  DELETE: "bg-red-600",
1805
1974
  PATCH: "bg-purple-600",
1806
1975
  HEAD: "bg-gray-600"
1807
- }, Dn = {
1976
+ }, bn = {
1808
1977
  GET: "bg-blue-500",
1809
1978
  POST: "bg-green-500",
1810
1979
  PUT: "bg-yellow-500",
@@ -1812,23 +1981,23 @@ var Tn = /* @__PURE__ */ function(e) {
1812
1981
  PATCH: "bg-purple-500",
1813
1982
  HEAD: "bg-gray-500"
1814
1983
  };
1815
- function On(e) {
1816
- return e ? En[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
1984
+ function xn(e) {
1985
+ return e ? yn[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
1817
1986
  }
1818
- function kn(e) {
1819
- return e ? Dn[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
1987
+ function Sn(e) {
1988
+ return e ? bn[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
1820
1989
  }
1821
- function An(e) {
1990
+ function Cn(e) {
1822
1991
  let t = e ?? 0;
1823
1992
  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";
1824
1993
  }
1825
- function jn(e, t) {
1994
+ function wn(e, t) {
1826
1995
  let n = e ?? 200;
1827
1996
  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";
1828
1997
  }
1829
1998
  //#endregion
1830
1999
  //#region src/utils/sanitizeHtml.ts
1831
- var Mn = new Set([
2000
+ var Tn = new Set([
1832
2001
  "A",
1833
2002
  "B",
1834
2003
  "STRONG",
@@ -1843,7 +2012,7 @@ var Mn = new Set([
1843
2012
  "LI",
1844
2013
  "SPAN",
1845
2014
  "DIV"
1846
- ]), Nn = new Set([
2015
+ ]), En = new Set([
1847
2016
  "SCRIPT",
1848
2017
  "STYLE",
1849
2018
  "IFRAME",
@@ -1851,53 +2020,53 @@ var Mn = new Set([
1851
2020
  "EMBED",
1852
2021
  "NOSCRIPT",
1853
2022
  "TEMPLATE"
1854
- ]), Pn = { A: new Set(["href", "title"]) };
1855
- function Fn(e) {
2023
+ ]), Dn = { A: new Set(["href", "title"]) };
2024
+ function On(e) {
1856
2025
  let t = e.trim().toLowerCase();
1857
2026
  return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
1858
2027
  }
1859
- function In(e) {
2028
+ function kn(e) {
1860
2029
  if (e.nodeType !== Node.ELEMENT_NODE) return;
1861
2030
  let t = e, n = t.tagName.toUpperCase();
1862
- if (!Mn.has(n)) {
1863
- Nn.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
2031
+ if (!Tn.has(n)) {
2032
+ En.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
1864
2033
  return;
1865
2034
  }
1866
- let r = Pn[n] ?? /* @__PURE__ */ new Set();
2035
+ let r = Dn[n] ?? /* @__PURE__ */ new Set();
1867
2036
  for (let e of Array.from(t.attributes)) {
1868
2037
  if (!r.has(e.name.toLowerCase())) {
1869
2038
  t.removeAttribute(e.name);
1870
2039
  continue;
1871
2040
  }
1872
- n === "A" && e.name.toLowerCase() === "href" && !Fn(e.value) && t.removeAttribute(e.name);
2041
+ n === "A" && e.name.toLowerCase() === "href" && !On(e.value) && t.removeAttribute(e.name);
1873
2042
  }
1874
2043
  n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
1875
- for (let e of Array.from(t.childNodes)) In(e);
2044
+ for (let e of Array.from(t.childNodes)) kn(e);
1876
2045
  }
1877
- function Ln(e) {
2046
+ function An(e) {
1878
2047
  if (!e) return "";
1879
2048
  let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
1880
2049
  if (!t) return "";
1881
- for (let e of Array.from(t.childNodes)) In(e);
2050
+ for (let e of Array.from(t.childNodes)) kn(e);
1882
2051
  return t.innerHTML;
1883
2052
  }
1884
2053
  //#endregion
1885
2054
  //#region src/utils/format.ts
1886
- var Rn = "—";
1887
- function zn(e, t = 4) {
1888
- if (e == null || typeof e == "string" && e.trim() === "") return Rn;
2055
+ var jn = "—";
2056
+ function Mn(e, t = 4) {
2057
+ if (e == null || typeof e == "string" && e.trim() === "") return jn;
1889
2058
  let n = typeof e == "string" ? Number(e) : e;
1890
2059
  return isFinite(n) ? n.toLocaleString(void 0, {
1891
2060
  minimumFractionDigits: t,
1892
2061
  maximumFractionDigits: t
1893
- }) : Rn;
2062
+ }) : jn;
1894
2063
  }
1895
- function Bn(e) {
1896
- if (e == null || e === "") return Rn;
2064
+ function Nn(e) {
2065
+ if (e == null || e === "") return jn;
1897
2066
  let t = new Date(e);
1898
2067
  return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
1899
2068
  }
1900
- function Vn(e) {
2069
+ function Pn(e) {
1901
2070
  return new Date(e).toLocaleString(void 0, {
1902
2071
  month: "short",
1903
2072
  day: "numeric",
@@ -1905,13 +2074,13 @@ function Vn(e) {
1905
2074
  minute: "2-digit"
1906
2075
  });
1907
2076
  }
1908
- function Hn(e) {
2077
+ function Fn(e) {
1909
2078
  return new Date(e).toLocaleDateString(void 0, {
1910
2079
  month: "short",
1911
2080
  day: "numeric"
1912
2081
  });
1913
2082
  }
1914
- function Un(e) {
2083
+ function In(e) {
1915
2084
  if (!isFinite(e) || e === 0) return e.toFixed(2);
1916
2085
  let t = Math.abs(e), n = 2;
1917
2086
  return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
@@ -1919,21 +2088,21 @@ function Un(e) {
1919
2088
  maximumFractionDigits: n
1920
2089
  });
1921
2090
  }
1922
- function Wn(e, t = 2) {
2091
+ function Ln(e, t = 2) {
1923
2092
  return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
1924
2093
  }
1925
- function Gn(e) {
2094
+ function Rn(e) {
1926
2095
  return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
1927
2096
  }
1928
2097
  //#endregion
1929
2098
  //#region src/utils/pnl.ts
1930
- function Kn(e) {
2099
+ function zn(e) {
1931
2100
  if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
1932
2101
  pnlUsd: null,
1933
2102
  pnlPct: null
1934
2103
  };
1935
2104
  let t = Number(e.buyPrice), n = Number(e.lastPrice), r = Number(e.filledQty);
1936
- return !isFinite(t) || !isFinite(n) || !isFinite(r) || t <= 0 ? {
2105
+ return !isFinite(t) || !isFinite(n) || !isFinite(r) || t <= 0 || n <= 0 ? {
1937
2106
  pnlUsd: null,
1938
2107
  pnlPct: null
1939
2108
  } : {
@@ -1942,4 +2111,4 @@ function Kn(e) {
1942
2111
  };
1943
2112
  }
1944
2113
  //#endregion
1945
- export { I as AlertEnum, Sn as BaseActionButton, he as BaseAlert, fn as BaseAppLayout, R as BaseBadge, Tn as BaseBadgeEnum, be as BaseBreadcrumb, ke as BaseButton, z as BaseButtonEnum, B as BaseButtonSizeEnum, Ot as BaseCollapsibleSection, Mt as BaseConfirmModal, ln as BaseEntityPickerModal, Ne as BaseLine, Pe as BaseLoginEnum, Ie as BaseLogo, H as BaseLogoEnum, He as BaseModal, U as BaseModalEnum, Q as BaseModalShell, zt as BaseNotFoundPage, gn as BasePageHeader, Ue as BaseRow, Yt as BaseSidebar, qe as BaseSpinner, It as BaseTextInputModal, Ze as BaseToast, G as BaseToastEnum, yn as BaseToolbarButton, $e as ColoredSquares, L as ColorsEnums, ot as EarningsCard, dt as EuroAmount, V as LineEnum, mt as Pagination, K as PositioningEnum, vt 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, fe as getBaseColor, pe 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, Bt as useMobileSidebar, Y as useTheme, X as useThemeClasses, wn as useToast };
2114
+ export { I as AlertEnum, hn as BaseActionButton, he as BaseAlert, an as BaseAppLayout, R as BaseBadge, vn as BaseBadgeEnum, be as BaseBreadcrumb, je as BaseButton, z as BaseButtonEnum, B as BaseButtonSizeEnum, xt as BaseCollapsibleSection, Tt as BaseConfirmModal, tn as BaseEntityPickerModal, Fe as BaseLine, Ie as BaseLoginEnum, Re as BaseLogo, G as BaseLogoEnum, We as BaseModal, K as BaseModalEnum, Q as BaseModalShell, Mt as BaseNotFoundPage, ln as BasePageHeader, Ge as BaseRow, Ht as BaseSidebar, Ke as BaseSpinner, kt as BaseTextInputModal, Xe as BaseToast, J as BaseToastEnum, fn as BaseToolbarButton, Qe as ColoredSquares, L as ColorsEnums, tt as EarningsCard, ot as EuroAmount, W as LineEnum, lt as Pagination, Y as PositioningEnum, pt as TrendArrow, zn as computePnL, Nn as fmtDate, Fn as fmtDateShort, Pn as fmtDateTime, Mn as fmtNumber, Ln as fmtPct, In as fmtPrice, Rn as fmtUsd, fe as getBaseColor, pe as getBaseColorOf, On as isSafeHref, Sn as methodBadgeBright, xn as methodBadgeSolid, An as sanitizeHtml, Cn as statusBadgeSolid, wn as statusBadgeTinted, gn as useDebouncedRef, Z as useEscapeKey, Nt as useMobileSidebar, U as useTheme, X as useThemeClasses, _n as useToast };