mgv-backoffice 1.36.1 → 1.36.3

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,31 +1,31 @@
1
- import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createStaticVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, effectScope as p, nextTick as m, normalizeClass as h, normalizeStyle as g, onBeforeUnmount as _, onMounted as v, onScopeDispose as y, onUnmounted as b, openBlock as x, reactive as S, readonly as C, ref as w, renderList as T, renderSlot as E, resolveComponent as D, resolveDynamicComponent as O, toDisplayString as k, unref as A, useSlots as ee, vModelCheckbox as j, vModelDynamic as M, vModelText as N, vShow as te, watch as P, withCtx as F, withDirectives as I, withKeys as ne, withModifiers as L } from "vue";
2
- import { ArrowDownIcon as re, ArrowUpIcon as ie, Bars3Icon as ae, BellIcon as oe, CheckCircleIcon as se, ChevronDoubleLeftIcon as ce, ChevronDoubleRightIcon as le, ChevronDownIcon as ue, ChevronRightIcon as de, ClipboardDocumentCheckIcon as fe, ClipboardDocumentIcon as pe, DocumentDuplicateIcon as me, ExclamationCircleIcon as he, ExclamationTriangleIcon as ge, FolderIcon as _e, InformationCircleIcon as ve, MagnifyingGlassIcon as ye, MinusIcon as be, MoonIcon as xe, SunIcon as Se, XMarkIcon as Ce } from "@heroicons/vue/24/outline";
3
- import { HomeIcon as we } from "@heroicons/vue/24/solid";
4
- import { useRoute as Te, useRouter as Ee } from "vue-router";
1
+ import { Fragment as e, Teleport as t, Text as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createStaticVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, effectScope as m, nextTick as h, normalizeClass as g, normalizeStyle as _, onBeforeUnmount as v, onMounted as y, onScopeDispose as b, onUnmounted as x, openBlock as S, reactive as C, readonly as w, ref as T, renderList as E, renderSlot as D, resolveComponent as O, resolveDynamicComponent as k, toDisplayString as A, unref as j, useSlots as ee, vModelCheckbox as M, vModelDynamic as te, vModelText as N, vShow as ne, watch as P, withCtx as F, withDirectives as I, withKeys as re, withModifiers as L } from "vue";
2
+ import { ArrowDownIcon as ie, ArrowUpIcon as ae, Bars3Icon as oe, BellIcon as se, CheckCircleIcon as ce, ChevronDoubleLeftIcon as le, ChevronDoubleRightIcon as ue, ChevronDownIcon as de, ChevronRightIcon as fe, ClipboardDocumentCheckIcon as pe, ClipboardDocumentIcon as me, DocumentDuplicateIcon as he, ExclamationCircleIcon as ge, ExclamationTriangleIcon as _e, FolderIcon as ve, InformationCircleIcon as ye, MagnifyingGlassIcon as be, MinusIcon as xe, MoonIcon as Se, SunIcon as Ce, XMarkIcon as we } from "@heroicons/vue/24/outline";
3
+ import { HomeIcon as Te } from "@heroicons/vue/24/solid";
4
+ import { useRoute as Ee, useRouter as De } from "vue-router";
5
5
  //#region src/enums/AlertEnum.ts
6
6
  var R = /* @__PURE__ */ function(e) {
7
7
  return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
8
- }({}), z = w(!1), De = !1, B = "mgv-theme";
9
- function Oe(e) {
10
- if (De) {
8
+ }({}), z = T(!1), Oe = !1, B = "mgv-theme";
9
+ function ke(e) {
10
+ if (Oe) {
11
11
  e !== B && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${B}". Call initTheme({ storageKey }) before mounting any component.`);
12
12
  return;
13
13
  }
14
- if (De = !0, B = e, typeof window < "u") {
14
+ if (Oe = !0, B = e, typeof window < "u") {
15
15
  let e = window.localStorage?.getItem(B);
16
16
  e ? z.value = e === "dark" : typeof window.matchMedia == "function" && (z.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
17
17
  }
18
- typeof document < "u" && p(!0).run(() => {
18
+ typeof document < "u" && m(!0).run(() => {
19
19
  P(z, (e) => {
20
20
  document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(B, e ? "dark" : "light");
21
21
  }, { immediate: !0 });
22
22
  });
23
23
  }
24
- function ke(e) {
25
- Oe(e?.storageKey ?? B);
24
+ function Ae(e) {
25
+ ke(e?.storageKey ?? B);
26
26
  }
27
27
  function V(e) {
28
- Oe(e?.storageKey ?? B);
28
+ ke(e?.storageKey ?? B);
29
29
  function t() {
30
30
  z.value = !z.value;
31
31
  }
@@ -36,10 +36,10 @@ function V(e) {
36
36
  }
37
37
  //#endregion
38
38
  //#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
39
- var Ae = { class: "min-w-0 flex-1" }, je = {
39
+ var je = { class: "min-w-0 flex-1" }, Me = {
40
40
  key: 0,
41
41
  class: "font-medium"
42
- }, Me = /* @__PURE__ */ f({
42
+ }, Ne = /* @__PURE__ */ p({
43
43
  __name: "BaseAlert",
44
44
  props: {
45
45
  title: { default: "" },
@@ -50,7 +50,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
50
50
  }
51
51
  },
52
52
  setup(e) {
53
- let t = e, { isDark: n } = V(), c = {
53
+ let t = e, { isDark: n } = V(), r = {
54
54
  [R.ERROR]: {
55
55
  light: "bg-red-50 border-red-200 text-red-700",
56
56
  dark: "bg-red-500/10 border-red-500/30 text-red-300"
@@ -67,14 +67,14 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
67
67
  light: "bg-sky-50 border-sky-200 text-sky-700",
68
68
  dark: "bg-sky-500/10 border-sky-500/30 text-sky-300"
69
69
  }
70
- }, l = r(() => n.value ? c[t.color].dark : c[t.color].light), u = r(() => {
70
+ }, l = i(() => n.value ? r[t.color].dark : r[t.color].light), u = i(() => {
71
71
  switch (t.color) {
72
- case R.SUCCESS: return se;
73
- case R.WARNING: return ge;
74
- case R.INFO: return ve;
75
- default: return he;
72
+ case R.SUCCESS: return ce;
73
+ case R.WARNING: return _e;
74
+ case R.INFO: return ye;
75
+ default: return ge;
76
76
  }
77
- }), d = r(() => {
77
+ }), d = i(() => {
78
78
  switch (t.color) {
79
79
  case R.SUCCESS: return "text-emerald-500";
80
80
  case R.WARNING: return "text-amber-500";
@@ -82,24 +82,24 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
82
82
  default: return "text-red-500";
83
83
  }
84
84
  });
85
- return (t, n) => (x(), o("div", {
85
+ return (t, n) => (S(), s("div", {
86
86
  role: "alert",
87
- class: h(["flex gap-3 mb-4 rounded-lg border text-sm transition-colors", [e.compact ? "items-start px-3 py-2 text-xs" : "items-start p-4", l.value]])
88
- }, [(x(), i(O(u.value), {
89
- class: h(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
87
+ class: g(["flex gap-3 mb-4 rounded-lg border text-sm transition-colors", [e.compact ? "items-start px-3 py-2 text-xs" : "items-start p-4", l.value]])
88
+ }, [(S(), a(k(u.value), {
89
+ class: g(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
90
90
  "aria-hidden": "true"
91
- }, null, 8, ["class"])), s("div", Ae, [e.title ? (x(), o("p", je, k(e.title), 1)) : a("", !0), E(t.$slots, "default")])], 2));
91
+ }, null, 8, ["class"])), c("div", je, [e.title ? (S(), s("p", Me, A(e.title), 1)) : o("", !0), D(t.$slots, "default")])], 2));
92
92
  }
93
93
  }), H = /* @__PURE__ */ function(e) {
94
94
  return e.NONE = "NONE", e.RED = "RED", e.YELLOW = "YELLOW", e.BLACK = "BLACK", e.GRAY = "GRAY", e.GREEN = "GREEN", e.BLUE = "BLUE", e;
95
- }({}), Ne = "bg-red-100 text-red-700 border-red-200", Pe = /* @__PURE__ */ f({
95
+ }({}), Pe = "bg-red-100 text-red-700 border-red-200", Fe = /* @__PURE__ */ p({
96
96
  __name: "BaseBadge",
97
97
  props: { color: {
98
98
  type: String,
99
99
  required: !1
100
100
  } },
101
101
  setup(e) {
102
- let t = ee(), n = r(() => !!t.default), i = e, s = {
102
+ let t = ee(), r = i(() => !!t.default), a = () => (t.default?.() ?? []).map((e) => e.type === n && typeof e.children == "string" ? d(e.children.replace(/_/g, " ")) : e), c = e, l = {
103
103
  [H.RED]: "bg-red-100 text-red-700 border-red-200",
104
104
  [H.GREEN]: "bg-green-100 text-green-700 border-green-200",
105
105
  [H.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
@@ -107,19 +107,19 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
107
107
  [H.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
108
108
  [H.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
109
109
  [H.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
110
- }, c = r(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && s[i.color] || Ne}`);
111
- return (e, t) => n.value ? (x(), o("span", {
110
+ }, u = i(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${c.color && l[c.color] || Pe}`);
111
+ return (e, t) => r.value ? (S(), s("span", {
112
112
  key: 0,
113
- class: h(c.value)
114
- }, [E(e.$slots, "default")], 2)) : a("", !0);
113
+ class: g(u.value)
114
+ }, [f(a)], 2)) : o("", !0);
115
115
  }
116
- }), Fe = {
116
+ }), Ie = {
117
117
  class: "flex px-5 py-3 text-gray-700 border border-gray-200 rounded-lg bg-gray-50 dark:bg-gray-800 dark:border-gray-700",
118
118
  "aria-label": "Breadcrumb"
119
- }, Ie = { class: "inline-flex items-center space-x-1 md:space-x-3" }, Le = {
119
+ }, Le = { class: "inline-flex items-center space-x-1 md:space-x-3" }, Re = {
120
120
  class: "inline-flex items-center",
121
121
  style: { "margin-left": "0" }
122
- }, Re = /* @__PURE__ */ f({
122
+ }, ze = /* @__PURE__ */ p({
123
123
  __name: "BaseBreadcrumb",
124
124
  props: {
125
125
  items: {
@@ -134,7 +134,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
134
134
  }
135
135
  },
136
136
  setup(t) {
137
- let n = t, i = r(() => {
137
+ let n = t, r = i(() => {
138
138
  if (n.items && n.items.length > 0) return n.items;
139
139
  let e = (n.path ?? (typeof window < "u" ? window.location.pathname : "/")).split("/").filter((e) => e !== ""), t = "";
140
140
  return e.map((e) => (t += "/" + e, {
@@ -143,22 +143,22 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
143
143
  }));
144
144
  });
145
145
  return (t, n) => {
146
- let r = D("router-link");
147
- return x(), o("nav", Fe, [s("ol", Ie, [s("li", Le, [d(r, {
146
+ let i = O("router-link");
147
+ return S(), s("nav", Ie, [c("ol", Le, [c("li", Re, [f(i, {
148
148
  to: "/",
149
149
  class: "inline-flex items-center text-sm font-medium text-gray-700 hover:text-blue-600 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
150
150
  }, {
151
- default: F(() => [d(A(we), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= u(" Home ", -1)]),
151
+ default: F(() => [f(j(Te), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= d(" Home ", -1)]),
152
152
  _: 1
153
- })]), (x(!0), o(e, null, T(i.value, (e, t) => (x(), o("li", {
153
+ })]), (S(!0), s(e, null, E(r.value, (e, t) => (S(), s("li", {
154
154
  key: t,
155
155
  class: "inline-flex items-center",
156
156
  style: { "margin-left": "0" }
157
- }, [d(A(de), { class: "h-4 w-4 text-gray-500" }), d(r, {
157
+ }, [f(j(fe), { class: "h-4 w-4 text-gray-500" }), f(i, {
158
158
  to: e.url,
159
159
  class: "ml-1 text-sm font-medium text-gray-700 hover:text-blue-600 md:ml-2 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
160
160
  }, {
161
- default: F(() => [u(k(e.name), 1)]),
161
+ default: F(() => [d(A(e.name), 1)]),
162
162
  _: 2
163
163
  }, 1032, ["to"])]))), 128))])]);
164
164
  };
@@ -167,17 +167,17 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
167
167
  return e.RED = "RED", e.BLUE = "BLUE", e.WHITE = "WHITE", e.DARK = "DARK", e.GREEN = "GREEN", e.EMERALD = "EMERALD", e.YELLOW = "YELLOW", e.PURPLE = "PURPLE", e.SKY = "SKY", e.GRAY = "GRAY", e.AMBER = "AMBER", e;
168
168
  }({}), W = /* @__PURE__ */ function(e) {
169
169
  return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
170
- }({}), ze = [
170
+ }({}), Be = [
171
171
  "type",
172
172
  "disabled",
173
173
  "onClick"
174
- ], Be = {
174
+ ], Ve = {
175
175
  key: 0,
176
176
  class: "inline-flex items-center"
177
- }, Ve = { key: 1 }, He = { key: 2 }, Ue = ["type", "disabled"], We = {
177
+ }, He = { key: 1 }, Ue = { key: 2 }, We = ["type", "disabled"], Ge = {
178
178
  key: 0,
179
179
  class: "inline-flex items-center"
180
- }, Ge = { key: 1 }, Ke = { key: 2 }, G = /* @__PURE__ */ f({
180
+ }, Ke = { key: 1 }, qe = { key: 2 }, Je = /* @__PURE__ */ p({
181
181
  __name: "BaseButton",
182
182
  props: {
183
183
  description: {
@@ -281,7 +281,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
281
281
  }, r = e[n.color] ?? e[U.BLUE], i = t.value ? r.dark : r.light;
282
282
  return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current border bg-transparent ${i}`;
283
283
  }
284
- function c() {
284
+ function i() {
285
285
  let e = {
286
286
  [U.BLUE]: {
287
287
  light: "text-blue-600 hover:bg-blue-50",
@@ -333,197 +333,191 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
333
333
  function l() {
334
334
  let e = n.isDisable || n.isLoading, t = "inline-flex items-center transition-colors duration-150";
335
335
  e || (t += " cursor-pointer");
336
- let i;
336
+ let a;
337
337
  switch (n.color) {
338
338
  case U.BLUE:
339
- i = 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";
339
+ a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
340
340
  break;
341
341
  case U.WHITE:
342
- i = 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";
342
+ a = e ? "text-gray-900 bg-gray-200 border border-gray-200 cursor-not-allowed" : "focus:outline-none text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200";
343
343
  break;
344
344
  case U.DARK:
345
- i = 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";
345
+ a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300";
346
346
  break;
347
347
  case U.GREEN:
348
- i = 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";
348
+ a = e ? "text-white bg-green-400 cursor-not-allowed" : "focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300";
349
349
  break;
350
350
  case U.EMERALD:
351
- i = 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";
351
+ a = e ? "text-white bg-emerald-400 cursor-not-allowed" : "focus:outline-none text-white bg-emerald-600 hover:bg-emerald-700 focus:ring-4 focus:ring-emerald-300";
352
352
  break;
353
353
  case U.RED:
354
- i = 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";
354
+ a = e ? "text-white bg-red-400 cursor-not-allowed" : "focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300";
355
355
  break;
356
356
  case U.YELLOW:
357
- i = 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";
357
+ a = e ? "text-white bg-yellow-300 cursor-not-allowed" : "focus:outline-none text-white bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300";
358
358
  break;
359
359
  case U.PURPLE:
360
- i = 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";
360
+ a = e ? "text-white bg-purple-400 cursor-not-allowed" : "focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300";
361
361
  break;
362
362
  case U.SKY:
363
- i = 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";
363
+ a = e ? "text-white bg-sky-400 cursor-not-allowed" : "focus:outline-none text-white bg-sky-600 hover:bg-sky-700 focus:ring-4 focus:ring-sky-300";
364
364
  break;
365
365
  case U.AMBER:
366
- i = 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";
366
+ a = e ? "text-white bg-amber-300 cursor-not-allowed" : "focus:outline-none text-white bg-amber-500 hover:bg-amber-600 focus:ring-4 focus:ring-amber-300";
367
367
  break;
368
368
  case U.GRAY:
369
- i = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-600 hover:bg-gray-700 focus:ring-4 focus:ring-gray-300";
370
- break;
371
- default:
372
- i = 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";
369
+ a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-600 hover:bg-gray-700 focus:ring-4 focus:ring-gray-300";
373
370
  break;
371
+ default: a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
374
372
  }
375
- n.outline && (i = r()), n.ghost && (i = c());
376
- let a = "px-5 py-2.5 mr-2 mb-2 text-sm";
373
+ n.outline && (a = r()), n.ghost && (a = i());
374
+ let o = "px-5 py-2.5 mr-2 mb-2 text-sm";
377
375
  switch (n.size) {
378
376
  case W.EXTRA_SMALL:
379
- a = "px-3 py-2 text-xs";
377
+ o = "px-3 py-2 text-xs";
380
378
  break;
381
379
  case W.SMALL:
382
- a = "px-3 py-2 text-sm";
380
+ o = "px-3 py-2 text-sm";
383
381
  break;
384
382
  case W.BASE:
385
- a = "px-5 py-2.5 text-sm";
383
+ o = "px-5 py-2.5 text-sm";
386
384
  break;
387
385
  case W.LARGE:
388
- a = "px-5 py-3 text-base";
389
- break;
390
- case W.EXTRA_LARGE:
391
- a = "px-6 py-3.5 text-base";
386
+ o = "px-5 py-3 text-base";
392
387
  break;
388
+ case W.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
393
389
  }
394
- let o = "rounded-lg";
395
- return n.isRounded && (o = "rounded-full"), t + " " + a + " " + i + " font-medium " + o;
390
+ let s = "rounded-lg";
391
+ return n.isRounded && (s = "rounded-full"), t + " " + o + " " + a + " font-medium " + s;
396
392
  }
397
393
  return (t, r) => {
398
- let c = D("router-link");
399
- return e.to ? (x(), i(c, {
394
+ let i = O("router-link");
395
+ return e.to ? (S(), a(i, {
400
396
  key: 0,
401
397
  to: e.to,
402
398
  custom: ""
403
399
  }, {
404
- default: F(({ navigate: i }) => [s("button", {
400
+ default: F(({ navigate: i }) => [c("button", {
405
401
  type: n.type,
406
- class: h(l()),
402
+ class: g(l()),
407
403
  disabled: e.isDisable || e.isLoading,
408
404
  onClick: i
409
405
  }, [
410
- e.isLoading ? (x(), o("div", Be, [...r[0] ||= [s("svg", {
406
+ e.isLoading ? (S(), s("div", Ve, [...r[0] ||= [c("svg", {
411
407
  "aria-hidden": "true",
412
408
  role: "status",
413
409
  class: "inline w-4 h-4 me-3 animate-spin",
414
410
  viewBox: "0 0 100 101",
415
411
  fill: "none",
416
412
  xmlns: "http://www.w3.org/2000/svg"
417
- }, [s("path", {
413
+ }, [c("path", {
418
414
  d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
419
415
  fill: "#E5E7EB"
420
- }), s("path", {
416
+ }), c("path", {
421
417
  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",
422
418
  fill: "currentColor"
423
- })], -1)]])) : a("", !0),
424
- e.iconLeft ? a("", !0) : (x(), o("span", Ve, k(e.description), 1)),
425
- E(t.$slots, "default"),
426
- e.iconLeft ? (x(), o("span", He, k(e.description), 1)) : a("", !0)
427
- ], 10, ze)]),
419
+ })], -1)]])) : o("", !0),
420
+ e.iconLeft ? o("", !0) : (S(), s("span", He, A(e.description), 1)),
421
+ D(t.$slots, "default"),
422
+ e.iconLeft ? (S(), s("span", Ue, A(e.description), 1)) : o("", !0)
423
+ ], 10, Be)]),
428
424
  _: 3
429
- }, 8, ["to"])) : (x(), o("button", {
425
+ }, 8, ["to"])) : (S(), s("button", {
430
426
  key: 1,
431
427
  type: n.type,
432
- class: h(l()),
428
+ class: g(l()),
433
429
  disabled: e.isDisable || e.isLoading
434
430
  }, [
435
- e.isLoading ? (x(), o("div", We, [...r[1] ||= [s("svg", {
431
+ e.isLoading ? (S(), s("div", Ge, [...r[1] ||= [c("svg", {
436
432
  "aria-hidden": "true",
437
433
  role: "status",
438
434
  class: "inline w-4 h-4 me-3 animate-spin",
439
435
  viewBox: "0 0 100 101",
440
436
  fill: "none",
441
437
  xmlns: "http://www.w3.org/2000/svg"
442
- }, [s("path", {
438
+ }, [c("path", {
443
439
  d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
444
440
  fill: "#E5E7EB"
445
- }), s("path", {
441
+ }), c("path", {
446
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",
447
443
  fill: "currentColor"
448
- })], -1)]])) : a("", !0),
449
- e.iconLeft ? a("", !0) : (x(), o("span", Ge, k(e.description), 1)),
450
- E(t.$slots, "default"),
451
- e.iconLeft ? (x(), o("span", Ke, k(e.description), 1)) : a("", !0)
452
- ], 10, Ue));
444
+ })], -1)]])) : o("", !0),
445
+ e.iconLeft ? o("", !0) : (S(), s("span", Ke, A(e.description), 1)),
446
+ D(t.$slots, "default"),
447
+ e.iconLeft ? (S(), s("span", qe, A(e.description), 1)) : o("", !0)
448
+ ], 10, We));
453
449
  };
454
450
  }
455
- }), qe = /* @__PURE__ */ function(e) {
451
+ }), Ye = /* @__PURE__ */ function(e) {
456
452
  return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
457
- }({}), Je = {
453
+ }({}), Xe = {
458
454
  key: 0,
459
455
  class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
460
- }, Ye = {
456
+ }, Ze = {
461
457
  key: 1,
462
458
  class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
463
- }, Xe = {
459
+ }, Qe = {
464
460
  key: 2,
465
461
  class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
466
- }, Ze = /* @__PURE__ */ f({
462
+ }, $e = /* @__PURE__ */ p({
467
463
  __name: "BaseLine",
468
464
  props: { mode: {
469
465
  type: String,
470
466
  required: !1,
471
- default: qe.BASE
467
+ default: Ye.BASE
472
468
  } },
473
469
  setup(t) {
474
- return (n, r) => (x(), o(e, null, [
475
- t.mode === A(qe).BASE ? (x(), o("hr", Je)) : a("", !0),
476
- t.mode === A(qe).BASE_SHORTER ? (x(), o("hr", Ye)) : a("", !0),
477
- t.mode === A(qe).SQUARE ? (x(), o("hr", Xe)) : a("", !0)
470
+ return (n, r) => (S(), s(e, null, [
471
+ t.mode === j(Ye).BASE ? (S(), s("hr", Xe)) : o("", !0),
472
+ t.mode === j(Ye).BASE_SHORTER ? (S(), s("hr", Ze)) : o("", !0),
473
+ t.mode === j(Ye).SQUARE ? (S(), s("hr", Qe)) : o("", !0)
478
474
  ], 64));
479
475
  }
480
- }), K = /* @__PURE__ */ function(e) {
476
+ }), G = /* @__PURE__ */ function(e) {
481
477
  return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
482
- }({}), Qe = K, $e = ["height", "width"], et = /* @__PURE__ */ f({
478
+ }({}), et = G, tt = ["height", "width"], nt = /* @__PURE__ */ p({
483
479
  __name: "BaseLogo",
484
480
  props: { size: {
485
481
  type: String,
486
482
  required: !1,
487
- default: K.MEDIUM
483
+ default: G.MEDIUM
488
484
  } },
489
485
  setup(e) {
490
486
  let t = e;
491
487
  function n() {
492
488
  let e = "";
493
489
  switch (t.size) {
494
- case K.SMALL:
490
+ case G.SMALL:
495
491
  e = "50px";
496
492
  break;
497
- case K.MEDIUM:
493
+ case G.MEDIUM:
498
494
  e = "100px";
499
495
  break;
500
- case K.LARGE:
501
- e = "150px";
502
- break;
496
+ case G.LARGE: e = "150px";
503
497
  }
504
498
  return e;
505
499
  }
506
500
  return (e, t) => {
507
- let r = D("router-link");
508
- return x(), i(r, {
501
+ let r = O("router-link");
502
+ return S(), a(r, {
509
503
  to: "/",
510
504
  class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
511
505
  }, {
512
- default: F(() => [(x(), o("svg", {
506
+ default: F(() => [(S(), s("svg", {
513
507
  height: n(),
514
508
  width: n(),
515
509
  viewBox: "33.6 130.6 499.7 242.9",
516
510
  xmlns: "http://www.w3.org/2000/svg",
517
511
  "xmlns:xlink": "http://www.w3.org/1999/xlink"
518
512
  }, [...t[0] ||= [
519
- s("linearGradient", { id: "a" }, [s("stop", {
513
+ c("linearGradient", { id: "a" }, [c("stop", {
520
514
  offset: ".085",
521
515
  "stop-color": "#469e43"
522
- }), s("stop", {
516
+ }), c("stop", {
523
517
  offset: "1",
524
518
  "stop-color": "#132d13"
525
519
  })], -1),
526
- s("linearGradient", {
520
+ c("linearGradient", {
527
521
  id: "b",
528
522
  gradientUnits: "userSpaceOnUse",
529
523
  x1: "64.863",
@@ -532,7 +526,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
532
526
  y1: "288.291",
533
527
  y2: "369.4"
534
528
  }, null, -1),
535
- s("linearGradient", {
529
+ c("linearGradient", {
536
530
  id: "c",
537
531
  gradientUnits: "userSpaceOnUse",
538
532
  x1: "138.367",
@@ -541,7 +535,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
541
535
  y1: "308.454",
542
536
  y2: "370.601"
543
537
  }, null, -1),
544
- s("linearGradient", {
538
+ c("linearGradient", {
545
539
  id: "d",
546
540
  gradientUnits: "userSpaceOnUse",
547
541
  x1: "195.475",
@@ -550,7 +544,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
550
544
  y1: "288.291",
551
545
  y2: "369.85"
552
546
  }, null, -1),
553
- s("linearGradient", {
547
+ c("linearGradient", {
554
548
  id: "e",
555
549
  gradientUnits: "userSpaceOnUse",
556
550
  x1: "249.634",
@@ -559,7 +553,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
559
553
  y1: "307.312",
560
554
  y2: "369.511"
561
555
  }, null, -1),
562
- s("linearGradient", {
556
+ c("linearGradient", {
563
557
  id: "f",
564
558
  gradientUnits: "userSpaceOnUse",
565
559
  x1: "302.884",
@@ -568,7 +562,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
568
562
  y1: "288.291",
569
563
  y2: "367.857"
570
564
  }, null, -1),
571
- s("linearGradient", {
565
+ c("linearGradient", {
572
566
  id: "g",
573
567
  gradientUnits: "userSpaceOnUse",
574
568
  x1: "354.118",
@@ -577,7 +571,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
577
571
  y1: "307.312",
578
572
  y2: "369.511"
579
573
  }, null, -1),
580
- s("linearGradient", {
574
+ c("linearGradient", {
581
575
  id: "h",
582
576
  gradientUnits: "userSpaceOnUse",
583
577
  x1: "428.02",
@@ -586,7 +580,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
586
580
  y1: "306.156",
587
581
  y2: "367.742"
588
582
  }, null, -1),
589
- s("linearGradient", {
583
+ c("linearGradient", {
590
584
  id: "i",
591
585
  gradientUnits: "userSpaceOnUse",
592
586
  x1: "502.066",
@@ -595,7 +589,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
595
589
  y1: "288.291",
596
590
  y2: "369.4"
597
591
  }, null, -1),
598
- s("linearGradient", {
592
+ c("linearGradient", {
599
593
  id: "j",
600
594
  gradientUnits: "userSpaceOnUse",
601
595
  x1: "283.264",
@@ -604,78 +598,78 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
604
598
  y1: "131.629",
605
599
  y2: "232.559"
606
600
  }, null, -1),
607
- s("linearGradient", {
601
+ c("linearGradient", {
608
602
  id: "k",
609
603
  gradientUnits: "userSpaceOnUse",
610
604
  x1: "283.46",
611
605
  x2: "283.46",
612
606
  y1: "202.275",
613
607
  y2: "183.785"
614
- }, [s("stop", {
608
+ }, [c("stop", {
615
609
  offset: "0",
616
610
  "stop-color": "#969799",
617
611
  "stop-opacity": "0"
618
- }), s("stop", {
612
+ }), c("stop", {
619
613
  offset: "1",
620
614
  "stop-color": "#808183"
621
615
  })], -1),
622
- s("path", {
616
+ c("path", {
623
617
  d: "m65 307.2c-6.8 0-13.1 2.2-18.2 5.9v-24.8h-13.2v81.1h31.4c17.2 0 31.1-13.9 31.1-31.1s-13.9-31.1-31.1-31.1zm0 49.3h-18.2v-18.2c0-10.1 8.2-18.2 18.2-18.2 10.1 0 18.2 8.2 18.2 18.2.1 10.1-8.1 18.2-18.2 18.2z",
624
618
  fill: "url(#b)"
625
619
  }, null, -1),
626
- s("path", {
620
+ c("path", {
627
621
  d: "m168.8 343.9h-46.7c1.4 7.1 6.6 12 14.1 12.7 6.4.6 12.9.1 19.9.1v11.9c-15.2 4.9-33.3.5-42.1-10.4-3.8-4.7-17.3-34.7 11.5-47.4 39-11.4 45.3 22.4 43.3 33.1zm-14.2-12.7c-1.7-8.1-8.8-12.9-17.9-12.3-7.6.5-14 5.8-14.5 12.3z",
628
622
  fill: "url(#c)"
629
623
  }, null, -1),
630
- s("path", {
624
+ c("path", {
631
625
  d: "m195.5 320.2c0 10.5-.2 20 .1 29.6.2 5.8 4.4 8.4 13.2 8.6v10.5c-13.8 3.9-26.2-4.5-26.4-18-.2-18.7-.1-43.9-.1-62.6h14.1l-.3 18.5 12.7-.1v13.4h-13.3z",
632
626
  fill: "url(#d)"
633
627
  }, null, -1),
634
- s("path", {
628
+ c("path", {
635
629
  d: "m249.6 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
636
630
  fill: "url(#e)"
637
631
  }, null, -1),
638
- s("path", {
632
+ c("path", {
639
633
  d: "m296.4 288.3h13v79.6h-13z",
640
634
  fill: "url(#f)"
641
635
  }, null, -1),
642
- s("path", {
636
+ c("path", {
643
637
  d: "m354.1 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
644
638
  fill: "url(#g)"
645
639
  }, null, -1),
646
- s("path", {
640
+ c("path", {
647
641
  d: "m442.2 367.7c0-12.3.2-23.6 0-34.9-.2-3.4-3.6-13.8-14.1-13.4-10.3-.3-14.4 10-14.3 12.7.1 10.2.5 35.1.5 35.1l-13.6.1s-.3-25.7.2-36.2c.6-14.1 12.7-25 27.5-25 14.7 0 26.2 10.4 26.7 24.9.4 10.4.5 36.3.5 36.3z",
648
642
  fill: "url(#h)"
649
643
  }, null, -1),
650
- s("path", {
644
+ c("path", {
651
645
  d: "m501.9 307.2c6.8 0 13.1 2.2 18.2 5.9v-24.8h13.2v81.1h-31.4c-17.2 0-31.1-13.9-31.1-31.1s13.9-31.1 31.1-31.1zm0 49.3h18.2v-18.2c0-10.1-8.2-18.2-18.2-18.2-10.1 0-18.2 8.2-18.2 18.2 0 10.1 8.1 18.2 18.2 18.2z",
652
646
  fill: "url(#i)"
653
647
  }, null, -1),
654
- s("path", {
648
+ c("path", {
655
649
  d: "m309.2 180.6h-24v-24c0-12.6 10.2-24.1 22.8-25 14.8-1 27.1 11.3 26.1 26.1-.8 12.7-12.3 22.9-24.9 22.9zm-50.7-48.9c-14.8-1-27.1 11.3-26.1 26.1.8 12.6 12.4 22.8 25 22.8h23.9v-24c0-12.6-10.3-24.1-22.8-24.9zm50.7 51.9h-24v23.9c0 12.6 10.2 24.1 22.8 25 14.8 1 27.1-11.3 26.1-26.1-.8-12.6-12.3-22.8-24.9-22.8zm-52.4 0c-14 0-25.3 11.8-24.4 26 .8 12.2 10.7 22.1 22.9 22.9 14.2.9 26-10.4 26-24.4v-24.5z",
656
650
  fill: "url(#j)"
657
651
  }, null, -1),
658
- s("path", {
652
+ c("path", {
659
653
  d: "m281.7 183.8h3.6v18.5h-3.6z",
660
654
  fill: "url(#k)"
661
655
  }, null, -1)
662
- ]], 8, $e))]),
656
+ ]], 8, tt))]),
663
657
  _: 1
664
658
  });
665
659
  };
666
660
  }
667
- }), tt = /* @__PURE__ */ function(e) {
661
+ }), rt = /* @__PURE__ */ function(e) {
668
662
  return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
669
- }({}), nt = {
663
+ }({}), it = {
670
664
  key: 0,
671
665
  class: "p-6 text-center"
672
- }, rt = { class: "flex justify-center" }, it = {
666
+ }, at = { class: "flex justify-center" }, ot = {
673
667
  key: 1,
674
668
  class: "p-6 text-center"
675
- }, at = {
669
+ }, st = {
676
670
  key: 0,
677
671
  class: "mb-5 text-sm text-gray-500"
678
- }, ot = { class: "flex justify-center" }, st = /* @__PURE__ */ f({
672
+ }, ct = { class: "flex justify-center" }, lt = /* @__PURE__ */ p({
679
673
  __name: "BaseModal",
680
674
  props: {
681
675
  title: {
@@ -694,58 +688,58 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
694
688
  mode: {
695
689
  type: String,
696
690
  required: !1,
697
- default: tt.SUCCESS
691
+ default: rt.SUCCESS
698
692
  }
699
693
  },
700
694
  emits: ["closeModal", "confirmModal"],
701
695
  setup(t, { emit: n }) {
702
696
  let r = n, i = `modal-title-${Math.random().toString(36).slice(2, 9)}`;
703
- function c(e) {
697
+ function a(e) {
704
698
  e.key === "Escape" && r("closeModal");
705
699
  }
706
- return v(() => {
707
- document.addEventListener("keydown", c);
708
- }), b(() => {
709
- document.removeEventListener("keydown", c);
710
- }), (n, r) => (x(), o(e, null, [s("div", {
700
+ return y(() => {
701
+ document.addEventListener("keydown", a);
702
+ }), x(() => {
703
+ document.removeEventListener("keydown", a);
704
+ }), (n, r) => (S(), s(e, null, [c("div", {
711
705
  class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
712
706
  onClick: r[0] ||= (e) => n.$emit("closeModal")
713
- }), s("div", {
707
+ }), c("div", {
714
708
  class: "fixed top-[20vh] left-1/2 -translate-x-1/2 w-96 z-50 rounded-xl shadow-lg bg-white overflow-hidden",
715
709
  role: "dialog",
716
710
  "aria-modal": "true",
717
711
  "aria-labelledby": i
718
- }, [t.mode === A(tt).DELETE ? (x(), o("div", nt, [
719
- d(A(he), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
720
- s("h3", {
712
+ }, [t.mode === j(rt).DELETE ? (S(), s("div", it, [
713
+ f(j(ge), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
714
+ c("h3", {
721
715
  id: i,
722
716
  class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
723
- }, " Are you sure you want to delete this " + k(t.title) + "? ", 1),
724
- s("div", rt, [d(G, {
725
- color: A(U).RED,
717
+ }, " Are you sure you want to delete this " + A(t.title) + "? ", 1),
718
+ c("div", at, [f(Je, {
719
+ color: j(U).RED,
726
720
  onClick: r[1] ||= (e) => n.$emit("confirmModal"),
727
721
  description: "Yes, I'm sure"
728
- }, null, 8, ["color"]), d(G, {
729
- color: A(U).WHITE,
722
+ }, null, 8, ["color"]), f(Je, {
723
+ color: j(U).WHITE,
730
724
  onClick: r[2] ||= (e) => n.$emit("closeModal"),
731
725
  description: "No, cancel"
732
726
  }, null, 8, ["color"])])
733
- ])) : (x(), o("div", it, [
734
- d(A(se), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
735
- s("h3", {
727
+ ])) : (S(), s("div", ot, [
728
+ f(j(ce), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
729
+ c("h3", {
736
730
  id: i,
737
731
  class: "mb-2 text-lg font-medium text-gray-900"
738
- }, k(t.title), 1),
739
- t.description ? (x(), o("p", at, k(t.description), 1)) : a("", !0),
740
- E(n.$slots, "default"),
741
- s("div", ot, [d(G, {
742
- color: A(U).BLUE,
732
+ }, A(t.title), 1),
733
+ t.description ? (S(), s("p", st, A(t.description), 1)) : o("", !0),
734
+ D(n.$slots, "default"),
735
+ c("div", ct, [f(Je, {
736
+ color: j(U).BLUE,
743
737
  onClick: r[3] ||= (e) => n.$emit("closeModal"),
744
738
  description: "OK"
745
739
  }, null, 8, ["color"])])
746
740
  ]))])], 64));
747
741
  }
748
- }), ct = /* @__PURE__ */ f({
742
+ }), ut = /* @__PURE__ */ p({
749
743
  __name: "BaseRow",
750
744
  props: { bgColor: {
751
745
  type: String,
@@ -757,21 +751,21 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
757
751
  function n() {
758
752
  return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
759
753
  }
760
- return (e, t) => (x(), o("div", { class: h(n()) }, [E(e.$slots, "default")], 2));
754
+ return (e, t) => (S(), s("div", { class: g(n()) }, [D(e.$slots, "default")], 2));
761
755
  }
762
- }), lt = /* @__PURE__ */ f({
756
+ }), dt = /* @__PURE__ */ p({
763
757
  __name: "BaseSpinner",
764
758
  props: {
765
759
  size: { default: "sm" },
766
760
  color: { default: "blue" }
767
761
  },
768
762
  setup(e) {
769
- let t = e, n = r(() => ({
763
+ let t = e, n = i(() => ({
770
764
  sm: "w-4 h-4 border-2",
771
765
  md: "w-6 h-6 border-2",
772
766
  lg: "w-8 h-8 border-4",
773
767
  xl: "w-12 h-12 border-4"
774
- })[t.size]), i = r(() => ({
768
+ })[t.size]), r = i(() => ({
775
769
  blue: "border-t-blue-500",
776
770
  emerald: "border-t-emerald-500",
777
771
  sky: "border-t-sky-500",
@@ -781,17 +775,17 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
781
775
  red: "border-t-red-500",
782
776
  amber: "border-t-amber-500"
783
777
  })[t.color]);
784
- return (e, t) => (x(), o("div", {
785
- class: h(["border-gray-200 rounded-full animate-spin", [n.value, i.value]]),
778
+ return (e, t) => (S(), s("div", {
779
+ class: g(["border-gray-200 rounded-full animate-spin", [n.value, r.value]]),
786
780
  role: "status",
787
781
  "aria-label": "Loading"
788
782
  }, null, 2));
789
783
  }
790
- }), q = /* @__PURE__ */ function(e) {
784
+ }), K = /* @__PURE__ */ function(e) {
791
785
  return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
792
- }({}), J = /* @__PURE__ */ function(e) {
786
+ }({}), q = /* @__PURE__ */ function(e) {
793
787
  return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
794
- }({}), ut = { class: "flex items-center w-full max-w-md p-4 mb-4 text-gray-500 bg-white rounded-lg shadow dark:text-gray-400 dark:bg-gray-800" }, dt = { class: "ml-3 text-sm font-normal" }, ft = /* @__PURE__ */ f({
788
+ }({}), ft = { 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" }, pt = { class: "ml-3 text-sm font-normal" }, mt = /* @__PURE__ */ p({
795
789
  __name: "BaseToast",
796
790
  props: {
797
791
  mode: {
@@ -810,7 +804,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
810
804
  positioning: {
811
805
  type: String,
812
806
  required: !1,
813
- default: J.TOP_RIGHT
807
+ default: q.TOP_RIGHT
814
808
  },
815
809
  duration: {
816
810
  type: Number,
@@ -819,78 +813,74 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
819
813
  }
820
814
  },
821
815
  setup(e) {
822
- let t = e, n = w(!0), r = null;
816
+ let t = e, n = T(!0), r = null;
823
817
  function i() {
824
818
  n.value = !1, r &&= (clearTimeout(r), null);
825
819
  }
826
- v(() => {
820
+ y(() => {
827
821
  r = setTimeout(() => n.value = !1, t.duration);
828
- }), b(() => {
822
+ }), x(() => {
829
823
  r && clearTimeout(r);
830
824
  });
831
- function c() {
825
+ function a() {
832
826
  let e = "";
833
827
  switch (t.mode) {
834
- case q.ERROR:
828
+ case K.ERROR:
835
829
  e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
836
830
  break;
837
- case q.SUCCESS:
831
+ case K.SUCCESS:
838
832
  e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
839
833
  break;
840
- case q.WARNING:
834
+ case K.WARNING:
841
835
  e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
842
836
  break;
843
- default:
844
- e = "text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-200";
845
- break;
837
+ default: e = "text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-200";
846
838
  }
847
839
  return "inline-flex items-center justify-center flex-shrink-0 w-8 h-8 rounded-lg " + e;
848
840
  }
849
841
  function l() {
850
842
  let e = "top-5 right-5";
851
843
  switch (t.positioning) {
852
- case J.BOTTOM_LEFT:
844
+ case q.BOTTOM_LEFT:
853
845
  e = "bottom-5 left-5";
854
846
  break;
855
- case J.TOP_LEFT:
847
+ case q.TOP_LEFT:
856
848
  e = "top-5 left-5";
857
849
  break;
858
- case J.TOP_RIGHT:
850
+ case q.TOP_RIGHT:
859
851
  e = "top-5 right-5";
860
852
  break;
861
- case J.BOTTOM_RIGHT:
862
- e = "bottom-5 right-5";
863
- break;
853
+ case q.BOTTOM_RIGHT: e = "bottom-5 right-5";
864
854
  }
865
855
  return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
866
856
  }
867
- return (t, r) => n.value ? (x(), o("div", {
857
+ return (t, r) => n.value ? (S(), s("div", {
868
858
  key: 0,
869
859
  id: "toast-top-right",
870
- class: h(l()),
860
+ class: g(l()),
871
861
  role: "alert"
872
- }, [s("div", ut, [
873
- e.mode == A(q).ERROR ? (x(), o("div", {
862
+ }, [c("div", ft, [
863
+ e.mode == j(K).ERROR ? (S(), s("div", {
874
864
  key: 0,
875
- class: h(c())
876
- }, [d(A(he), { class: "h-6 w-6 text-red-500" }), r[0] ||= s("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == A(q).SUCCESS ? (x(), o("div", {
865
+ class: g(a())
866
+ }, [f(j(ge), { class: "h-6 w-6 text-red-500" }), r[0] ||= c("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == j(K).SUCCESS ? (S(), s("div", {
877
867
  key: 1,
878
- class: h(c())
879
- }, [d(A(se), { class: "h-6 w-6 text-green-500" }), r[1] ||= s("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == A(q).WARNING ? (x(), o("div", {
868
+ class: g(a())
869
+ }, [f(j(ce), { class: "h-6 w-6 text-green-500" }), r[1] ||= c("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == j(K).WARNING ? (S(), s("div", {
880
870
  key: 2,
881
- class: h(c())
882
- }, [d(A(ge), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= s("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : a("", !0),
883
- s("div", dt, k(e.description), 1),
884
- e.hasCloseIcon ? (x(), o("button", {
871
+ class: g(a())
872
+ }, [f(j(_e), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= c("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : o("", !0),
873
+ c("div", pt, A(e.description), 1),
874
+ e.hasCloseIcon ? (S(), s("button", {
885
875
  key: 3,
886
876
  type: "button",
887
877
  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",
888
878
  "aria-label": "Close",
889
879
  onClick: i
890
- }, [r[3] ||= s("span", { class: "sr-only" }, "Close", -1), d(A(Ce), { class: "h-6 w-6 text-gray-500" })])) : a("", !0)
891
- ])], 2)) : a("", !0);
880
+ }, [r[3] ||= c("span", { class: "sr-only" }, "Close", -1), f(j(we), { class: "h-6 w-6 text-gray-500" })])) : o("", !0)
881
+ ])], 2)) : o("", !0);
892
882
  }
893
- }), pt = { class: "w-13" }, mt = /* @__PURE__ */ f({
883
+ }), ht = { class: "w-13" }, gt = /* @__PURE__ */ p({
894
884
  __name: "ColoredSquares",
895
885
  props: { color: {
896
886
  type: String,
@@ -907,29 +897,29 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
907
897
  "bg-yellow-300",
908
898
  "bg-purple-300",
909
899
  "bg-pink-300"
910
- ], r = w(n[Math.floor(Math.random() * n.length)]);
900
+ ], r = T(n[Math.floor(Math.random() * n.length)]);
911
901
  function i() {
912
- let e = "gray";
902
+ let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
913
903
  switch (t.color) {
914
904
  case H.GREEN:
915
- e = "green";
905
+ n = "green";
916
906
  break;
917
907
  case H.RED:
918
- e = "red";
908
+ n = "red";
919
909
  break;
920
910
  case H.BLUE:
921
- e = "blue";
911
+ n = "blue";
922
912
  break;
923
913
  case H.YELLOW:
924
- e = "yellow";
914
+ n = "yellow";
925
915
  break;
926
- case H.NONE: return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full";
916
+ case H.NONE: return e;
927
917
  }
928
- return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full bg-" + e + "-100 text-" + e + "-800";
918
+ return e + " bg-" + n + "-100 text-" + n + "-800";
929
919
  }
930
- return (e, t) => (x(), o("div", pt, [s("div", { class: h(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [E(e.$slots, "default"), s("div", { class: h(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
920
+ return (e, t) => (S(), s("div", ht, [c("div", { class: g(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [D(e.$slots, "default"), c("div", { class: g(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
931
921
  }
932
- }), ht = { class: "flex items-start justify-between" }, gt = { class: "min-w-0" }, _t = /* @__PURE__ */ f({
922
+ }), _t = { class: "flex items-start justify-between" }, vt = { class: "min-w-0" }, yt = /* @__PURE__ */ p({
933
923
  __name: "EarningsCard",
934
924
  props: {
935
925
  title: { default: "TOTAL EARNINGS" },
@@ -949,7 +939,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
949
939
  }
950
940
  },
951
941
  setup(t) {
952
- let n = t, i = {
942
+ let n = t, r = {
953
943
  orange: {
954
944
  border: "border-orange-300 dark:border-orange-700",
955
945
  badge: "bg-orange-100 text-orange-500 dark:bg-orange-900/40 dark:text-orange-400",
@@ -974,34 +964,34 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
974
964
  iconBox: "bg-red-50 dark:bg-red-900/30",
975
965
  icon: "text-red-500"
976
966
  }
977
- }, c = r(() => {
967
+ }, a = i(() => {
978
968
  let e = Number(n.amount);
979
969
  return Number.isFinite(e) ? e : 0;
980
- }), l = r(() => n.signed && c.value < 0), u = r(() => l.value ? "red" : n.accent), d = r(() => i[u.value]), f = r(() => n.currency + c.value.toLocaleString("en-US", {
970
+ }), l = i(() => n.signed && a.value < 0), u = i(() => l.value ? "red" : n.accent), d = i(() => r[u.value]), f = i(() => n.currency + a.value.toLocaleString("en-US", {
981
971
  minimumFractionDigits: n.decimals,
982
972
  maximumFractionDigits: n.decimals
983
973
  }));
984
- return (n, r) => (x(), o("div", { class: h(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (x(), o("div", {
974
+ return (n, r) => (S(), s("div", { class: g(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (S(), s("div", {
985
975
  key: 0,
986
- class: h(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
987
- }, k(t.badge), 3)) : a("", !0), s("div", ht, [s("div", gt, [
988
- s("p", { class: h(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, k(t.title), 3),
989
- s("p", { class: h(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, k(f.value), 3),
990
- s("p", { class: h(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, k(t.subtitle), 3)
991
- ]), s("div", { class: h(["flex items-center justify-center", [d.value.iconBox, t.compact ? "absolute right-2 top-2 h-6 w-6 rounded-lg" : "mt-6 h-12 w-12 rounded-xl"]]) }, [(x(), o("svg", {
992
- class: h([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
976
+ class: g(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
977
+ }, A(t.badge), 3)) : o("", !0), c("div", _t, [c("div", vt, [
978
+ c("p", { class: g(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, A(t.title), 3),
979
+ c("p", { class: g(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, A(f.value), 3),
980
+ c("p", { class: g(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, A(t.subtitle), 3)
981
+ ]), c("div", { class: g(["flex items-center justify-center", [d.value.iconBox, t.compact ? "absolute right-2 top-2 h-6 w-6 rounded-lg" : "mt-6 h-12 w-12 rounded-xl"]]) }, [(S(), s("svg", {
982
+ class: g([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
993
983
  viewBox: "0 0 24 24",
994
984
  fill: "none",
995
985
  stroke: "currentColor",
996
986
  "stroke-width": "2.5",
997
987
  "stroke-linecap": "round",
998
988
  "stroke-linejoin": "round"
999
- }, [l.value ? (x(), o(e, { key: 0 }, [r[0] ||= s("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= s("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (x(), o(e, { key: 1 }, [r[2] ||= s("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= s("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
989
+ }, [l.value ? (S(), s(e, { key: 0 }, [r[0] ||= c("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= c("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (S(), s(e, { key: 1 }, [r[2] ||= c("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= c("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
1000
990
  }
1001
- }), vt = {
991
+ }), bt = {
1002
992
  key: 0,
1003
993
  class: "font-bold text-green-800 dark:text-green-400"
1004
- }, yt = { key: 0 }, bt = { key: 0 }, xt = "font-bold", St = /* @__PURE__ */ f({
994
+ }, xt = { key: 0 }, St = { key: 0 }, Ct = "font-bold", wt = /* @__PURE__ */ p({
1005
995
  __name: "EuroAmount",
1006
996
  props: {
1007
997
  amount: {
@@ -1020,21 +1010,21 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1020
1010
  }
1021
1011
  },
1022
1012
  setup(t) {
1023
- let n = t, i = r(() => n.amount !== null && n.amount !== void 0), s = r(() => i.value && n.amount < 0), c = r(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = r(() => s.value || c.value), d = r(() => !s.value && !c.value && !(n.beforeAmount === null || n.beforeAmount === void 0));
1024
- return (n, r) => (x(), o(e, null, [i.value && d.value ? (x(), o("span", vt, [u(k(t.amount) + " ", 1), t.showCurrency ? (x(), o("span", yt, "€")) : a("", !0)])) : a("", !0), i.value && !d.value ? (x(), o("span", {
1013
+ let n = t, r = i(() => n.amount !== null && n.amount !== void 0), a = i(() => r.value && n.amount < 0), c = i(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = i(() => a.value || c.value), u = i(() => !a.value && !c.value && n.beforeAmount !== null && n.beforeAmount !== void 0);
1014
+ return (n, i) => (S(), s(e, null, [r.value && u.value ? (S(), s("span", bt, [d(A(t.amount) + " ", 1), t.showCurrency ? (S(), s("span", xt, "€")) : o("", !0)])) : o("", !0), r.value && !u.value ? (S(), s("span", {
1025
1015
  key: 1,
1026
- class: h([xt, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
1027
- }, [u(k(t.amount) + " ", 1), t.showCurrency ? (x(), o("span", bt, "€")) : a("", !0)], 2)) : a("", !0)], 64));
1016
+ class: g([Ct, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
1017
+ }, [d(A(t.amount) + " ", 1), t.showCurrency ? (S(), s("span", St, "€")) : o("", !0)], 2)) : o("", !0)], 64));
1028
1018
  }
1029
- }), Ct = { "aria-label": "Pagination" }, wt = { class: "flex list-none p-0 m-0" }, Tt = [
1019
+ }), Tt = { "aria-label": "Pagination" }, Et = { class: "flex list-none p-0 m-0" }, Dt = [
1030
1020
  "aria-current",
1031
1021
  "aria-label",
1032
1022
  "onClick"
1033
- ], Et = {
1023
+ ], Ot = {
1034
1024
  key: 1,
1035
1025
  "aria-hidden": "true",
1036
1026
  class: "inline-block border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-not-allowed"
1037
- }, Dt = /* @__PURE__ */ f({
1027
+ }, kt = /* @__PURE__ */ p({
1038
1028
  __name: "Pagination",
1039
1029
  props: {
1040
1030
  totalItems: {
@@ -1048,44 +1038,44 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1048
1038
  },
1049
1039
  emits: ["page-changed"],
1050
1040
  setup(t, { emit: n }) {
1051
- let r = t, i = w(1), a = w(0), c = w([]), l = n;
1041
+ let r = t, i = T(1), a = T(0), o = T([]), l = n;
1052
1042
  function u(e) {
1053
1043
  if (a.value <= 5) {
1054
- c.value = Array.from({ length: a.value }, (e, t) => t + 1);
1044
+ o.value = Array.from({ length: a.value }, (e, t) => t + 1);
1055
1045
  return;
1056
1046
  }
1057
1047
  let t = [], n = Math.max(1, e - 2), r = Math.min(a.value, e + 2);
1058
1048
  n > 1 && (t.push(1), n > 2 && t.push(0));
1059
1049
  for (let e = n; e <= r; e++) t.push(e);
1060
- r < a.value && (r < a.value - 1 && t.push(0), t.push(a.value)), c.value = t;
1050
+ r < a.value && (r < a.value - 1 && t.push(0), t.push(a.value)), o.value = t;
1061
1051
  }
1062
1052
  function d(e) {
1063
1053
  e === i.value || e < 1 || e > a.value || (i.value = e, u(e), l("page-changed", e));
1064
1054
  }
1065
1055
  return P(() => [r.totalItems, r.itemsPerPage], () => {
1066
1056
  a.value = Math.ceil(r.totalItems / r.itemsPerPage), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
1067
- }, { immediate: !0 }), (t, n) => (x(), o("nav", Ct, [s("ul", wt, [(x(!0), o(e, null, T(c.value, (e, t) => (x(), o("li", {
1057
+ }, { immediate: !0 }), (t, n) => (S(), s("nav", Tt, [c("ul", Et, [(S(!0), s(e, null, E(o.value, (e, t) => (S(), s("li", {
1068
1058
  key: t,
1069
1059
  class: "mr-1"
1070
- }, [e === 0 ? (x(), o("span", Et, "...")) : (x(), o("button", {
1060
+ }, [e === 0 ? (S(), s("span", Ot, "...")) : (S(), s("button", {
1071
1061
  key: 0,
1072
1062
  type: "button",
1073
1063
  "aria-current": e === i.value ? "page" : void 0,
1074
1064
  "aria-label": `Go to page ${e}`,
1075
1065
  onClick: (t) => d(e),
1076
- class: h(["inline-block min-w-[44px] border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-pointer transition-colors hover:bg-gray-300 dark:hover:bg-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", { "active font-bold bg-gray-200 dark:bg-gray-700": e === i.value }])
1077
- }, k(e), 11, Tt))]))), 128))])]));
1066
+ class: g(["inline-block min-w-[44px] border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-pointer transition-colors hover:bg-gray-300 dark:hover:bg-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", { "active font-bold bg-gray-200 dark:bg-gray-700": e === i.value }])
1067
+ }, A(e), 11, Dt))]))), 128))])]));
1078
1068
  }
1079
- }), Ot = { key: 0 }, kt = {
1069
+ }), At = { key: 0 }, jt = {
1080
1070
  key: 0,
1081
1071
  class: "flex items-center space-x-2"
1082
- }, At = {
1072
+ }, Mt = {
1083
1073
  key: 1,
1084
1074
  class: "flex items-center space-x-2"
1085
- }, jt = {
1075
+ }, Nt = {
1086
1076
  key: 2,
1087
1077
  class: "flex items-center space-x-2"
1088
- }, Mt = /* @__PURE__ */ f({
1078
+ }, Pt = /* @__PURE__ */ p({
1089
1079
  __name: "TrendArrow",
1090
1080
  props: {
1091
1081
  number: {
@@ -1098,58 +1088,58 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1098
1088
  }
1099
1089
  },
1100
1090
  setup(e) {
1101
- let t = e, n = r(() => t.number !== null && t.number !== void 0 && t.number < 0), i = r(() => t.number === 0);
1102
- return (r, s) => e.number !== null && e.number !== void 0 ? (x(), o("div", Ot, [n.value ? (x(), o("span", kt, [d(Pe, { color: A(H).RED }, {
1103
- default: F(() => [u(k(e.number) + k(t.icon), 1)]),
1091
+ let t = e, n = i(() => t.number !== null && t.number !== void 0 && t.number < 0), r = i(() => t.number === 0);
1092
+ return (i, a) => e.number !== null && e.number !== void 0 ? (S(), s("div", At, [n.value ? (S(), s("span", jt, [f(Fe, { color: j(H).RED }, {
1093
+ default: F(() => [d(A(e.number) + A(t.icon), 1)]),
1104
1094
  _: 1
1105
- }, 8, ["color"]), d(A(re), { class: "h-5 w-5 text-red-500" })])) : i.value ? (x(), o("span", At, [d(Pe, { color: A(H).GRAY }, {
1106
- default: F(() => [u(k(e.number) + k(t.icon), 1)]),
1095
+ }, 8, ["color"]), f(j(ie), { class: "h-5 w-5 text-red-500" })])) : r.value ? (S(), s("span", Mt, [f(Fe, { color: j(H).GRAY }, {
1096
+ default: F(() => [d(A(e.number) + A(t.icon), 1)]),
1107
1097
  _: 1
1108
- }, 8, ["color"]), d(A(be), { class: "h-5 w-5 text-gray-400" })])) : (x(), o("span", jt, [d(Pe, { color: A(H).GREEN }, {
1109
- default: F(() => [u(k(e.number) + k(t.icon), 1)]),
1098
+ }, 8, ["color"]), f(j(xe), { class: "h-5 w-5 text-gray-400" })])) : (S(), s("span", Nt, [f(Fe, { color: j(H).GREEN }, {
1099
+ default: F(() => [d(A(e.number) + A(t.icon), 1)]),
1110
1100
  _: 1
1111
- }, 8, ["color"]), d(A(ie), { class: "h-5 w-5 text-green-500" })]))])) : a("", !0);
1101
+ }, 8, ["color"]), f(j(ae), { class: "h-5 w-5 text-green-500" })]))])) : o("", !0);
1112
1102
  }
1113
1103
  });
1114
1104
  //#endregion
1115
1105
  //#region src/composables/useThemeClasses.ts
1116
- function Y() {
1106
+ function J() {
1117
1107
  let { isDark: e } = V();
1118
- return S({
1119
- card: r(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
1120
- cardAlt: r(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
1121
- pageBg: r(() => e.value ? "bg-gray-900" : "bg-gray-50"),
1122
- border: r(() => e.value ? "border-gray-700" : "border-gray-200"),
1123
- divider: r(() => e.value ? "border-gray-800" : "border-gray-100"),
1124
- primaryText: r(() => e.value ? "text-white" : "text-gray-900"),
1125
- primaryTextSoft: r(() => e.value ? "text-gray-100" : "text-gray-800"),
1126
- bodyText: r(() => e.value ? "text-gray-200" : "text-gray-700"),
1127
- label: r(() => e.value ? "text-gray-300" : "text-gray-700"),
1128
- mutedText: r(() => e.value ? "text-gray-400" : "text-gray-600"),
1129
- subtleText: r(() => e.value ? "text-gray-500" : "text-gray-600"),
1130
- dimText: r(() => e.value ? "text-gray-500" : "text-gray-400"),
1131
- dimTextAlt: r(() => e.value ? "text-gray-400" : "text-gray-500"),
1132
- illustration: r(() => e.value ? "text-gray-600" : "text-gray-300"),
1133
- input: r(() => e.value ? "bg-gray-700 border-gray-600 text-white" : "bg-gray-50 border-gray-300 text-gray-900"),
1134
- inputWithPlaceholder: r(() => e.value ? "bg-gray-700 border-gray-600 text-white placeholder-gray-400" : "bg-gray-50 border-gray-300 text-gray-900 placeholder-gray-500"),
1135
- ghostButton: r(() => e.value ? "bg-gray-800 text-gray-200 border-gray-600 hover:bg-gray-700" : "bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),
1136
- emeraldText: r(() => e.value ? "text-emerald-400" : "text-emerald-600"),
1137
- amberText: r(() => e.value ? "text-amber-400" : "text-amber-600"),
1138
- amberTextStrong: r(() => e.value ? "text-amber-300" : "text-amber-700"),
1139
- redText: r(() => e.value ? "text-red-400" : "text-red-500")
1108
+ return C({
1109
+ card: i(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
1110
+ cardAlt: i(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
1111
+ pageBg: i(() => e.value ? "bg-gray-900" : "bg-gray-50"),
1112
+ border: i(() => e.value ? "border-gray-700" : "border-gray-200"),
1113
+ divider: i(() => e.value ? "border-gray-800" : "border-gray-100"),
1114
+ primaryText: i(() => e.value ? "text-white" : "text-gray-900"),
1115
+ primaryTextSoft: i(() => e.value ? "text-gray-100" : "text-gray-800"),
1116
+ bodyText: i(() => e.value ? "text-gray-200" : "text-gray-700"),
1117
+ label: i(() => e.value ? "text-gray-300" : "text-gray-700"),
1118
+ mutedText: i(() => e.value ? "text-gray-400" : "text-gray-600"),
1119
+ subtleText: i(() => e.value ? "text-gray-500" : "text-gray-600"),
1120
+ dimText: i(() => e.value ? "text-gray-500" : "text-gray-400"),
1121
+ dimTextAlt: i(() => e.value ? "text-gray-400" : "text-gray-500"),
1122
+ illustration: i(() => e.value ? "text-gray-600" : "text-gray-300"),
1123
+ input: i(() => e.value ? "bg-gray-700 border-gray-600 text-white" : "bg-gray-50 border-gray-300 text-gray-900"),
1124
+ inputWithPlaceholder: i(() => e.value ? "bg-gray-700 border-gray-600 text-white placeholder-gray-400" : "bg-gray-50 border-gray-300 text-gray-900 placeholder-gray-500"),
1125
+ ghostButton: i(() => e.value ? "bg-gray-800 text-gray-200 border-gray-600 hover:bg-gray-700" : "bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),
1126
+ emeraldText: i(() => e.value ? "text-emerald-400" : "text-emerald-600"),
1127
+ amberText: i(() => e.value ? "text-amber-400" : "text-amber-600"),
1128
+ amberTextStrong: i(() => e.value ? "text-amber-300" : "text-amber-700"),
1129
+ redText: i(() => e.value ? "text-red-400" : "text-red-500")
1140
1130
  });
1141
1131
  }
1142
1132
  //#endregion
1143
1133
  //#region src/composables/useEscapeKey.ts
1144
- function Nt(e) {
1134
+ function Ft(e) {
1145
1135
  function t(t) {
1146
1136
  t.key === "Escape" && e();
1147
1137
  }
1148
- v(() => document.addEventListener("keydown", t)), _(() => document.removeEventListener("keydown", t));
1138
+ y(() => document.addEventListener("keydown", t)), v(() => document.removeEventListener("keydown", t));
1149
1139
  }
1150
1140
  //#endregion
1151
1141
  //#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
1152
- var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-w-0" }, It = { class: "p-6 overflow-y-auto flex-1" }, Lt = { class: "p-6" }, Rt = { class: "flex items-start gap-4" }, zt = { class: "flex-1" }, Bt = { class: "mt-4" }, Vt = { class: "mt-6 flex gap-3 justify-end" }, Ht = /* @__PURE__ */ f({
1142
+ var It = { class: "flex items-start gap-4 min-w-0" }, Lt = { class: "flex-1 min-w-0" }, Rt = { class: "p-6 overflow-y-auto flex-1" }, zt = { class: "p-6" }, Bt = { class: "flex items-start gap-4" }, Vt = { class: "flex-1" }, Ht = { class: "mt-4" }, Ut = { class: "mt-6 flex gap-3 justify-end" }, Wt = /* @__PURE__ */ p({
1153
1143
  __name: "BaseModalShell",
1154
1144
  props: {
1155
1145
  title: {},
@@ -1169,55 +1159,55 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
1169
1159
  },
1170
1160
  emits: ["cancel", "backdrop"],
1171
1161
  setup(e, { emit: n }) {
1172
- let c = e, l = n, { isDark: u } = V(), d = Y(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = r(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = r(() => c.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1173
- function g() {
1174
- l("backdrop"), c.manualClose || l("cancel");
1162
+ let r = e, l = n, { isDark: u } = V(), d = J(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = i(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = i(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1163
+ function h() {
1164
+ l("backdrop"), r.manualClose || l("cancel");
1175
1165
  }
1176
- return Nt(() => {
1177
- c.manualClose || l("cancel");
1178
- }), (n, r) => (x(), i(t, { to: "body" }, [s("div", {
1166
+ return Ft(() => {
1167
+ r.manualClose || l("cancel");
1168
+ }), (n, r) => (S(), a(t, { to: "body" }, [c("div", {
1179
1169
  class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
1180
1170
  role: "dialog",
1181
1171
  "aria-modal": "true",
1182
1172
  "aria-labelledby": f,
1183
- onClick: g
1184
- }, [e.scrollable ? (x(), o("div", {
1173
+ onClick: h
1174
+ }, [e.scrollable ? (S(), s("div", {
1185
1175
  key: 0,
1186
- class: h(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
1176
+ class: g(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
1187
1177
  onClick: r[0] ||= L(() => {}, ["stop"])
1188
1178
  }, [
1189
- s("div", { class: h(["flex items-start justify-between gap-4 p-6 border-b shrink-0", A(d).border]) }, [s("div", Pt, [E(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(x(), i(O(e.icon), {
1190
- class: h(["h-6 w-6", e.iconClass]),
1179
+ c("div", { class: g(["flex items-start justify-between gap-4 p-6 border-b shrink-0", j(d).border]) }, [c("div", It, [D(n.$slots, "icon", {}, () => [c("div", { class: g(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(S(), a(k(e.icon), {
1180
+ class: g(["h-6 w-6", e.iconClass]),
1191
1181
  "aria-hidden": "true"
1192
- }, null, 8, ["class"]))], 2)]), s("div", Ft, [s("h3", {
1182
+ }, null, 8, ["class"]))], 2)]), c("div", Lt, [c("h3", {
1193
1183
  id: f,
1194
- class: h(["text-lg font-medium", A(d).primaryText])
1195
- }, k(e.title), 3), e.subtitle ? (x(), o("p", {
1184
+ class: g(["text-lg font-medium", j(d).primaryText])
1185
+ }, A(e.title), 3), e.subtitle ? (S(), s("p", {
1196
1186
  key: 0,
1197
- class: h(["text-sm mt-1 break-all", A(d).mutedText])
1198
- }, k(e.subtitle), 3)) : a("", !0)])]), E(n.$slots, "header-actions")], 2),
1199
- s("div", It, [E(n.$slots, "default")]),
1200
- n.$slots.footer ? (x(), o("div", {
1187
+ class: g(["text-sm mt-1 break-all", j(d).mutedText])
1188
+ }, A(e.subtitle), 3)) : o("", !0)])]), D(n.$slots, "header-actions")], 2),
1189
+ c("div", Rt, [D(n.$slots, "default")]),
1190
+ n.$slots.footer ? (S(), s("div", {
1201
1191
  key: 0,
1202
- class: h(["flex gap-3 justify-end p-6 border-t shrink-0", A(d).border])
1203
- }, [E(n.$slots, "footer")], 2)) : a("", !0)
1204
- ], 2)) : (x(), o("div", {
1192
+ class: g(["flex gap-3 justify-end p-6 border-t shrink-0", j(d).border])
1193
+ }, [D(n.$slots, "footer")], 2)) : o("", !0)
1194
+ ], 2)) : (S(), s("div", {
1205
1195
  key: 1,
1206
- class: h(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
1196
+ class: g(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
1207
1197
  onClick: r[1] ||= L(() => {}, ["stop"])
1208
- }, [s("div", Lt, [
1209
- s("div", Rt, [E(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(x(), i(O(e.icon), {
1210
- class: h(["h-6 w-6", e.iconClass]),
1198
+ }, [c("div", zt, [
1199
+ c("div", Bt, [D(n.$slots, "icon", {}, () => [c("div", { class: g(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(S(), a(k(e.icon), {
1200
+ class: g(["h-6 w-6", e.iconClass]),
1211
1201
  "aria-hidden": "true"
1212
- }, null, 8, ["class"]))], 2)]), s("div", zt, [s("h3", {
1202
+ }, null, 8, ["class"]))], 2)]), c("div", Vt, [c("h3", {
1213
1203
  id: f,
1214
- class: h(["text-lg font-medium", A(d).primaryText])
1215
- }, k(e.title), 3)])]),
1216
- s("div", Bt, [E(n.$slots, "default")]),
1217
- s("div", Vt, [E(n.$slots, "footer")])
1204
+ class: g(["text-lg font-medium", j(d).primaryText])
1205
+ }, A(e.title), 3)])]),
1206
+ c("div", Ht, [D(n.$slots, "default")]),
1207
+ c("div", Ut, [D(n.$slots, "footer")])
1218
1208
  ])], 2))])]));
1219
1209
  }
1220
- }), Ut = ["aria-expanded"], Wt = { class: "flex items-center gap-3" }, Gt = /* @__PURE__ */ f({
1210
+ }), Gt = ["aria-expanded"], Kt = { class: "flex items-center gap-3" }, qt = /* @__PURE__ */ p({
1221
1211
  __name: "BaseCollapsibleSection",
1222
1212
  props: {
1223
1213
  title: {},
@@ -1227,35 +1217,35 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
1227
1217
  },
1228
1218
  emits: ["toggle"],
1229
1219
  setup(e, { emit: t }) {
1230
- let n = e, i = t, { isDark: c } = V(), l = Y(), u = r(() => c.value ? "text-gray-100" : "text-gray-700"), d = r(() => c.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = r(() => c.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = r(() => n.bodyClass === void 0 ? c.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1231
- return (t, n) => (x(), o("section", { class: h(["rounded-xl border transition-colors", A(l).cardAlt]) }, [s("button", {
1220
+ let n = e, r = t, { isDark: a } = V(), l = J(), u = i(() => a.value ? "text-gray-100" : "text-gray-700"), d = i(() => a.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = i(() => a.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = i(() => n.bodyClass === void 0 ? a.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1221
+ return (t, n) => (S(), s("section", { class: g(["rounded-xl border transition-colors", j(l).cardAlt]) }, [c("button", {
1232
1222
  type: "button",
1233
- class: h(["w-full flex items-center justify-between p-4 text-left transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [d.value, e.collapsed ? "rounded-xl" : "rounded-t-xl"]]),
1223
+ class: g(["w-full flex items-center justify-between p-4 text-left transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [d.value, e.collapsed ? "rounded-xl" : "rounded-t-xl"]]),
1234
1224
  "aria-expanded": !e.collapsed,
1235
- onClick: n[0] ||= (e) => i("toggle")
1236
- }, [s("div", Wt, [s("h2", { class: h(["text-base font-semibold", u.value]) }, k(e.title), 3), e.badge ? (x(), o("span", {
1225
+ onClick: n[0] ||= (e) => r("toggle")
1226
+ }, [c("div", Kt, [c("h2", { class: g(["text-base font-semibold", u.value]) }, A(e.title), 3), e.badge ? (S(), s("span", {
1237
1227
  key: 0,
1238
- class: h(["text-xs px-2 py-0.5 rounded-full", f.value])
1239
- }, k(e.badge), 3)) : a("", !0)]), (x(), o("svg", {
1240
- class: h(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", A(l).dimTextAlt]]),
1228
+ class: g(["text-xs px-2 py-0.5 rounded-full", f.value])
1229
+ }, A(e.badge), 3)) : o("", !0)]), (S(), s("svg", {
1230
+ class: g(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", j(l).dimTextAlt]]),
1241
1231
  fill: "none",
1242
1232
  viewBox: "0 0 24 24",
1243
1233
  stroke: "currentColor",
1244
1234
  "stroke-width": "2",
1245
1235
  "aria-hidden": "true"
1246
- }, [...n[1] ||= [s("path", {
1236
+ }, [...n[1] ||= [c("path", {
1247
1237
  "stroke-linecap": "round",
1248
1238
  "stroke-linejoin": "round",
1249
1239
  d: "M19 9l-7 7-7-7"
1250
- }, null, -1)]], 2))], 10, Ut), I(s("div", { class: h(["p-6 border-t rounded-b-xl", [A(l).border, p.value]]) }, [E(t.$slots, "default")], 2), [[te, !e.collapsed]])], 2));
1240
+ }, null, -1)]], 2))], 10, Gt), I(c("div", { class: g(["p-6 border-t rounded-b-xl", [j(l).border, p.value]]) }, [D(t.$slots, "default")], 2), [[ne, !e.collapsed]])], 2));
1251
1241
  }
1252
- }), Kt = ["disabled"], qt = ["disabled"], Jt = {
1242
+ }), Jt = ["disabled"], Yt = ["disabled"], Xt = {
1253
1243
  key: 0,
1254
1244
  class: "w-4 h-4 animate-spin",
1255
1245
  fill: "none",
1256
1246
  viewBox: "0 0 24 24",
1257
1247
  "aria-hidden": "true"
1258
- }, Yt = /* @__PURE__ */ f({
1248
+ }, Zt = /* @__PURE__ */ p({
1259
1249
  __name: "BaseConfirmModal",
1260
1250
  props: {
1261
1251
  title: {},
@@ -1271,44 +1261,44 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
1271
1261
  },
1272
1262
  emits: ["confirm", "cancel"],
1273
1263
  setup(e, { emit: t }) {
1274
- let n = e, r = t, { isDark: c } = V(), l = Y();
1275
- function d() {
1264
+ let n = e, r = t, { isDark: i } = V(), l = J();
1265
+ function u() {
1276
1266
  n.submitting || r("confirm");
1277
1267
  }
1278
1268
  function f() {
1279
1269
  n.submitting || r("cancel");
1280
1270
  }
1281
- return (t, n) => (x(), i(Ht, {
1271
+ return (t, n) => (S(), a(Wt, {
1282
1272
  title: e.title,
1283
- icon: A(ge),
1284
- "icon-bg-class": e.variant === "danger" ? A(c) ? "bg-red-900/30" : "bg-red-50" : A(c) ? "bg-amber-900/30" : "bg-amber-50",
1273
+ icon: j(_e),
1274
+ "icon-bg-class": e.variant === "danger" ? j(i) ? "bg-red-900/30" : "bg-red-50" : j(i) ? "bg-amber-900/30" : "bg-amber-50",
1285
1275
  "icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
1286
1276
  "manual-close": e.submitting,
1287
1277
  onCancel: f
1288
1278
  }, {
1289
- footer: F(() => [s("button", {
1279
+ footer: F(() => [c("button", {
1290
1280
  type: "button",
1291
1281
  disabled: e.submitting,
1292
- class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [A(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1282
+ class: g(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [j(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1293
1283
  onClick: f
1294
- }, k(e.cancelText), 11, Kt), s("button", {
1284
+ }, A(e.cancelText), 11, Jt), c("button", {
1295
1285
  type: "button",
1296
1286
  disabled: e.submitting,
1297
- class: h(["inline-flex items-center justify-center gap-2 px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2", [e.variant === "danger" ? "focus-visible:ring-red-500" : "focus-visible:ring-emerald-500", e.variant === "danger" ? e.submitting ? "bg-red-400 cursor-not-allowed" : "bg-red-600 hover:bg-red-700 cursor-pointer" : e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
1298
- onClick: d
1299
- }, [e.submitting ? (x(), o("svg", Jt, [...n[0] ||= [s("circle", {
1287
+ class: g(["inline-flex items-center justify-center gap-2 px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2", [e.variant === "danger" ? "focus-visible:ring-red-500" : "focus-visible:ring-emerald-500", e.variant === "danger" ? e.submitting ? "bg-red-400 cursor-not-allowed" : "bg-red-600 hover:bg-red-700 cursor-pointer" : e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
1288
+ onClick: u
1289
+ }, [e.submitting ? (S(), s("svg", Xt, [...n[0] ||= [c("circle", {
1300
1290
  class: "opacity-25",
1301
1291
  cx: "12",
1302
1292
  cy: "12",
1303
1293
  r: "10",
1304
1294
  stroke: "currentColor",
1305
1295
  "stroke-width": "4"
1306
- }, null, -1), s("path", {
1296
+ }, null, -1), c("path", {
1307
1297
  class: "opacity-75",
1308
1298
  fill: "currentColor",
1309
1299
  d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
1310
- }, null, -1)]])) : a("", !0), u(" " + k(e.submitting ? e.submittingText : e.confirmText), 1)], 10, qt)]),
1311
- default: F(() => [E(t.$slots, "message", {}, () => [s("p", { class: h(["text-sm", A(c) ? "text-gray-300" : "text-gray-600"]) }, k(e.message), 3)]), E(t.$slots, "default")]),
1300
+ }, null, -1)]])) : o("", !0), d(" " + A(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Yt)]),
1301
+ default: F(() => [D(t.$slots, "message", {}, () => [c("p", { class: g(["text-sm", j(i) ? "text-gray-300" : "text-gray-600"]) }, A(e.message), 3)]), D(t.$slots, "default")]),
1312
1302
  _: 3
1313
1303
  }, 8, [
1314
1304
  "title",
@@ -1318,7 +1308,7 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
1318
1308
  "manual-close"
1319
1309
  ]));
1320
1310
  }
1321
- }), Xt = { class: "mt-4" }, Zt = ["placeholder"], Qt = ["disabled"], $t = /* @__PURE__ */ f({
1311
+ }), Qt = { class: "mt-4" }, $t = ["placeholder"], en = ["disabled"], tn = /* @__PURE__ */ p({
1322
1312
  __name: "BaseTextInputModal",
1323
1313
  props: {
1324
1314
  title: {},
@@ -1336,52 +1326,52 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
1336
1326
  },
1337
1327
  emits: ["confirm", "cancel"],
1338
1328
  setup(e, { emit: t }) {
1339
- let n = e, r = t, { isDark: a } = V(), o = Y(), l = w(n.initialValue), u = w(null);
1340
- v(async () => {
1341
- await m(), u.value?.focus();
1329
+ let n = e, r = t, { isDark: i } = V(), o = J(), s = T(n.initialValue), u = T(null);
1330
+ y(async () => {
1331
+ await h(), u.value?.focus();
1342
1332
  });
1343
1333
  function d() {
1344
- !l.value.trim() || n.submitting || r("confirm", l.value.trim());
1334
+ s.value.trim() && !n.submitting && r("confirm", s.value.trim());
1345
1335
  }
1346
1336
  function f() {
1347
1337
  r("cancel");
1348
1338
  }
1349
1339
  function p() {
1350
- l.value.trim() === (n.initialValue ?? "").trim() && f();
1340
+ s.value.trim() === (n.initialValue ?? "").trim() && f();
1351
1341
  }
1352
- return Nt(f), (t, n) => (x(), i(Ht, {
1342
+ return Ft(f), (t, n) => (S(), a(Wt, {
1353
1343
  title: e.title,
1354
- icon: A(me),
1344
+ icon: j(he),
1355
1345
  "manual-close": "",
1356
1346
  onBackdrop: p
1357
- }, c({
1358
- footer: F(() => [s("button", {
1347
+ }, l({
1348
+ footer: F(() => [c("button", {
1359
1349
  type: "button",
1360
- class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(o).ghostButton]),
1350
+ class: g(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", j(o).ghostButton]),
1361
1351
  onClick: f
1362
- }, k(e.cancelText), 3), s("button", {
1352
+ }, A(e.cancelText), 3), c("button", {
1363
1353
  type: "button",
1364
- disabled: !l.value.trim() || e.submitting,
1365
- class: h(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", [!l.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
1354
+ disabled: !s.value.trim() || e.submitting,
1355
+ class: g(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", [!s.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
1366
1356
  onClick: d
1367
- }, k(e.submitting ? e.submittingText : e.confirmText), 11, Qt)]),
1368
- default: F(() => [s("p", { class: h(["text-sm", A(a) ? "text-gray-300" : "text-gray-600"]) }, k(e.message), 3), s("div", Xt, [s("label", { class: h(["block text-sm font-medium mb-1", A(o).label]) }, k(e.inputLabel), 3), I(s("input", {
1357
+ }, A(e.submitting ? e.submittingText : e.confirmText), 11, en)]),
1358
+ default: F(() => [c("p", { class: g(["text-sm", j(i) ? "text-gray-300" : "text-gray-600"]) }, A(e.message), 3), c("div", Qt, [c("label", { class: g(["block text-sm font-medium mb-1", j(o).label]) }, A(e.inputLabel), 3), I(c("input", {
1369
1359
  ref_key: "nameInput",
1370
1360
  ref: u,
1371
- "onUpdate:modelValue": n[0] ||= (e) => l.value = e,
1361
+ "onUpdate:modelValue": n[0] ||= (e) => s.value = e,
1372
1362
  type: "text",
1373
1363
  placeholder: e.placeholder,
1374
- class: h(["w-full px-3 py-2 rounded-md border text-sm transition-colors", A(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"]),
1375
- onKeyup: ne(d, ["enter"])
1376
- }, null, 42, Zt), [[N, l.value]])])]),
1364
+ class: g(["w-full px-3 py-2 rounded-md border text-sm transition-colors", j(i) ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:outline-none focus:border-emerald-500" : "bg-white border-gray-300 text-gray-900 placeholder-gray-400 focus:outline-none focus:border-emerald-500"]),
1365
+ onKeyup: re(d, ["enter"])
1366
+ }, null, 42, $t), [[N, s.value]])])]),
1377
1367
  _: 2
1378
1368
  }, [t.$slots.icon ? {
1379
1369
  name: "icon",
1380
- fn: F(() => [E(t.$slots, "icon")]),
1370
+ fn: F(() => [D(t.$slots, "icon")]),
1381
1371
  key: "0"
1382
1372
  } : void 0]), 1032, ["title", "icon"]));
1383
1373
  }
1384
- }), en = { class: "flex items-center justify-center min-h-[60vh]" }, tn = { class: "text-center px-6" }, nn = /* @__PURE__ */ f({
1374
+ }), nn = { class: "flex items-center justify-center min-h-[60vh]" }, rn = { class: "text-center px-6" }, an = /* @__PURE__ */ p({
1385
1375
  __name: "BaseNotFoundPage",
1386
1376
  props: {
1387
1377
  code: { default: "404" },
@@ -1390,33 +1380,33 @@ var Pt = { class: "flex items-start gap-4 min-w-0" }, Ft = { class: "flex-1 min-
1390
1380
  homeLabel: { default: "Go home" }
1391
1381
  },
1392
1382
  setup(e) {
1393
- let t = e, n = Ee(), { isDark: r } = V(), i = Y();
1383
+ let t = e, n = De(), { isDark: r } = V(), i = J();
1394
1384
  function a() {
1395
1385
  n.push({ name: t.homeRouteName });
1396
1386
  }
1397
- return (t, n) => (x(), o("div", en, [s("div", tn, [
1398
- d(A(ge), { class: h(["w-16 h-16 mx-auto mb-4", A(i).illustration]) }, null, 8, ["class"]),
1399
- s("h1", { class: h(["text-4xl font-bold mb-2", A(r) ? "text-gray-200" : "text-gray-800"]) }, k(e.code), 3),
1400
- s("p", { class: h(["text-lg mb-6", A(i).dimTextAlt]) }, k(e.message), 3),
1401
- s("button", {
1387
+ return (t, n) => (S(), s("div", nn, [c("div", rn, [
1388
+ f(j(_e), { class: g(["w-16 h-16 mx-auto mb-4", j(i).illustration]) }, null, 8, ["class"]),
1389
+ c("h1", { class: g(["text-4xl font-bold mb-2", j(r) ? "text-gray-200" : "text-gray-800"]) }, A(e.code), 3),
1390
+ c("p", { class: g(["text-lg mb-6", j(i).dimTextAlt]) }, A(e.message), 3),
1391
+ c("button", {
1402
1392
  onClick: a,
1403
- class: h(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", A(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
1404
- }, k(e.homeLabel), 3)
1393
+ class: g(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", j(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
1394
+ }, A(e.homeLabel), 3)
1405
1395
  ])]));
1406
1396
  }
1407
- }), rn = w(!1);
1408
- function an() {
1397
+ }), on = T(!1);
1398
+ function sn() {
1409
1399
  function e() {
1410
- rn.value = !0;
1400
+ on.value = !0;
1411
1401
  }
1412
1402
  function t() {
1413
- rn.value = !1;
1403
+ on.value = !1;
1414
1404
  }
1415
1405
  function n() {
1416
- rn.value = !rn.value;
1406
+ on.value = !on.value;
1417
1407
  }
1418
1408
  return {
1419
- mobileOpen: rn,
1409
+ mobileOpen: on,
1420
1410
  open: e,
1421
1411
  close: t,
1422
1412
  toggle: n
@@ -1424,30 +1414,30 @@ function an() {
1424
1414
  }
1425
1415
  //#endregion
1426
1416
  //#region src/composables/useSidebarCollapse.ts
1427
- var X = w(!1), on = !1, sn = "mgv-sidebar-collapsed";
1428
- function cn(e) {
1429
- if (!on && (on = !0, sn = e, typeof window < "u")) {
1430
- let e = window.localStorage?.getItem(sn);
1431
- e && (X.value = e === "true"), p(!0).run(() => {
1432
- P(X, (e) => {
1433
- window.localStorage?.setItem(sn, String(e));
1417
+ var Y = T(!1), cn = !1, ln = "mgv-sidebar-collapsed";
1418
+ function un(e) {
1419
+ if (!cn && (cn = !0, ln = e, typeof window < "u")) {
1420
+ let e = window.localStorage?.getItem(ln);
1421
+ e && (Y.value = e === "true"), m(!0).run(() => {
1422
+ P(Y, (e) => {
1423
+ window.localStorage?.setItem(ln, String(e));
1434
1424
  });
1435
1425
  });
1436
1426
  }
1437
1427
  }
1438
- function ln(e) {
1439
- cn(e?.storageKey ?? sn);
1428
+ function dn(e) {
1429
+ un(e?.storageKey ?? ln);
1440
1430
  function t() {
1441
- X.value = !0;
1431
+ Y.value = !0;
1442
1432
  }
1443
1433
  function n() {
1444
- X.value = !1;
1434
+ Y.value = !1;
1445
1435
  }
1446
1436
  function r() {
1447
- X.value = !X.value;
1437
+ Y.value = !Y.value;
1448
1438
  }
1449
1439
  return {
1450
- collapsed: X,
1440
+ collapsed: Y,
1451
1441
  collapse: t,
1452
1442
  expand: n,
1453
1443
  toggle: r
@@ -1455,45 +1445,45 @@ function ln(e) {
1455
1445
  }
1456
1446
  //#endregion
1457
1447
  //#region src/composables/useNotifications.ts
1458
- var Z = w([]), un = w(!1), dn = r(() => Z.value.filter((e) => !e.read).length);
1459
- function fn() {
1448
+ var X = T([]), Z = T(!1), fn = i(() => X.value.filter((e) => !e.read).length);
1449
+ function pn() {
1460
1450
  function e() {
1461
- un.value = !0;
1451
+ Z.value = !0;
1462
1452
  }
1463
1453
  function t() {
1464
- un.value = !1;
1454
+ Z.value = !1;
1465
1455
  }
1466
1456
  function n() {
1467
- un.value = !un.value;
1457
+ Z.value = !Z.value;
1468
1458
  }
1469
1459
  function r(e) {
1470
- Z.value = e;
1460
+ X.value = e;
1471
1461
  }
1472
1462
  function i(e) {
1473
- Z.value = [e, ...Z.value];
1463
+ X.value = [e, ...X.value];
1474
1464
  }
1475
1465
  function a(e) {
1476
- Z.value = Z.value.filter((t) => t.id !== e);
1466
+ X.value = X.value.filter((t) => t.id !== e);
1477
1467
  }
1478
1468
  function o(e) {
1479
- Z.value = Z.value.map((t) => t.id === e ? {
1469
+ X.value = X.value.map((t) => t.id === e ? {
1480
1470
  ...t,
1481
1471
  read: !0
1482
1472
  } : t);
1483
1473
  }
1484
1474
  function s() {
1485
- Z.value = Z.value.map((e) => e.read ? e : {
1475
+ X.value = X.value.map((e) => e.read ? e : {
1486
1476
  ...e,
1487
1477
  read: !0
1488
1478
  });
1489
1479
  }
1490
1480
  function c() {
1491
- Z.value = [];
1481
+ X.value = [];
1492
1482
  }
1493
1483
  return {
1494
- notifications: Z,
1495
- unreadCount: dn,
1496
- open: un,
1484
+ notifications: X,
1485
+ unreadCount: fn,
1486
+ open: Z,
1497
1487
  openPanel: e,
1498
1488
  closePanel: t,
1499
1489
  togglePanel: n,
@@ -1507,26 +1497,26 @@ function fn() {
1507
1497
  }
1508
1498
  //#endregion
1509
1499
  //#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
1510
- var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }, hn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, gn = { class: "space-y-0.5" }, _n = [
1500
+ var mn = ["aria-label", "aria-expanded"], hn = { class: "flex flex-col h-full" }, gn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, _n = { class: "space-y-0.5" }, vn = [
1511
1501
  "aria-current",
1512
1502
  "title",
1513
1503
  "onClick"
1514
- ], vn = ["aria-label"], yn = { class: "relative shrink-0" }, bn = {
1504
+ ], yn = ["aria-label"], bn = { class: "relative shrink-0" }, xn = {
1515
1505
  key: 0,
1516
1506
  class: "absolute -top-1.5 -right-1.5 min-w-4 h-4 px-1 rounded-full bg-red-500 text-white text-[10px] font-semibold leading-4 text-center"
1517
- }, xn = [
1507
+ }, Sn = [
1518
1508
  "title",
1519
1509
  "aria-label",
1520
1510
  "aria-pressed"
1521
- ], Sn = [
1511
+ ], Cn = [
1522
1512
  "title",
1523
1513
  "aria-label",
1524
1514
  "aria-pressed"
1525
- ], Cn = /*#__PURE__*/ ((e, t) => {
1515
+ ], wn = /*#__PURE__*/ ((e, t) => {
1526
1516
  let n = e.__vccOpts || e;
1527
1517
  for (let [e, r] of t) n[e] = r;
1528
1518
  return n;
1529
- })(/* @__PURE__ */ f({
1519
+ })(/* @__PURE__ */ p({
1530
1520
  __name: "BaseSidebar",
1531
1521
  props: {
1532
1522
  sections: {},
@@ -1547,151 +1537,151 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1547
1537
  }
1548
1538
  },
1549
1539
  setup(t) {
1550
- let n = t, c = Ee(), l = Te(), { isDark: f, toggleTheme: p } = V(), { mobileOpen: g, close: _, toggle: v } = an(), { collapsed: y, toggle: b } = ln(), { unreadCount: S, togglePanel: C } = fn(), D = r(() => n.collapsible && y.value), ee = w(null), j = null;
1551
- P(g, async (e) => {
1552
- e ? (j = document.activeElement instanceof HTMLElement ? document.activeElement : null, await m(), ee.value?.focus()) : (j?.focus(), j = null);
1540
+ let n = t, r = De(), l = Ee(), { isDark: u, toggleTheme: p } = V(), { mobileOpen: m, close: _, toggle: v } = sn(), { collapsed: y, toggle: b } = dn(), { unreadCount: x, togglePanel: C } = pn(), w = i(() => n.collapsible && y.value), O = T(null), ee = null;
1541
+ P(m, async (e) => {
1542
+ e ? (ee = document.activeElement instanceof HTMLElement ? document.activeElement : null, await h(), O.value?.focus()) : (ee?.focus(), ee = null);
1553
1543
  });
1554
1544
  function M() {
1555
- c.push({ name: n.homeRouteName }), _();
1545
+ r.push({ name: n.homeRouteName }), _();
1556
1546
  }
1557
- function N(e) {
1547
+ function te(e) {
1558
1548
  return l.name === e;
1559
1549
  }
1560
- function te(e) {
1561
- c.push({ name: e }), _();
1550
+ function N(e) {
1551
+ r.push({ name: e }), _();
1562
1552
  }
1563
- return (n, r) => (x(), o("div", null, [
1564
- s("div", { class: h(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", A(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [s("button", {
1553
+ return (n, r) => (S(), s("div", null, [
1554
+ c("div", { class: g(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", j(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [c("button", {
1565
1555
  type: "button",
1566
1556
  onClick: M,
1567
1557
  class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
1568
1558
  "aria-label": "Go to home"
1569
- }, [E(n.$slots, "logo", { size: 28 }, void 0, !0)]), s("button", {
1559
+ }, [D(n.$slots, "logo", { size: 28 }, void 0, !0)]), c("button", {
1570
1560
  type: "button",
1571
- onClick: r[0] ||= (...e) => A(v) && A(v)(...e),
1572
- class: h(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1573
- "aria-label": A(g) ? "Close navigation menu" : "Open navigation menu",
1574
- "aria-expanded": A(g)
1575
- }, [A(g) ? (x(), i(A(Ce), {
1561
+ onClick: r[0] ||= (...e) => j(v) && j(v)(...e),
1562
+ class: g(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", j(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1563
+ "aria-label": j(m) ? "Close navigation menu" : "Open navigation menu",
1564
+ "aria-expanded": j(m)
1565
+ }, [j(m) ? (S(), a(j(we), {
1576
1566
  key: 1,
1577
1567
  class: "w-6 h-6",
1578
1568
  "aria-hidden": "true"
1579
- })) : (x(), i(A(ae), {
1569
+ })) : (S(), a(j(oe), {
1580
1570
  key: 0,
1581
1571
  class: "w-6 h-6",
1582
1572
  "aria-hidden": "true"
1583
- }))], 10, pn)], 2),
1584
- A(g) ? (x(), o("div", {
1573
+ }))], 10, mn)], 2),
1574
+ j(m) ? (S(), s("div", {
1585
1575
  key: 0,
1586
1576
  class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
1587
1577
  "aria-hidden": "true",
1588
- onClick: r[1] ||= (...e) => A(_) && A(_)(...e)
1589
- })) : a("", !0),
1590
- s("aside", {
1578
+ onClick: r[1] ||= (...e) => j(_) && j(_)(...e)
1579
+ })) : o("", !0),
1580
+ c("aside", {
1591
1581
  role: "navigation",
1592
1582
  "aria-label": "Main navigation",
1593
- class: h(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
1594
- A(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
1595
- A(g) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
1596
- t.collapsible && A(y) ? "lg:w-16" : "lg:w-60"
1583
+ class: g(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
1584
+ j(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
1585
+ j(m) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
1586
+ t.collapsible && j(y) ? "lg:w-16" : "lg:w-60"
1597
1587
  ]])
1598
- }, [s("div", mn, [
1599
- s("div", { class: h(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": D.value }]) }, [s("button", {
1588
+ }, [c("div", hn, [
1589
+ c("div", { class: g(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": w.value }]) }, [c("button", {
1600
1590
  type: "button",
1601
1591
  onClick: M,
1602
1592
  class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
1603
1593
  "aria-label": "Go to home"
1604
- }, [E(n.$slots, "logo", { size: D.value ? 36 : 52 }, void 0, !0)]), s("button", {
1594
+ }, [D(n.$slots, "logo", { size: w.value ? 36 : 52 }, void 0, !0)]), c("button", {
1605
1595
  ref_key: "closeMobileButton",
1606
- ref: ee,
1596
+ ref: O,
1607
1597
  type: "button",
1608
- onClick: r[2] ||= (...e) => A(_) && A(_)(...e),
1609
- class: h(["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", A(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1598
+ onClick: r[2] ||= (...e) => j(_) && j(_)(...e),
1599
+ class: g(["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", j(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1610
1600
  "aria-label": "Close navigation menu"
1611
- }, [d(A(Ce), {
1601
+ }, [f(j(we), {
1612
1602
  class: "w-5 h-5",
1613
1603
  "aria-hidden": "true"
1614
1604
  })], 2)], 2),
1615
- s("nav", hn, [(x(!0), o(e, null, T(t.sections, (t) => (x(), o("div", { key: t.title }, [s("p", { class: h(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": D.value }]) }, k(t.title), 3), s("ul", gn, [(x(!0), o(e, null, T(t.items, (e) => (x(), o("li", { key: e.name }, [s("button", {
1605
+ c("nav", gn, [(S(!0), s(e, null, E(t.sections, (t) => (S(), s("div", { key: t.title }, [c("p", { class: g(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": w.value }]) }, A(t.title), 3), c("ul", _n, [(S(!0), s(e, null, E(t.items, (e) => (S(), s("li", { key: e.name }, [c("button", {
1616
1606
  type: "button",
1617
- "aria-current": N(e.name) ? "page" : void 0,
1618
- title: D.value ? e.label : void 0,
1619
- onClick: (t) => te(e.name),
1620
- class: h(["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", [N(e.name) ? A(f) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
1621
- }, [(x(), i(O(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s("span", { class: h({ "lg:hidden": D.value }) }, k(e.label), 3)], 10, _n)]))), 128))])]))), 128))]),
1622
- s("div", { class: h(["px-4 py-4 border-t transition-colors space-y-3", A(f) ? "border-gray-800" : "border-gray-200"]) }, [
1623
- t.showNotifications ? (x(), o("button", {
1607
+ "aria-current": te(e.name) ? "page" : void 0,
1608
+ title: w.value ? e.label : void 0,
1609
+ onClick: (t) => N(e.name),
1610
+ class: g(["flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors w-full text-left cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [te(e.name) ? j(u) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : j(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": w.value }]])
1611
+ }, [(S(), a(k(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), c("span", { class: g({ "lg:hidden": w.value }) }, A(e.label), 3)], 10, vn)]))), 128))])]))), 128))]),
1612
+ c("div", { class: g(["px-4 py-4 border-t transition-colors space-y-3", j(u) ? "border-gray-800" : "border-gray-200"]) }, [
1613
+ t.showNotifications ? (S(), s("button", {
1624
1614
  key: 0,
1625
1615
  type: "button",
1626
- onClick: r[3] ||= (...e) => A(C) && A(C)(...e),
1616
+ onClick: r[3] ||= (...e) => j(C) && j(C)(...e),
1627
1617
  title: "Notifications",
1628
- "aria-label": A(S) > 0 ? `Notifications, ${A(S)} unread` : "Notifications",
1629
- class: h(["relative flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
1630
- }, [s("span", yn, [d(A(oe), {
1618
+ "aria-label": j(x) > 0 ? `Notifications, ${j(x)} unread` : "Notifications",
1619
+ class: g(["relative flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [j(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": w.value }]])
1620
+ }, [c("span", bn, [f(j(se), {
1631
1621
  class: "w-[18px] h-[18px]",
1632
1622
  "aria-hidden": "true"
1633
- }), A(S) > 0 ? (x(), o("span", bn, k(A(S) > 99 ? "99+" : A(S)), 1)) : a("", !0)]), s("span", { class: h({ "lg:hidden": D.value }) }, "Notifications", 2)], 10, vn)) : a("", !0),
1634
- t.showThemeToggle ? (x(), o("button", {
1623
+ }), j(x) > 0 ? (S(), s("span", xn, A(j(x) > 99 ? "99+" : j(x)), 1)) : o("", !0)]), c("span", { class: g({ "lg:hidden": w.value }) }, "Notifications", 2)], 10, yn)) : o("", !0),
1624
+ t.showThemeToggle ? (S(), s("button", {
1635
1625
  key: 1,
1636
1626
  type: "button",
1637
- onClick: r[4] ||= (...e) => A(p) && A(p)(...e),
1638
- title: A(f) ? "Switch to light mode" : "Switch to dark mode",
1639
- "aria-label": A(f) ? "Switch to light mode" : "Switch to dark mode",
1640
- "aria-pressed": A(f),
1641
- class: h(["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", [A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
1627
+ onClick: r[4] ||= (...e) => j(p) && j(p)(...e),
1628
+ title: j(u) ? "Switch to light mode" : "Switch to dark mode",
1629
+ "aria-label": j(u) ? "Switch to light mode" : "Switch to dark mode",
1630
+ "aria-pressed": j(u),
1631
+ class: g(["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", [j(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": w.value }]])
1642
1632
  }, [
1643
- (x(), i(O(A(f) ? A(Se) : A(xe)), {
1644
- class: h(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": D.value }]),
1633
+ (S(), a(k(j(u) ? j(Ce) : j(Se)), {
1634
+ class: g(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": w.value }]),
1645
1635
  "aria-hidden": "true"
1646
1636
  }, null, 8, ["class"])),
1647
- s("span", { class: h({ "lg:hidden": D.value }) }, k(A(f) ? "Switch to light" : "Switch to dark"), 3),
1648
- s("span", { class: h(["ml-auto relative w-9 h-5 rounded-full transition-colors", [A(f) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": D.value }]]) }, [s("span", { class: h(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", A(f) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
1649
- ], 10, xn)) : a("", !0),
1650
- t.collapsible ? (x(), o("button", {
1637
+ c("span", { class: g({ "lg:hidden": w.value }) }, A(j(u) ? "Switch to light" : "Switch to dark"), 3),
1638
+ c("span", { class: g(["ml-auto relative w-9 h-5 rounded-full transition-colors", [j(u) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": w.value }]]) }, [c("span", { class: g(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", j(u) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
1639
+ ], 10, Sn)) : o("", !0),
1640
+ t.collapsible ? (S(), s("button", {
1651
1641
  key: 2,
1652
1642
  type: "button",
1653
- onClick: r[5] ||= (...e) => A(b) && A(b)(...e),
1654
- title: A(y) ? "Expand sidebar" : "Collapse sidebar",
1655
- "aria-label": A(y) ? "Expand sidebar" : "Collapse sidebar",
1656
- "aria-pressed": A(y),
1657
- class: h(["hidden lg:flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [A(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": D.value }]])
1658
- }, [(x(), i(O(A(y) ? A(le) : A(ce)), {
1643
+ onClick: r[5] ||= (...e) => j(b) && j(b)(...e),
1644
+ title: j(y) ? "Expand sidebar" : "Collapse sidebar",
1645
+ "aria-label": j(y) ? "Expand sidebar" : "Collapse sidebar",
1646
+ "aria-pressed": j(y),
1647
+ class: g(["hidden lg:flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [j(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": w.value }]])
1648
+ }, [(S(), a(k(j(y) ? j(ue) : j(le)), {
1659
1649
  class: "w-[18px] h-[18px] shrink-0",
1660
1650
  "aria-hidden": "true"
1661
- })), s("span", { class: h({ "lg:hidden": D.value }) }, "Collapse", 2)], 10, Sn)) : a("", !0),
1662
- s("div", { class: h({ "lg:hidden": D.value }) }, [E(n.$slots, "status", {}, void 0, !0)], 2),
1663
- s("div", { class: h({ "lg:hidden": D.value }) }, [E(n.$slots, "footer", {}, () => [t.appName || t.version ? (x(), o("div", {
1651
+ })), c("span", { class: g({ "lg:hidden": w.value }) }, "Collapse", 2)], 10, Cn)) : o("", !0),
1652
+ c("div", { class: g({ "lg:hidden": w.value }) }, [D(n.$slots, "status", {}, void 0, !0)], 2),
1653
+ c("div", { class: g({ "lg:hidden": w.value }) }, [D(n.$slots, "footer", {}, () => [t.appName || t.version ? (S(), s("div", {
1664
1654
  key: 0,
1665
- class: h(["flex items-center justify-center gap-2 text-xs", (A(f), "text-gray-500")])
1666
- }, [s("span", null, [
1667
- u(k(t.appName), 1),
1668
- t.appName && t.version ? (x(), o(e, { key: 0 }, [], 64)) : a("", !0),
1669
- t.version ? (x(), o(e, { key: 1 }, [u("v" + k(t.version), 1)], 64)) : a("", !0)
1670
- ])], 2)) : a("", !0)], !0)], 2)
1655
+ class: g(["flex items-center justify-center gap-2 text-xs", (j(u), "text-gray-500")])
1656
+ }, [c("span", null, [
1657
+ d(A(t.appName), 1),
1658
+ t.appName && t.version ? (S(), s(e, { key: 0 }, [d(A(" "))], 64)) : o("", !0),
1659
+ t.version ? (S(), s(e, { key: 1 }, [d("v" + A(t.version), 1)], 64)) : o("", !0)
1660
+ ])], 2)) : o("", !0)], !0)], 2)
1671
1661
  ], 2)
1672
1662
  ])], 2)
1673
1663
  ]));
1674
1664
  }
1675
- }), [["__scopeId", "data-v-452beaf2"]]), wn = {
1665
+ }), [["__scopeId", "data-v-bfce9dd7"]]), Tn = {
1676
1666
  key: 1,
1677
1667
  class: "mt-4 flex justify-center py-6"
1678
- }, Tn = {
1668
+ }, En = {
1679
1669
  key: 2,
1680
1670
  class: "mt-4 text-sm text-red-500",
1681
1671
  role: "alert"
1682
- }, En = {
1672
+ }, Dn = {
1683
1673
  key: 3,
1684
1674
  class: "mt-4"
1685
- }, Dn = { class: "relative" }, On = ["placeholder"], kn = {
1675
+ }, On = { class: "relative" }, kn = ["placeholder"], An = {
1686
1676
  key: 4,
1687
1677
  class: "mt-3 max-h-64 overflow-y-auto"
1688
- }, An = ["aria-pressed", "onClick"], jn = { class: "flex-1 min-w-0" }, Mn = {
1678
+ }, jn = ["aria-pressed", "onClick"], Mn = { class: "flex-1 min-w-0" }, Nn = {
1689
1679
  key: 0,
1690
1680
  class: "text-center py-6"
1691
- }, Nn = {
1681
+ }, Pn = {
1692
1682
  key: 1,
1693
1683
  class: "text-center py-6"
1694
- }, Pn = ["disabled"], Fn = ["disabled"], In = /* @__PURE__ */ f({
1684
+ }, Fn = ["disabled"], In = ["disabled"], Ln = /* @__PURE__ */ p({
1695
1685
  __name: "BaseEntityPickerModal",
1696
1686
  props: {
1697
1687
  title: {},
@@ -1713,10 +1703,10 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1713
1703
  },
1714
1704
  emits: ["confirm", "cancel"],
1715
1705
  setup(t, { emit: n }) {
1716
- let l = t, u = n, { isDark: f } = V(), p = Y(), g = w([]), _ = w(!1), y = w(""), b = w(null), S = w(""), C = w(null), D = r(() => {
1717
- let e = l.loader ? g.value : l.items;
1718
- return l.excludeId ? e.filter((e) => e.id !== l.excludeId) : e;
1719
- }), O = r(() => D.value.filter((e) => e.label.toLowerCase().includes(S.value.toLowerCase()))), ee = {
1706
+ let r = t, u = n, { isDark: d } = V(), p = J(), m = T([]), _ = T(!1), v = T(""), b = T(null), x = T(""), C = T(null), w = i(() => {
1707
+ let e = r.loader ? m.value : r.items;
1708
+ return r.excludeId ? e.filter((e) => e.id !== r.excludeId) : e;
1709
+ }), O = i(() => w.value.filter((e) => e.label.toLowerCase().includes(x.value.toLowerCase()))), k = {
1720
1710
  emerald: {
1721
1711
  iconBg: "bg-emerald-50",
1722
1712
  iconText: "text-emerald-600",
@@ -1762,7 +1752,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1762
1752
  confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
1763
1753
  confirmDisabled: "bg-amber-400 cursor-not-allowed"
1764
1754
  }
1765
- }, j = {
1755
+ }, ee = {
1766
1756
  emerald: {
1767
1757
  iconBg: "bg-emerald-900/30",
1768
1758
  iconText: "text-emerald-400",
@@ -1808,92 +1798,92 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1808
1798
  confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
1809
1799
  confirmDisabled: "bg-amber-400 cursor-not-allowed"
1810
1800
  }
1811
- }, M = r(() => (f.value ? j : ee)[l.variant]);
1812
- v(async () => {
1813
- if (l.loader) {
1801
+ }, M = i(() => (d.value ? ee : k)[r.variant]);
1802
+ y(async () => {
1803
+ if (r.loader) {
1814
1804
  _.value = !0;
1815
1805
  try {
1816
- g.value = await l.loader();
1806
+ m.value = await r.loader();
1817
1807
  } catch {
1818
- y.value = "Failed to load items";
1808
+ v.value = "Failed to load items";
1819
1809
  } finally {
1820
1810
  _.value = !1;
1821
1811
  }
1822
1812
  }
1823
- await m(), C.value?.focus();
1813
+ await h(), C.value?.focus();
1824
1814
  });
1825
1815
  function te() {
1826
- !b.value || l.submitting || u("confirm", b.value);
1816
+ b.value && !r.submitting && u("confirm", b.value);
1827
1817
  }
1828
- function P() {
1829
- l.submitting || u("cancel");
1818
+ function ne() {
1819
+ r.submitting || u("cancel");
1830
1820
  }
1831
- return (n, r) => (x(), i(Ht, {
1821
+ return (n, r) => (S(), a(Wt, {
1832
1822
  title: t.title,
1833
- icon: A(_e),
1823
+ icon: j(ve),
1834
1824
  "icon-bg-class": M.value.iconBg,
1835
1825
  "icon-class": M.value.iconText,
1836
1826
  "manual-close": t.submitting,
1837
- onCancel: P
1838
- }, c({
1839
- footer: F(() => [s("button", {
1827
+ onCancel: ne
1828
+ }, l({
1829
+ footer: F(() => [c("button", {
1840
1830
  type: "button",
1841
1831
  disabled: t.submitting,
1842
- class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(p).ghostButton]),
1843
- onClick: P
1844
- }, k(t.cancelText), 11, Pn), s("button", {
1832
+ class: g(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", j(p).ghostButton]),
1833
+ onClick: ne
1834
+ }, A(t.cancelText), 11, Fn), c("button", {
1845
1835
  type: "button",
1846
1836
  disabled: !b.value || t.submitting,
1847
- class: h(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", !b.value || t.submitting ? M.value.confirmDisabled : M.value.confirmActive]),
1837
+ class: g(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", !b.value || t.submitting ? M.value.confirmDisabled : M.value.confirmActive]),
1848
1838
  onClick: te
1849
- }, k(t.submitting ? t.submittingText : t.confirmText), 11, Fn)]),
1839
+ }, A(t.submitting ? t.submittingText : t.confirmText), 11, In)]),
1850
1840
  default: F(() => [
1851
- t.message ? (x(), o("p", {
1841
+ t.message ? (S(), s("p", {
1852
1842
  key: 0,
1853
- class: h(["text-sm", A(f) ? "text-gray-300" : "text-gray-600"])
1854
- }, k(t.message), 3)) : a("", !0),
1855
- _.value ? (x(), o("div", wn, [d(lt, { color: "emerald" })])) : y.value ? (x(), o("div", Tn, k(y.value), 1)) : a("", !0),
1856
- !_.value && !y.value && D.value.length > 0 ? (x(), o("div", En, [s("div", Dn, [d(A(ye), {
1857
- class: h(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", A(p).dimText]),
1843
+ class: g(["text-sm", j(d) ? "text-gray-300" : "text-gray-600"])
1844
+ }, A(t.message), 3)) : o("", !0),
1845
+ _.value ? (S(), s("div", Tn, [f(dt, { color: "emerald" })])) : v.value ? (S(), s("div", En, A(v.value), 1)) : o("", !0),
1846
+ !_.value && !v.value && w.value.length > 0 ? (S(), s("div", Dn, [c("div", On, [f(j(be), {
1847
+ class: g(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", j(p).dimText]),
1858
1848
  "aria-hidden": "true"
1859
- }, null, 8, ["class"]), I(s("input", {
1849
+ }, null, 8, ["class"]), I(c("input", {
1860
1850
  ref_key: "searchInputRef",
1861
1851
  ref: C,
1862
- "onUpdate:modelValue": r[0] ||= (e) => S.value = e,
1852
+ "onUpdate:modelValue": r[0] ||= (e) => x.value = e,
1863
1853
  type: "text",
1864
1854
  placeholder: t.searchPlaceholder,
1865
- class: h(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [A(f) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", M.value.inputFocus]])
1866
- }, null, 10, On), [[N, S.value]])])])) : a("", !0),
1867
- !_.value && !y.value ? (x(), o("div", kn, [(x(!0), o(e, null, T(O.value, (e) => (x(), o("button", {
1855
+ class: g(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [j(d) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", M.value.inputFocus]])
1856
+ }, null, 10, kn), [[N, x.value]])])])) : o("", !0),
1857
+ !_.value && !v.value ? (S(), s("div", An, [(S(!0), s(e, null, E(O.value, (e) => (S(), s("button", {
1868
1858
  key: e.id,
1869
1859
  type: "button",
1870
1860
  "aria-pressed": b.value === e.id,
1871
- class: h(["w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [b.value === e.id ? M.value.selectedRow : A(f) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1861
+ class: g(["w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [b.value === e.id ? M.value.selectedRow : j(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1872
1862
  onClick: (t) => b.value = e.id
1873
1863
  }, [
1874
- d(A(_e), { class: h(["w-5 h-5 flex-shrink-0", A(p).dimText]) }, null, 8, ["class"]),
1875
- s("div", jn, [s("p", { class: h(["text-sm font-medium truncate", A(p).bodyText]) }, k(e.label), 3)]),
1876
- b.value === e.id ? (x(), o("div", {
1864
+ f(j(ve), { class: g(["w-5 h-5 flex-shrink-0", j(p).dimText]) }, null, 8, ["class"]),
1865
+ c("div", Mn, [c("p", { class: g(["text-sm font-medium truncate", j(p).bodyText]) }, A(e.label), 3)]),
1866
+ b.value === e.id ? (S(), s("div", {
1877
1867
  key: 0,
1878
- class: h(["w-5 h-5 rounded-full flex items-center justify-center", M.value.checkBg])
1879
- }, [...r[1] ||= [s("svg", {
1868
+ class: g(["w-5 h-5 rounded-full flex items-center justify-center", M.value.checkBg])
1869
+ }, [...r[1] ||= [c("svg", {
1880
1870
  class: "w-3 h-3 text-white",
1881
1871
  fill: "none",
1882
1872
  viewBox: "0 0 24 24",
1883
1873
  stroke: "currentColor",
1884
1874
  "stroke-width": "3",
1885
1875
  "aria-hidden": "true"
1886
- }, [s("path", {
1876
+ }, [c("path", {
1887
1877
  "stroke-linecap": "round",
1888
1878
  "stroke-linejoin": "round",
1889
1879
  d: "M5 13l4 4L19 7"
1890
- })], -1)]], 2)) : a("", !0)
1891
- ], 10, An))), 128)), D.value.length === 0 ? (x(), o("div", Mn, [s("p", { class: h(["text-sm", A(p).dimText]) }, k(t.emptyMessage), 3)])) : O.value.length === 0 ? (x(), o("div", Nn, [s("p", { class: h(["text-sm", A(p).dimText]) }, k(t.noMatchMessage), 3)])) : a("", !0)])) : a("", !0)
1880
+ })], -1)]], 2)) : o("", !0)
1881
+ ], 10, jn))), 128)), w.value.length === 0 ? (S(), s("div", Nn, [c("p", { class: g(["text-sm", j(p).dimText]) }, A(t.emptyMessage), 3)])) : O.value.length === 0 ? (S(), s("div", Pn, [c("p", { class: g(["text-sm", j(p).dimText]) }, A(t.noMatchMessage), 3)])) : o("", !0)])) : o("", !0)
1892
1882
  ]),
1893
1883
  _: 2
1894
1884
  }, [n.$slots.icon ? {
1895
1885
  name: "icon",
1896
- fn: F(() => [E(n.$slots, "icon")]),
1886
+ fn: F(() => [D(n.$slots, "icon")]),
1897
1887
  key: "0"
1898
1888
  } : void 0]), 1032, [
1899
1889
  "title",
@@ -1903,10 +1893,10 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1903
1893
  "manual-close"
1904
1894
  ]));
1905
1895
  }
1906
- }), Ln = {
1896
+ }), Rn = {
1907
1897
  href: "#main-content",
1908
1898
  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"
1909
- }, Rn = ["inert"], zn = /* @__PURE__ */ f({
1899
+ }, zn = ["inert"], Bn = /* @__PURE__ */ p({
1910
1900
  __name: "BaseAppLayout",
1911
1901
  props: {
1912
1902
  showSidebar: {
@@ -1916,19 +1906,19 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1916
1906
  skipLinkLabel: { default: "Skip to main content" }
1917
1907
  },
1918
1908
  setup(e) {
1919
- let t = e, { isDark: n } = V(), { mobileOpen: i } = an(), { collapsed: c } = ln(), l = r(() => t.showSidebar);
1920
- return (t, r) => (x(), o("div", { class: h(["min-h-screen transition-colors duration-300", A(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1921
- s("a", Ln, k(e.skipLinkLabel), 1),
1922
- l.value ? E(t.$slots, "sidebar", { key: 0 }) : a("", !0),
1923
- s("main", {
1909
+ let t = e, { isDark: n } = V(), { mobileOpen: r } = sn(), { collapsed: a } = dn(), l = i(() => t.showSidebar);
1910
+ return (t, i) => (S(), s("div", { class: g(["min-h-screen transition-colors duration-300", j(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1911
+ c("a", Rn, A(e.skipLinkLabel), 1),
1912
+ l.value ? D(t.$slots, "sidebar", {}, void 0, void 0, 0) : o("", !0),
1913
+ c("main", {
1924
1914
  id: "main-content",
1925
1915
  tabindex: "-1",
1926
- inert: l.value && A(i) ? !0 : void 0,
1927
- class: h(["transition-all duration-300", l.value ? A(c) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
1928
- }, [E(t.$slots, "default")], 10, Rn)
1916
+ inert: l.value && j(r) ? !0 : void 0,
1917
+ class: g(["transition-all duration-300", l.value ? j(a) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
1918
+ }, [D(t.$slots, "default")], 10, zn)
1929
1919
  ], 2));
1930
1920
  }
1931
- }), Bn = { class: "flex items-center gap-3 min-w-0" }, Vn = { class: "flex items-center gap-2" }, Hn = /* @__PURE__ */ f({
1921
+ }), Vn = { class: "flex items-center gap-3 min-w-0" }, Hn = { class: "flex items-center gap-2" }, Un = /* @__PURE__ */ p({
1932
1922
  __name: "BasePageHeader",
1933
1923
  props: {
1934
1924
  title: {},
@@ -1939,7 +1929,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1939
1929
  marginClass: { default: "mb-8" }
1940
1930
  },
1941
1931
  setup(e) {
1942
- let t = e, { isDark: n } = V(), i = Y(), c = r(() => {
1932
+ let t = e, { isDark: n } = V(), r = J(), a = i(() => {
1943
1933
  let e = {
1944
1934
  emerald: {
1945
1935
  dark: "bg-emerald-500/10",
@@ -1959,7 +1949,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1959
1949
  }
1960
1950
  }[t.iconColor];
1961
1951
  return n.value ? e.dark : e.light;
1962
- }), l = r(() => {
1952
+ }), l = i(() => {
1963
1953
  let e = {
1964
1954
  emerald: {
1965
1955
  dark: "text-emerald-400",
@@ -1980,19 +1970,19 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
1980
1970
  }[t.iconColor];
1981
1971
  return n.value ? e.dark : e.light;
1982
1972
  });
1983
- return (t, n) => (x(), o("header", { class: h(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [s("div", { class: h(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [s("div", Bn, [t.$slots.icon ? (x(), o("div", {
1973
+ return (t, n) => (S(), s("header", { class: g(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [c("div", { class: g(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [c("div", Vn, [t.$slots.icon ? (S(), s("div", {
1984
1974
  key: 0,
1985
- class: h(["w-10 h-10 rounded-lg flex items-center justify-center", c.value])
1986
- }, [E(t.$slots, "icon", { iconClass: l.value })], 2)) : a("", !0), s("div", null, [s("h1", { class: h(["text-2xl font-bold", A(i).primaryTextSoft]) }, k(e.title), 3), e.subtitle || t.$slots.subtitle ? (x(), o("p", {
1975
+ class: g(["w-10 h-10 rounded-lg flex items-center justify-center", a.value])
1976
+ }, [D(t.$slots, "icon", { iconClass: l.value })], 2)) : o("", !0), c("div", null, [c("h1", { class: g(["text-2xl font-bold", j(r).primaryTextSoft]) }, A(e.title), 3), e.subtitle || t.$slots.subtitle ? (S(), s("p", {
1987
1977
  key: 0,
1988
- class: h(["text-sm", A(i).dimTextAlt])
1989
- }, [E(t.$slots, "subtitle", {}, () => [u(k(e.subtitle), 1)])], 2)) : a("", !0)])]), s("div", Vn, [E(t.$slots, "actions")])], 2)], 2));
1978
+ class: g(["text-sm", j(r).dimTextAlt])
1979
+ }, [D(t.$slots, "subtitle", {}, () => [d(A(e.subtitle), 1)])], 2)) : o("", !0)])]), c("div", Hn, [D(t.$slots, "actions")])], 2)], 2));
1990
1980
  }
1991
- }), Un = [
1981
+ }), Wn = [
1992
1982
  "type",
1993
1983
  "disabled",
1994
1984
  "title"
1995
- ], Wn = { key: 0 }, Gn = /* @__PURE__ */ f({
1985
+ ], Gn = { key: 0 }, Kn = /* @__PURE__ */ p({
1996
1986
  __name: "BaseToolbarButton",
1997
1987
  props: {
1998
1988
  label: { default: "" },
@@ -2006,11 +1996,11 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2006
1996
  },
2007
1997
  emits: ["click"],
2008
1998
  setup(e) {
2009
- let t = e, { isDark: n } = V(), i = {
1999
+ let t = e, { isDark: n } = V(), r = {
2010
2000
  neutral: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
2011
2001
  danger: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
2012
2002
  ghost: "h-9 px-4 rounded-md font-semibold disabled:opacity-40 disabled:hover:bg-slate-50 dark:disabled:hover:bg-slate-900"
2013
- }, s = r(() => {
2003
+ }, a = i(() => {
2014
2004
  let e = {
2015
2005
  neutral: {
2016
2006
  dark: "bg-gray-800 text-gray-100 border-gray-700 hover:bg-gray-700",
@@ -2025,22 +2015,22 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2025
2015
  light: "border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800"
2026
2016
  }
2027
2017
  }[t.variant];
2028
- return [i[t.variant], n.value ? e.dark : e.light];
2018
+ return [r[t.variant], n.value ? e.dark : e.light];
2029
2019
  });
2030
- return (t, n) => (x(), o("button", {
2020
+ return (t, n) => (S(), s("button", {
2031
2021
  type: e.type,
2032
2022
  disabled: e.disabled,
2033
2023
  title: e.title,
2034
- class: h(["inline-flex shrink-0 items-center gap-2 text-sm border transition-colors cursor-pointer disabled:cursor-not-allowed whitespace-nowrap focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", s.value]),
2024
+ class: g(["inline-flex shrink-0 items-center gap-2 text-sm border transition-colors cursor-pointer disabled:cursor-not-allowed whitespace-nowrap focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", a.value]),
2035
2025
  onClick: n[0] ||= (e) => t.$emit("click", e)
2036
- }, [E(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (x(), o("span", Wn, k(e.label), 1)) : a("", !0)], 10, Un));
2026
+ }, [D(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (S(), s("span", Gn, A(e.label), 1)) : o("", !0)], 10, Wn));
2037
2027
  }
2038
- }), Kn = [
2028
+ }), qn = [
2039
2029
  "type",
2040
2030
  "disabled",
2041
2031
  "title",
2042
2032
  "aria-label"
2043
- ], qn = { key: 0 }, Jn = /* @__PURE__ */ f({
2033
+ ], Jn = { key: 0 }, Yn = /* @__PURE__ */ p({
2044
2034
  __name: "BaseActionButton",
2045
2035
  props: {
2046
2036
  label: { default: "" },
@@ -2059,7 +2049,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2059
2049
  },
2060
2050
  emits: ["click"],
2061
2051
  setup(e) {
2062
- let t = e, { isDark: n } = V(), i = r(() => {
2052
+ let t = e, { isDark: n } = V(), r = i(() => {
2063
2053
  let e = {
2064
2054
  emerald: {
2065
2055
  dark: "text-emerald-400 hover:bg-emerald-500/10",
@@ -2095,7 +2085,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2095
2085
  }
2096
2086
  }[t.color];
2097
2087
  return n.value ? e.dark : e.light;
2098
- }), s = r(() => {
2088
+ }), a = i(() => {
2099
2089
  let e = {
2100
2090
  emerald: {
2101
2091
  dark: "text-emerald-400",
@@ -2131,17 +2121,17 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2131
2121
  }
2132
2122
  }[t.color];
2133
2123
  return n.value ? e.dark : e.light;
2134
- }), c = r(() => t.disabled ? `${s.value} opacity-50 cursor-not-allowed` : `${i.value} cursor-pointer`);
2135
- return (t, n) => (x(), o("button", {
2124
+ }), c = i(() => t.disabled ? `${a.value} opacity-50 cursor-not-allowed` : `${r.value} cursor-pointer`);
2125
+ return (t, n) => (S(), s("button", {
2136
2126
  type: e.type,
2137
2127
  disabled: e.disabled,
2138
2128
  title: e.title,
2139
2129
  "aria-label": e.ariaLabel,
2140
- class: h(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-current", [e.fullWidth ? "flex-1" : "", c.value]]),
2130
+ class: g(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-current", [e.fullWidth ? "flex-1" : "", c.value]]),
2141
2131
  onClick: n[0] ||= (e) => t.$emit("click", e)
2142
- }, [E(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (x(), o("span", qn, k(e.label), 1)) : a("", !0)], 10, Kn));
2132
+ }, [D(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (S(), s("span", Jn, A(e.label), 1)) : o("", !0)], 10, qn));
2143
2133
  }
2144
- }), Yn = ["title", "aria-label"], Xn = /* @__PURE__ */ f({
2134
+ }), Xn = ["title", "aria-label"], Zn = /* @__PURE__ */ p({
2145
2135
  __name: "BaseCopyButton",
2146
2136
  props: {
2147
2137
  text: {},
@@ -2152,7 +2142,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2152
2142
  },
2153
2143
  emits: ["copied", "error"],
2154
2144
  setup(e, { emit: t }) {
2155
- let n = e, a = t, { isDark: s } = V(), c = w(!1), l = null, u = r(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = r(() => n.label ? `Copy ${n.label}` : "Copy"), f = r(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${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 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${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"}`);
2145
+ let n = e, r = t, { isDark: o } = V(), c = T(!1), l = null, u = i(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = i(() => n.label ? `Copy ${n.label}` : "Copy"), f = i(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${c.value ? o.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : o.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${o.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
2156
2146
  async function p(e) {
2157
2147
  try {
2158
2148
  if (navigator.clipboard?.writeText) {
@@ -2169,41 +2159,41 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2169
2159
  try {
2170
2160
  await p(n.text), c.value = !0, l && clearTimeout(l), l = setTimeout(() => {
2171
2161
  c.value = !1;
2172
- }, n.resetMs), a("copied");
2162
+ }, n.resetMs), r("copied");
2173
2163
  } catch (e) {
2174
- a("error", e);
2164
+ r("error", e);
2175
2165
  }
2176
2166
  }
2177
- return b(() => {
2167
+ return x(() => {
2178
2168
  l && clearTimeout(l);
2179
- }), (t, n) => (x(), o("button", {
2169
+ }), (t, n) => (S(), s("button", {
2180
2170
  type: "button",
2181
2171
  title: u.value,
2182
2172
  "aria-label": d.value,
2183
- class: h(f.value),
2173
+ class: g(f.value),
2184
2174
  onClick: m
2185
- }, [c.value ? (x(), i(A(fe), {
2175
+ }, [c.value ? (S(), a(j(pe), {
2186
2176
  key: 0,
2187
- class: h(e.iconClass),
2177
+ class: g(e.iconClass),
2188
2178
  "aria-hidden": "true"
2189
- }, null, 8, ["class"])) : (x(), i(A(pe), {
2179
+ }, null, 8, ["class"])) : (S(), a(j(me), {
2190
2180
  key: 1,
2191
- class: h(e.iconClass),
2181
+ class: g(e.iconClass),
2192
2182
  "aria-hidden": "true"
2193
- }, null, 8, ["class"]))], 10, Yn));
2183
+ }, null, 8, ["class"]))], 10, Xn));
2194
2184
  }
2195
- }), Zn = ["disabled", "aria-busy"], Qn = {
2185
+ }), Qn = ["disabled", "aria-busy"], $n = {
2196
2186
  key: 0,
2197
2187
  class: "w-5 h-5 animate-spin shrink-0",
2198
2188
  viewBox: "0 0 24 24",
2199
2189
  fill: "none",
2200
2190
  "aria-hidden": "true"
2201
- }, $n = {
2191
+ }, er = {
2202
2192
  key: 1,
2203
2193
  class: "w-5 h-5 shrink-0",
2204
2194
  viewBox: "0 0 48 48",
2205
2195
  "aria-hidden": "true"
2206
- }, er = /* @__PURE__ */ f({
2196
+ }, tr = /* @__PURE__ */ p({
2207
2197
  __name: "BaseGoogleSignInButton",
2208
2198
  props: {
2209
2199
  label: { default: "Sign in with Google" },
@@ -2222,39 +2212,39 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2222
2212
  },
2223
2213
  emits: ["click"],
2224
2214
  setup(e, { emit: t }) {
2225
- let n = e, i = t, { isDark: a } = V(), c = r(() => n.disabled || n.loading);
2226
- function u() {
2227
- c.value || i("click");
2215
+ let n = e, r = t, { isDark: a } = V(), o = i(() => n.disabled || n.loading);
2216
+ function l() {
2217
+ o.value || r("click");
2228
2218
  }
2229
- return (t, n) => (x(), o("button", {
2219
+ return (t, n) => (S(), s("button", {
2230
2220
  type: "button",
2231
- disabled: c.value,
2221
+ disabled: o.value,
2232
2222
  "aria-busy": e.loading,
2233
- onClick: u,
2234
- class: h(["inline-flex items-center justify-center gap-3 h-11 px-4 rounded-lg border text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", A(a) ? "bg-gray-900 border-gray-700 text-gray-100 hover:bg-gray-800" : "bg-white border-gray-300 text-gray-700 hover:bg-gray-50"]])
2235
- }, [e.loading ? (x(), o("svg", Qn, [...n[0] ||= [s("circle", {
2223
+ onClick: l,
2224
+ class: g(["inline-flex items-center justify-center gap-3 h-11 px-4 rounded-lg border text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", j(a) ? "bg-gray-900 border-gray-700 text-gray-100 hover:bg-gray-800" : "bg-white border-gray-300 text-gray-700 hover:bg-gray-50"]])
2225
+ }, [e.loading ? (S(), s("svg", $n, [...n[0] ||= [c("circle", {
2236
2226
  class: "opacity-25",
2237
2227
  cx: "12",
2238
2228
  cy: "12",
2239
2229
  r: "10",
2240
2230
  stroke: "currentColor",
2241
2231
  "stroke-width": "4"
2242
- }, null, -1), s("path", {
2232
+ }, null, -1), c("path", {
2243
2233
  class: "opacity-75",
2244
2234
  fill: "currentColor",
2245
2235
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2246
- }, null, -1)]])) : (x(), o("svg", $n, [...n[1] ||= [l("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), s("span", null, k(e.label), 1)], 10, Zn));
2236
+ }, null, -1)]])) : (S(), s("svg", er, [...n[1] ||= [u("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), c("span", null, A(e.label), 1)], 10, Qn));
2247
2237
  }
2248
- }), tr = {
2238
+ }), nr = {
2249
2239
  key: 0,
2250
2240
  class: "flex justify-center mb-6"
2251
- }, nr = { class: "mb-6 text-center" }, rr = { class: "flex items-center gap-3 my-5" }, ir = ["disabled"], ar = { class: "flex items-center justify-between mb-1.5" }, or = { class: "relative" }, sr = ["type", "disabled"], cr = ["aria-label", "aria-pressed"], lr = ["disabled"], ur = ["disabled", "aria-busy"], dr = {
2241
+ }, rr = { class: "mb-6 text-center" }, ir = { class: "flex items-center gap-3 my-5" }, ar = ["disabled"], or = { class: "flex items-center justify-between mb-1.5" }, sr = { class: "relative" }, cr = ["type", "disabled"], lr = ["aria-label", "aria-pressed"], ur = ["disabled"], dr = ["disabled", "aria-busy"], fr = {
2252
2242
  key: 0,
2253
2243
  class: "w-4 h-4 animate-spin",
2254
2244
  viewBox: "0 0 24 24",
2255
2245
  fill: "none",
2256
2246
  "aria-hidden": "true"
2257
- }, fr = /* @__PURE__ */ f({
2247
+ }, pr = /* @__PURE__ */ p({
2258
2248
  __name: "BaseLoginForm",
2259
2249
  props: {
2260
2250
  title: { default: "Sign in" },
@@ -2280,42 +2270,42 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2280
2270
  },
2281
2271
  emits: ["submit", "google-sign-in"],
2282
2272
  setup(t, { emit: n }) {
2283
- let i = t, c = n, { isDark: l } = V(), f = Y(), p = w(""), m = w(""), g = w(!1), _ = w(!1), v = r(() => i.loading || i.googleLoading);
2273
+ let r = t, a = n, { isDark: l } = V(), u = J(), p = T(""), m = T(""), h = T(!1), _ = T(!1), v = i(() => r.loading || r.googleLoading);
2284
2274
  function y() {
2285
- v.value || c("submit", {
2275
+ v.value || a("submit", {
2286
2276
  email: p.value,
2287
2277
  password: m.value,
2288
- ...i.showRemember ? { remember: g.value } : {}
2278
+ ...r.showRemember ? { remember: h.value } : {}
2289
2279
  });
2290
2280
  }
2291
- return (n, r) => (x(), o("div", { class: h(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", A(f).card]) }, [
2292
- n.$slots.logo ? (x(), o("div", tr, [E(n.$slots, "logo")])) : a("", !0),
2293
- s("div", nr, [s("h1", { class: h(["text-xl font-semibold", A(f).primaryText]) }, k(t.title), 3), t.subtitle ? (x(), o("p", {
2281
+ return (n, r) => (S(), s("div", { class: g(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", j(u).card]) }, [
2282
+ n.$slots.logo ? (S(), s("div", nr, [D(n.$slots, "logo")])) : o("", !0),
2283
+ c("div", rr, [c("h1", { class: g(["text-xl font-semibold", j(u).primaryText]) }, A(t.title), 3), t.subtitle ? (S(), s("p", {
2294
2284
  key: 0,
2295
- class: h(["mt-1 text-sm", A(f).mutedText])
2296
- }, k(t.subtitle), 3)) : a("", !0)]),
2297
- t.error ? (x(), o("div", {
2285
+ class: g(["mt-1 text-sm", j(u).mutedText])
2286
+ }, A(t.subtitle), 3)) : o("", !0)]),
2287
+ t.error ? (S(), s("div", {
2298
2288
  key: 1,
2299
2289
  role: "alert",
2300
- class: h(["mb-4 rounded-lg border px-3 py-2 text-sm", A(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
2301
- }, k(t.error), 3)) : a("", !0),
2302
- t.showGoogle ? (x(), o(e, { key: 2 }, [d(er, {
2290
+ class: g(["mb-4 rounded-lg border px-3 py-2 text-sm", j(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
2291
+ }, A(t.error), 3)) : o("", !0),
2292
+ t.showGoogle ? (S(), s(e, { key: 2 }, [f(tr, {
2303
2293
  loading: t.googleLoading,
2304
2294
  disabled: t.loading,
2305
- onClick: r[0] ||= (e) => c("google-sign-in")
2306
- }, null, 8, ["loading", "disabled"]), s("div", rr, [
2307
- s("span", { class: h(["h-px flex-1", A(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
2308
- s("span", { class: h(["text-xs uppercase tracking-wider", A(f).dimTextAlt]) }, "or", 2),
2309
- s("span", { class: h(["h-px flex-1", A(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
2310
- ])], 64)) : a("", !0),
2311
- s("form", {
2295
+ onClick: r[0] ||= (e) => a("google-sign-in")
2296
+ }, null, 8, ["loading", "disabled"]), c("div", ir, [
2297
+ c("span", { class: g(["h-px flex-1", j(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
2298
+ c("span", { class: g(["text-xs uppercase tracking-wider", j(u).dimTextAlt]) }, "or", 2),
2299
+ c("span", { class: g(["h-px flex-1", j(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
2300
+ ])], 64)) : o("", !0),
2301
+ c("form", {
2312
2302
  class: "space-y-4",
2313
2303
  onSubmit: L(y, ["prevent"])
2314
2304
  }, [
2315
- s("div", null, [s("label", {
2305
+ c("div", null, [c("label", {
2316
2306
  for: "login-email",
2317
- class: h(["block mb-1.5 text-sm font-medium", A(f).label])
2318
- }, " Email ", 2), I(s("input", {
2307
+ class: g(["block mb-1.5 text-sm font-medium", j(u).label])
2308
+ }, " Email ", 2), I(c("input", {
2319
2309
  id: "login-email",
2320
2310
  "onUpdate:modelValue": r[1] ||= (e) => p.value = e,
2321
2311
  type: "email",
@@ -2324,12 +2314,12 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2324
2314
  required: "",
2325
2315
  disabled: v.value,
2326
2316
  placeholder: "you@example.com",
2327
- class: h(["w-full h-11 px-3 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", A(f).inputWithPlaceholder])
2328
- }, null, 10, ir), [[N, p.value]])]),
2329
- s("div", null, [s("div", ar, [s("label", {
2317
+ class: g(["w-full h-11 px-3 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", j(u).inputWithPlaceholder])
2318
+ }, null, 10, ar), [[N, p.value]])]),
2319
+ c("div", null, [c("div", or, [c("label", {
2330
2320
  for: "login-password",
2331
- class: h(["block text-sm font-medium", A(f).label])
2332
- }, " Password ", 2), E(n.$slots, "forgot")]), s("div", or, [I(s("input", {
2321
+ class: g(["block text-sm font-medium", j(u).label])
2322
+ }, " Password ", 2), D(n.$slots, "forgot")]), c("div", sr, [I(c("input", {
2333
2323
  id: "login-password",
2334
2324
  "onUpdate:modelValue": r[2] ||= (e) => m.value = e,
2335
2325
  type: _.value ? "text" : "password",
@@ -2338,51 +2328,51 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2338
2328
  required: "",
2339
2329
  disabled: v.value,
2340
2330
  placeholder: "••••••••",
2341
- class: h(["w-full h-11 pl-3 pr-16 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", A(f).inputWithPlaceholder])
2342
- }, null, 10, sr), [[M, m.value]]), s("button", {
2331
+ class: g(["w-full h-11 pl-3 pr-16 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", j(u).inputWithPlaceholder])
2332
+ }, null, 10, cr), [[te, m.value]]), c("button", {
2343
2333
  type: "button",
2344
2334
  onClick: r[3] ||= (e) => _.value = !_.value,
2345
2335
  "aria-label": _.value ? "Hide password" : "Show password",
2346
2336
  "aria-pressed": _.value,
2347
- class: h(["absolute inset-y-0 right-0 px-3 text-xs font-medium cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 rounded-r-lg", A(f).mutedText])
2348
- }, k(_.value ? "Hide" : "Show"), 11, cr)])]),
2349
- t.showRemember ? (x(), o("label", {
2337
+ class: g(["absolute inset-y-0 right-0 px-3 text-xs font-medium cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 rounded-r-lg", j(u).mutedText])
2338
+ }, A(_.value ? "Hide" : "Show"), 11, lr)])]),
2339
+ t.showRemember ? (S(), s("label", {
2350
2340
  key: 0,
2351
- class: h(["flex items-center gap-2 text-sm cursor-pointer select-none", A(f).bodyText])
2352
- }, [I(s("input", {
2353
- "onUpdate:modelValue": r[4] ||= (e) => g.value = e,
2341
+ class: g(["flex items-center gap-2 text-sm cursor-pointer select-none", j(u).bodyText])
2342
+ }, [I(c("input", {
2343
+ "onUpdate:modelValue": r[4] ||= (e) => h.value = e,
2354
2344
  type: "checkbox",
2355
2345
  disabled: v.value,
2356
2346
  class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
2357
- }, null, 8, lr), [[j, g.value]]), r[5] ||= u(" Remember me ", -1)], 2)) : a("", !0),
2358
- s("button", {
2347
+ }, null, 8, ur), [[M, h.value]]), r[5] ||= d(" Remember me ", -1)], 2)) : o("", !0),
2348
+ c("button", {
2359
2349
  type: "submit",
2360
2350
  disabled: v.value,
2361
2351
  "aria-busy": t.loading,
2362
2352
  class: "inline-flex items-center justify-center gap-2 w-full h-11 px-4 rounded-lg text-sm font-semibold text-white bg-emerald-600 hover:bg-emerald-700 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed"
2363
- }, [t.loading ? (x(), o("svg", dr, [...r[6] ||= [s("circle", {
2353
+ }, [t.loading ? (S(), s("svg", fr, [...r[6] ||= [c("circle", {
2364
2354
  class: "opacity-25",
2365
2355
  cx: "12",
2366
2356
  cy: "12",
2367
2357
  r: "10",
2368
2358
  stroke: "currentColor",
2369
2359
  "stroke-width": "4"
2370
- }, null, -1), s("path", {
2360
+ }, null, -1), c("path", {
2371
2361
  class: "opacity-75",
2372
2362
  fill: "currentColor",
2373
2363
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2374
- }, null, -1)]])) : a("", !0), u(" " + k(t.submitLabel), 1)], 8, ur)
2364
+ }, null, -1)]])) : o("", !0), d(" " + A(t.submitLabel), 1)], 8, dr)
2375
2365
  ], 32),
2376
- n.$slots.footer ? (x(), o("div", {
2366
+ n.$slots.footer ? (S(), s("div", {
2377
2367
  key: 3,
2378
- class: h(["mt-6 text-center text-sm", A(f).mutedText])
2379
- }, [E(n.$slots, "footer")], 2)) : a("", !0)
2368
+ class: g(["mt-6 text-center text-sm", j(u).mutedText])
2369
+ }, [D(n.$slots, "footer")], 2)) : o("", !0)
2380
2370
  ], 2));
2381
2371
  }
2382
- }), pr = ["aria-label"], mr = { class: "flex-1 overflow-y-auto" }, hr = {
2372
+ }), mr = ["aria-label"], hr = { class: "flex-1 overflow-y-auto" }, gr = {
2383
2373
  key: 0,
2384
2374
  class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
2385
- }, gr = ["onClick"], _r = { class: "min-w-0 flex-1" }, vr = { class: "flex items-baseline justify-between gap-2" }, yr = /* @__PURE__ */ f({
2375
+ }, _r = ["onClick"], vr = { class: "min-w-0 flex-1" }, yr = { class: "flex items-baseline justify-between gap-2" }, br = /* @__PURE__ */ p({
2386
2376
  __name: "BaseNotificationPanel",
2387
2377
  props: {
2388
2378
  title: { default: "Notifications" },
@@ -2393,86 +2383,86 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2393
2383
  }
2394
2384
  },
2395
2385
  emits: ["select"],
2396
- setup(c, { emit: l }) {
2397
- let f = l, { isDark: p } = V(), m = Y(), { notifications: g, unreadCount: _, open: v, closePanel: y, markAllRead: b, markRead: S } = fn(), C = {
2386
+ setup(n, { emit: l }) {
2387
+ let u = l, { isDark: p } = V(), m = J(), { notifications: h, unreadCount: _, open: v, closePanel: y, markAllRead: b, markRead: x } = pn(), C = {
2398
2388
  info: "bg-sky-500",
2399
2389
  success: "bg-emerald-500",
2400
2390
  warning: "bg-amber-500",
2401
2391
  error: "bg-red-500"
2402
- }, w = r(() => g.value.length);
2403
- function E(e) {
2404
- S(e), f("select", e);
2392
+ }, w = i(() => h.value.length);
2393
+ function T(e) {
2394
+ x(e), u("select", e);
2405
2395
  }
2406
- return Nt(() => {
2396
+ return Ft(() => {
2407
2397
  v.value && y();
2408
- }), (r, l) => (x(), i(t, { to: "body" }, [d(n, {
2398
+ }), (i, l) => (S(), a(t, { to: "body" }, [f(r, {
2409
2399
  "enter-active-class": "transition-opacity duration-200",
2410
2400
  "enter-from-class": "opacity-0",
2411
2401
  "leave-active-class": "transition-opacity duration-200",
2412
2402
  "leave-to-class": "opacity-0"
2413
2403
  }, {
2414
- default: F(() => [A(v) ? (x(), o("div", {
2404
+ default: F(() => [j(v) ? (S(), s("div", {
2415
2405
  key: 0,
2416
2406
  class: "fixed inset-0 z-[60] bg-black/50",
2417
2407
  "aria-hidden": "true",
2418
- onClick: l[0] ||= (...e) => A(y) && A(y)(...e)
2419
- })) : a("", !0)]),
2408
+ onClick: l[0] ||= (...e) => j(y) && j(y)(...e)
2409
+ })) : o("", !0)]),
2420
2410
  _: 1
2421
- }), d(n, {
2411
+ }), f(r, {
2422
2412
  "enter-active-class": "transition-transform duration-300 ease-out",
2423
2413
  "enter-from-class": "-translate-x-full",
2424
2414
  "leave-active-class": "transition-transform duration-300 ease-in",
2425
2415
  "leave-to-class": "-translate-x-full"
2426
2416
  }, {
2427
- default: F(() => [A(v) ? (x(), o("aside", {
2417
+ default: F(() => [j(v) ? (S(), s("aside", {
2428
2418
  key: 0,
2429
2419
  role: "dialog",
2430
2420
  "aria-modal": "true",
2431
- "aria-label": c.title,
2432
- class: h(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", A(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
2421
+ "aria-label": n.title,
2422
+ class: g(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", j(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
2433
2423
  }, [
2434
- s("div", { class: h(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", A(m).border]) }, [s("h2", { class: h(["text-lg font-semibold flex items-center gap-2", A(m).primaryText]) }, [u(k(c.title) + " ", 1), s("span", { class: h(["text-sm font-normal", A(m).dimTextAlt]) }, "— " + k(w.value), 3)], 2), s("button", {
2424
+ c("div", { class: g(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", j(m).border]) }, [c("h2", { class: g(["text-lg font-semibold flex items-center gap-2", j(m).primaryText]) }, [d(A(n.title) + " ", 1), c("span", { class: g(["text-sm font-normal", j(m).dimTextAlt]) }, "— " + A(w.value), 3)], 2), c("button", {
2435
2425
  type: "button",
2436
- onClick: l[1] ||= (...e) => A(y) && A(y)(...e),
2426
+ onClick: l[1] ||= (...e) => j(y) && j(y)(...e),
2437
2427
  "aria-label": "Close notifications",
2438
- class: h(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", A(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
2439
- }, [d(A(Ce), {
2428
+ class: g(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", j(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
2429
+ }, [f(j(we), {
2440
2430
  class: "w-5 h-5",
2441
2431
  "aria-hidden": "true"
2442
2432
  })], 2)], 2),
2443
- c.showMarkAllRead && A(_) > 0 ? (x(), o("div", {
2433
+ n.showMarkAllRead && j(_) > 0 ? (S(), s("div", {
2444
2434
  key: 0,
2445
- class: h(["px-5 py-2 border-b shrink-0 flex justify-end", A(m).border])
2446
- }, [s("button", {
2435
+ class: g(["px-5 py-2 border-b shrink-0 flex justify-end", j(m).border])
2436
+ }, [c("button", {
2447
2437
  type: "button",
2448
- onClick: l[2] ||= (...e) => A(b) && A(b)(...e),
2449
- class: h(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", A(m).emeraldText])
2450
- }, " Mark all as read ", 2)], 2)) : a("", !0),
2451
- s("div", mr, [w.value === 0 ? (x(), o("div", hr, [d(A(oe), {
2452
- class: h(["w-10 h-10", A(m).illustration]),
2438
+ onClick: l[2] ||= (...e) => j(b) && j(b)(...e),
2439
+ class: g(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", j(m).emeraldText])
2440
+ }, " Mark all as read ", 2)], 2)) : o("", !0),
2441
+ c("div", hr, [w.value === 0 ? (S(), s("div", gr, [f(j(se), {
2442
+ class: g(["w-10 h-10", j(m).illustration]),
2453
2443
  "aria-hidden": "true"
2454
- }, null, 8, ["class"]), s("p", { class: h(["text-sm", A(m).mutedText]) }, k(c.emptyText), 3)])) : (x(), o("ul", {
2444
+ }, null, 8, ["class"]), c("p", { class: g(["text-sm", j(m).mutedText]) }, A(n.emptyText), 3)])) : (S(), s("ul", {
2455
2445
  key: 1,
2456
- class: h(["divide-y", A(p) ? "divide-gray-800" : "divide-gray-100"])
2457
- }, [(x(!0), o(e, null, T(A(g), (e) => (x(), o("li", { key: e.id }, [s("button", {
2446
+ class: g(["divide-y", j(p) ? "divide-gray-800" : "divide-gray-100"])
2447
+ }, [(S(!0), s(e, null, E(j(h), (e) => (S(), s("li", { key: e.id }, [c("button", {
2458
2448
  type: "button",
2459
- onClick: (t) => E(e.id),
2460
- class: h(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" : A(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", A(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
2461
- }, [s("span", {
2462
- class: h(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? A(p) ? "bg-gray-700" : "bg-gray-300" : C[e.type ?? "info"]]),
2449
+ onClick: (t) => T(e.id),
2450
+ class: g(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" : j(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", j(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
2451
+ }, [c("span", {
2452
+ class: g(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? j(p) ? "bg-gray-700" : "bg-gray-300" : C[e.type ?? "info"]]),
2463
2453
  "aria-hidden": "true"
2464
- }, null, 2), s("span", _r, [s("span", vr, [s("span", { class: h(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", A(m).primaryTextSoft]]) }, k(e.title), 3), e.time ? (x(), o("span", {
2454
+ }, null, 2), c("span", vr, [c("span", yr, [c("span", { class: g(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", j(m).primaryTextSoft]]) }, A(e.title), 3), e.time ? (S(), s("span", {
2465
2455
  key: 0,
2466
- class: h(["text-xs shrink-0", A(m).dimText])
2467
- }, k(e.time), 3)) : a("", !0)]), e.message ? (x(), o("span", {
2456
+ class: g(["text-xs shrink-0", j(m).dimText])
2457
+ }, A(e.time), 3)) : o("", !0)]), e.message ? (S(), s("span", {
2468
2458
  key: 0,
2469
- class: h(["mt-0.5 block text-sm", A(m).mutedText])
2470
- }, k(e.message), 3)) : a("", !0)])], 10, gr)]))), 128))], 2))])
2471
- ], 10, pr)) : a("", !0)]),
2459
+ class: g(["mt-0.5 block text-sm", j(m).mutedText])
2460
+ }, A(e.message), 3)) : o("", !0)])], 10, _r)]))), 128))], 2))])
2461
+ ], 10, mr)) : o("", !0)]),
2472
2462
  _: 1
2473
2463
  })]));
2474
2464
  }
2475
- }), br = ["disabled"], xr = /* @__PURE__ */ f({
2465
+ }), xr = ["disabled"], Sr = /* @__PURE__ */ p({
2476
2466
  __name: "BaseChipButton",
2477
2467
  props: {
2478
2468
  size: { default: "sm" },
@@ -2484,55 +2474,55 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2484
2474
  emits: ["click"],
2485
2475
  setup(e, { emit: t }) {
2486
2476
  let n = t, { isDark: r } = V();
2487
- return (t, i) => (x(), o("button", {
2477
+ return (t, i) => (S(), s("button", {
2488
2478
  type: "button",
2489
2479
  disabled: e.disabled,
2490
- class: h(["inline-flex items-center gap-1 font-medium rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [e.size === "xs" ? "text-xs px-2 py-0.5" : "text-xs px-2.5 py-1", A(r) ? "text-emerald-300 border-emerald-700 bg-emerald-900/30 hover:bg-emerald-800/50" : "text-emerald-700 border-emerald-200 bg-emerald-50 hover:bg-emerald-100"]]),
2480
+ class: g(["inline-flex items-center gap-1 font-medium rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [e.size === "xs" ? "text-xs px-2 py-0.5" : "text-xs px-2.5 py-1", j(r) ? "text-emerald-300 border-emerald-700 bg-emerald-900/30 hover:bg-emerald-800/50" : "text-emerald-700 border-emerald-200 bg-emerald-50 hover:bg-emerald-100"]]),
2491
2481
  onClick: i[0] ||= (e) => n("click")
2492
- }, [E(t.$slots, "default")], 10, br));
2482
+ }, [D(t.$slots, "default")], 10, xr));
2493
2483
  }
2494
- }), Sr = /* @__PURE__ */ f({
2484
+ }), Cr = /* @__PURE__ */ p({
2495
2485
  __name: "BaseRemoveButton",
2496
2486
  emits: ["click"],
2497
2487
  setup(e, { emit: t }) {
2498
2488
  let n = t;
2499
- return (e, t) => (x(), o("button", {
2489
+ return (e, t) => (S(), s("button", {
2500
2490
  type: "button",
2501
2491
  class: "px-2 text-lg leading-none text-red-400 hover:text-red-600 transition-colors cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-red-400 disabled:cursor-not-allowed disabled:text-gray-400 disabled:hover:text-gray-400",
2502
2492
  onClick: t[0] ||= (e) => n("click")
2503
2493
  }, " × "));
2504
2494
  }
2505
- }), Cr = { class: "relative flex h-2 w-2" }, wr = {
2495
+ }), wr = { class: "relative flex h-2 w-2" }, Tr = {
2506
2496
  key: 0,
2507
2497
  class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
2508
2498
  "aria-hidden": "true"
2509
- }, Tr = /* @__PURE__ */ f({
2499
+ }, Er = /* @__PURE__ */ p({
2510
2500
  __name: "BaseStatusPill",
2511
2501
  props: {
2512
2502
  status: {},
2513
2503
  label: {}
2514
2504
  },
2515
2505
  setup(e) {
2516
- let t = e, { isDark: n } = V(), i = r(() => {
2506
+ let t = e, { isDark: n } = V(), r = i(() => {
2517
2507
  switch (t.status) {
2518
2508
  case "ok": return n.value ? "bg-emerald-500/10 text-emerald-400" : "bg-emerald-50 text-emerald-700";
2519
2509
  case "error": return n.value ? "bg-red-500/10 text-red-400" : "bg-red-50 text-red-700";
2520
2510
  default: return n.value ? "bg-gray-700 text-gray-400" : "bg-gray-100 text-gray-500";
2521
2511
  }
2522
- }), c = r(() => {
2512
+ }), a = i(() => {
2523
2513
  switch (t.status) {
2524
2514
  case "ok": return "bg-emerald-500";
2525
2515
  case "error": return "bg-red-500";
2526
2516
  default: return "bg-gray-400";
2527
2517
  }
2528
2518
  });
2529
- return (t, n) => (x(), o("div", { class: h(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", i.value]) }, [s("span", Cr, [e.status === "ok" ? (x(), o("span", wr)) : a("", !0), s("span", { class: h(["relative inline-flex rounded-full h-2 w-2", c.value]) }, null, 2)]), u(" " + k(e.label), 1)], 2));
2519
+ return (t, n) => (S(), s("div", { class: g(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [c("span", wr, [e.status === "ok" ? (S(), s("span", Tr)) : o("", !0), c("span", { class: g(["relative inline-flex rounded-full h-2 w-2", a.value]) }, null, 2)]), d(" " + A(e.label), 1)], 2));
2530
2520
  }
2531
- }), Er = { class: "text-sm font-medium" }, Dr = [
2521
+ }), Dr = { class: "text-sm font-medium" }, Or = [
2532
2522
  "accept",
2533
2523
  "multiple",
2534
2524
  "disabled"
2535
- ], Or = /* @__PURE__ */ f({
2525
+ ], kr = /* @__PURE__ */ p({
2536
2526
  __name: "BaseFileDropzone",
2537
2527
  props: {
2538
2528
  label: {},
@@ -2549,53 +2539,53 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2549
2539
  },
2550
2540
  emits: ["files"],
2551
2541
  setup(e, { emit: t }) {
2552
- let n = e, r = t, { isDark: i } = V(), c = w(!1);
2542
+ let n = e, r = t, { isDark: i } = V(), a = T(!1);
2553
2543
  function l(e) {
2554
2544
  let t = e.target, n = Array.from(t.files ?? []);
2555
2545
  t.value = "", n.length && r("files", n);
2556
2546
  }
2557
2547
  function u() {
2558
- n.disabled || (c.value = !0);
2548
+ n.disabled || (a.value = !0);
2559
2549
  }
2560
2550
  function d(e) {
2561
- if (c.value = !1, n.disabled) return;
2551
+ if (a.value = !1, n.disabled) return;
2562
2552
  let t = Array.from(e.dataTransfer?.files ?? []);
2563
2553
  t.length && r("files", n.multiple ? t : t.slice(0, 1));
2564
2554
  }
2565
- return (t, n) => (x(), o("label", {
2566
- class: h(["flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center transition-colors", [e.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", c.value ? A(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : A(i) ? "border-gray-700 hover:border-emerald-500 text-gray-400 hover:text-emerald-400" : "border-gray-300 hover:border-emerald-500 text-gray-500 hover:text-emerald-600"]]),
2555
+ return (t, n) => (S(), s("label", {
2556
+ class: g(["flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center transition-colors", [e.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", a.value ? j(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : j(i) ? "border-gray-700 hover:border-emerald-500 text-gray-400 hover:text-emerald-400" : "border-gray-300 hover:border-emerald-500 text-gray-500 hover:text-emerald-600"]]),
2567
2557
  onDragover: L(u, ["prevent"]),
2568
- onDragleave: n[0] ||= L((e) => c.value = !1, ["prevent"]),
2558
+ onDragleave: n[0] ||= L((e) => a.value = !1, ["prevent"]),
2569
2559
  onDrop: L(d, ["prevent"])
2570
2560
  }, [
2571
- E(t.$slots, "icon", {}, () => [n[1] ||= s("svg", {
2561
+ D(t.$slots, "icon", {}, () => [n[1] ||= c("svg", {
2572
2562
  class: "w-10 h-10",
2573
2563
  fill: "none",
2574
2564
  viewBox: "0 0 24 24",
2575
2565
  stroke: "currentColor",
2576
2566
  "stroke-width": "1.5",
2577
2567
  "aria-hidden": "true"
2578
- }, [s("path", {
2568
+ }, [c("path", {
2579
2569
  "stroke-linecap": "round",
2580
2570
  "stroke-linejoin": "round",
2581
2571
  d: "M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12-3-3m0 0-3 3m3-3v6m-1.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
2582
2572
  })], -1)]),
2583
- s("p", Er, k(e.label), 1),
2584
- e.hint ? (x(), o("p", {
2573
+ c("p", Dr, A(e.label), 1),
2574
+ e.hint ? (S(), s("p", {
2585
2575
  key: 0,
2586
- class: h(["text-xs", A(i) ? "text-gray-500" : "text-gray-400"])
2587
- }, k(e.hint), 3)) : a("", !0),
2588
- s("input", {
2576
+ class: g(["text-xs", j(i) ? "text-gray-500" : "text-gray-400"])
2577
+ }, A(e.hint), 3)) : o("", !0),
2578
+ c("input", {
2589
2579
  type: "file",
2590
2580
  class: "hidden",
2591
2581
  accept: e.accept,
2592
2582
  multiple: e.multiple,
2593
2583
  disabled: e.disabled,
2594
2584
  onChange: l
2595
- }, null, 40, Dr)
2585
+ }, null, 40, Or)
2596
2586
  ], 34));
2597
2587
  }
2598
- }), kr = /* @__PURE__ */ f({
2588
+ }), Ar = /* @__PURE__ */ p({
2599
2589
  __name: "BaseCodeBlock",
2600
2590
  props: {
2601
2591
  code: {},
@@ -2604,7 +2594,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2604
2594
  maxHeightClass: { default: "" }
2605
2595
  },
2606
2596
  setup(e) {
2607
- let t = e, { isDark: n } = V(), i = {
2597
+ let t = e, { isDark: n } = V(), r = {
2608
2598
  soft: {
2609
2599
  dark: "bg-gray-800/70 text-gray-300",
2610
2600
  light: "bg-gray-100 text-gray-700"
@@ -2616,17 +2606,17 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2616
2606
  }, a = {
2617
2607
  sm: "text-sm px-5 py-4 rounded-lg",
2618
2608
  xs: "text-xs p-3 rounded-lg"
2619
- }, s = r(() => {
2620
- let e = i[t.variant];
2609
+ }, o = i(() => {
2610
+ let e = r[t.variant];
2621
2611
  return n.value ? e.dark : e.light;
2622
- }), c = r(() => a[t.size]);
2623
- return (t, n) => (x(), o("pre", { class: h(["font-mono overflow-auto", [
2612
+ }), c = i(() => a[t.size]);
2613
+ return (t, n) => (S(), s("pre", { class: g(["font-mono overflow-auto", [
2624
2614
  c.value,
2625
- s.value,
2615
+ o.value,
2626
2616
  e.maxHeightClass
2627
- ]]) }, k(e.code), 3));
2617
+ ]]) }, A(e.code), 3));
2628
2618
  }
2629
- }), Ar = ["value", "type"], Q = /* @__PURE__ */ f({
2619
+ }), jr = ["value", "type"], Q = /* @__PURE__ */ p({
2630
2620
  __name: "BaseInput",
2631
2621
  props: {
2632
2622
  modelValue: { default: "" },
@@ -2643,14 +2633,14 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2643
2633
  function r(e) {
2644
2634
  n("update:modelValue", e.target.value);
2645
2635
  }
2646
- return (t, n) => (x(), o("input", {
2636
+ return (t, n) => (S(), s("input", {
2647
2637
  value: e.modelValue,
2648
2638
  type: e.type,
2649
- class: h(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "sm" ? "px-2 py-1.5" : "px-3 py-2"]]),
2639
+ class: g(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "sm" ? "px-2 py-1.5" : "px-3 py-2"]]),
2650
2640
  onInput: r
2651
- }, null, 42, Ar));
2641
+ }, null, 42, jr));
2652
2642
  }
2653
- }), jr = ["value"], Mr = /* @__PURE__ */ f({
2643
+ }), Mr = ["value"], Nr = /* @__PURE__ */ p({
2654
2644
  __name: "BaseSelect",
2655
2645
  props: {
2656
2646
  modelValue: { default: void 0 },
@@ -2666,17 +2656,17 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2666
2656
  function r(e) {
2667
2657
  n("update:modelValue", e.target.value);
2668
2658
  }
2669
- return (t, n) => (x(), o("select", {
2659
+ return (t, n) => (S(), s("select", {
2670
2660
  value: e.modelValue,
2671
- class: h(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "md" ? "px-3 py-2" : "px-2 py-1.5"]]),
2661
+ class: g(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "md" ? "px-3 py-2" : "px-2 py-1.5"]]),
2672
2662
  onChange: r
2673
- }, [E(t.$slots, "default")], 42, jr));
2663
+ }, [D(t.$slots, "default")], 42, Mr));
2674
2664
  }
2675
- }), Nr = [
2665
+ }), Pr = [
2676
2666
  "disabled",
2677
2667
  "aria-label",
2678
2668
  "aria-expanded"
2679
- ], Pr = ["aria-label"], Fr = ["aria-selected", "title"], Ir = ["disabled", "onClick"], Lr = /* @__PURE__ */ f({
2669
+ ], Fr = ["aria-label"], Ir = ["aria-selected", "title"], Lr = ["disabled", "onClick"], Rr = /* @__PURE__ */ p({
2680
2670
  __name: "BaseDropdown",
2681
2671
  props: {
2682
2672
  options: {},
@@ -2697,59 +2687,64 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2697
2687
  },
2698
2688
  emits: ["update:modelValue"],
2699
2689
  setup(t, { emit: n }) {
2700
- let i = t, c = n, l = w(!1), u = w(null), f = r(() => i.options.find((e) => e.value === i.modelValue) ?? null), p = r(() => i.triggerClass ? "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed " + i.triggerClass : "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed rounded-lg border text-sm border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-700 dark:text-slate-100 hover:bg-slate-50 dark:hover:bg-slate-800 " + (i.size === "sm" ? "px-3 py-2" : "px-4 py-2.5"));
2690
+ let r = t, a = n, l = T(!1), u = T(null), d = i(() => r.options.find((e) => e.value === r.modelValue) ?? null), p = i(() => {
2691
+ let e = "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed ";
2692
+ if (r.triggerClass) return e + r.triggerClass;
2693
+ let t = r.size === "sm" ? "px-3 py-2" : "px-4 py-2.5";
2694
+ return e + "rounded-lg border text-sm " + "border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-700 dark:text-slate-100 " + "hover:bg-slate-50 dark:hover:bg-slate-800 " + t;
2695
+ });
2701
2696
  function m(e) {
2702
- return `block w-full px-4 py-2 text-left text-sm transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500 disabled:opacity-50 disabled:cursor-not-allowed ${e.value === i.modelValue ? "bg-emerald-500 text-white" : "text-slate-700 dark:text-slate-200 hover:bg-slate-100 dark:hover:bg-slate-800"}`;
2697
+ return `block w-full px-4 py-2 text-left text-sm transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500 disabled:opacity-50 disabled:cursor-not-allowed ${e.value === r.modelValue ? "bg-emerald-500 text-white" : "text-slate-700 dark:text-slate-200 hover:bg-slate-100 dark:hover:bg-slate-800"}`;
2703
2698
  }
2704
- function g() {
2705
- i.disabled || (l.value = !l.value);
2699
+ function h() {
2700
+ r.disabled || (l.value = !l.value);
2706
2701
  }
2707
- function y(e) {
2708
- e.disabled || (c("update:modelValue", e.value), l.value = !1);
2702
+ function _(e) {
2703
+ e.disabled || (a("update:modelValue", e.value), l.value = !1);
2709
2704
  }
2710
- Nt(() => {
2705
+ Ft(() => {
2711
2706
  l.value = !1;
2712
2707
  });
2713
2708
  function b(e) {
2714
2709
  l.value && u.value && !u.value.contains(e.target) && (l.value = !1);
2715
2710
  }
2716
- return v(() => document.addEventListener("click", b)), _(() => document.removeEventListener("click", b)), (n, r) => (x(), o("div", {
2711
+ return y(() => document.addEventListener("click", b)), v(() => document.removeEventListener("click", b)), (n, r) => (S(), s("div", {
2717
2712
  ref_key: "rootEl",
2718
2713
  ref: u,
2719
- class: h(t.block ? "relative w-full" : "relative inline-block")
2720
- }, [s("button", {
2714
+ class: g(t.block ? "relative w-full" : "relative inline-block")
2715
+ }, [c("button", {
2721
2716
  type: "button",
2722
- class: h([p.value, t.block ? "w-full" : ""]),
2717
+ class: g([p.value, t.block ? "w-full" : ""]),
2723
2718
  disabled: t.disabled,
2724
2719
  "aria-label": t.ariaLabel || void 0,
2725
2720
  "aria-haspopup": "listbox",
2726
2721
  "aria-expanded": l.value,
2727
- onClick: g
2728
- }, [s("span", { class: h(["min-w-0 truncate", f.value ? "" : "text-slate-400 dark:text-slate-500"]) }, k(f.value ? f.value.label : t.placeholder), 3), d(A(ue), {
2729
- class: h(["shrink-0 transition-transform", [t.chevronClass, l.value ? "rotate-180" : ""]]),
2722
+ onClick: h
2723
+ }, [c("span", { class: g(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, A(d.value ? d.value.label : t.placeholder), 3), f(j(de), {
2724
+ class: g(["shrink-0 transition-transform", [t.chevronClass, l.value ? "rotate-180" : ""]]),
2730
2725
  "aria-hidden": "true"
2731
- }, null, 8, ["class"])], 10, Nr), l.value ? (x(), o("ul", {
2726
+ }, null, 8, ["class"])], 10, Pr), l.value ? (S(), s("ul", {
2732
2727
  key: 0,
2733
2728
  role: "listbox",
2734
2729
  "aria-label": t.ariaLabel || t.placeholder,
2735
2730
  class: "absolute z-20 mt-1 w-full min-w-max max-w-xs max-h-60 overflow-auto rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 py-1 shadow-lg focus:outline-none"
2736
- }, [(x(!0), o(e, null, T(t.options, (e) => (x(), o("li", {
2731
+ }, [(S(!0), s(e, null, E(t.options, (e) => (S(), s("li", {
2737
2732
  key: String(e.value),
2738
2733
  role: "option",
2739
2734
  "aria-selected": e.value === t.modelValue,
2740
2735
  title: e.title
2741
- }, [s("button", {
2736
+ }, [c("button", {
2742
2737
  type: "button",
2743
2738
  disabled: e.disabled,
2744
- class: h(m(e)),
2745
- onClick: (t) => y(e)
2746
- }, k(e.label), 11, Ir)], 8, Fr))), 128))], 8, Pr)) : a("", !0)], 2));
2739
+ class: g(m(e)),
2740
+ onClick: (t) => _(e)
2741
+ }, A(e.label), 11, Lr)], 8, Ir))), 128))], 8, Fr)) : o("", !0)], 2));
2747
2742
  }
2748
- }), Rr = ["role", "aria-label"], zr = [
2743
+ }), zr = ["role", "aria-label"], Br = [
2749
2744
  "aria-pressed",
2750
2745
  "title",
2751
2746
  "onClick"
2752
- ], Br = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Vr = /* @__PURE__ */ f({
2747
+ ], Vr = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Hr = /* @__PURE__ */ p({
2753
2748
  __name: "BaseSegmentedControl",
2754
2749
  props: {
2755
2750
  options: {},
@@ -2763,25 +2758,25 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2763
2758
  },
2764
2759
  emits: ["update:modelValue"],
2765
2760
  setup(t, { emit: n }) {
2766
- let i = t, a = n, s = r(() => i.variant === "toolbar" ? "inline-flex h-9 divide-x divide-slate-300 dark:divide-slate-600 rounded-md border border-slate-300 dark:border-slate-600 overflow-hidden" : "inline-flex rounded border border-slate-300 dark:border-slate-600 overflow-hidden"), c = r(() => i.variant === "toolbar" ? "flex items-center px-3.5 text-xs font-semibold uppercase tracking-wide transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500" : `${i.variant === "wide" ? "px-4 py-2" : "px-3 py-2"} text-sm font-medium transition-colors cursor-pointer border-l first:border-l-0 border-slate-300 dark:border-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500`), l = r(() => i.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
2761
+ let r = t, a = n, o = i(() => r.variant === "toolbar" ? "inline-flex h-9 divide-x divide-slate-300 dark:divide-slate-600 rounded-md border border-slate-300 dark:border-slate-600 overflow-hidden" : "inline-flex rounded border border-slate-300 dark:border-slate-600 overflow-hidden"), c = i(() => r.variant === "toolbar" ? "flex items-center px-3.5 text-xs font-semibold uppercase tracking-wide transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500" : `${r.variant === "wide" ? "px-4 py-2" : "px-3 py-2"} text-sm font-medium transition-colors cursor-pointer border-l first:border-l-0 border-slate-300 dark:border-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500`), l = i(() => r.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
2767
2762
  function u(e) {
2768
- let t = e.value === i.modelValue;
2769
- return i.optionClass ? i.optionClass(e, t) : t ? l.value : Br;
2763
+ let t = e.value === r.modelValue;
2764
+ return r.optionClass ? r.optionClass(e, t) : t ? l.value : Vr;
2770
2765
  }
2771
- return (n, r) => (x(), o("div", {
2766
+ return (n, r) => (S(), s("div", {
2772
2767
  role: t.ariaLabel ? "group" : void 0,
2773
2768
  "aria-label": t.ariaLabel || void 0,
2774
- class: h(s.value)
2775
- }, [(x(!0), o(e, null, T(t.options, (e) => (x(), o("button", {
2769
+ class: g(o.value)
2770
+ }, [(S(!0), s(e, null, E(t.options, (e) => (S(), s("button", {
2776
2771
  key: String(e.value),
2777
2772
  type: "button",
2778
- class: h([c.value, u(e)]),
2773
+ class: g([c.value, u(e)]),
2779
2774
  "aria-pressed": e.value === t.modelValue,
2780
2775
  title: e.title,
2781
2776
  onClick: (t) => a("update:modelValue", e.value)
2782
- }, k(e.label), 11, zr))), 128))], 10, Rr));
2777
+ }, A(e.label), 11, Br))), 128))], 10, zr));
2783
2778
  }
2784
- }), Hr = { class: "w-full text-sm" }, Ur = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Wr = { class: "text-left" }, Gr = { key: 0 }, Kr = ["colspan"], qr = /* @__PURE__ */ f({
2779
+ }), Ur = { class: "w-full text-sm" }, Wr = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Gr = { class: "text-left" }, Kr = { key: 0 }, qr = ["colspan"], Jr = /* @__PURE__ */ p({
2785
2780
  __name: "BaseTable",
2786
2781
  props: {
2787
2782
  columns: {},
@@ -2792,24 +2787,24 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2792
2787
  emptyText: { default: "No rows." }
2793
2788
  },
2794
2789
  setup(t) {
2795
- return (n, r) => (x(), o("table", Hr, [s("thead", Ur, [s("tr", Wr, [(x(!0), o(e, null, T(t.columns, (e, t) => (x(), o("th", {
2790
+ return (n, r) => (S(), s("table", Ur, [c("thead", Wr, [c("tr", Gr, [(S(!0), s(e, null, E(t.columns, (e, t) => (S(), s("th", {
2796
2791
  key: t,
2797
- class: h(["px-4 py-3", e.align === "right" ? "text-right" : ""])
2798
- }, k(e.label), 3))), 128))])]), s("tbody", null, [t.empty ? (x(), o("tr", Gr, [s("td", {
2792
+ class: g(["px-4 py-3", e.align === "right" ? "text-right" : ""])
2793
+ }, A(e.label), 3))), 128))])]), c("tbody", null, [t.empty ? (S(), s("tr", Kr, [c("td", {
2799
2794
  colspan: t.columns.length,
2800
2795
  class: "px-4 py-12 text-center text-slate-500"
2801
- }, [E(n.$slots, "empty", {}, () => [u(k(t.emptyText), 1)])], 8, Kr)])) : a("", !0), E(n.$slots, "default")])]));
2796
+ }, [D(n.$slots, "empty", {}, () => [d(A(t.emptyText), 1)])], 8, qr)])) : o("", !0), D(n.$slots, "default")])]));
2802
2797
  }
2803
- }), Jr = { class: "grid gap-3 md:grid-cols-2" }, Yr = {
2798
+ }), Yr = { class: "grid gap-3 md:grid-cols-2" }, Xr = {
2804
2799
  key: 0,
2805
2800
  class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
2806
- }, Xr = ["value"], Zr = {
2801
+ }, Zr = ["value"], Qr = {
2807
2802
  key: 2,
2808
2803
  class: "flex items-center gap-2 mt-4"
2809
- }, Qr = ["checked", "onChange"], $r = { class: "text-sm text-slate-900 dark:text-slate-100" }, ei = {
2804
+ }, $r = ["checked", "onChange"], ei = { class: "text-sm text-slate-900 dark:text-slate-100" }, ti = {
2810
2805
  key: 4,
2811
2806
  class: "text-[11px] text-slate-400 mt-1"
2812
- }, ti = /* @__PURE__ */ f({
2807
+ }, ni = /* @__PURE__ */ p({
2813
2808
  __name: "BaseSpecFields",
2814
2809
  props: {
2815
2810
  specs: {},
@@ -2818,7 +2813,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2818
2813
  emits: ["update"],
2819
2814
  setup(t, { emit: n }) {
2820
2815
  let r = n;
2821
- function c(e, t) {
2816
+ function i(e, t) {
2822
2817
  r("update", e, t.target.checked);
2823
2818
  }
2824
2819
  function l(e, t) {
@@ -2836,24 +2831,24 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2836
2831
  let t = e.clipboardData?.getData("text") ?? "";
2837
2832
  /^-?\d*$/.test(t.trim()) || e.preventDefault();
2838
2833
  }
2839
- return (n, f) => (x(), o("div", Jr, [(x(!0), o(e, null, T(t.specs, (f) => (x(), o("div", { key: f.key }, [
2840
- f.type === "boolean" ? a("", !0) : (x(), o("label", Yr, k(f.label), 1)),
2841
- f.type === "select" ? (x(), i(Mr, {
2834
+ return (n, f) => (S(), s("div", Yr, [(S(!0), s(e, null, E(t.specs, (f) => (S(), s("div", { key: f.key }, [
2835
+ f.type === "boolean" ? o("", !0) : (S(), s("label", Xr, A(f.label), 1)),
2836
+ f.type === "select" ? (S(), a(Nr, {
2842
2837
  key: 1,
2843
2838
  modelValue: String(t.params[f.key] ?? ""),
2844
2839
  "onUpdate:modelValue": (e) => r("update", f.key, e)
2845
2840
  }, {
2846
- default: F(() => [(x(!0), o(e, null, T(f.options ?? [], (e) => (x(), o("option", {
2841
+ default: F(() => [(S(!0), s(e, null, E(f.options ?? [], (e) => (S(), s("option", {
2847
2842
  key: e,
2848
2843
  value: e
2849
- }, k(e), 9, Xr))), 128))]),
2844
+ }, A(e), 9, Zr))), 128))]),
2850
2845
  _: 2
2851
- }, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (x(), o("label", Zr, [s("input", {
2846
+ }, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (S(), s("label", Qr, [c("input", {
2852
2847
  checked: !!t.params[f.key],
2853
2848
  type: "checkbox",
2854
2849
  class: "h-4 w-4",
2855
- onChange: (e) => c(f.key, e)
2856
- }, null, 40, Qr), s("span", $r, k(f.label), 1)])) : (x(), i(Q, {
2850
+ onChange: (e) => i(f.key, e)
2851
+ }, null, 40, $r), c("span", ei, A(f.label), 1)])) : (S(), a(Q, {
2857
2852
  key: 3,
2858
2853
  modelValue: t.params[f.key],
2859
2854
  type: "number",
@@ -2872,11 +2867,11 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2872
2867
  "onPaste",
2873
2868
  "onUpdate:modelValue"
2874
2869
  ])),
2875
- f.help ? (x(), o("p", ei, k(f.help), 1)) : a("", !0),
2876
- E(n.$slots, "after", { spec: f })
2870
+ f.help ? (S(), s("p", ti, A(f.help), 1)) : o("", !0),
2871
+ D(n.$slots, "after", { spec: f })
2877
2872
  ]))), 128))]));
2878
2873
  }
2879
- }), ni = { class: "mt-1.5 space-y-0.5 px-1" }, ri = { class: "text-slate-400 dark:text-slate-500" }, ii = /* @__PURE__ */ f({
2874
+ }), ri = { class: "mt-1.5 space-y-0.5 px-1" }, ii = { class: "text-slate-400 dark:text-slate-500" }, ai = /* @__PURE__ */ p({
2880
2875
  __name: "BaseStatBreakdown",
2881
2876
  props: {
2882
2877
  items: {},
@@ -2895,16 +2890,16 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2895
2890
  function i(e) {
2896
2891
  return !n.signed || e == null ? "text-slate-500 dark:text-slate-400" : e >= 0 ? "text-emerald-600 dark:text-emerald-400" : "text-red-600 dark:text-red-400";
2897
2892
  }
2898
- return (n, a) => (x(), o("div", ni, [(x(!0), o(e, null, T(t.items, (e) => (x(), o("div", {
2893
+ return (n, a) => (S(), s("div", ri, [(S(!0), s(e, null, E(t.items, (e) => (S(), s("div", {
2899
2894
  key: e.label,
2900
2895
  class: "flex items-center justify-between text-[11px]"
2901
- }, [s("span", ri, k(e.label), 1), s("span", { class: h(["font-mono tabular-nums font-medium", i(e.value)]) }, k(r(e.value)), 3)]))), 128))]));
2896
+ }, [c("span", ii, A(e.label), 1), c("span", { class: g(["font-mono tabular-nums font-medium", i(e.value)]) }, A(r(e.value)), 3)]))), 128))]));
2902
2897
  }
2903
- }), ai = [
2898
+ }), oi = [
2904
2899
  "disabled",
2905
2900
  "title",
2906
2901
  "aria-pressed"
2907
- ], oi = /* @__PURE__ */ f({
2902
+ ], si = /* @__PURE__ */ p({
2908
2903
  __name: "BaseFilterChip",
2909
2904
  props: {
2910
2905
  label: { default: "" },
@@ -2933,21 +2928,21 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2933
2928
  red: "border-red-500 bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-500",
2934
2929
  slate: "border-slate-600 bg-slate-600 text-white hover:bg-slate-700 focus-visible:ring-emerald-500"
2935
2930
  };
2936
- return (r, i) => (x(), o("button", {
2931
+ return (r, i) => (S(), s("button", {
2937
2932
  type: "button",
2938
2933
  disabled: e.disabled,
2939
2934
  title: e.title,
2940
2935
  "aria-pressed": e.active,
2941
- class: h(["whitespace-nowrap rounded-md border px-3 text-sm font-semibold text-center transition-colors focus:outline-none focus-visible:ring-2 disabled:opacity-50 disabled:cursor-not-allowed", e.active ? n[e.color] : t[e.color]])
2942
- }, [E(r.$slots, "default", {}, () => [u(k(e.label), 1)])], 10, ai));
2936
+ class: g(["whitespace-nowrap rounded-md border px-3 text-sm font-semibold text-center transition-colors focus:outline-none focus-visible:ring-2 disabled:opacity-50 disabled:cursor-not-allowed", e.active ? n[e.color] : t[e.color]])
2937
+ }, [D(r.$slots, "default", {}, () => [d(A(e.label), 1)])], 10, oi));
2943
2938
  }
2944
- }), si = { class: "flex items-center justify-between mb-4" }, ci = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, li = {
2939
+ }), ci = { class: "flex items-center justify-between mb-4" }, li = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, ui = {
2945
2940
  key: 0,
2946
2941
  class: "text-xs text-slate-500 dark:text-slate-400"
2947
- }, ui = {
2942
+ }, di = {
2948
2943
  key: 0,
2949
2944
  class: "inline-flex items-center gap-2 text-xs text-slate-500"
2950
- }, di = { class: "grid gap-4 md:grid-cols-2" }, fi = { class: "md:col-span-2" }, pi = ["for"], mi = { class: "md:col-span-2" }, hi = ["for"], gi = { class: "text-[11px] text-slate-500 mt-1" }, _i = { class: "md:col-span-2" }, vi = ["for"], yi = { class: "md:col-span-2" }, bi = ["for"], xi = { class: "md:col-span-2" }, Si = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", Ci = /* @__PURE__ */ f({
2945
+ }, fi = { class: "grid gap-4 md:grid-cols-2" }, pi = { class: "md:col-span-2" }, mi = ["for"], hi = { class: "md:col-span-2" }, gi = ["for"], _i = { class: "text-[11px] text-slate-500 mt-1" }, vi = { class: "md:col-span-2" }, yi = ["for"], bi = { class: "md:col-span-2" }, xi = ["for"], Si = { class: "md:col-span-2" }, Ci = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", wi = /* @__PURE__ */ p({
2951
2946
  __name: "BaseCredentialsForm",
2952
2947
  props: {
2953
2948
  title: {},
@@ -2973,16 +2968,16 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2973
2968
  "load-error"
2974
2969
  ],
2975
2970
  setup(t, { expose: n, emit: r }) {
2976
- let c = t, l = r, f = w(!1), p = w(!1), m = S({
2971
+ let i = t, l = r, u = T(!1), p = T(!1), m = C({
2977
2972
  keyId: "",
2978
2973
  secretKey: "",
2979
- baseUrl: c.defaults.baseUrl,
2980
- dataUrl: c.defaults.dataUrl
2974
+ baseUrl: i.defaults.baseUrl,
2975
+ dataUrl: i.defaults.dataUrl
2981
2976
  });
2982
- async function g() {
2977
+ async function h() {
2983
2978
  try {
2984
- let e = await c.fetchFn();
2985
- m.keyId = e.keyId ?? "", m.baseUrl = e.baseUrl || c.defaults.baseUrl, m.dataUrl = e.dataUrl || c.defaults.dataUrl, m.secretKey = "", p.value = e.hasSecret;
2979
+ let e = await i.fetchFn();
2980
+ m.keyId = e.keyId ?? "", m.baseUrl = e.baseUrl || i.defaults.baseUrl, m.dataUrl = e.dataUrl || i.defaults.dataUrl, m.secretKey = "", p.value = e.hasSecret;
2986
2981
  } catch (e) {
2987
2982
  l("load-error", e instanceof Error ? e.message : "");
2988
2983
  }
@@ -2990,105 +2985,106 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
2990
2985
  function _(e) {
2991
2986
  return !e || !e.trim();
2992
2987
  }
2993
- async function y() {
2994
- if (!f.value) {
2988
+ async function v() {
2989
+ if (!u.value) {
2995
2990
  if (_(m.keyId)) {
2996
- l("error", c.requiredKeyMessage);
2991
+ l("error", i.requiredKeyMessage);
2997
2992
  return;
2998
2993
  }
2999
2994
  if (!p.value && _(m.secretKey)) {
3000
- l("error", c.requiredSecretMessage);
2995
+ l("error", i.requiredSecretMessage);
3001
2996
  return;
3002
2997
  }
3003
2998
  if (_(m.baseUrl) || _(m.dataUrl)) {
3004
2999
  l("error", "Base URL and Data URL are required.");
3005
3000
  return;
3006
3001
  }
3007
- f.value = !0;
3002
+ u.value = !0;
3008
3003
  try {
3009
- p.value = (await c.updateFn({
3004
+ let e = await i.updateFn({
3010
3005
  keyId: m.keyId.trim(),
3011
3006
  secretKey: _(m.secretKey) ? void 0 : m.secretKey.trim(),
3012
3007
  baseUrl: m.baseUrl.trim(),
3013
3008
  dataUrl: m.dataUrl.trim()
3014
- })).hasSecret, m.secretKey = "", l("saved", c.savedMessage);
3009
+ });
3010
+ p.value = e.hasSecret, m.secretKey = "", l("saved", i.savedMessage);
3015
3011
  } catch (e) {
3016
3012
  l("error", e instanceof Error ? e.message : "Failed to save");
3017
3013
  } finally {
3018
- f.value = !1;
3014
+ u.value = !1;
3019
3015
  }
3020
3016
  }
3021
3017
  }
3022
- return v(g), n({ load: g }), (n, r) => (x(), i(ct, { class: "!p-6" }, {
3018
+ return y(h), n({ load: h }), (n, r) => (S(), a(ut, { class: "!p-6" }, {
3023
3019
  default: F(() => [
3024
- s("div", si, [s("div", null, [s("h2", ci, k(t.title), 1), t.subtitle ? (x(), o("p", li, k(t.subtitle), 1)) : a("", !0)]), f.value ? (x(), o("span", ui, [d(lt, { class: "!h-4 !w-4" }), r[4] ||= u(" Saving… ", -1)])) : a("", !0)]),
3025
- s("div", di, [
3026
- s("div", fi, [s("label", {
3020
+ c("div", ci, [c("div", null, [c("h2", li, A(t.title), 1), t.subtitle ? (S(), s("p", ui, A(t.subtitle), 1)) : o("", !0)]), u.value ? (S(), s("span", di, [f(dt, { class: "!h-4 !w-4" }), r[4] ||= d(" Saving… ", -1)])) : o("", !0)]),
3021
+ c("div", fi, [
3022
+ c("div", pi, [c("label", {
3027
3023
  for: `${t.idPrefix}-key-id`,
3028
3024
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3029
- }, k(t.keyLabel), 9, pi), d(Q, {
3025
+ }, A(t.keyLabel), 9, mi), f(Q, {
3030
3026
  id: `${t.idPrefix}-key-id`,
3031
3027
  modelValue: m.keyId,
3032
3028
  "onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
3033
3029
  type: "text",
3034
3030
  autocomplete: "off",
3035
3031
  placeholder: t.keyPlaceholder,
3036
- class: h(Si)
3032
+ class: g(Ci)
3037
3033
  }, null, 8, [
3038
3034
  "id",
3039
3035
  "modelValue",
3040
3036
  "placeholder"
3041
3037
  ])]),
3042
- s("div", mi, [
3043
- s("label", {
3038
+ c("div", hi, [
3039
+ c("label", {
3044
3040
  for: `${t.idPrefix}-secret`,
3045
3041
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3046
- }, k(t.secretLabel), 9, hi),
3047
- d(Q, {
3042
+ }, A(t.secretLabel), 9, gi),
3043
+ f(Q, {
3048
3044
  id: `${t.idPrefix}-secret`,
3049
3045
  modelValue: m.secretKey,
3050
3046
  "onUpdate:modelValue": r[1] ||= (e) => m.secretKey = e,
3051
3047
  type: "password",
3052
3048
  autocomplete: "new-password",
3053
3049
  placeholder: p.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
3054
- class: h(Si)
3050
+ class: g(Ci)
3055
3051
  }, null, 8, [
3056
3052
  "id",
3057
3053
  "modelValue",
3058
3054
  "placeholder"
3059
3055
  ]),
3060
- s("p", gi, [p.value ? (x(), o(e, { key: 0 }, [u(k(t.secretSetHint), 1)], 64)) : E(n.$slots, "no-secret-hint", { key: 1 }, () => [u(k(t.permissionsHint), 1)])])
3056
+ c("p", _i, [p.value ? (S(), s(e, { key: 0 }, [d(A(t.secretSetHint), 1)], 64)) : D(n.$slots, "no-secret-hint", {}, () => [d(A(t.permissionsHint), 1)], void 0, 1)])
3061
3057
  ]),
3062
- s("div", _i, [
3063
- s("label", {
3058
+ c("div", vi, [
3059
+ c("label", {
3064
3060
  for: `${t.idPrefix}-base-url`,
3065
3061
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3066
- }, "Base URL (trading)", 8, vi),
3067
- d(Q, {
3062
+ }, "Base URL (trading)", 8, yi),
3063
+ f(Q, {
3068
3064
  id: `${t.idPrefix}-base-url`,
3069
3065
  modelValue: m.baseUrl,
3070
3066
  "onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
3071
3067
  type: "text",
3072
- class: h(Si)
3068
+ class: g(Ci)
3073
3069
  }, null, 8, ["id", "modelValue"]),
3074
- E(n.$slots, "base-url-extra", { form: m })
3070
+ D(n.$slots, "base-url-extra", { form: m })
3075
3071
  ]),
3076
- s("div", yi, [s("label", {
3072
+ c("div", bi, [c("label", {
3077
3073
  for: `${t.idPrefix}-data-url`,
3078
3074
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3079
- }, "Data URL (market data)", 8, bi), d(Q, {
3075
+ }, "Data URL (market data)", 8, xi), f(Q, {
3080
3076
  id: `${t.idPrefix}-data-url`,
3081
3077
  modelValue: m.dataUrl,
3082
3078
  "onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
3083
3079
  type: "text",
3084
- class: h(Si)
3080
+ class: g(Ci)
3085
3081
  }, null, 8, ["id", "modelValue"])]),
3086
- s("div", xi, [d(G, {
3087
- color: A(U).GREEN,
3082
+ c("div", Si, [f(Je, {
3083
+ color: j(U).GREEN,
3088
3084
  description: t.saveLabel,
3089
- isDisable: f.value,
3090
- isLoading: f.value,
3091
- onClick: y
3085
+ isDisable: u.value,
3086
+ isLoading: u.value,
3087
+ onClick: v
3092
3088
  }, null, 8, [
3093
3089
  "color",
3094
3090
  "description",
@@ -3096,21 +3092,21 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
3096
3092
  "isLoading"
3097
3093
  ])])
3098
3094
  ]),
3099
- E(n.$slots, "footer")
3095
+ D(n.$slots, "footer")
3100
3096
  ]),
3101
3097
  _: 3
3102
3098
  }));
3103
3099
  }
3104
- }), wi = {
3100
+ }), Ti = {
3105
3101
  key: 0,
3106
3102
  class: "text-sm text-slate-500 dark:text-slate-400"
3107
- }, Ti = { class: "mb-3 flex flex-wrap items-center gap-2" }, Ei = { class: "relative min-w-[200px] flex-1" }, Di = ["placeholder"], Oi = {
3103
+ }, Ei = { class: "mb-3 flex flex-wrap items-center gap-2" }, Di = { class: "relative min-w-[200px] flex-1" }, Oi = ["placeholder"], ki = {
3108
3104
  key: 0,
3109
3105
  class: "text-sm text-slate-500 dark:text-slate-400"
3110
- }, ki = {
3106
+ }, Ai = {
3111
3107
  key: 1,
3112
3108
  class: "flex flex-wrap gap-2"
3113
- }, Ai = ["title", "onClick"], ji = "h-9 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", Mi = "\0all", Ni = /* @__PURE__ */ f({
3109
+ }, ji = ["title", "onClick"], Mi = "h-9 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", Ni = "\0all", Pi = /* @__PURE__ */ p({
3114
3110
  __name: "BasePillPickerModal",
3115
3111
  props: {
3116
3112
  title: {},
@@ -3132,11 +3128,11 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
3132
3128
  },
3133
3129
  emits: ["pick", "close"],
3134
3130
  setup(t, { emit: n }) {
3135
- let c = t, l = n, u = r(() => c.icon ?? ye), f = w(""), p = w(Mi), m = r(() => c.groups && c.groups.length > 0 ? [{
3136
- value: Mi,
3137
- label: c.allLabel
3138
- }, ...c.groups] : []), g = r(() => c.items.filter((e) => (p.value === Mi || e.group === p.value) && e.label.toLowerCase().includes(f.value.trim().toLowerCase())));
3139
- return (n, r) => (x(), i(Ht, {
3131
+ let r = t, l = n, u = i(() => r.icon ?? be), d = T(""), p = T(Ni), m = i(() => r.groups && r.groups.length > 0 ? [{
3132
+ value: Ni,
3133
+ label: r.allLabel
3134
+ }, ...r.groups] : []), h = i(() => r.items.filter((e) => (p.value === Ni || e.group === p.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
3135
+ return (n, r) => (S(), a(Wt, {
3140
3136
  title: t.title,
3141
3137
  icon: u.value,
3142
3138
  subtitle: t.subtitle,
@@ -3144,32 +3140,32 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
3144
3140
  "max-width-class": t.maxWidthClass,
3145
3141
  onCancel: r[4] ||= (e) => l("close")
3146
3142
  }, {
3147
- footer: F(() => [d(Gn, {
3143
+ footer: F(() => [f(Kn, {
3148
3144
  variant: "ghost",
3149
3145
  label: t.closeText,
3150
3146
  onClick: r[3] ||= (e) => l("close")
3151
3147
  }, null, 8, ["label"])]),
3152
- default: F(() => [t.items.length === 0 ? (x(), o("p", wi, k(t.emptyMessage), 1)) : (x(), o(e, { key: 1 }, [s("div", Ti, [s("div", Ei, [
3153
- d(A(ye), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
3154
- I(s("input", {
3155
- "onUpdate:modelValue": r[0] ||= (e) => f.value = e,
3148
+ default: F(() => [t.items.length === 0 ? (S(), s("p", Ti, A(t.emptyMessage), 1)) : (S(), s(e, { key: 1 }, [c("div", Ei, [c("div", Di, [
3149
+ f(j(be), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
3150
+ I(c("input", {
3151
+ "onUpdate:modelValue": r[0] ||= (e) => d.value = e,
3156
3152
  type: "text",
3157
3153
  placeholder: t.searchPlaceholder,
3158
3154
  autocomplete: "off",
3159
- class: h([
3160
- ji,
3155
+ class: g([
3156
+ Mi,
3161
3157
  "w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
3162
3158
  t.mono ? "font-mono" : ""
3163
3159
  ])
3164
- }, null, 10, Di), [[N, f.value]]),
3165
- f.value ? (x(), o("button", {
3160
+ }, null, 10, Oi), [[N, d.value]]),
3161
+ d.value ? (S(), s("button", {
3166
3162
  key: 0,
3167
3163
  type: "button",
3168
3164
  "aria-label": "Clear the filter",
3169
3165
  class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
3170
- onClick: r[1] ||= (e) => f.value = ""
3171
- }, " ✕ ")) : a("", !0)
3172
- ]), m.value.length > 0 ? (x(), i(Vr, {
3166
+ onClick: r[1] ||= (e) => d.value = ""
3167
+ }, " ✕ ")) : o("", !0)
3168
+ ]), m.value.length > 0 ? (S(), a(Hr, {
3173
3169
  key: 0,
3174
3170
  modelValue: p.value,
3175
3171
  "onUpdate:modelValue": r[2] ||= (e) => p.value = e,
@@ -3179,13 +3175,13 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
3179
3175
  "modelValue",
3180
3176
  "options",
3181
3177
  "aria-label"
3182
- ])) : a("", !0)]), g.value.length === 0 ? (x(), o("p", Oi, k(t.noMatchMessage), 1)) : (x(), o("div", ki, [(x(!0), o(e, null, T(g.value, (e) => (x(), o("button", {
3178
+ ])) : o("", !0)]), h.value.length === 0 ? (S(), s("p", ki, A(t.noMatchMessage), 1)) : (S(), s("div", Ai, [(S(!0), s(e, null, E(h.value, (e) => (S(), s("button", {
3183
3179
  key: e.id,
3184
3180
  type: "button",
3185
3181
  title: e.title,
3186
- class: h(["h-8 shrink-0 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 px-3 text-sm text-slate-700 dark:text-slate-200 transition-colors hover:border-emerald-500 hover:bg-emerald-50 hover:text-emerald-700 dark:hover:bg-emerald-500/10 dark:hover:text-emerald-400 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", t.mono ? "font-mono" : ""]),
3182
+ class: g(["h-8 shrink-0 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 px-3 text-sm text-slate-700 dark:text-slate-200 transition-colors hover:border-emerald-500 hover:bg-emerald-50 hover:text-emerald-700 dark:hover:bg-emerald-500/10 dark:hover:text-emerald-400 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", t.mono ? "font-mono" : ""]),
3187
3183
  onClick: (t) => l("pick", e)
3188
- }, k(e.label), 11, Ai))), 128))]))], 64))]),
3184
+ }, A(e.label), 11, ji))), 128))]))], 64))]),
3189
3185
  _: 1
3190
3186
  }, 8, [
3191
3187
  "title",
@@ -3194,7 +3190,7 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
3194
3190
  "max-width-class"
3195
3191
  ]));
3196
3192
  }
3197
- }), Pi = ["aria-label"], Fi = ["title"], Ii = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, Li = ["title"], Ri = /* @__PURE__ */ f({
3193
+ }), Fi = ["aria-label"], Ii = ["title"], Li = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, Ri = ["title"], zi = /* @__PURE__ */ p({
3198
3194
  __name: "BaseBarDistribution",
3199
3195
  props: {
3200
3196
  bars: {},
@@ -3205,53 +3201,53 @@ var pn = ["aria-label", "aria-expanded"], mn = { class: "flex flex-col h-full" }
3205
3201
  barClass: { default: "bg-emerald-500/80 dark:bg-emerald-400/80" }
3206
3202
  },
3207
3203
  setup(t) {
3208
- let n = t, i = r(() => Math.max(1, ...n.bars.map((e) => e.count))), a = (e) => Math.max(3, Math.round(e.count / i.value * n.maxBarHeight)), c = (e) => `${n.titlePrefix ? `${n.titlePrefix} ` : ""}${e.label}: ${e.count} ${n.countNoun}${e.count === 1 ? "" : "s"}`;
3209
- return (n, r) => (x(), o("div", {
3204
+ let n = t, r = i(() => Math.max(1, ...n.bars.map((e) => e.count))), a = (e) => Math.max(3, Math.round(e.count / r.value * n.maxBarHeight)), o = (e) => `${n.titlePrefix ? `${n.titlePrefix} ` : ""}${e.label}: ${e.count} ${n.countNoun}${e.count === 1 ? "" : "s"}`;
3205
+ return (n, r) => (S(), s("div", {
3210
3206
  class: "flex items-end gap-1.5 overflow-x-auto pb-1",
3211
3207
  role: "img",
3212
3208
  "aria-label": t.ariaLabel
3213
- }, [(x(!0), o(e, null, T(t.bars, (e) => (x(), o("div", {
3209
+ }, [(S(!0), s(e, null, E(t.bars, (e) => (S(), s("div", {
3214
3210
  key: e.label,
3215
3211
  class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
3216
- title: c(e)
3212
+ title: o(e)
3217
3213
  }, [
3218
- s("span", Ii, k(e.count), 1),
3219
- s("div", {
3220
- class: h(["w-full max-w-8 rounded-t", t.barClass]),
3221
- style: g({ height: `${a(e)}px` })
3214
+ c("span", Li, A(e.count), 1),
3215
+ c("div", {
3216
+ class: g(["w-full max-w-8 rounded-t", t.barClass]),
3217
+ style: _({ height: `${a(e)}px` })
3222
3218
  }, null, 6),
3223
- s("span", {
3219
+ c("span", {
3224
3220
  class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
3225
3221
  title: e.label
3226
- }, k(e.label), 9, Li)
3227
- ], 8, Fi))), 128))], 8, Pi));
3222
+ }, A(e.label), 9, Ri)
3223
+ ], 8, Ii))), 128))], 8, Fi));
3228
3224
  }
3229
3225
  });
3230
3226
  //#endregion
3231
3227
  //#region src/composables/useDebounce.ts
3232
- function zi(e, t = 300) {
3233
- let n = w(e.value), r = null;
3228
+ function Bi(e, t = 300) {
3229
+ let n = T(e.value), r = null;
3234
3230
  return P(e, (e) => {
3235
3231
  r && clearTimeout(r), r = setTimeout(() => {
3236
3232
  n.value = e, r = null;
3237
3233
  }, t);
3238
- }), y(() => {
3234
+ }), b(() => {
3239
3235
  r &&= (clearTimeout(r), null);
3240
3236
  }), n;
3241
3237
  }
3242
3238
  //#endregion
3243
3239
  //#region src/composables/useToast.ts
3244
- function Bi(e = 3e3) {
3245
- let t = w(!1), n = w(""), r = w(q.SUCCESS), i = null;
3240
+ function Vi(e = 3e3) {
3241
+ let t = T(!1), n = T(""), r = T(K.SUCCESS), i = null;
3246
3242
  function a() {
3247
3243
  i &&= (clearTimeout(i), null);
3248
3244
  }
3249
- function o(o, s = q.SUCCESS, c = e) {
3245
+ function o(o, s = K.SUCCESS, c = e) {
3250
3246
  n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
3251
3247
  t.value = !1, i = null;
3252
3248
  }, c);
3253
3249
  }
3254
- return y(() => {
3250
+ return b(() => {
3255
3251
  a();
3256
3252
  }), {
3257
3253
  showToast: t,
@@ -3262,8 +3258,8 @@ function Bi(e = 3e3) {
3262
3258
  }
3263
3259
  //#endregion
3264
3260
  //#region src/composables/useQueryParamSync.ts
3265
- function Vi() {
3266
- let e = Te(), t = Ee();
3261
+ function Hi() {
3262
+ let e = Ee(), t = De();
3267
3263
  function n(t) {
3268
3264
  let n = e.query[t];
3269
3265
  return typeof n == "string" ? n : "";
@@ -3284,23 +3280,23 @@ function Vi() {
3284
3280
  }
3285
3281
  //#endregion
3286
3282
  //#region src/composables/useFieldClasses.ts
3287
- function Hi() {
3288
- let { isDark: e } = V(), t = r(() => e.value ? "text-gray-300" : "text-gray-600"), n = r(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
3289
- function i(t) {
3283
+ function Ui() {
3284
+ let { isDark: e } = V(), t = i(() => e.value ? "text-gray-300" : "text-gray-600"), n = i(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
3285
+ function r(t) {
3290
3286
  return t == null || String(t).trim() === "" ? e.value ? "bg-gray-800 border-red-500 text-gray-100 placeholder-gray-500 focus:ring-red-500 focus:border-red-500 ring-1 ring-red-500/30" : "bg-white border-red-400 text-gray-800 focus:ring-red-500 focus:border-red-500 ring-1 ring-red-400/30" : n.value;
3291
3287
  }
3292
3288
  return {
3293
3289
  label: t,
3294
3290
  input: n,
3295
- requiredInput: i
3291
+ requiredInput: r
3296
3292
  };
3297
3293
  }
3298
3294
  //#endregion
3299
3295
  //#region src/composables/usePolling.ts
3300
- function Ui(e, t, n = {}) {
3301
- let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = w(!1), s = !1;
3296
+ function Wi(e, t, n = {}) {
3297
+ let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = T(!1), s = !1;
3302
3298
  function c() {
3303
- a !== null || t === null || (a = setInterval(() => void e(), t));
3299
+ a === null && t !== null && (a = setInterval(() => void e(), t));
3304
3300
  }
3305
3301
  function l() {
3306
3302
  a !== null && (clearInterval(a), a = null);
@@ -3320,24 +3316,24 @@ function Ui(e, t, n = {}) {
3320
3316
  o.value = !1, l(), s = !0;
3321
3317
  }
3322
3318
  }
3323
- return v(() => {
3319
+ return y(() => {
3324
3320
  u(), i && document.addEventListener("visibilitychange", f);
3325
- }), b(() => {
3321
+ }), x(() => {
3326
3322
  d(), i && document.removeEventListener("visibilitychange", f);
3327
3323
  }), {
3328
3324
  start: u,
3329
3325
  stop: d,
3330
- active: C(o)
3326
+ active: w(o)
3331
3327
  };
3332
3328
  }
3333
3329
  //#endregion
3334
3330
  //#region src/enums/BaseBadgeEnum.ts
3335
- var Wi = /* @__PURE__ */ function(e) {
3331
+ var Gi = /* @__PURE__ */ function(e) {
3336
3332
  return e.WIN = "WIN", e.LOSE = "LOSE", e;
3337
3333
  }({});
3338
3334
  //#endregion
3339
3335
  //#region src/utils/util.ts
3340
- function Gi(e) {
3336
+ function Ki(e) {
3341
3337
  let t = "red";
3342
3338
  switch (e) {
3343
3339
  case R.ERROR:
@@ -3349,13 +3345,11 @@ function Gi(e) {
3349
3345
  case R.INFO:
3350
3346
  t = "gray";
3351
3347
  break;
3352
- case R.WARNING:
3353
- t = "yellow";
3354
- break;
3348
+ case R.WARNING: t = "yellow";
3355
3349
  }
3356
3350
  return t;
3357
3351
  }
3358
- function Ki(e) {
3352
+ function qi(e) {
3359
3353
  let t = "red";
3360
3354
  switch (e) {
3361
3355
  case H.GREEN:
@@ -3376,22 +3370,20 @@ function Ki(e) {
3376
3370
  case H.GRAY:
3377
3371
  t = "gray";
3378
3372
  break;
3379
- case H.NONE:
3380
- t = "";
3381
- break;
3373
+ case H.NONE: t = "";
3382
3374
  }
3383
3375
  return t;
3384
3376
  }
3385
3377
  //#endregion
3386
3378
  //#region src/utils/httpColors.ts
3387
- var qi = {
3379
+ var Ji = {
3388
3380
  GET: "bg-blue-600",
3389
3381
  POST: "bg-emerald-600",
3390
3382
  PUT: "bg-amber-600",
3391
3383
  DELETE: "bg-red-600",
3392
3384
  PATCH: "bg-purple-600",
3393
3385
  HEAD: "bg-gray-600"
3394
- }, Ji = {
3386
+ }, Yi = {
3395
3387
  GET: "bg-blue-500",
3396
3388
  POST: "bg-green-500",
3397
3389
  PUT: "bg-yellow-500",
@@ -3399,39 +3391,39 @@ var qi = {
3399
3391
  PATCH: "bg-purple-500",
3400
3392
  HEAD: "bg-gray-500"
3401
3393
  };
3402
- function Yi(e) {
3403
- return e ? qi[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
3404
- }
3405
3394
  function Xi(e) {
3406
- return e ? Ji[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
3395
+ return e ? Ji[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
3407
3396
  }
3408
3397
  function Zi(e) {
3398
+ return e ? Yi[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
3399
+ }
3400
+ function Qi(e) {
3409
3401
  let t = e ?? 0;
3410
3402
  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";
3411
3403
  }
3412
- function Qi(e, t) {
3404
+ function $i(e, t) {
3413
3405
  let n = (e || "ANY").toUpperCase();
3414
3406
  return n === "GET" ? t ? "bg-blue-500/15 text-blue-400" : "bg-blue-100 text-blue-700" : n === "POST" ? t ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-100 text-emerald-700" : n === "PUT" ? t ? "bg-amber-500/15 text-amber-400" : "bg-amber-100 text-amber-700" : n === "DELETE" ? t ? "bg-red-500/15 text-red-400" : "bg-red-100 text-red-700" : n === "PATCH" ? t ? "bg-purple-500/15 text-purple-400" : "bg-purple-100 text-purple-700" : n === "HEAD" ? t ? "bg-sky-500/15 text-sky-400" : "bg-sky-100 text-sky-700" : t ? "bg-gray-500/15 text-gray-400" : "bg-gray-100 text-gray-600";
3415
3407
  }
3416
- function $i(e, t) {
3408
+ function ea(e, t) {
3417
3409
  let n = e ?? 200;
3418
3410
  return n >= 200 && n < 300 ? t ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-100 text-emerald-700" : n >= 300 && n < 400 ? t ? "bg-sky-500/15 text-sky-300" : "bg-sky-100 text-sky-700" : n >= 400 && n < 500 ? t ? "bg-amber-500/15 text-amber-300" : "bg-amber-100 text-amber-700" : n >= 500 && n < 600 ? t ? "bg-red-500/15 text-red-300" : "bg-red-100 text-red-700" : t ? "bg-gray-800 text-gray-400" : "bg-gray-100 text-gray-600";
3419
3411
  }
3420
- function ea(e, t) {
3412
+ function ta(e, t) {
3421
3413
  let n = e ?? 200;
3422
3414
  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";
3423
3415
  }
3424
3416
  //#endregion
3425
3417
  //#region src/utils/kvRows.ts
3426
- function ta(e) {
3418
+ function na(e) {
3427
3419
  return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
3428
3420
  }
3429
- function na(e) {
3421
+ function ra(e) {
3430
3422
  return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
3431
3423
  }
3432
3424
  //#endregion
3433
3425
  //#region src/utils/sanitizeHtml.ts
3434
- var ra = /* @__PURE__ */ new Set([
3426
+ var ia = /* @__PURE__ */ new Set([
3435
3427
  "A",
3436
3428
  "B",
3437
3429
  "STRONG",
@@ -3446,7 +3438,7 @@ var ra = /* @__PURE__ */ new Set([
3446
3438
  "LI",
3447
3439
  "SPAN",
3448
3440
  "DIV"
3449
- ]), ia = /* @__PURE__ */ new Set([
3441
+ ]), aa = /* @__PURE__ */ new Set([
3450
3442
  "SCRIPT",
3451
3443
  "STYLE",
3452
3444
  "IFRAME",
@@ -3454,40 +3446,40 @@ var ra = /* @__PURE__ */ new Set([
3454
3446
  "EMBED",
3455
3447
  "NOSCRIPT",
3456
3448
  "TEMPLATE"
3457
- ]), aa = { A: /* @__PURE__ */ new Set(["href", "title"]) };
3458
- function oa(e) {
3449
+ ]), oa = { A: /* @__PURE__ */ new Set(["href", "title"]) };
3450
+ function sa(e) {
3459
3451
  let t = e.trim().toLowerCase();
3460
3452
  return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
3461
3453
  }
3462
- function sa(e) {
3454
+ function ca(e) {
3463
3455
  if (e.nodeType !== Node.ELEMENT_NODE) return;
3464
3456
  let t = e, n = t.tagName.toUpperCase();
3465
- if (!ra.has(n)) {
3466
- ia.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
3457
+ if (!ia.has(n)) {
3458
+ aa.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
3467
3459
  return;
3468
3460
  }
3469
- let r = aa[n] ?? /* @__PURE__ */ new Set();
3461
+ let r = oa[n] ?? /* @__PURE__ */ new Set();
3470
3462
  for (let e of Array.from(t.attributes)) {
3471
3463
  if (!r.has(e.name.toLowerCase())) {
3472
3464
  t.removeAttribute(e.name);
3473
3465
  continue;
3474
3466
  }
3475
- n === "A" && e.name.toLowerCase() === "href" && !oa(e.value) && t.removeAttribute(e.name);
3467
+ n === "A" && e.name.toLowerCase() === "href" && !sa(e.value) && t.removeAttribute(e.name);
3476
3468
  }
3477
3469
  n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
3478
- for (let e of Array.from(t.childNodes)) sa(e);
3470
+ for (let e of Array.from(t.childNodes)) ca(e);
3479
3471
  }
3480
- function ca(e) {
3472
+ function la(e) {
3481
3473
  if (!e) return "";
3482
3474
  let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
3483
3475
  if (!t) return "";
3484
- for (let e of Array.from(t.childNodes)) sa(e);
3476
+ for (let e of Array.from(t.childNodes)) ca(e);
3485
3477
  return t.innerHTML;
3486
3478
  }
3487
3479
  //#endregion
3488
3480
  //#region src/utils/format.ts
3489
3481
  var $ = "—";
3490
- function la(e, t = 4) {
3482
+ function ua(e, t = 4) {
3491
3483
  if (e == null || typeof e == "string" && e.trim() === "") return $;
3492
3484
  let n = typeof e == "string" ? Number(e) : e;
3493
3485
  return isFinite(n) ? n.toLocaleString(void 0, {
@@ -3495,12 +3487,12 @@ function la(e, t = 4) {
3495
3487
  maximumFractionDigits: t
3496
3488
  }) : $;
3497
3489
  }
3498
- function ua(e) {
3490
+ function da(e) {
3499
3491
  if (e == null || e === "") return $;
3500
3492
  let t = new Date(e);
3501
3493
  return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
3502
3494
  }
3503
- function da(e) {
3495
+ function fa(e) {
3504
3496
  return new Date(e).toLocaleString(void 0, {
3505
3497
  month: "short",
3506
3498
  day: "numeric",
@@ -3508,13 +3500,13 @@ function da(e) {
3508
3500
  minute: "2-digit"
3509
3501
  });
3510
3502
  }
3511
- function fa(e) {
3503
+ function pa(e) {
3512
3504
  return new Date(e).toLocaleDateString(void 0, {
3513
3505
  month: "short",
3514
3506
  day: "numeric"
3515
3507
  });
3516
3508
  }
3517
- function pa(e) {
3509
+ function ma(e) {
3518
3510
  try {
3519
3511
  return new Date(e).toLocaleString(void 0, {
3520
3512
  year: "numeric",
@@ -3530,7 +3522,7 @@ function pa(e) {
3530
3522
  return String(e);
3531
3523
  }
3532
3524
  }
3533
- function ma(e) {
3525
+ function ha(e) {
3534
3526
  if (!isFinite(e) || e === 0) return e.toFixed(2);
3535
3527
  let t = Math.abs(e), n = 2;
3536
3528
  return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
@@ -3538,13 +3530,13 @@ function ma(e) {
3538
3530
  maximumFractionDigits: n
3539
3531
  });
3540
3532
  }
3541
- function ha(e, t = 2) {
3533
+ function ga(e, t = 2) {
3542
3534
  return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
3543
3535
  }
3544
- function ga(e) {
3536
+ function _a(e) {
3545
3537
  return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
3546
3538
  }
3547
- function _a(e) {
3539
+ function va(e) {
3548
3540
  if (e == null || e === "") return $;
3549
3541
  let t = new Date(e);
3550
3542
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
@@ -3553,7 +3545,7 @@ function _a(e) {
3553
3545
  day: "numeric"
3554
3546
  });
3555
3547
  }
3556
- function va(e) {
3548
+ function ya(e) {
3557
3549
  if (e == null || e === "") return $;
3558
3550
  let t = new Date(e);
3559
3551
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
@@ -3564,22 +3556,22 @@ function va(e) {
3564
3556
  minute: "2-digit"
3565
3557
  });
3566
3558
  }
3567
- function ya(e) {
3559
+ function ba(e) {
3568
3560
  if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
3569
3561
  let t = e / 1e3, n = t < 1 ? 3 : 2;
3570
3562
  return `= ${t.toFixed(n)} s`;
3571
3563
  }
3572
- function ba(e) {
3573
- return e ? e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB` : "";
3574
- }
3575
3564
  function xa(e) {
3565
+ return e ? e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1048576).toFixed(1)} MB` : "";
3566
+ }
3567
+ function Sa(e) {
3576
3568
  try {
3577
3569
  return JSON.stringify(JSON.parse(e), null, 2);
3578
3570
  } catch {
3579
3571
  return e;
3580
3572
  }
3581
3573
  }
3582
- function Sa(e) {
3574
+ function Ca(e) {
3583
3575
  if (e == null) return "";
3584
3576
  if (typeof e == "string") return e;
3585
3577
  try {
@@ -3588,14 +3580,14 @@ function Sa(e) {
3588
3580
  return String(e);
3589
3581
  }
3590
3582
  }
3591
- function Ca(e, t = 2) {
3583
+ function wa(e, t = 2) {
3592
3584
  if (e == null || !isFinite(e)) return $;
3593
3585
  let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
3594
3586
  return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
3595
3587
  }
3596
3588
  //#endregion
3597
3589
  //#region src/utils/validate.ts
3598
- function wa(e) {
3590
+ function Ta(e) {
3599
3591
  let t = (e ?? "").trim();
3600
3592
  if (!t) return !1;
3601
3593
  try {
@@ -3605,7 +3597,7 @@ function wa(e) {
3605
3597
  return !1;
3606
3598
  }
3607
3599
  }
3608
- function Ta(e) {
3600
+ function Ea(e) {
3609
3601
  if (!e.trim()) return !0;
3610
3602
  try {
3611
3603
  return JSON.parse(e), !0;
@@ -3613,7 +3605,7 @@ function Ta(e) {
3613
3605
  return !1;
3614
3606
  }
3615
3607
  }
3616
- function Ea(e) {
3608
+ function Da(e) {
3617
3609
  if (!e.trim()) return !0;
3618
3610
  try {
3619
3611
  return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
@@ -3621,7 +3613,7 @@ function Ea(e) {
3621
3613
  return !1;
3622
3614
  }
3623
3615
  }
3624
- function Da(e) {
3616
+ function Oa(e) {
3625
3617
  if (!e.trim()) return !0;
3626
3618
  let t = e.replace(/\s+/g, "");
3627
3619
  if (!t) return !0;
@@ -3634,7 +3626,7 @@ function Da(e) {
3634
3626
  }
3635
3627
  //#endregion
3636
3628
  //#region src/utils/specForm.ts
3637
- function Oa(e, t) {
3629
+ function ka(e, t) {
3638
3630
  let n = {};
3639
3631
  if (!e) return n;
3640
3632
  for (let r of e) {
@@ -3643,7 +3635,7 @@ function Oa(e, t) {
3643
3635
  }
3644
3636
  return n;
3645
3637
  }
3646
- function ka(e, t) {
3638
+ function Aa(e, t) {
3647
3639
  if (!e) return null;
3648
3640
  for (let n of e) if (n.type === "decimal" || n.type === "integer") {
3649
3641
  let e = t[n.key], r = e === "" || e == null;
@@ -3654,7 +3646,7 @@ function ka(e, t) {
3654
3646
  }
3655
3647
  //#endregion
3656
3648
  //#region src/utils/pnl.ts
3657
- function Aa(e) {
3649
+ function ja(e) {
3658
3650
  if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
3659
3651
  pnlUsd: null,
3660
3652
  pnlPct: null
@@ -3669,4 +3661,4 @@ function Aa(e) {
3669
3661
  };
3670
3662
  }
3671
3663
  //#endregion
3672
- export { R as AlertEnum, Jn as BaseActionButton, Me as BaseAlert, zn as BaseAppLayout, Pe as BaseBadge, Wi as BaseBadgeEnum, Ri as BaseBarDistribution, Re as BaseBreadcrumb, G as BaseButton, U as BaseButtonEnum, W as BaseButtonSizeEnum, xr as BaseChipButton, kr as BaseCodeBlock, Gt as BaseCollapsibleSection, Yt as BaseConfirmModal, Xn as BaseCopyButton, Ci as BaseCredentialsForm, Lr as BaseDropdown, In as BaseEntityPickerModal, Or as BaseFileDropzone, oi as BaseFilterChip, er as BaseGoogleSignInButton, Q as BaseInput, Ze as BaseLine, Qe as BaseLoginEnum, fr as BaseLoginForm, et as BaseLogo, K as BaseLogoEnum, st as BaseModal, tt as BaseModalEnum, Ht as BaseModalShell, nn as BaseNotFoundPage, yr as BaseNotificationPanel, Hn as BasePageHeader, Ni as BasePillPickerModal, Sr as BaseRemoveButton, ct as BaseRow, Vr as BaseSegmentedControl, Mr as BaseSelect, Cn as BaseSidebar, ti as BaseSpecFields, lt as BaseSpinner, ii as BaseStatBreakdown, Tr as BaseStatusPill, qr as BaseTable, $t as BaseTextInputModal, ft as BaseToast, q as BaseToastEnum, Gn as BaseToolbarButton, mt as ColoredSquares, H as ColorsEnums, _t as EarningsCard, St as EuroAmount, qe as LineEnum, Dt as Pagination, J as PositioningEnum, Mt as TrendArrow, Oa as buildSpecParams, Aa as computePnL, ka as firstInvalidNumericSpec, ba as fmtBytes, _a as fmtCalendarDate, va as fmtCalendarDateTime, ua as fmtDate, fa as fmtDateShort, da as fmtDateTime, pa as fmtDateTimeMs, Ca as fmtDuration, ya as fmtMsAsSeconds, la as fmtNumber, ha as fmtPct, ma as fmtPrice, ga as fmtUsd, xa as formatJson, Gi as getBaseColor, Ki as getBaseColorOf, ke as initTheme, oa as isSafeHref, wa as isValidAbsoluteUrl, Da as isValidBase64, Ta as isValidJson, Ea as isValidXml, Xi as methodBadgeBright, Yi as methodBadgeSolid, Qi as methodBadgeTinted, na as rowKeyMissing, ta as rowValueMissing, ca as sanitizeHtml, $i as statusBadgeSoft, Zi as statusBadgeSolid, ea as statusBadgeTinted, Sa as stringifyValue, zi as useDebouncedRef, Nt as useEscapeKey, Hi as useFieldClasses, an as useMobileSidebar, fn as useNotifications, Ui as usePolling, Vi as useQueryParamSync, ln as useSidebarCollapse, V as useTheme, Y as useThemeClasses, Bi as useToast };
3664
+ export { R as AlertEnum, Yn as BaseActionButton, Ne as BaseAlert, Bn as BaseAppLayout, Fe as BaseBadge, Gi as BaseBadgeEnum, zi as BaseBarDistribution, ze as BaseBreadcrumb, Je as BaseButton, U as BaseButtonEnum, W as BaseButtonSizeEnum, Sr as BaseChipButton, Ar as BaseCodeBlock, qt as BaseCollapsibleSection, Zt as BaseConfirmModal, Zn as BaseCopyButton, wi as BaseCredentialsForm, Rr as BaseDropdown, Ln as BaseEntityPickerModal, kr as BaseFileDropzone, si as BaseFilterChip, tr as BaseGoogleSignInButton, Q as BaseInput, $e as BaseLine, et as BaseLoginEnum, pr as BaseLoginForm, nt as BaseLogo, G as BaseLogoEnum, lt as BaseModal, rt as BaseModalEnum, Wt as BaseModalShell, an as BaseNotFoundPage, br as BaseNotificationPanel, Un as BasePageHeader, Pi as BasePillPickerModal, Cr as BaseRemoveButton, ut as BaseRow, Hr as BaseSegmentedControl, Nr as BaseSelect, wn as BaseSidebar, ni as BaseSpecFields, dt as BaseSpinner, ai as BaseStatBreakdown, Er as BaseStatusPill, Jr as BaseTable, tn as BaseTextInputModal, mt as BaseToast, K as BaseToastEnum, Kn as BaseToolbarButton, gt as ColoredSquares, H as ColorsEnums, yt as EarningsCard, wt as EuroAmount, Ye as LineEnum, kt as Pagination, q as PositioningEnum, Pt as TrendArrow, ka as buildSpecParams, ja as computePnL, Aa as firstInvalidNumericSpec, xa as fmtBytes, va as fmtCalendarDate, ya as fmtCalendarDateTime, da as fmtDate, pa as fmtDateShort, fa as fmtDateTime, ma as fmtDateTimeMs, wa as fmtDuration, ba as fmtMsAsSeconds, ua as fmtNumber, ga as fmtPct, ha as fmtPrice, _a as fmtUsd, Sa as formatJson, Ki as getBaseColor, qi as getBaseColorOf, Ae as initTheme, sa as isSafeHref, Ta as isValidAbsoluteUrl, Oa as isValidBase64, Ea as isValidJson, Da as isValidXml, Zi as methodBadgeBright, Xi as methodBadgeSolid, $i as methodBadgeTinted, ra as rowKeyMissing, na as rowValueMissing, la as sanitizeHtml, ea as statusBadgeSoft, Qi as statusBadgeSolid, ta as statusBadgeTinted, Ca as stringifyValue, Bi as useDebouncedRef, Ft as useEscapeKey, Ui as useFieldClasses, sn as useMobileSidebar, pn as useNotifications, Wi as usePolling, Hi as useQueryParamSync, dn as useSidebarCollapse, V as useTheme, J as useThemeClasses, Vi as useToast };