mgv-backoffice 1.36.3 → 1.37.0

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