mgv-backoffice 1.32.0 → 1.34.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,125 @@
1
- import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createStaticVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, effectScope as p, nextTick as m, normalizeClass as h, onBeforeUnmount as g, onMounted as _, onScopeDispose as v, onUnmounted as y, openBlock as b, reactive as x, ref as S, renderList as C, renderSlot as w, resolveComponent as T, resolveDynamicComponent as E, toDisplayString as D, unref as O, useSlots as k, vModelCheckbox as A, vModelDynamic as ee, vModelText as j, vShow as te, watch as M, withCtx as N, withDirectives as P, withKeys as ne, withModifiers as F } from "vue";
2
- import { ArrowDownIcon as re, ArrowUpIcon as ie, Bars3Icon as ae, BellIcon as oe, CheckCircleIcon as se, ChevronDoubleLeftIcon as ce, ChevronDoubleRightIcon as le, ChevronDownIcon as ue, ChevronRightIcon as de, ClipboardDocumentCheckIcon as fe, ClipboardDocumentIcon as pe, DocumentDuplicateIcon as me, ExclamationCircleIcon as he, ExclamationTriangleIcon as ge, FolderIcon as _e, InformationCircleIcon as ve, MagnifyingGlassIcon as ye, MinusIcon as be, MoonIcon as xe, SunIcon as Se, XMarkIcon as Ce } from "@heroicons/vue/24/outline";
3
- import { HomeIcon as we } from "@heroicons/vue/24/solid";
4
- import { useRoute as Te, useRouter as Ee } from "vue-router";
1
+ import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createStaticVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, effectScope as p, nextTick as m, normalizeClass as h, onBeforeUnmount as g, onMounted as _, onScopeDispose as v, onUnmounted as y, openBlock as b, reactive as x, readonly as S, ref as C, renderList as w, renderSlot as T, resolveComponent as E, resolveDynamicComponent as D, toDisplayString as O, unref as k, useSlots as A, vModelCheckbox as ee, vModelDynamic as j, vModelText as M, vShow as N, watch as P, withCtx as F, withDirectives as I, withKeys as te, withModifiers as L } from "vue";
2
+ import { ArrowDownIcon as ne, ArrowUpIcon as re, Bars3Icon as ie, BellIcon as ae, CheckCircleIcon as oe, ChevronDoubleLeftIcon as se, ChevronDoubleRightIcon as ce, ChevronDownIcon as le, ChevronRightIcon as ue, ClipboardDocumentCheckIcon as de, ClipboardDocumentIcon as fe, DocumentDuplicateIcon as pe, ExclamationCircleIcon as me, ExclamationTriangleIcon as he, FolderIcon as ge, InformationCircleIcon as _e, MagnifyingGlassIcon as ve, MinusIcon as ye, MoonIcon as be, SunIcon as xe, XMarkIcon as Se } from "@heroicons/vue/24/outline";
3
+ import { HomeIcon as Ce } from "@heroicons/vue/24/solid";
4
+ import { useRoute as we, useRouter as Te } from "vue-router";
5
5
  //#region src/enums/AlertEnum.ts
6
- var I = /* @__PURE__ */ function(e) {
6
+ var R = /* @__PURE__ */ function(e) {
7
7
  return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
8
- }({}), L = S(!1), De = !1, R = "mgv-theme";
9
- function Oe(e) {
10
- if (De) {
11
- e !== R && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${R}". Call initTheme({ storageKey }) before mounting any component.`);
8
+ }({}), z = C(!1), Ee = !1, B = "mgv-theme";
9
+ function De(e) {
10
+ if (Ee) {
11
+ e !== B && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${B}". Call initTheme({ storageKey }) before mounting any component.`);
12
12
  return;
13
13
  }
14
- if (De = !0, R = e, typeof window < "u") {
15
- let e = window.localStorage?.getItem(R);
16
- e ? L.value = e === "dark" : typeof window.matchMedia == "function" && (L.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
14
+ if (Ee = !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);
17
17
  }
18
18
  typeof document < "u" && p(!0).run(() => {
19
- M(L, (e) => {
20
- document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(R, e ? "dark" : "light");
19
+ P(z, (e) => {
20
+ document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(B, e ? "dark" : "light");
21
21
  }, { immediate: !0 });
22
22
  });
23
23
  }
24
- function ke(e) {
25
- Oe(e?.storageKey ?? R);
24
+ function Oe(e) {
25
+ De(e?.storageKey ?? B);
26
26
  }
27
- function z(e) {
28
- Oe(e?.storageKey ?? R);
27
+ function V(e) {
28
+ De(e?.storageKey ?? B);
29
29
  function t() {
30
- L.value = !L.value;
30
+ z.value = !z.value;
31
31
  }
32
32
  return {
33
- isDark: L,
33
+ isDark: z,
34
34
  toggleTheme: t
35
35
  };
36
36
  }
37
37
  //#endregion
38
38
  //#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
39
- var Ae = { class: "min-w-0 flex-1" }, je = {
39
+ var ke = { class: "min-w-0 flex-1" }, Ae = {
40
40
  key: 0,
41
41
  class: "font-medium"
42
- }, Me = /* @__PURE__ */ f({
42
+ }, je = /* @__PURE__ */ f({
43
43
  __name: "BaseAlert",
44
44
  props: {
45
45
  title: { default: "" },
46
- color: { default: I.ERROR },
46
+ color: { default: R.ERROR },
47
47
  compact: {
48
48
  type: Boolean,
49
49
  default: !1
50
50
  }
51
51
  },
52
52
  setup(e) {
53
- let t = e, { isDark: n } = z(), c = {
54
- [I.ERROR]: {
53
+ let t = e, { isDark: n } = V(), c = {
54
+ [R.ERROR]: {
55
55
  light: "bg-red-50 border-red-200 text-red-700",
56
56
  dark: "bg-red-500/10 border-red-500/30 text-red-300"
57
57
  },
58
- [I.WARNING]: {
58
+ [R.WARNING]: {
59
59
  light: "bg-amber-50 border-amber-200 text-amber-700",
60
60
  dark: "bg-amber-500/10 border-amber-500/30 text-amber-300"
61
61
  },
62
- [I.SUCCESS]: {
62
+ [R.SUCCESS]: {
63
63
  light: "bg-emerald-50 border-emerald-200 text-emerald-700",
64
64
  dark: "bg-emerald-500/10 border-emerald-500/30 text-emerald-300"
65
65
  },
66
- [I.INFO]: {
66
+ [R.INFO]: {
67
67
  light: "bg-sky-50 border-sky-200 text-sky-700",
68
68
  dark: "bg-sky-500/10 border-sky-500/30 text-sky-300"
69
69
  }
70
70
  }, l = r(() => n.value ? c[t.color].dark : c[t.color].light), u = r(() => {
71
71
  switch (t.color) {
72
- case I.SUCCESS: return se;
73
- case I.WARNING: return ge;
74
- case I.INFO: return ve;
75
- default: return he;
72
+ case R.SUCCESS: return oe;
73
+ case R.WARNING: return he;
74
+ case R.INFO: return _e;
75
+ default: return me;
76
76
  }
77
77
  }), d = r(() => {
78
78
  switch (t.color) {
79
- case I.SUCCESS: return "text-emerald-500";
80
- case I.WARNING: return "text-amber-500";
81
- case I.INFO: return "text-sky-500";
79
+ case R.SUCCESS: return "text-emerald-500";
80
+ case R.WARNING: return "text-amber-500";
81
+ case R.INFO: return "text-sky-500";
82
82
  default: return "text-red-500";
83
83
  }
84
84
  });
85
85
  return (t, n) => (b(), o("div", {
86
86
  role: "alert",
87
87
  class: h(["flex gap-3 mb-4 rounded-lg border text-sm transition-colors", [e.compact ? "items-start px-3 py-2 text-xs" : "items-start p-4", l.value]])
88
- }, [(b(), i(E(u.value), {
88
+ }, [(b(), i(D(u.value), {
89
89
  class: h(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
90
90
  "aria-hidden": "true"
91
- }, null, 8, ["class"])), s("div", Ae, [e.title ? (b(), o("p", je, D(e.title), 1)) : a("", !0), w(t.$slots, "default")])], 2));
91
+ }, null, 8, ["class"])), s("div", ke, [e.title ? (b(), o("p", Ae, O(e.title), 1)) : a("", !0), T(t.$slots, "default")])], 2));
92
92
  }
93
- }), B = /* @__PURE__ */ function(e) {
93
+ }), H = /* @__PURE__ */ function(e) {
94
94
  return e.NONE = "NONE", e.RED = "RED", e.YELLOW = "YELLOW", e.BLACK = "BLACK", e.GRAY = "GRAY", e.GREEN = "GREEN", e.BLUE = "BLUE", e;
95
- }({}), Ne = "bg-red-100 text-red-700 border-red-200", Pe = /* @__PURE__ */ f({
95
+ }({}), Me = "bg-red-100 text-red-700 border-red-200", Ne = /* @__PURE__ */ f({
96
96
  __name: "BaseBadge",
97
97
  props: { color: {
98
98
  type: String,
99
99
  required: !1
100
100
  } },
101
101
  setup(e) {
102
- let t = k(), n = r(() => !!t.default), i = e, s = {
103
- [B.RED]: "bg-red-100 text-red-700 border-red-200",
104
- [B.GREEN]: "bg-green-100 text-green-700 border-green-200",
105
- [B.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
106
- [B.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
107
- [B.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
108
- [B.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
109
- [B.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
110
- }, c = r(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && s[i.color] || Ne}`);
102
+ let t = A(), n = r(() => !!t.default), i = e, s = {
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
+ }, c = r(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && s[i.color] || Me}`);
111
111
  return (e, t) => n.value ? (b(), o("span", {
112
112
  key: 0,
113
113
  class: h(c.value)
114
- }, [w(e.$slots, "default")], 2)) : a("", !0);
114
+ }, [T(e.$slots, "default")], 2)) : a("", !0);
115
115
  }
116
- }), Fe = {
116
+ }), Pe = {
117
117
  class: "flex px-5 py-3 text-gray-700 border border-gray-200 rounded-lg bg-gray-50 dark:bg-gray-800 dark:border-gray-700",
118
118
  "aria-label": "Breadcrumb"
119
- }, Ie = { class: "inline-flex items-center space-x-1 md:space-x-3" }, Le = {
119
+ }, Fe = { class: "inline-flex items-center space-x-1 md:space-x-3" }, Ie = {
120
120
  class: "inline-flex items-center",
121
121
  style: { "margin-left": "0" }
122
- }, Re = /* @__PURE__ */ f({
122
+ }, Le = /* @__PURE__ */ f({
123
123
  __name: "BaseBreadcrumb",
124
124
  props: {
125
125
  items: {
@@ -143,41 +143,41 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
143
143
  }));
144
144
  });
145
145
  return (t, n) => {
146
- let r = T("router-link");
147
- return b(), o("nav", Fe, [s("ol", Ie, [s("li", Le, [d(r, {
146
+ let r = E("router-link");
147
+ return b(), o("nav", Pe, [s("ol", Fe, [s("li", Ie, [d(r, {
148
148
  to: "/",
149
149
  class: "inline-flex items-center text-sm font-medium text-gray-700 hover:text-blue-600 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
150
150
  }, {
151
- default: N(() => [d(O(we), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= u(" Home ", -1)]),
151
+ default: F(() => [d(k(Ce), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= u(" Home ", -1)]),
152
152
  _: 1
153
- })]), (b(!0), o(e, null, C(i.value, (e, t) => (b(), o("li", {
153
+ })]), (b(!0), o(e, null, w(i.value, (e, t) => (b(), o("li", {
154
154
  key: t,
155
155
  class: "inline-flex items-center",
156
156
  style: { "margin-left": "0" }
157
- }, [d(O(de), { class: "h-4 w-4 text-gray-500" }), d(r, {
157
+ }, [d(k(ue), { class: "h-4 w-4 text-gray-500" }), d(r, {
158
158
  to: e.url,
159
159
  class: "ml-1 text-sm font-medium text-gray-700 hover:text-blue-600 md:ml-2 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
160
160
  }, {
161
- default: N(() => [u(D(e.name), 1)]),
161
+ default: F(() => [u(O(e.name), 1)]),
162
162
  _: 2
163
163
  }, 1032, ["to"])]))), 128))])]);
164
164
  };
165
165
  }
166
- }), V = /* @__PURE__ */ function(e) {
166
+ }), U = /* @__PURE__ */ function(e) {
167
167
  return e.RED = "RED", e.BLUE = "BLUE", e.WHITE = "WHITE", e.DARK = "DARK", e.GREEN = "GREEN", e.EMERALD = "EMERALD", e.YELLOW = "YELLOW", e.PURPLE = "PURPLE", e.SKY = "SKY", e.GRAY = "GRAY", e.AMBER = "AMBER", e;
168
- }({}), H = /* @__PURE__ */ function(e) {
168
+ }({}), W = /* @__PURE__ */ function(e) {
169
169
  return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
170
- }({}), ze = [
170
+ }({}), Re = [
171
171
  "type",
172
172
  "disabled",
173
173
  "onClick"
174
- ], Be = {
174
+ ], ze = {
175
175
  key: 0,
176
176
  class: "inline-flex items-center"
177
- }, Ve = { key: 1 }, He = { key: 2 }, Ue = ["type", "disabled"], We = {
177
+ }, Be = { key: 1 }, Ve = { key: 2 }, He = ["type", "disabled"], Ue = {
178
178
  key: 0,
179
179
  class: "inline-flex items-center"
180
- }, Ge = { key: 1 }, Ke = { key: 2 }, U = /* @__PURE__ */ f({
180
+ }, We = { key: 1 }, Ge = { key: 2 }, G = /* @__PURE__ */ f({
181
181
  __name: "BaseButton",
182
182
  props: {
183
183
  description: {
@@ -187,7 +187,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
187
187
  color: {
188
188
  type: String,
189
189
  required: !1,
190
- default: V.BLUE
190
+ default: U.BLUE
191
191
  },
192
192
  to: {
193
193
  type: String,
@@ -231,103 +231,103 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
231
231
  }
232
232
  },
233
233
  setup(e) {
234
- let { isDark: t } = z(), n = e;
234
+ let { isDark: t } = V(), n = e;
235
235
  function r() {
236
236
  let e = {
237
- [V.BLUE]: {
237
+ [U.BLUE]: {
238
238
  light: "text-blue-700 border-blue-300 hover:bg-blue-50",
239
239
  dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
240
240
  },
241
- [V.GREEN]: {
241
+ [U.GREEN]: {
242
242
  light: "text-green-700 border-green-300 hover:bg-green-50",
243
243
  dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
244
244
  },
245
- [V.EMERALD]: {
245
+ [U.EMERALD]: {
246
246
  light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
247
247
  dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
248
248
  },
249
- [V.RED]: {
249
+ [U.RED]: {
250
250
  light: "text-red-700 border-red-300 hover:bg-red-50",
251
251
  dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
252
252
  },
253
- [V.YELLOW]: {
253
+ [U.YELLOW]: {
254
254
  light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
255
255
  dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
256
256
  },
257
- [V.PURPLE]: {
257
+ [U.PURPLE]: {
258
258
  light: "text-purple-700 border-purple-300 hover:bg-purple-50",
259
259
  dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
260
260
  },
261
- [V.SKY]: {
261
+ [U.SKY]: {
262
262
  light: "text-sky-700 border-sky-300 hover:bg-sky-50",
263
263
  dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
264
264
  },
265
- [V.AMBER]: {
265
+ [U.AMBER]: {
266
266
  light: "text-amber-700 border-amber-300 hover:bg-amber-50",
267
267
  dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
268
268
  },
269
- [V.GRAY]: {
269
+ [U.GRAY]: {
270
270
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
271
271
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
272
272
  },
273
- [V.DARK]: {
273
+ [U.DARK]: {
274
274
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
275
275
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
276
276
  },
277
- [V.WHITE]: {
277
+ [U.WHITE]: {
278
278
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
279
279
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
280
280
  }
281
- }, r = e[n.color] ?? e[V.BLUE], i = t.value ? r.dark : r.light;
281
+ }, r = e[n.color] ?? e[U.BLUE], i = t.value ? r.dark : r.light;
282
282
  return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current border bg-transparent ${i}`;
283
283
  }
284
284
  function c() {
285
285
  let e = {
286
- [V.BLUE]: {
286
+ [U.BLUE]: {
287
287
  light: "text-blue-600 hover:bg-blue-50",
288
288
  dark: "text-blue-400 hover:bg-blue-500/10"
289
289
  },
290
- [V.GREEN]: {
290
+ [U.GREEN]: {
291
291
  light: "text-green-600 hover:bg-green-50",
292
292
  dark: "text-green-400 hover:bg-green-500/10"
293
293
  },
294
- [V.EMERALD]: {
294
+ [U.EMERALD]: {
295
295
  light: "text-emerald-600 hover:bg-emerald-50",
296
296
  dark: "text-emerald-400 hover:bg-emerald-500/10"
297
297
  },
298
- [V.SKY]: {
298
+ [U.SKY]: {
299
299
  light: "text-sky-600 hover:bg-sky-50",
300
300
  dark: "text-sky-400 hover:bg-sky-500/10"
301
301
  },
302
- [V.RED]: {
302
+ [U.RED]: {
303
303
  light: "text-red-500 hover:bg-red-50",
304
304
  dark: "text-red-400 hover:bg-red-500/10"
305
305
  },
306
- [V.AMBER]: {
306
+ [U.AMBER]: {
307
307
  light: "text-amber-700 hover:bg-amber-50",
308
308
  dark: "text-amber-300 hover:bg-amber-500/10"
309
309
  },
310
- [V.YELLOW]: {
310
+ [U.YELLOW]: {
311
311
  light: "text-yellow-600 hover:bg-yellow-50",
312
312
  dark: "text-yellow-400 hover:bg-yellow-500/10"
313
313
  },
314
- [V.PURPLE]: {
314
+ [U.PURPLE]: {
315
315
  light: "text-purple-600 hover:bg-purple-50",
316
316
  dark: "text-purple-400 hover:bg-purple-500/10"
317
317
  },
318
- [V.GRAY]: {
318
+ [U.GRAY]: {
319
319
  light: "text-gray-500 hover:bg-gray-100",
320
320
  dark: "text-gray-400 hover:bg-gray-800"
321
321
  },
322
- [V.DARK]: {
322
+ [U.DARK]: {
323
323
  light: "text-gray-500 hover:bg-gray-100",
324
324
  dark: "text-gray-400 hover:bg-gray-800"
325
325
  },
326
- [V.WHITE]: {
326
+ [U.WHITE]: {
327
327
  light: "text-gray-500 hover:bg-gray-100",
328
328
  dark: "text-gray-400 hover:bg-gray-800"
329
329
  }
330
- }, r = e[n.color] ?? e[V.GRAY], i = t.value ? r.dark : r.light;
330
+ }, r = e[n.color] ?? e[U.GRAY], i = t.value ? r.dark : r.light;
331
331
  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
332
  }
333
333
  function l() {
@@ -335,37 +335,37 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
335
335
  e || (t += " cursor-pointer");
336
336
  let i;
337
337
  switch (n.color) {
338
- case V.BLUE:
338
+ case U.BLUE:
339
339
  i = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
340
340
  break;
341
- case V.WHITE:
341
+ case U.WHITE:
342
342
  i = e ? "text-gray-900 bg-gray-200 border border-gray-200 cursor-not-allowed" : "focus:outline-none text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200";
343
343
  break;
344
- case V.DARK:
344
+ case U.DARK:
345
345
  i = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300";
346
346
  break;
347
- case V.GREEN:
347
+ case U.GREEN:
348
348
  i = e ? "text-white bg-green-400 cursor-not-allowed" : "focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300";
349
349
  break;
350
- case V.EMERALD:
350
+ case U.EMERALD:
351
351
  i = e ? "text-white bg-emerald-400 cursor-not-allowed" : "focus:outline-none text-white bg-emerald-600 hover:bg-emerald-700 focus:ring-4 focus:ring-emerald-300";
352
352
  break;
353
- case V.RED:
353
+ case U.RED:
354
354
  i = e ? "text-white bg-red-400 cursor-not-allowed" : "focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300";
355
355
  break;
356
- case V.YELLOW:
356
+ case U.YELLOW:
357
357
  i = e ? "text-white bg-yellow-300 cursor-not-allowed" : "focus:outline-none text-white bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300";
358
358
  break;
359
- case V.PURPLE:
359
+ case U.PURPLE:
360
360
  i = e ? "text-white bg-purple-400 cursor-not-allowed" : "focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300";
361
361
  break;
362
- case V.SKY:
362
+ case U.SKY:
363
363
  i = e ? "text-white bg-sky-400 cursor-not-allowed" : "focus:outline-none text-white bg-sky-600 hover:bg-sky-700 focus:ring-4 focus:ring-sky-300";
364
364
  break;
365
- case V.AMBER:
365
+ case U.AMBER:
366
366
  i = e ? "text-white bg-amber-300 cursor-not-allowed" : "focus:outline-none text-white bg-amber-500 hover:bg-amber-600 focus:ring-4 focus:ring-amber-300";
367
367
  break;
368
- case V.GRAY:
368
+ case U.GRAY:
369
369
  i = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-600 hover:bg-gray-700 focus:ring-4 focus:ring-gray-300";
370
370
  break;
371
371
  default:
@@ -375,19 +375,19 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
375
375
  n.outline && (i = r()), n.ghost && (i = c());
376
376
  let a = "px-5 py-2.5 mr-2 mb-2 text-sm";
377
377
  switch (n.size) {
378
- case H.EXTRA_SMALL:
378
+ case W.EXTRA_SMALL:
379
379
  a = "px-3 py-2 text-xs";
380
380
  break;
381
- case H.SMALL:
381
+ case W.SMALL:
382
382
  a = "px-3 py-2 text-sm";
383
383
  break;
384
- case H.BASE:
384
+ case W.BASE:
385
385
  a = "px-5 py-2.5 text-sm";
386
386
  break;
387
- case H.LARGE:
387
+ case W.LARGE:
388
388
  a = "px-5 py-3 text-base";
389
389
  break;
390
- case H.EXTRA_LARGE:
390
+ case W.EXTRA_LARGE:
391
391
  a = "px-6 py-3.5 text-base";
392
392
  break;
393
393
  }
@@ -395,19 +395,19 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
395
395
  return n.isRounded && (o = "rounded-full"), t + " " + a + " " + i + " font-medium " + o;
396
396
  }
397
397
  return (t, r) => {
398
- let c = T("router-link");
398
+ let c = E("router-link");
399
399
  return e.to ? (b(), i(c, {
400
400
  key: 0,
401
401
  to: e.to,
402
402
  custom: ""
403
403
  }, {
404
- default: N(({ navigate: i }) => [s("button", {
404
+ default: F(({ navigate: i }) => [s("button", {
405
405
  type: n.type,
406
406
  class: h(l()),
407
407
  disabled: e.isDisable || e.isLoading,
408
408
  onClick: i
409
409
  }, [
410
- e.isLoading ? (b(), o("div", Be, [...r[0] ||= [s("svg", {
410
+ e.isLoading ? (b(), o("div", ze, [...r[0] ||= [s("svg", {
411
411
  "aria-hidden": "true",
412
412
  role: "status",
413
413
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -421,10 +421,10 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
421
421
  d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
422
422
  fill: "currentColor"
423
423
  })], -1)]])) : a("", !0),
424
- e.iconLeft ? a("", !0) : (b(), o("span", Ve, D(e.description), 1)),
425
- w(t.$slots, "default"),
426
- e.iconLeft ? (b(), o("span", He, D(e.description), 1)) : a("", !0)
427
- ], 10, ze)]),
424
+ e.iconLeft ? a("", !0) : (b(), o("span", Be, O(e.description), 1)),
425
+ T(t.$slots, "default"),
426
+ e.iconLeft ? (b(), o("span", Ve, O(e.description), 1)) : a("", !0)
427
+ ], 10, Re)]),
428
428
  _: 3
429
429
  }, 8, ["to"])) : (b(), o("button", {
430
430
  key: 1,
@@ -432,7 +432,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
432
432
  class: h(l()),
433
433
  disabled: e.isDisable || e.isLoading
434
434
  }, [
435
- e.isLoading ? (b(), o("div", We, [...r[1] ||= [s("svg", {
435
+ e.isLoading ? (b(), o("div", Ue, [...r[1] ||= [s("svg", {
436
436
  "aria-hidden": "true",
437
437
  role: "status",
438
438
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -446,13 +446,13 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
446
446
  d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
447
447
  fill: "currentColor"
448
448
  })], -1)]])) : a("", !0),
449
- e.iconLeft ? a("", !0) : (b(), o("span", Ge, D(e.description), 1)),
450
- w(t.$slots, "default"),
451
- e.iconLeft ? (b(), o("span", Ke, D(e.description), 1)) : a("", !0)
452
- ], 10, Ue));
449
+ e.iconLeft ? a("", !0) : (b(), o("span", We, O(e.description), 1)),
450
+ T(t.$slots, "default"),
451
+ e.iconLeft ? (b(), o("span", Ge, O(e.description), 1)) : a("", !0)
452
+ ], 10, He));
453
453
  };
454
454
  }
455
- }), W = /* @__PURE__ */ function(e) {
455
+ }), Ke = /* @__PURE__ */ function(e) {
456
456
  return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
457
457
  }({}), qe = {
458
458
  key: 0,
@@ -468,48 +468,48 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
468
468
  props: { mode: {
469
469
  type: String,
470
470
  required: !1,
471
- default: W.BASE
471
+ default: Ke.BASE
472
472
  } },
473
473
  setup(t) {
474
474
  return (n, r) => (b(), o(e, null, [
475
- t.mode === O(W).BASE ? (b(), o("hr", qe)) : a("", !0),
476
- t.mode === O(W).BASE_SHORTER ? (b(), o("hr", Je)) : a("", !0),
477
- t.mode === O(W).SQUARE ? (b(), o("hr", Ye)) : a("", !0)
475
+ t.mode === k(Ke).BASE ? (b(), o("hr", qe)) : a("", !0),
476
+ t.mode === k(Ke).BASE_SHORTER ? (b(), o("hr", Je)) : a("", !0),
477
+ t.mode === k(Ke).SQUARE ? (b(), o("hr", Ye)) : a("", !0)
478
478
  ], 64));
479
479
  }
480
- }), G = /* @__PURE__ */ function(e) {
480
+ }), K = /* @__PURE__ */ function(e) {
481
481
  return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
482
- }({}), Ze = G, Qe = ["height", "width"], $e = /* @__PURE__ */ f({
482
+ }({}), Ze = K, Qe = ["height", "width"], $e = /* @__PURE__ */ f({
483
483
  __name: "BaseLogo",
484
484
  props: { size: {
485
485
  type: String,
486
486
  required: !1,
487
- default: G.MEDIUM
487
+ default: K.MEDIUM
488
488
  } },
489
489
  setup(e) {
490
490
  let t = e;
491
491
  function n() {
492
492
  let e = "";
493
493
  switch (t.size) {
494
- case G.SMALL:
494
+ case K.SMALL:
495
495
  e = "50px";
496
496
  break;
497
- case G.MEDIUM:
497
+ case K.MEDIUM:
498
498
  e = "100px";
499
499
  break;
500
- case G.LARGE:
500
+ case K.LARGE:
501
501
  e = "150px";
502
502
  break;
503
503
  }
504
504
  return e;
505
505
  }
506
506
  return (e, t) => {
507
- let r = T("router-link");
507
+ let r = E("router-link");
508
508
  return b(), i(r, {
509
509
  to: "/",
510
510
  class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
511
511
  }, {
512
- default: N(() => [(b(), o("svg", {
512
+ default: F(() => [(b(), o("svg", {
513
513
  height: n(),
514
514
  width: n(),
515
515
  viewBox: "33.6 130.6 499.7 242.9",
@@ -715,31 +715,31 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
715
715
  role: "dialog",
716
716
  "aria-modal": "true",
717
717
  "aria-labelledby": i
718
- }, [t.mode === O(et).DELETE ? (b(), o("div", tt, [
719
- d(O(he), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
718
+ }, [t.mode === k(et).DELETE ? (b(), o("div", tt, [
719
+ d(k(me), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
720
720
  s("h3", {
721
721
  id: i,
722
722
  class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
723
- }, " Are you sure you want to delete this " + D(t.title) + "? ", 1),
724
- s("div", nt, [d(U, {
725
- color: O(V).RED,
723
+ }, " Are you sure you want to delete this " + O(t.title) + "? ", 1),
724
+ s("div", nt, [d(G, {
725
+ color: k(U).RED,
726
726
  onClick: r[1] ||= (e) => n.$emit("confirmModal"),
727
727
  description: "Yes, I'm sure"
728
- }, null, 8, ["color"]), d(U, {
729
- color: O(V).WHITE,
728
+ }, null, 8, ["color"]), d(G, {
729
+ color: k(U).WHITE,
730
730
  onClick: r[2] ||= (e) => n.$emit("closeModal"),
731
731
  description: "No, cancel"
732
732
  }, null, 8, ["color"])])
733
733
  ])) : (b(), o("div", rt, [
734
- d(O(se), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
734
+ d(k(oe), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
735
735
  s("h3", {
736
736
  id: i,
737
737
  class: "mb-2 text-lg font-medium text-gray-900"
738
- }, D(t.title), 1),
739
- t.description ? (b(), o("p", it, D(t.description), 1)) : a("", !0),
740
- w(n.$slots, "default"),
741
- s("div", at, [d(U, {
742
- color: O(V).BLUE,
738
+ }, O(t.title), 1),
739
+ t.description ? (b(), o("p", it, O(t.description), 1)) : a("", !0),
740
+ T(n.$slots, "default"),
741
+ s("div", at, [d(G, {
742
+ color: k(U).BLUE,
743
743
  onClick: r[3] ||= (e) => n.$emit("closeModal"),
744
744
  description: "OK"
745
745
  }, null, 8, ["color"])])
@@ -757,7 +757,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
757
757
  function n() {
758
758
  return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
759
759
  }
760
- return (e, t) => (b(), o("div", { class: h(n()) }, [w(e.$slots, "default")], 2));
760
+ return (e, t) => (b(), o("div", { class: h(n()) }, [T(e.$slots, "default")], 2));
761
761
  }
762
762
  }), ct = /* @__PURE__ */ f({
763
763
  __name: "BaseSpinner",
@@ -787,9 +787,9 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
787
787
  "aria-label": "Loading"
788
788
  }, null, 2));
789
789
  }
790
- }), K = /* @__PURE__ */ function(e) {
790
+ }), q = /* @__PURE__ */ function(e) {
791
791
  return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
792
- }({}), q = /* @__PURE__ */ function(e) {
792
+ }({}), J = /* @__PURE__ */ function(e) {
793
793
  return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
794
794
  }({}), lt = { 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" }, ut = { class: "ml-3 text-sm font-normal" }, dt = /* @__PURE__ */ f({
795
795
  __name: "BaseToast",
@@ -810,7 +810,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
810
810
  positioning: {
811
811
  type: String,
812
812
  required: !1,
813
- default: q.TOP_RIGHT
813
+ default: J.TOP_RIGHT
814
814
  },
815
815
  duration: {
816
816
  type: Number,
@@ -819,7 +819,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
819
819
  }
820
820
  },
821
821
  setup(e) {
822
- let t = e, n = S(!0), r = null;
822
+ let t = e, n = C(!0), r = null;
823
823
  function i() {
824
824
  n.value = !1, r &&= (clearTimeout(r), null);
825
825
  }
@@ -831,13 +831,13 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
831
831
  function c() {
832
832
  let e = "";
833
833
  switch (t.mode) {
834
- case K.ERROR:
834
+ case q.ERROR:
835
835
  e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
836
836
  break;
837
- case K.SUCCESS:
837
+ case q.SUCCESS:
838
838
  e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
839
839
  break;
840
- case K.WARNING:
840
+ case q.WARNING:
841
841
  e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
842
842
  break;
843
843
  default:
@@ -849,16 +849,16 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
849
849
  function l() {
850
850
  let e = "top-5 right-5";
851
851
  switch (t.positioning) {
852
- case q.BOTTOM_LEFT:
852
+ case J.BOTTOM_LEFT:
853
853
  e = "bottom-5 left-5";
854
854
  break;
855
- case q.TOP_LEFT:
855
+ case J.TOP_LEFT:
856
856
  e = "top-5 left-5";
857
857
  break;
858
- case q.TOP_RIGHT:
858
+ case J.TOP_RIGHT:
859
859
  e = "top-5 right-5";
860
860
  break;
861
- case q.BOTTOM_RIGHT:
861
+ case J.BOTTOM_RIGHT:
862
862
  e = "bottom-5 right-5";
863
863
  break;
864
864
  }
@@ -870,24 +870,24 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
870
870
  class: h(l()),
871
871
  role: "alert"
872
872
  }, [s("div", lt, [
873
- e.mode == O(K).ERROR ? (b(), o("div", {
873
+ e.mode == k(q).ERROR ? (b(), o("div", {
874
874
  key: 0,
875
875
  class: h(c())
876
- }, [d(O(he), { class: "h-6 w-6 text-red-500" }), r[0] ||= s("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == O(K).SUCCESS ? (b(), o("div", {
876
+ }, [d(k(me), { class: "h-6 w-6 text-red-500" }), r[0] ||= s("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == k(q).SUCCESS ? (b(), o("div", {
877
877
  key: 1,
878
878
  class: h(c())
879
- }, [d(O(se), { class: "h-6 w-6 text-green-500" }), r[1] ||= s("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == O(K).WARNING ? (b(), o("div", {
879
+ }, [d(k(oe), { class: "h-6 w-6 text-green-500" }), r[1] ||= s("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == k(q).WARNING ? (b(), o("div", {
880
880
  key: 2,
881
881
  class: h(c())
882
- }, [d(O(ge), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= s("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : a("", !0),
883
- s("div", ut, D(e.description), 1),
882
+ }, [d(k(he), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= s("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : a("", !0),
883
+ s("div", ut, O(e.description), 1),
884
884
  e.hasCloseIcon ? (b(), o("button", {
885
885
  key: 3,
886
886
  type: "button",
887
887
  class: "ml-auto -mx-1.5 -my-1.5 bg-white text-gray-400 hover:text-gray-900 rounded-lg focus:ring-2 focus:ring-gray-300 p-1.5 hover:bg-gray-100 inline-flex items-center justify-center h-8 w-8 dark:text-gray-500 dark:hover:text-white dark:bg-gray-800 dark:hover:bg-gray-700 cursor-pointer",
888
888
  "aria-label": "Close",
889
889
  onClick: i
890
- }, [r[3] ||= s("span", { class: "sr-only" }, "Close", -1), d(O(Ce), { class: "h-6 w-6 text-gray-500" })])) : a("", !0)
890
+ }, [r[3] ||= s("span", { class: "sr-only" }, "Close", -1), d(k(Se), { class: "h-6 w-6 text-gray-500" })])) : a("", !0)
891
891
  ])], 2)) : a("", !0);
892
892
  }
893
893
  }), ft = { class: "w-13" }, pt = /* @__PURE__ */ f({
@@ -907,27 +907,27 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
907
907
  "bg-yellow-300",
908
908
  "bg-purple-300",
909
909
  "bg-pink-300"
910
- ], r = S(n[Math.floor(Math.random() * n.length)]);
910
+ ], r = C(n[Math.floor(Math.random() * n.length)]);
911
911
  function i() {
912
912
  let e = "gray";
913
913
  switch (t.color) {
914
- case B.GREEN:
914
+ case H.GREEN:
915
915
  e = "green";
916
916
  break;
917
- case B.RED:
917
+ case H.RED:
918
918
  e = "red";
919
919
  break;
920
- case B.BLUE:
920
+ case H.BLUE:
921
921
  e = "blue";
922
922
  break;
923
- case B.YELLOW:
923
+ case H.YELLOW:
924
924
  e = "yellow";
925
925
  break;
926
- case B.NONE: return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full";
926
+ case H.NONE: return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full";
927
927
  }
928
928
  return "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full bg-" + e + "-100 text-" + e + "-800";
929
929
  }
930
- return (e, t) => (b(), o("div", ft, [s("div", { class: h(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [w(e.$slots, "default"), s("div", { class: h(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
930
+ return (e, t) => (b(), o("div", ft, [s("div", { class: h(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [T(e.$slots, "default"), s("div", { class: h(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
931
931
  }
932
932
  }), mt = { class: "flex items-start justify-between" }, ht = { class: "min-w-0" }, gt = /* @__PURE__ */ f({
933
933
  __name: "EarningsCard",
@@ -984,10 +984,10 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
984
984
  return (n, r) => (b(), o("div", { class: h(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (b(), o("div", {
985
985
  key: 0,
986
986
  class: h(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
987
- }, D(t.badge), 3)) : a("", !0), s("div", mt, [s("div", ht, [
988
- s("p", { class: h(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, D(t.title), 3),
989
- s("p", { class: h(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, D(f.value), 3),
990
- s("p", { class: h(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, D(t.subtitle), 3)
987
+ }, O(t.badge), 3)) : a("", !0), s("div", mt, [s("div", ht, [
988
+ s("p", { class: h(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, O(t.title), 3),
989
+ s("p", { class: h(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, O(f.value), 3),
990
+ s("p", { class: h(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, O(t.subtitle), 3)
991
991
  ]), s("div", { class: h(["flex items-center justify-center", [d.value.iconBox, t.compact ? "absolute right-2 top-2 h-6 w-6 rounded-lg" : "mt-6 h-12 w-12 rounded-xl"]]) }, [(b(), o("svg", {
992
992
  class: h([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
993
993
  viewBox: "0 0 24 24",
@@ -1021,10 +1021,10 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1021
1021
  },
1022
1022
  setup(t) {
1023
1023
  let n = t, i = r(() => n.amount !== null && n.amount !== void 0), s = r(() => i.value && n.amount < 0), c = r(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = r(() => s.value || c.value), d = r(() => !s.value && !c.value && !(n.beforeAmount === null || n.beforeAmount === void 0));
1024
- return (n, r) => (b(), o(e, null, [i.value && d.value ? (b(), o("span", _t, [u(D(t.amount) + " ", 1), t.showCurrency ? (b(), o("span", vt, "€")) : a("", !0)])) : a("", !0), i.value && !d.value ? (b(), o("span", {
1024
+ return (n, r) => (b(), o(e, null, [i.value && d.value ? (b(), o("span", _t, [u(O(t.amount) + " ", 1), t.showCurrency ? (b(), o("span", vt, "€")) : a("", !0)])) : a("", !0), i.value && !d.value ? (b(), o("span", {
1025
1025
  key: 1,
1026
1026
  class: h([bt, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
1027
- }, [u(D(t.amount) + " ", 1), t.showCurrency ? (b(), o("span", yt, "€")) : a("", !0)], 2)) : a("", !0)], 64));
1027
+ }, [u(O(t.amount) + " ", 1), t.showCurrency ? (b(), o("span", yt, "€")) : a("", !0)], 2)) : a("", !0)], 64));
1028
1028
  }
1029
1029
  }), St = { "aria-label": "Pagination" }, Ct = { class: "flex list-none p-0 m-0" }, wt = [
1030
1030
  "aria-current",
@@ -1048,7 +1048,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1048
1048
  },
1049
1049
  emits: ["page-changed"],
1050
1050
  setup(t, { emit: n }) {
1051
- let r = t, i = S(1), a = S(0), c = S([]), l = n;
1051
+ let r = t, i = C(1), a = C(0), c = C([]), l = n;
1052
1052
  function u(e) {
1053
1053
  if (a.value <= 5) {
1054
1054
  c.value = Array.from({ length: a.value }, (e, t) => t + 1);
@@ -1062,9 +1062,9 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1062
1062
  function d(e) {
1063
1063
  e === i.value || e < 1 || e > a.value || (i.value = e, u(e), l("page-changed", e));
1064
1064
  }
1065
- return M(() => [r.totalItems, r.itemsPerPage], () => {
1065
+ return P(() => [r.totalItems, r.itemsPerPage], () => {
1066
1066
  a.value = Math.ceil(r.totalItems / r.itemsPerPage), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
1067
- }, { immediate: !0 }), (t, n) => (b(), o("nav", St, [s("ul", Ct, [(b(!0), o(e, null, C(c.value, (e, t) => (b(), o("li", {
1067
+ }, { immediate: !0 }), (t, n) => (b(), o("nav", St, [s("ul", Ct, [(b(!0), o(e, null, w(c.value, (e, t) => (b(), o("li", {
1068
1068
  key: t,
1069
1069
  class: "mr-1"
1070
1070
  }, [e === 0 ? (b(), o("span", Tt, "...")) : (b(), o("button", {
@@ -1074,7 +1074,7 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1074
1074
  "aria-label": `Go to page ${e}`,
1075
1075
  onClick: (t) => d(e),
1076
1076
  class: h(["inline-block min-w-[44px] border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-pointer transition-colors hover:bg-gray-300 dark:hover:bg-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", { "active font-bold bg-gray-200 dark:bg-gray-700": e === i.value }])
1077
- }, D(e), 11, wt))]))), 128))])]));
1077
+ }, O(e), 11, wt))]))), 128))])]));
1078
1078
  }
1079
1079
  }), Dt = { key: 0 }, Ot = {
1080
1080
  key: 0,
@@ -1099,23 +1099,23 @@ var Ae = { class: "min-w-0 flex-1" }, je = {
1099
1099
  },
1100
1100
  setup(e) {
1101
1101
  let t = e, n = r(() => t.number !== null && t.number !== void 0 && t.number < 0), i = r(() => t.number === 0);
1102
- return (r, s) => e.number !== null && e.number !== void 0 ? (b(), o("div", Dt, [n.value ? (b(), o("span", Ot, [d(Pe, { color: O(B).RED }, {
1103
- default: N(() => [u(D(e.number) + D(t.icon), 1)]),
1102
+ return (r, s) => e.number !== null && e.number !== void 0 ? (b(), o("div", Dt, [n.value ? (b(), o("span", Ot, [d(Ne, { color: k(H).RED }, {
1103
+ default: F(() => [u(O(e.number) + O(t.icon), 1)]),
1104
1104
  _: 1
1105
- }, 8, ["color"]), d(O(re), { class: "h-5 w-5 text-red-500" })])) : i.value ? (b(), o("span", kt, [d(Pe, { color: O(B).GRAY }, {
1106
- default: N(() => [u(D(e.number) + D(t.icon), 1)]),
1105
+ }, 8, ["color"]), d(k(ne), { class: "h-5 w-5 text-red-500" })])) : i.value ? (b(), o("span", kt, [d(Ne, { color: k(H).GRAY }, {
1106
+ default: F(() => [u(O(e.number) + O(t.icon), 1)]),
1107
1107
  _: 1
1108
- }, 8, ["color"]), d(O(be), { class: "h-5 w-5 text-gray-400" })])) : (b(), o("span", At, [d(Pe, { color: O(B).GREEN }, {
1109
- default: N(() => [u(D(e.number) + D(t.icon), 1)]),
1108
+ }, 8, ["color"]), d(k(ye), { class: "h-5 w-5 text-gray-400" })])) : (b(), o("span", At, [d(Ne, { color: k(H).GREEN }, {
1109
+ default: F(() => [u(O(e.number) + O(t.icon), 1)]),
1110
1110
  _: 1
1111
- }, 8, ["color"]), d(O(ie), { class: "h-5 w-5 text-green-500" })]))])) : a("", !0);
1111
+ }, 8, ["color"]), d(k(re), { class: "h-5 w-5 text-green-500" })]))])) : a("", !0);
1112
1112
  }
1113
1113
  });
1114
1114
  //#endregion
1115
1115
  //#region src/composables/useThemeClasses.ts
1116
- function J() {
1117
- let { isDark: e } = z();
1118
- return {
1116
+ function Y() {
1117
+ let { isDark: e } = V();
1118
+ return x({
1119
1119
  card: r(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
1120
1120
  cardAlt: r(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
1121
1121
  pageBg: r(() => e.value ? "bg-gray-900" : "bg-gray-50"),
@@ -1137,7 +1137,7 @@ function J() {
1137
1137
  amberText: r(() => e.value ? "text-amber-400" : "text-amber-600"),
1138
1138
  amberTextStrong: r(() => e.value ? "text-amber-300" : "text-amber-700"),
1139
1139
  redText: r(() => e.value ? "text-red-400" : "text-red-500")
1140
- };
1140
+ });
1141
1141
  }
1142
1142
  //#endregion
1143
1143
  //#region src/composables/useEscapeKey.ts
@@ -1169,7 +1169,7 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1169
1169
  },
1170
1170
  emits: ["cancel", "backdrop"],
1171
1171
  setup(e, { emit: n }) {
1172
- let c = e, l = n, { isDark: u } = z(), d = J(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = r(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = r(() => c.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1172
+ let c = e, l = n, { isDark: u } = V(), d = Y(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = r(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = r(() => c.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1173
1173
  function g() {
1174
1174
  l("backdrop"), c.manualClose || l("cancel");
1175
1175
  }
@@ -1184,37 +1184,37 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1184
1184
  }, [e.scrollable ? (b(), o("div", {
1185
1185
  key: 0,
1186
1186
  class: h(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
1187
- onClick: r[0] ||= F(() => {}, ["stop"])
1187
+ onClick: r[0] ||= L(() => {}, ["stop"])
1188
1188
  }, [
1189
- s("div", { class: h(["flex items-start justify-between gap-4 p-6 border-b shrink-0", O(d).border]) }, [s("div", Nt, [w(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(b(), i(E(e.icon), {
1189
+ s("div", { class: h(["flex items-start justify-between gap-4 p-6 border-b shrink-0", k(d).border]) }, [s("div", Nt, [T(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(b(), i(D(e.icon), {
1190
1190
  class: h(["h-6 w-6", e.iconClass]),
1191
1191
  "aria-hidden": "true"
1192
1192
  }, null, 8, ["class"]))], 2)]), s("div", Pt, [s("h3", {
1193
1193
  id: f,
1194
- class: h(["text-lg font-medium", O(d).primaryText])
1195
- }, D(e.title), 3), e.subtitle ? (b(), o("p", {
1194
+ class: h(["text-lg font-medium", k(d).primaryText])
1195
+ }, O(e.title), 3), e.subtitle ? (b(), o("p", {
1196
1196
  key: 0,
1197
- class: h(["text-sm mt-1 break-all", O(d).mutedText])
1198
- }, D(e.subtitle), 3)) : a("", !0)])]), w(n.$slots, "header-actions")], 2),
1199
- s("div", Ft, [w(n.$slots, "default")]),
1197
+ class: h(["text-sm mt-1 break-all", k(d).mutedText])
1198
+ }, O(e.subtitle), 3)) : a("", !0)])]), T(n.$slots, "header-actions")], 2),
1199
+ s("div", Ft, [T(n.$slots, "default")]),
1200
1200
  n.$slots.footer ? (b(), o("div", {
1201
1201
  key: 0,
1202
- class: h(["flex gap-3 justify-end p-6 border-t shrink-0", O(d).border])
1203
- }, [w(n.$slots, "footer")], 2)) : a("", !0)
1202
+ class: h(["flex gap-3 justify-end p-6 border-t shrink-0", k(d).border])
1203
+ }, [T(n.$slots, "footer")], 2)) : a("", !0)
1204
1204
  ], 2)) : (b(), o("div", {
1205
1205
  key: 1,
1206
1206
  class: h(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
1207
- onClick: r[1] ||= F(() => {}, ["stop"])
1207
+ onClick: r[1] ||= L(() => {}, ["stop"])
1208
1208
  }, [s("div", It, [
1209
- s("div", Lt, [w(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(b(), i(E(e.icon), {
1209
+ s("div", Lt, [T(n.$slots, "icon", {}, () => [s("div", { class: h(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(b(), i(D(e.icon), {
1210
1210
  class: h(["h-6 w-6", e.iconClass]),
1211
1211
  "aria-hidden": "true"
1212
1212
  }, null, 8, ["class"]))], 2)]), s("div", Rt, [s("h3", {
1213
1213
  id: f,
1214
- class: h(["text-lg font-medium", O(d).primaryText])
1215
- }, D(e.title), 3)])]),
1216
- s("div", zt, [w(n.$slots, "default")]),
1217
- s("div", Bt, [w(n.$slots, "footer")])
1214
+ class: h(["text-lg font-medium", k(d).primaryText])
1215
+ }, O(e.title), 3)])]),
1216
+ s("div", zt, [T(n.$slots, "default")]),
1217
+ s("div", Bt, [T(n.$slots, "footer")])
1218
1218
  ])], 2))])]));
1219
1219
  }
1220
1220
  }), Ht = ["aria-expanded"], Ut = { class: "flex items-center gap-3" }, Wt = /* @__PURE__ */ f({
@@ -1227,17 +1227,17 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1227
1227
  },
1228
1228
  emits: ["toggle"],
1229
1229
  setup(e, { emit: t }) {
1230
- let n = e, i = t, { isDark: c } = z(), l = J(), u = r(() => c.value ? "text-gray-100" : "text-gray-700"), d = r(() => c.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = r(() => c.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = r(() => n.bodyClass === void 0 ? c.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1231
- return (t, n) => (b(), o("section", { class: h(["rounded-xl border transition-colors", O(l).cardAlt]) }, [s("button", {
1230
+ let n = e, i = t, { isDark: c } = V(), l = Y(), u = r(() => c.value ? "text-gray-100" : "text-gray-700"), d = r(() => c.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = r(() => c.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = r(() => n.bodyClass === void 0 ? c.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1231
+ return (t, n) => (b(), o("section", { class: h(["rounded-xl border transition-colors", k(l).cardAlt]) }, [s("button", {
1232
1232
  type: "button",
1233
1233
  class: h(["w-full flex items-center justify-between p-4 text-left transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [d.value, e.collapsed ? "rounded-xl" : "rounded-t-xl"]]),
1234
1234
  "aria-expanded": !e.collapsed,
1235
1235
  onClick: n[0] ||= (e) => i("toggle")
1236
- }, [s("div", Ut, [s("h2", { class: h(["text-base font-semibold", u.value]) }, D(e.title), 3), e.badge ? (b(), o("span", {
1236
+ }, [s("div", Ut, [s("h2", { class: h(["text-base font-semibold", u.value]) }, O(e.title), 3), e.badge ? (b(), o("span", {
1237
1237
  key: 0,
1238
1238
  class: h(["text-xs px-2 py-0.5 rounded-full", f.value])
1239
- }, D(e.badge), 3)) : a("", !0)]), (b(), o("svg", {
1240
- class: h(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", O(l).dimTextAlt]]),
1239
+ }, O(e.badge), 3)) : a("", !0)]), (b(), o("svg", {
1240
+ class: h(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", k(l).dimTextAlt]]),
1241
1241
  fill: "none",
1242
1242
  viewBox: "0 0 24 24",
1243
1243
  stroke: "currentColor",
@@ -1247,7 +1247,7 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1247
1247
  "stroke-linecap": "round",
1248
1248
  "stroke-linejoin": "round",
1249
1249
  d: "M19 9l-7 7-7-7"
1250
- }, null, -1)]], 2))], 10, Ht), P(s("div", { class: h(["p-6 border-t rounded-b-xl", [O(l).border, p.value]]) }, [w(t.$slots, "default")], 2), [[te, !e.collapsed]])], 2));
1250
+ }, null, -1)]], 2))], 10, Ht), I(s("div", { class: h(["p-6 border-t rounded-b-xl", [k(l).border, p.value]]) }, [T(t.$slots, "default")], 2), [[N, !e.collapsed]])], 2));
1251
1251
  }
1252
1252
  }), Gt = ["disabled"], Kt = ["disabled"], qt = {
1253
1253
  key: 0,
@@ -1271,7 +1271,7 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1271
1271
  },
1272
1272
  emits: ["confirm", "cancel"],
1273
1273
  setup(e, { emit: t }) {
1274
- let n = e, r = t, { isDark: c } = z(), l = J();
1274
+ let n = e, r = t, { isDark: c } = V(), l = Y();
1275
1275
  function d() {
1276
1276
  n.submitting || r("confirm");
1277
1277
  }
@@ -1280,18 +1280,18 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1280
1280
  }
1281
1281
  return (t, n) => (b(), i(Vt, {
1282
1282
  title: e.title,
1283
- icon: O(ge),
1284
- "icon-bg-class": e.variant === "danger" ? O(c) ? "bg-red-900/30" : "bg-red-50" : O(c) ? "bg-amber-900/30" : "bg-amber-50",
1283
+ icon: k(he),
1284
+ "icon-bg-class": e.variant === "danger" ? k(c) ? "bg-red-900/30" : "bg-red-50" : k(c) ? "bg-amber-900/30" : "bg-amber-50",
1285
1285
  "icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
1286
1286
  "manual-close": e.submitting,
1287
1287
  onCancel: f
1288
1288
  }, {
1289
- footer: N(() => [s("button", {
1289
+ footer: F(() => [s("button", {
1290
1290
  type: "button",
1291
1291
  disabled: e.submitting,
1292
- class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [O(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1292
+ class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [k(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1293
1293
  onClick: f
1294
- }, D(e.cancelText), 11, Gt), s("button", {
1294
+ }, O(e.cancelText), 11, Gt), s("button", {
1295
1295
  type: "button",
1296
1296
  disabled: e.submitting,
1297
1297
  class: h(["inline-flex items-center justify-center gap-2 px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2", [e.variant === "danger" ? "focus-visible:ring-red-500" : "focus-visible:ring-emerald-500", e.variant === "danger" ? e.submitting ? "bg-red-400 cursor-not-allowed" : "bg-red-600 hover:bg-red-700 cursor-pointer" : e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
@@ -1307,8 +1307,8 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1307
1307
  class: "opacity-75",
1308
1308
  fill: "currentColor",
1309
1309
  d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
1310
- }, null, -1)]])) : a("", !0), u(" " + D(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Kt)]),
1311
- default: N(() => [w(t.$slots, "message", {}, () => [s("p", { class: h(["text-sm", O(c) ? "text-gray-300" : "text-gray-600"]) }, D(e.message), 3)]), w(t.$slots, "default")]),
1310
+ }, null, -1)]])) : a("", !0), u(" " + O(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Kt)]),
1311
+ default: F(() => [T(t.$slots, "message", {}, () => [s("p", { class: h(["text-sm", k(c) ? "text-gray-300" : "text-gray-600"]) }, O(e.message), 3)]), T(t.$slots, "default")]),
1312
1312
  _: 3
1313
1313
  }, 8, [
1314
1314
  "title",
@@ -1336,7 +1336,7 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1336
1336
  },
1337
1337
  emits: ["confirm", "cancel"],
1338
1338
  setup(e, { emit: t }) {
1339
- let n = e, r = t, { isDark: a } = z(), o = J(), l = S(n.initialValue), u = S(null);
1339
+ let n = e, r = t, { isDark: a } = V(), o = Y(), l = C(n.initialValue), u = C(null);
1340
1340
  _(async () => {
1341
1341
  await m(), u.value?.focus();
1342
1342
  });
@@ -1351,33 +1351,33 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1351
1351
  }
1352
1352
  return Mt(f), (t, n) => (b(), i(Vt, {
1353
1353
  title: e.title,
1354
- icon: O(me),
1354
+ icon: k(pe),
1355
1355
  "manual-close": "",
1356
1356
  onBackdrop: p
1357
1357
  }, c({
1358
- footer: N(() => [s("button", {
1358
+ footer: F(() => [s("button", {
1359
1359
  type: "button",
1360
- class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", O(o).ghostButton]),
1360
+ class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", k(o).ghostButton]),
1361
1361
  onClick: f
1362
- }, D(e.cancelText), 3), s("button", {
1362
+ }, O(e.cancelText), 3), s("button", {
1363
1363
  type: "button",
1364
1364
  disabled: !l.value.trim() || e.submitting,
1365
1365
  class: h(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", [!l.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
1366
1366
  onClick: d
1367
- }, D(e.submitting ? e.submittingText : e.confirmText), 11, Zt)]),
1368
- default: N(() => [s("p", { class: h(["text-sm", O(a) ? "text-gray-300" : "text-gray-600"]) }, D(e.message), 3), s("div", Yt, [s("label", { class: h(["block text-sm font-medium mb-1", O(o).label]) }, D(e.inputLabel), 3), P(s("input", {
1367
+ }, O(e.submitting ? e.submittingText : e.confirmText), 11, Zt)]),
1368
+ default: F(() => [s("p", { class: h(["text-sm", k(a) ? "text-gray-300" : "text-gray-600"]) }, O(e.message), 3), s("div", Yt, [s("label", { class: h(["block text-sm font-medium mb-1", k(o).label]) }, O(e.inputLabel), 3), I(s("input", {
1369
1369
  ref_key: "nameInput",
1370
1370
  ref: u,
1371
1371
  "onUpdate:modelValue": n[0] ||= (e) => l.value = e,
1372
1372
  type: "text",
1373
1373
  placeholder: e.placeholder,
1374
- class: h(["w-full px-3 py-2 rounded-md border text-sm transition-colors", O(a) ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:outline-none focus:border-emerald-500" : "bg-white border-gray-300 text-gray-900 placeholder-gray-400 focus:outline-none focus:border-emerald-500"]),
1375
- onKeyup: ne(d, ["enter"])
1376
- }, null, 42, Xt), [[j, l.value]])])]),
1374
+ class: h(["w-full px-3 py-2 rounded-md border text-sm transition-colors", k(a) ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:outline-none focus:border-emerald-500" : "bg-white border-gray-300 text-gray-900 placeholder-gray-400 focus:outline-none focus:border-emerald-500"]),
1375
+ onKeyup: te(d, ["enter"])
1376
+ }, null, 42, Xt), [[M, l.value]])])]),
1377
1377
  _: 2
1378
1378
  }, [t.$slots.icon ? {
1379
1379
  name: "icon",
1380
- fn: N(() => [w(t.$slots, "icon")]),
1380
+ fn: F(() => [T(t.$slots, "icon")]),
1381
1381
  key: "0"
1382
1382
  } : void 0]), 1032, ["title", "icon"]));
1383
1383
  }
@@ -1390,21 +1390,21 @@ var Nt = { class: "flex items-start gap-4 min-w-0" }, Pt = { class: "flex-1 min-
1390
1390
  homeLabel: { default: "Go home" }
1391
1391
  },
1392
1392
  setup(e) {
1393
- let t = e, n = Ee(), { isDark: r } = z(), i = J();
1393
+ let t = e, n = Te(), { isDark: r } = V(), i = Y();
1394
1394
  function a() {
1395
1395
  n.push({ name: t.homeRouteName });
1396
1396
  }
1397
1397
  return (t, n) => (b(), o("div", $t, [s("div", en, [
1398
- d(O(ge), { class: h(["w-16 h-16 mx-auto mb-4", O(i).illustration]) }, null, 8, ["class"]),
1399
- s("h1", { class: h(["text-4xl font-bold mb-2", O(r) ? "text-gray-200" : "text-gray-800"]) }, D(e.code), 3),
1400
- s("p", { class: h(["text-lg mb-6", O(i).dimTextAlt]) }, D(e.message), 3),
1398
+ d(k(he), { class: h(["w-16 h-16 mx-auto mb-4", k(i).illustration]) }, null, 8, ["class"]),
1399
+ s("h1", { class: h(["text-4xl font-bold mb-2", k(r) ? "text-gray-200" : "text-gray-800"]) }, O(e.code), 3),
1400
+ s("p", { class: h(["text-lg mb-6", k(i).dimTextAlt]) }, O(e.message), 3),
1401
1401
  s("button", {
1402
1402
  onClick: a,
1403
- class: h(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", O(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
1404
- }, D(e.homeLabel), 3)
1403
+ class: h(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", k(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
1404
+ }, O(e.homeLabel), 3)
1405
1405
  ])]));
1406
1406
  }
1407
- }), nn = S(!1);
1407
+ }), nn = C(!1);
1408
1408
  function rn() {
1409
1409
  function e() {
1410
1410
  nn.value = !0;
@@ -1424,12 +1424,12 @@ function rn() {
1424
1424
  }
1425
1425
  //#endregion
1426
1426
  //#region src/composables/useSidebarCollapse.ts
1427
- var Y = S(!1), an = !1, on = "mgv-sidebar-collapsed";
1427
+ var X = C(!1), an = !1, on = "mgv-sidebar-collapsed";
1428
1428
  function sn(e) {
1429
1429
  if (!an && (an = !0, on = e, typeof window < "u")) {
1430
1430
  let e = window.localStorage?.getItem(on);
1431
- e && (Y.value = e === "true"), p(!0).run(() => {
1432
- M(Y, (e) => {
1431
+ e && (X.value = e === "true"), p(!0).run(() => {
1432
+ P(X, (e) => {
1433
1433
  window.localStorage?.setItem(on, String(e));
1434
1434
  });
1435
1435
  });
@@ -1438,16 +1438,16 @@ function sn(e) {
1438
1438
  function cn(e) {
1439
1439
  sn(e?.storageKey ?? on);
1440
1440
  function t() {
1441
- Y.value = !0;
1441
+ X.value = !0;
1442
1442
  }
1443
1443
  function n() {
1444
- Y.value = !1;
1444
+ X.value = !1;
1445
1445
  }
1446
1446
  function r() {
1447
- Y.value = !Y.value;
1447
+ X.value = !X.value;
1448
1448
  }
1449
1449
  return {
1450
- collapsed: Y,
1450
+ collapsed: X,
1451
1451
  collapse: t,
1452
1452
  expand: n,
1453
1453
  toggle: r
@@ -1455,45 +1455,45 @@ function cn(e) {
1455
1455
  }
1456
1456
  //#endregion
1457
1457
  //#region src/composables/useNotifications.ts
1458
- var X = S([]), Z = S(!1), ln = r(() => X.value.filter((e) => !e.read).length);
1459
- function un() {
1458
+ var Z = C([]), ln = C(!1), un = r(() => Z.value.filter((e) => !e.read).length);
1459
+ function dn() {
1460
1460
  function e() {
1461
- Z.value = !0;
1461
+ ln.value = !0;
1462
1462
  }
1463
1463
  function t() {
1464
- Z.value = !1;
1464
+ ln.value = !1;
1465
1465
  }
1466
1466
  function n() {
1467
- Z.value = !Z.value;
1467
+ ln.value = !ln.value;
1468
1468
  }
1469
1469
  function r(e) {
1470
- X.value = e;
1470
+ Z.value = e;
1471
1471
  }
1472
1472
  function i(e) {
1473
- X.value = [e, ...X.value];
1473
+ Z.value = [e, ...Z.value];
1474
1474
  }
1475
1475
  function a(e) {
1476
- X.value = X.value.filter((t) => t.id !== e);
1476
+ Z.value = Z.value.filter((t) => t.id !== e);
1477
1477
  }
1478
1478
  function o(e) {
1479
- X.value = X.value.map((t) => t.id === e ? {
1479
+ Z.value = Z.value.map((t) => t.id === e ? {
1480
1480
  ...t,
1481
1481
  read: !0
1482
1482
  } : t);
1483
1483
  }
1484
1484
  function s() {
1485
- X.value = X.value.map((e) => e.read ? e : {
1485
+ Z.value = Z.value.map((e) => e.read ? e : {
1486
1486
  ...e,
1487
1487
  read: !0
1488
1488
  });
1489
1489
  }
1490
1490
  function c() {
1491
- X.value = [];
1491
+ Z.value = [];
1492
1492
  }
1493
1493
  return {
1494
- notifications: X,
1495
- unreadCount: ln,
1496
- open: Z,
1494
+ notifications: Z,
1495
+ unreadCount: un,
1496
+ open: ln,
1497
1497
  openPanel: e,
1498
1498
  closePanel: t,
1499
1499
  togglePanel: n,
@@ -1507,22 +1507,22 @@ function un() {
1507
1507
  }
1508
1508
  //#endregion
1509
1509
  //#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
1510
- var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }, pn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, mn = { class: "space-y-0.5" }, hn = [
1510
+ var fn = ["aria-label", "aria-expanded"], pn = { class: "flex flex-col h-full" }, mn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, hn = { class: "space-y-0.5" }, gn = [
1511
1511
  "aria-current",
1512
1512
  "title",
1513
1513
  "onClick"
1514
- ], gn = ["aria-label"], _n = { class: "relative shrink-0" }, vn = {
1514
+ ], _n = ["aria-label"], vn = { class: "relative shrink-0" }, yn = {
1515
1515
  key: 0,
1516
1516
  class: "absolute -top-1.5 -right-1.5 min-w-4 h-4 px-1 rounded-full bg-red-500 text-white text-[10px] font-semibold leading-4 text-center"
1517
- }, yn = [
1517
+ }, bn = [
1518
1518
  "title",
1519
1519
  "aria-label",
1520
1520
  "aria-pressed"
1521
- ], bn = [
1521
+ ], xn = [
1522
1522
  "title",
1523
1523
  "aria-label",
1524
1524
  "aria-pressed"
1525
- ], xn = /*#__PURE__*/ ((e, t) => {
1525
+ ], Sn = /*#__PURE__*/ ((e, t) => {
1526
1526
  let n = e.__vccOpts || e;
1527
1527
  for (let [e, r] of t) n[e] = r;
1528
1528
  return n;
@@ -1547,151 +1547,151 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1547
1547
  }
1548
1548
  },
1549
1549
  setup(t) {
1550
- let n = t, c = Ee(), l = Te(), { isDark: f, toggleTheme: p } = z(), { mobileOpen: g, close: _, toggle: v } = rn(), { collapsed: y, toggle: x } = cn(), { unreadCount: T, togglePanel: k } = un(), A = r(() => n.collapsible && y.value), ee = S(null), j = null;
1551
- M(g, async (e) => {
1550
+ let n = t, c = Te(), l = we(), { isDark: f, toggleTheme: p } = V(), { mobileOpen: g, close: _, toggle: v } = rn(), { collapsed: y, toggle: x } = cn(), { unreadCount: S, togglePanel: E } = dn(), A = r(() => n.collapsible && y.value), ee = C(null), j = null;
1551
+ P(g, async (e) => {
1552
1552
  e ? (j = document.activeElement instanceof HTMLElement ? document.activeElement : null, await m(), ee.value?.focus()) : (j?.focus(), j = null);
1553
1553
  });
1554
- function te() {
1554
+ function M() {
1555
1555
  c.push({ name: n.homeRouteName }), _();
1556
1556
  }
1557
1557
  function N(e) {
1558
1558
  return l.name === e;
1559
1559
  }
1560
- function P(e) {
1560
+ function F(e) {
1561
1561
  c.push({ name: e }), _();
1562
1562
  }
1563
1563
  return (n, r) => (b(), o("div", null, [
1564
- s("div", { class: h(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", O(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [s("button", {
1564
+ s("div", { class: h(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", k(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [s("button", {
1565
1565
  type: "button",
1566
- onClick: te,
1566
+ onClick: M,
1567
1567
  class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
1568
1568
  "aria-label": "Go to home"
1569
- }, [w(n.$slots, "logo", { size: 28 }, void 0, !0)]), s("button", {
1569
+ }, [T(n.$slots, "logo", { size: 28 }, void 0, !0)]), s("button", {
1570
1570
  type: "button",
1571
- onClick: r[0] ||= (...e) => O(v) && O(v)(...e),
1572
- class: h(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", O(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1573
- "aria-label": O(g) ? "Close navigation menu" : "Open navigation menu",
1574
- "aria-expanded": O(g)
1575
- }, [O(g) ? (b(), i(O(Ce), {
1571
+ onClick: r[0] ||= (...e) => k(v) && k(v)(...e),
1572
+ class: h(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", k(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1573
+ "aria-label": k(g) ? "Close navigation menu" : "Open navigation menu",
1574
+ "aria-expanded": k(g)
1575
+ }, [k(g) ? (b(), i(k(Se), {
1576
1576
  key: 1,
1577
1577
  class: "w-6 h-6",
1578
1578
  "aria-hidden": "true"
1579
- })) : (b(), i(O(ae), {
1579
+ })) : (b(), i(k(ie), {
1580
1580
  key: 0,
1581
1581
  class: "w-6 h-6",
1582
1582
  "aria-hidden": "true"
1583
- }))], 10, dn)], 2),
1584
- O(g) ? (b(), o("div", {
1583
+ }))], 10, fn)], 2),
1584
+ k(g) ? (b(), o("div", {
1585
1585
  key: 0,
1586
1586
  class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
1587
1587
  "aria-hidden": "true",
1588
- onClick: r[1] ||= (...e) => O(_) && O(_)(...e)
1588
+ onClick: r[1] ||= (...e) => k(_) && k(_)(...e)
1589
1589
  })) : a("", !0),
1590
1590
  s("aside", {
1591
1591
  role: "navigation",
1592
1592
  "aria-label": "Main navigation",
1593
1593
  class: h(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
1594
- O(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
1595
- O(g) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
1596
- t.collapsible && O(y) ? "lg:w-16" : "lg:w-60"
1594
+ k(f) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
1595
+ k(g) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
1596
+ t.collapsible && k(y) ? "lg:w-16" : "lg:w-60"
1597
1597
  ]])
1598
- }, [s("div", fn, [
1598
+ }, [s("div", pn, [
1599
1599
  s("div", { class: h(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": A.value }]) }, [s("button", {
1600
1600
  type: "button",
1601
- onClick: te,
1601
+ onClick: M,
1602
1602
  class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
1603
1603
  "aria-label": "Go to home"
1604
- }, [w(n.$slots, "logo", { size: A.value ? 36 : 52 }, void 0, !0)]), s("button", {
1604
+ }, [T(n.$slots, "logo", { size: A.value ? 36 : 52 }, void 0, !0)]), s("button", {
1605
1605
  ref_key: "closeMobileButton",
1606
1606
  ref: ee,
1607
1607
  type: "button",
1608
- onClick: r[2] ||= (...e) => O(_) && O(_)(...e),
1609
- class: h(["lg:hidden p-1.5 rounded-lg cursor-pointer absolute right-3 top-4 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", O(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1608
+ onClick: r[2] ||= (...e) => k(_) && k(_)(...e),
1609
+ class: h(["lg:hidden p-1.5 rounded-lg cursor-pointer absolute right-3 top-4 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", k(f) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1610
1610
  "aria-label": "Close navigation menu"
1611
- }, [d(O(Ce), {
1611
+ }, [d(k(Se), {
1612
1612
  class: "w-5 h-5",
1613
1613
  "aria-hidden": "true"
1614
1614
  })], 2)], 2),
1615
- s("nav", pn, [(b(!0), o(e, null, C(t.sections, (t) => (b(), o("div", { key: t.title }, [s("p", { class: h(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": A.value }]) }, D(t.title), 3), s("ul", mn, [(b(!0), o(e, null, C(t.items, (e) => (b(), o("li", { key: e.name }, [s("button", {
1615
+ s("nav", mn, [(b(!0), o(e, null, w(t.sections, (t) => (b(), o("div", { key: t.title }, [s("p", { class: h(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": A.value }]) }, O(t.title), 3), s("ul", hn, [(b(!0), o(e, null, w(t.items, (e) => (b(), o("li", { key: e.name }, [s("button", {
1616
1616
  type: "button",
1617
1617
  "aria-current": N(e.name) ? "page" : void 0,
1618
1618
  title: A.value ? e.label : void 0,
1619
- onClick: (t) => P(e.name),
1620
- class: h(["flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors w-full text-left cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [N(e.name) ? O(f) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : O(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1621
- }, [(b(), i(E(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s("span", { class: h({ "lg:hidden": A.value }) }, D(e.label), 3)], 10, hn)]))), 128))])]))), 128))]),
1622
- s("div", { class: h(["px-4 py-4 border-t transition-colors space-y-3", O(f) ? "border-gray-800" : "border-gray-200"]) }, [
1619
+ onClick: (t) => F(e.name),
1620
+ class: h(["flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors w-full text-left cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [N(e.name) ? k(f) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : k(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1621
+ }, [(b(), i(D(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), s("span", { class: h({ "lg:hidden": A.value }) }, O(e.label), 3)], 10, gn)]))), 128))])]))), 128))]),
1622
+ s("div", { class: h(["px-4 py-4 border-t transition-colors space-y-3", k(f) ? "border-gray-800" : "border-gray-200"]) }, [
1623
1623
  t.showNotifications ? (b(), o("button", {
1624
1624
  key: 0,
1625
1625
  type: "button",
1626
- onClick: r[3] ||= (...e) => O(k) && O(k)(...e),
1626
+ onClick: r[3] ||= (...e) => k(E) && k(E)(...e),
1627
1627
  title: "Notifications",
1628
- "aria-label": O(T) > 0 ? `Notifications, ${O(T)} unread` : "Notifications",
1629
- class: h(["relative flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [O(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1630
- }, [s("span", _n, [d(O(oe), {
1628
+ "aria-label": k(S) > 0 ? `Notifications, ${k(S)} unread` : "Notifications",
1629
+ class: h(["relative flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [k(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1630
+ }, [s("span", vn, [d(k(ae), {
1631
1631
  class: "w-[18px] h-[18px]",
1632
1632
  "aria-hidden": "true"
1633
- }), O(T) > 0 ? (b(), o("span", vn, D(O(T) > 99 ? "99+" : O(T)), 1)) : a("", !0)]), s("span", { class: h({ "lg:hidden": A.value }) }, "Notifications", 2)], 10, gn)) : a("", !0),
1633
+ }), k(S) > 0 ? (b(), o("span", yn, O(k(S) > 99 ? "99+" : k(S)), 1)) : a("", !0)]), s("span", { class: h({ "lg:hidden": A.value }) }, "Notifications", 2)], 10, _n)) : a("", !0),
1634
1634
  t.showThemeToggle ? (b(), o("button", {
1635
1635
  key: 1,
1636
1636
  type: "button",
1637
- onClick: r[4] ||= (...e) => O(p) && O(p)(...e),
1638
- title: O(f) ? "Switch to light mode" : "Switch to dark mode",
1639
- "aria-label": O(f) ? "Switch to light mode" : "Switch to dark mode",
1640
- "aria-pressed": O(f),
1641
- class: h(["flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [O(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1637
+ onClick: r[4] ||= (...e) => k(p) && k(p)(...e),
1638
+ title: k(f) ? "Switch to light mode" : "Switch to dark mode",
1639
+ "aria-label": k(f) ? "Switch to light mode" : "Switch to dark mode",
1640
+ "aria-pressed": k(f),
1641
+ class: h(["flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [k(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1642
1642
  }, [
1643
- (b(), i(E(O(f) ? O(Se) : O(xe)), {
1643
+ (b(), i(D(k(f) ? k(xe) : k(be)), {
1644
1644
  class: h(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": A.value }]),
1645
1645
  "aria-hidden": "true"
1646
1646
  }, null, 8, ["class"])),
1647
- s("span", { class: h({ "lg:hidden": A.value }) }, D(O(f) ? "Switch to light" : "Switch to dark"), 3),
1648
- s("span", { class: h(["ml-auto relative w-9 h-5 rounded-full transition-colors", [O(f) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": A.value }]]) }, [s("span", { class: h(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", O(f) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
1649
- ], 10, yn)) : a("", !0),
1647
+ s("span", { class: h({ "lg:hidden": A.value }) }, O(k(f) ? "Switch to light" : "Switch to dark"), 3),
1648
+ s("span", { class: h(["ml-auto relative w-9 h-5 rounded-full transition-colors", [k(f) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": A.value }]]) }, [s("span", { class: h(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", k(f) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
1649
+ ], 10, bn)) : a("", !0),
1650
1650
  t.collapsible ? (b(), o("button", {
1651
1651
  key: 2,
1652
1652
  type: "button",
1653
- onClick: r[5] ||= (...e) => O(x) && O(x)(...e),
1654
- title: O(y) ? "Expand sidebar" : "Collapse sidebar",
1655
- "aria-label": O(y) ? "Expand sidebar" : "Collapse sidebar",
1656
- "aria-pressed": O(y),
1657
- class: h(["hidden lg:flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [O(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1658
- }, [(b(), i(E(O(y) ? O(le) : O(ce)), {
1653
+ onClick: r[5] ||= (...e) => k(x) && k(x)(...e),
1654
+ title: k(y) ? "Expand sidebar" : "Collapse sidebar",
1655
+ "aria-label": k(y) ? "Expand sidebar" : "Collapse sidebar",
1656
+ "aria-pressed": k(y),
1657
+ class: h(["hidden lg:flex items-center gap-3 w-full px-3 py-2.5 rounded-lg text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [k(f) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": A.value }]])
1658
+ }, [(b(), i(D(k(y) ? k(ce) : k(se)), {
1659
1659
  class: "w-[18px] h-[18px] shrink-0",
1660
1660
  "aria-hidden": "true"
1661
- })), s("span", { class: h({ "lg:hidden": A.value }) }, "Collapse", 2)], 10, bn)) : a("", !0),
1662
- s("div", { class: h({ "lg:hidden": A.value }) }, [w(n.$slots, "status", {}, void 0, !0)], 2),
1663
- s("div", { class: h({ "lg:hidden": A.value }) }, [w(n.$slots, "footer", {}, () => [t.appName || t.version ? (b(), o("div", {
1661
+ })), s("span", { class: h({ "lg:hidden": A.value }) }, "Collapse", 2)], 10, xn)) : a("", !0),
1662
+ s("div", { class: h({ "lg:hidden": A.value }) }, [T(n.$slots, "status", {}, void 0, !0)], 2),
1663
+ s("div", { class: h({ "lg:hidden": A.value }) }, [T(n.$slots, "footer", {}, () => [t.appName || t.version ? (b(), o("div", {
1664
1664
  key: 0,
1665
- class: h(["flex items-center justify-center gap-2 text-xs", (O(f), "text-gray-500")])
1665
+ class: h(["flex items-center justify-center gap-2 text-xs", (k(f), "text-gray-500")])
1666
1666
  }, [s("span", null, [
1667
- u(D(t.appName), 1),
1667
+ u(O(t.appName), 1),
1668
1668
  t.appName && t.version ? (b(), o(e, { key: 0 }, [], 64)) : a("", !0),
1669
- t.version ? (b(), o(e, { key: 1 }, [u("v" + D(t.version), 1)], 64)) : a("", !0)
1669
+ t.version ? (b(), o(e, { key: 1 }, [u("v" + O(t.version), 1)], 64)) : a("", !0)
1670
1670
  ])], 2)) : a("", !0)], !0)], 2)
1671
1671
  ], 2)
1672
1672
  ])], 2)
1673
1673
  ]));
1674
1674
  }
1675
- }), [["__scopeId", "data-v-452beaf2"]]), Sn = {
1675
+ }), [["__scopeId", "data-v-452beaf2"]]), Cn = {
1676
1676
  key: 1,
1677
1677
  class: "mt-4 flex justify-center py-6"
1678
- }, Cn = {
1678
+ }, wn = {
1679
1679
  key: 2,
1680
1680
  class: "mt-4 text-sm text-red-500",
1681
1681
  role: "alert"
1682
- }, wn = {
1682
+ }, Tn = {
1683
1683
  key: 3,
1684
1684
  class: "mt-4"
1685
- }, Tn = { class: "relative" }, En = ["placeholder"], Dn = {
1685
+ }, En = { class: "relative" }, Dn = ["placeholder"], On = {
1686
1686
  key: 4,
1687
1687
  class: "mt-3 max-h-64 overflow-y-auto"
1688
- }, On = ["aria-pressed", "onClick"], kn = { class: "flex-1 min-w-0" }, An = {
1688
+ }, kn = ["aria-pressed", "onClick"], An = { class: "flex-1 min-w-0" }, jn = {
1689
1689
  key: 0,
1690
1690
  class: "text-center py-6"
1691
- }, jn = {
1691
+ }, Mn = {
1692
1692
  key: 1,
1693
1693
  class: "text-center py-6"
1694
- }, Mn = ["disabled"], Nn = ["disabled"], Pn = /* @__PURE__ */ f({
1694
+ }, Nn = ["disabled"], Pn = ["disabled"], Fn = /* @__PURE__ */ f({
1695
1695
  __name: "BaseEntityPickerModal",
1696
1696
  props: {
1697
1697
  title: {},
@@ -1713,10 +1713,10 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1713
1713
  },
1714
1714
  emits: ["confirm", "cancel"],
1715
1715
  setup(t, { emit: n }) {
1716
- let l = t, u = n, { isDark: f } = z(), p = J(), g = S([]), v = S(!1), y = S(""), x = S(null), T = S(""), E = S(null), k = r(() => {
1716
+ let l = t, u = n, { isDark: f } = V(), p = Y(), g = C([]), v = C(!1), y = C(""), x = C(null), S = C(""), E = C(null), D = r(() => {
1717
1717
  let e = l.loader ? g.value : l.items;
1718
1718
  return l.excludeId ? e.filter((e) => e.id !== l.excludeId) : e;
1719
- }), A = r(() => k.value.filter((e) => e.label.toLowerCase().includes(T.value.toLowerCase()))), ee = {
1719
+ }), A = r(() => D.value.filter((e) => e.label.toLowerCase().includes(S.value.toLowerCase()))), ee = {
1720
1720
  emerald: {
1721
1721
  iconBg: "bg-emerald-50",
1722
1722
  iconText: "text-emerald-600",
@@ -1762,7 +1762,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1762
1762
  confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
1763
1763
  confirmDisabled: "bg-amber-400 cursor-not-allowed"
1764
1764
  }
1765
- }, te = {
1765
+ }, j = {
1766
1766
  emerald: {
1767
1767
  iconBg: "bg-emerald-900/30",
1768
1768
  iconText: "text-emerald-400",
@@ -1808,7 +1808,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1808
1808
  confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
1809
1809
  confirmDisabled: "bg-amber-400 cursor-not-allowed"
1810
1810
  }
1811
- }, M = r(() => (f.value ? te : ee)[l.variant]);
1811
+ }, N = r(() => (f.value ? j : ee)[l.variant]);
1812
1812
  _(async () => {
1813
1813
  if (l.loader) {
1814
1814
  v.value = !0;
@@ -1822,60 +1822,60 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1822
1822
  }
1823
1823
  await m(), E.value?.focus();
1824
1824
  });
1825
- function ne() {
1825
+ function P() {
1826
1826
  !x.value || l.submitting || u("confirm", x.value);
1827
1827
  }
1828
- function F() {
1828
+ function te() {
1829
1829
  l.submitting || u("cancel");
1830
1830
  }
1831
1831
  return (n, r) => (b(), i(Vt, {
1832
1832
  title: t.title,
1833
- icon: O(_e),
1834
- "icon-bg-class": M.value.iconBg,
1835
- "icon-class": M.value.iconText,
1833
+ icon: k(ge),
1834
+ "icon-bg-class": N.value.iconBg,
1835
+ "icon-class": N.value.iconText,
1836
1836
  "manual-close": t.submitting,
1837
- onCancel: F
1837
+ onCancel: te
1838
1838
  }, c({
1839
- footer: N(() => [s("button", {
1839
+ footer: F(() => [s("button", {
1840
1840
  type: "button",
1841
1841
  disabled: t.submitting,
1842
- class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", O(p).ghostButton]),
1843
- onClick: F
1844
- }, D(t.cancelText), 11, Mn), s("button", {
1842
+ class: h(["inline-flex items-center justify-center px-4 py-2 border rounded-md shadow-sm text-sm font-medium transition-colors duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", k(p).ghostButton]),
1843
+ onClick: te
1844
+ }, O(t.cancelText), 11, Nn), s("button", {
1845
1845
  type: "button",
1846
1846
  disabled: !x.value || t.submitting,
1847
- class: h(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", !x.value || t.submitting ? M.value.confirmDisabled : M.value.confirmActive]),
1848
- onClick: ne
1849
- }, D(t.submitting ? t.submittingText : t.confirmText), 11, Nn)]),
1850
- default: N(() => [
1847
+ class: h(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", !x.value || t.submitting ? N.value.confirmDisabled : N.value.confirmActive]),
1848
+ onClick: P
1849
+ }, O(t.submitting ? t.submittingText : t.confirmText), 11, Pn)]),
1850
+ default: F(() => [
1851
1851
  t.message ? (b(), o("p", {
1852
1852
  key: 0,
1853
- class: h(["text-sm", O(f) ? "text-gray-300" : "text-gray-600"])
1854
- }, D(t.message), 3)) : a("", !0),
1855
- v.value ? (b(), o("div", Sn, [d(ct, { color: "emerald" })])) : y.value ? (b(), o("div", Cn, D(y.value), 1)) : a("", !0),
1856
- !v.value && !y.value && k.value.length > 0 ? (b(), o("div", wn, [s("div", Tn, [d(O(ye), {
1857
- class: h(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", O(p).dimText]),
1853
+ class: h(["text-sm", k(f) ? "text-gray-300" : "text-gray-600"])
1854
+ }, O(t.message), 3)) : a("", !0),
1855
+ v.value ? (b(), o("div", Cn, [d(ct, { color: "emerald" })])) : y.value ? (b(), o("div", wn, O(y.value), 1)) : a("", !0),
1856
+ !v.value && !y.value && D.value.length > 0 ? (b(), o("div", Tn, [s("div", En, [d(k(ve), {
1857
+ class: h(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", k(p).dimText]),
1858
1858
  "aria-hidden": "true"
1859
- }, null, 8, ["class"]), P(s("input", {
1859
+ }, null, 8, ["class"]), I(s("input", {
1860
1860
  ref_key: "searchInputRef",
1861
1861
  ref: E,
1862
- "onUpdate:modelValue": r[0] ||= (e) => T.value = e,
1862
+ "onUpdate:modelValue": r[0] ||= (e) => S.value = e,
1863
1863
  type: "text",
1864
1864
  placeholder: t.searchPlaceholder,
1865
- class: h(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [O(f) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", M.value.inputFocus]])
1866
- }, null, 10, En), [[j, T.value]])])])) : a("", !0),
1867
- !v.value && !y.value ? (b(), o("div", Dn, [(b(!0), o(e, null, C(A.value, (e) => (b(), o("button", {
1865
+ class: h(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [k(f) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", N.value.inputFocus]])
1866
+ }, null, 10, Dn), [[M, S.value]])])])) : a("", !0),
1867
+ !v.value && !y.value ? (b(), o("div", On, [(b(!0), o(e, null, w(A.value, (e) => (b(), o("button", {
1868
1868
  key: e.id,
1869
1869
  type: "button",
1870
1870
  "aria-pressed": x.value === e.id,
1871
- class: h(["w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [x.value === e.id ? M.value.selectedRow : O(f) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1871
+ class: h(["w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [x.value === e.id ? N.value.selectedRow : k(f) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1872
1872
  onClick: (t) => x.value = e.id
1873
1873
  }, [
1874
- d(O(_e), { class: h(["w-5 h-5 flex-shrink-0", O(p).dimText]) }, null, 8, ["class"]),
1875
- s("div", kn, [s("p", { class: h(["text-sm font-medium truncate", O(p).bodyText]) }, D(e.label), 3)]),
1874
+ d(k(ge), { class: h(["w-5 h-5 flex-shrink-0", k(p).dimText]) }, null, 8, ["class"]),
1875
+ s("div", An, [s("p", { class: h(["text-sm font-medium truncate", k(p).bodyText]) }, O(e.label), 3)]),
1876
1876
  x.value === e.id ? (b(), o("div", {
1877
1877
  key: 0,
1878
- class: h(["w-5 h-5 rounded-full flex items-center justify-center", M.value.checkBg])
1878
+ class: h(["w-5 h-5 rounded-full flex items-center justify-center", N.value.checkBg])
1879
1879
  }, [...r[1] ||= [s("svg", {
1880
1880
  class: "w-3 h-3 text-white",
1881
1881
  fill: "none",
@@ -1888,12 +1888,12 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1888
1888
  "stroke-linejoin": "round",
1889
1889
  d: "M5 13l4 4L19 7"
1890
1890
  })], -1)]], 2)) : a("", !0)
1891
- ], 10, On))), 128)), k.value.length === 0 ? (b(), o("div", An, [s("p", { class: h(["text-sm", O(p).dimText]) }, D(t.emptyMessage), 3)])) : A.value.length === 0 ? (b(), o("div", jn, [s("p", { class: h(["text-sm", O(p).dimText]) }, D(t.noMatchMessage), 3)])) : a("", !0)])) : a("", !0)
1891
+ ], 10, kn))), 128)), D.value.length === 0 ? (b(), o("div", jn, [s("p", { class: h(["text-sm", k(p).dimText]) }, O(t.emptyMessage), 3)])) : A.value.length === 0 ? (b(), o("div", Mn, [s("p", { class: h(["text-sm", k(p).dimText]) }, O(t.noMatchMessage), 3)])) : a("", !0)])) : a("", !0)
1892
1892
  ]),
1893
1893
  _: 2
1894
1894
  }, [n.$slots.icon ? {
1895
1895
  name: "icon",
1896
- fn: N(() => [w(n.$slots, "icon")]),
1896
+ fn: F(() => [T(n.$slots, "icon")]),
1897
1897
  key: "0"
1898
1898
  } : void 0]), 1032, [
1899
1899
  "title",
@@ -1903,10 +1903,10 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1903
1903
  "manual-close"
1904
1904
  ]));
1905
1905
  }
1906
- }), Fn = {
1906
+ }), In = {
1907
1907
  href: "#main-content",
1908
1908
  class: "sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[100] focus:px-3 focus:py-2 focus:rounded-md focus:bg-emerald-600 focus:text-white focus:shadow-lg"
1909
- }, In = ["inert"], Ln = /* @__PURE__ */ f({
1909
+ }, Ln = ["inert"], Rn = /* @__PURE__ */ f({
1910
1910
  __name: "BaseAppLayout",
1911
1911
  props: {
1912
1912
  showSidebar: {
@@ -1916,19 +1916,19 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1916
1916
  skipLinkLabel: { default: "Skip to main content" }
1917
1917
  },
1918
1918
  setup(e) {
1919
- let t = e, { isDark: n } = z(), { mobileOpen: i } = rn(), { collapsed: c } = cn(), l = r(() => t.showSidebar);
1920
- return (t, r) => (b(), o("div", { class: h(["min-h-screen transition-colors duration-300", O(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1921
- s("a", Fn, D(e.skipLinkLabel), 1),
1922
- l.value ? w(t.$slots, "sidebar", { key: 0 }) : a("", !0),
1919
+ let t = e, { isDark: n } = V(), { mobileOpen: i } = rn(), { collapsed: c } = cn(), l = r(() => t.showSidebar);
1920
+ return (t, r) => (b(), o("div", { class: h(["min-h-screen transition-colors duration-300", k(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1921
+ s("a", In, O(e.skipLinkLabel), 1),
1922
+ l.value ? T(t.$slots, "sidebar", { key: 0 }) : a("", !0),
1923
1923
  s("main", {
1924
1924
  id: "main-content",
1925
1925
  tabindex: "-1",
1926
- inert: l.value && O(i) ? !0 : void 0,
1927
- class: h(["transition-all duration-300", l.value ? O(c) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
1928
- }, [w(t.$slots, "default")], 10, In)
1926
+ inert: l.value && k(i) ? !0 : void 0,
1927
+ class: h(["transition-all duration-300", l.value ? k(c) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
1928
+ }, [T(t.$slots, "default")], 10, Ln)
1929
1929
  ], 2));
1930
1930
  }
1931
- }), Rn = { class: "flex flex-wrap items-center justify-between gap-3 mb-8" }, zn = { class: "flex items-center gap-3 min-w-0" }, Bn = { class: "flex items-center gap-2" }, Vn = /* @__PURE__ */ f({
1931
+ }), zn = { class: "flex flex-wrap items-center justify-between gap-3 mb-8" }, Bn = { class: "flex items-center gap-3 min-w-0" }, Vn = { class: "flex items-center gap-2" }, Hn = /* @__PURE__ */ f({
1932
1932
  __name: "BasePageHeader",
1933
1933
  props: {
1934
1934
  title: {},
@@ -1937,7 +1937,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1937
1937
  maxWidthClass: { default: "max-w-4xl" }
1938
1938
  },
1939
1939
  setup(e) {
1940
- let t = e, { isDark: n } = z(), i = J(), c = r(() => {
1940
+ let t = e, { isDark: n } = V(), i = Y(), c = r(() => {
1941
1941
  let e = {
1942
1942
  emerald: {
1943
1943
  dark: "bg-emerald-500/10",
@@ -1978,16 +1978,16 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
1978
1978
  }[t.iconColor];
1979
1979
  return n.value ? e.dark : e.light;
1980
1980
  });
1981
- return (t, n) => (b(), o("div", { class: h(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [s("div", Rn, [s("div", zn, [s("div", { class: h(["w-10 h-10 rounded-lg flex items-center justify-center", c.value]) }, [w(t.$slots, "icon", { iconClass: l.value })], 2), s("div", null, [s("h1", { class: h(["text-2xl font-bold", O(i).primaryTextSoft]) }, D(e.title), 3), e.subtitle ? (b(), o("p", {
1981
+ return (t, n) => (b(), o("div", { class: h(["mx-auto px-4 sm:px-6", e.maxWidthClass]) }, [s("div", zn, [s("div", Bn, [s("div", { class: h(["w-10 h-10 rounded-lg flex items-center justify-center", c.value]) }, [T(t.$slots, "icon", { iconClass: l.value })], 2), s("div", null, [s("h1", { class: h(["text-2xl font-bold", k(i).primaryTextSoft]) }, O(e.title), 3), e.subtitle ? (b(), o("p", {
1982
1982
  key: 0,
1983
- class: h(["text-sm", O(i).dimTextAlt])
1984
- }, D(e.subtitle), 3)) : a("", !0)])]), s("div", Bn, [w(t.$slots, "actions")])])], 2));
1983
+ class: h(["text-sm", k(i).dimTextAlt])
1984
+ }, O(e.subtitle), 3)) : a("", !0)])]), s("div", Vn, [T(t.$slots, "actions")])])], 2));
1985
1985
  }
1986
- }), Hn = [
1986
+ }), Un = [
1987
1987
  "type",
1988
1988
  "disabled",
1989
1989
  "title"
1990
- ], Un = { key: 0 }, Wn = /* @__PURE__ */ f({
1990
+ ], Wn = { key: 0 }, Gn = /* @__PURE__ */ f({
1991
1991
  __name: "BaseToolbarButton",
1992
1992
  props: {
1993
1993
  label: { default: "" },
@@ -2001,7 +2001,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2001
2001
  },
2002
2002
  emits: ["click"],
2003
2003
  setup(e) {
2004
- let t = e, { isDark: n } = z(), i = r(() => {
2004
+ let t = e, { isDark: n } = V(), i = r(() => {
2005
2005
  let e = {
2006
2006
  neutral: {
2007
2007
  dark: "bg-gray-800 text-gray-100 border-gray-700 hover:bg-gray-700",
@@ -2020,14 +2020,14 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2020
2020
  title: e.title,
2021
2021
  class: h(["inline-flex shrink-0 items-center gap-2 px-3 py-2 rounded-lg text-sm font-medium border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", i.value]),
2022
2022
  onClick: n[0] ||= (e) => t.$emit("click", e)
2023
- }, [w(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (b(), o("span", Un, D(e.label), 1)) : a("", !0)], 10, Hn));
2023
+ }, [T(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (b(), o("span", Wn, O(e.label), 1)) : a("", !0)], 10, Un));
2024
2024
  }
2025
- }), Gn = [
2025
+ }), Kn = [
2026
2026
  "type",
2027
2027
  "disabled",
2028
2028
  "title",
2029
2029
  "aria-label"
2030
- ], Kn = { key: 0 }, qn = /* @__PURE__ */ f({
2030
+ ], qn = { key: 0 }, Jn = /* @__PURE__ */ f({
2031
2031
  __name: "BaseActionButton",
2032
2032
  props: {
2033
2033
  label: { default: "" },
@@ -2046,7 +2046,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2046
2046
  },
2047
2047
  emits: ["click"],
2048
2048
  setup(e) {
2049
- let t = e, { isDark: n } = z(), i = r(() => {
2049
+ let t = e, { isDark: n } = V(), i = r(() => {
2050
2050
  let e = {
2051
2051
  emerald: {
2052
2052
  dark: "text-emerald-400 hover:bg-emerald-500/10",
@@ -2126,9 +2126,9 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2126
2126
  "aria-label": e.ariaLabel,
2127
2127
  class: h(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-current", [e.fullWidth ? "flex-1" : "", c.value]]),
2128
2128
  onClick: n[0] ||= (e) => t.$emit("click", e)
2129
- }, [w(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (b(), o("span", Kn, D(e.label), 1)) : a("", !0)], 10, Gn));
2129
+ }, [T(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (b(), o("span", qn, O(e.label), 1)) : a("", !0)], 10, Kn));
2130
2130
  }
2131
- }), Jn = ["title", "aria-label"], Yn = /* @__PURE__ */ f({
2131
+ }), Yn = ["title", "aria-label"], Xn = /* @__PURE__ */ f({
2132
2132
  __name: "BaseCopyButton",
2133
2133
  props: {
2134
2134
  text: {},
@@ -2139,7 +2139,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2139
2139
  },
2140
2140
  emits: ["copied", "error"],
2141
2141
  setup(e, { emit: t }) {
2142
- let n = e, a = t, { isDark: s } = z(), c = S(!1), l = null, u = r(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = r(() => n.label ? `Copy ${n.label}` : "Copy"), f = r(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${c.value ? s.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : s.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${s.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
2142
+ let n = e, a = t, { isDark: s } = V(), c = C(!1), l = null, u = r(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = r(() => n.label ? `Copy ${n.label}` : "Copy"), f = r(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${c.value ? s.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : s.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${s.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
2143
2143
  async function p(e) {
2144
2144
  try {
2145
2145
  if (navigator.clipboard?.writeText) {
@@ -2169,28 +2169,28 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2169
2169
  "aria-label": d.value,
2170
2170
  class: h(f.value),
2171
2171
  onClick: m
2172
- }, [c.value ? (b(), i(O(fe), {
2172
+ }, [c.value ? (b(), i(k(de), {
2173
2173
  key: 0,
2174
2174
  class: h(e.iconClass),
2175
2175
  "aria-hidden": "true"
2176
- }, null, 8, ["class"])) : (b(), i(O(pe), {
2176
+ }, null, 8, ["class"])) : (b(), i(k(fe), {
2177
2177
  key: 1,
2178
2178
  class: h(e.iconClass),
2179
2179
  "aria-hidden": "true"
2180
- }, null, 8, ["class"]))], 10, Jn));
2180
+ }, null, 8, ["class"]))], 10, Yn));
2181
2181
  }
2182
- }), Xn = ["disabled", "aria-busy"], Zn = {
2182
+ }), Zn = ["disabled", "aria-busy"], Qn = {
2183
2183
  key: 0,
2184
2184
  class: "w-5 h-5 animate-spin shrink-0",
2185
2185
  viewBox: "0 0 24 24",
2186
2186
  fill: "none",
2187
2187
  "aria-hidden": "true"
2188
- }, Qn = {
2188
+ }, $n = {
2189
2189
  key: 1,
2190
2190
  class: "w-5 h-5 shrink-0",
2191
2191
  viewBox: "0 0 48 48",
2192
2192
  "aria-hidden": "true"
2193
- }, $n = /* @__PURE__ */ f({
2193
+ }, er = /* @__PURE__ */ f({
2194
2194
  __name: "BaseGoogleSignInButton",
2195
2195
  props: {
2196
2196
  label: { default: "Sign in with Google" },
@@ -2209,7 +2209,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2209
2209
  },
2210
2210
  emits: ["click"],
2211
2211
  setup(e, { emit: t }) {
2212
- let n = e, i = t, { isDark: a } = z(), c = r(() => n.disabled || n.loading);
2212
+ let n = e, i = t, { isDark: a } = V(), c = r(() => n.disabled || n.loading);
2213
2213
  function u() {
2214
2214
  c.value || i("click");
2215
2215
  }
@@ -2218,8 +2218,8 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2218
2218
  disabled: c.value,
2219
2219
  "aria-busy": e.loading,
2220
2220
  onClick: u,
2221
- class: h(["inline-flex items-center justify-center gap-3 h-11 px-4 rounded-lg border text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", O(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"]])
2222
- }, [e.loading ? (b(), o("svg", Zn, [...n[0] ||= [s("circle", {
2221
+ class: h(["inline-flex items-center justify-center gap-3 h-11 px-4 rounded-lg border text-sm font-medium transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", k(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"]])
2222
+ }, [e.loading ? (b(), o("svg", Qn, [...n[0] ||= [s("circle", {
2223
2223
  class: "opacity-25",
2224
2224
  cx: "12",
2225
2225
  cy: "12",
@@ -2230,18 +2230,18 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2230
2230
  class: "opacity-75",
2231
2231
  fill: "currentColor",
2232
2232
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2233
- }, null, -1)]])) : (b(), o("svg", Qn, [...n[1] ||= [l("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), s("span", null, D(e.label), 1)], 10, Xn));
2233
+ }, null, -1)]])) : (b(), o("svg", $n, [...n[1] ||= [l("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), s("span", null, O(e.label), 1)], 10, Zn));
2234
2234
  }
2235
- }), er = {
2235
+ }), tr = {
2236
2236
  key: 0,
2237
2237
  class: "flex justify-center mb-6"
2238
- }, tr = { class: "mb-6 text-center" }, nr = { class: "flex items-center gap-3 my-5" }, rr = ["disabled"], ir = { class: "flex items-center justify-between mb-1.5" }, ar = { class: "relative" }, or = ["type", "disabled"], sr = ["aria-label", "aria-pressed"], cr = ["disabled"], lr = ["disabled", "aria-busy"], ur = {
2238
+ }, nr = { class: "mb-6 text-center" }, rr = { class: "flex items-center gap-3 my-5" }, ir = ["disabled"], ar = { class: "flex items-center justify-between mb-1.5" }, or = { class: "relative" }, sr = ["type", "disabled"], cr = ["aria-label", "aria-pressed"], lr = ["disabled"], ur = ["disabled", "aria-busy"], dr = {
2239
2239
  key: 0,
2240
2240
  class: "w-4 h-4 animate-spin",
2241
2241
  viewBox: "0 0 24 24",
2242
2242
  fill: "none",
2243
2243
  "aria-hidden": "true"
2244
- }, dr = /* @__PURE__ */ f({
2244
+ }, fr = /* @__PURE__ */ f({
2245
2245
  __name: "BaseLoginForm",
2246
2246
  props: {
2247
2247
  title: { default: "Sign in" },
@@ -2267,7 +2267,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2267
2267
  },
2268
2268
  emits: ["submit", "google-sign-in"],
2269
2269
  setup(t, { emit: n }) {
2270
- let i = t, c = n, { isDark: l } = z(), f = J(), p = S(""), m = S(""), g = S(!1), _ = S(!1), v = r(() => i.loading || i.googleLoading);
2270
+ let i = t, c = n, { isDark: l } = V(), f = Y(), p = C(""), m = C(""), g = C(!1), _ = C(!1), v = r(() => i.loading || i.googleLoading);
2271
2271
  function y() {
2272
2272
  v.value || c("submit", {
2273
2273
  email: p.value,
@@ -2275,34 +2275,34 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2275
2275
  ...i.showRemember ? { remember: g.value } : {}
2276
2276
  });
2277
2277
  }
2278
- return (n, r) => (b(), o("div", { class: h(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", O(f).card]) }, [
2279
- n.$slots.logo ? (b(), o("div", er, [w(n.$slots, "logo")])) : a("", !0),
2280
- s("div", tr, [s("h1", { class: h(["text-xl font-semibold", O(f).primaryText]) }, D(t.title), 3), t.subtitle ? (b(), o("p", {
2278
+ return (n, r) => (b(), o("div", { class: h(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", k(f).card]) }, [
2279
+ n.$slots.logo ? (b(), o("div", tr, [T(n.$slots, "logo")])) : a("", !0),
2280
+ s("div", nr, [s("h1", { class: h(["text-xl font-semibold", k(f).primaryText]) }, O(t.title), 3), t.subtitle ? (b(), o("p", {
2281
2281
  key: 0,
2282
- class: h(["mt-1 text-sm", O(f).mutedText])
2283
- }, D(t.subtitle), 3)) : a("", !0)]),
2282
+ class: h(["mt-1 text-sm", k(f).mutedText])
2283
+ }, O(t.subtitle), 3)) : a("", !0)]),
2284
2284
  t.error ? (b(), o("div", {
2285
2285
  key: 1,
2286
2286
  role: "alert",
2287
- class: h(["mb-4 rounded-lg border px-3 py-2 text-sm", O(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
2288
- }, D(t.error), 3)) : a("", !0),
2289
- t.showGoogle ? (b(), o(e, { key: 2 }, [d($n, {
2287
+ class: h(["mb-4 rounded-lg border px-3 py-2 text-sm", k(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
2288
+ }, O(t.error), 3)) : a("", !0),
2289
+ t.showGoogle ? (b(), o(e, { key: 2 }, [d(er, {
2290
2290
  loading: t.googleLoading,
2291
2291
  disabled: t.loading,
2292
2292
  onClick: r[0] ||= (e) => c("google-sign-in")
2293
- }, null, 8, ["loading", "disabled"]), s("div", nr, [
2294
- s("span", { class: h(["h-px flex-1", O(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
2295
- s("span", { class: h(["text-xs uppercase tracking-wider", O(f).dimTextAlt]) }, "or", 2),
2296
- s("span", { class: h(["h-px flex-1", O(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
2293
+ }, null, 8, ["loading", "disabled"]), s("div", rr, [
2294
+ s("span", { class: h(["h-px flex-1", k(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
2295
+ s("span", { class: h(["text-xs uppercase tracking-wider", k(f).dimTextAlt]) }, "or", 2),
2296
+ s("span", { class: h(["h-px flex-1", k(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
2297
2297
  ])], 64)) : a("", !0),
2298
2298
  s("form", {
2299
2299
  class: "space-y-4",
2300
- onSubmit: F(y, ["prevent"])
2300
+ onSubmit: L(y, ["prevent"])
2301
2301
  }, [
2302
2302
  s("div", null, [s("label", {
2303
2303
  for: "login-email",
2304
- class: h(["block mb-1.5 text-sm font-medium", O(f).label])
2305
- }, " Email ", 2), P(s("input", {
2304
+ class: h(["block mb-1.5 text-sm font-medium", k(f).label])
2305
+ }, " Email ", 2), I(s("input", {
2306
2306
  id: "login-email",
2307
2307
  "onUpdate:modelValue": r[1] ||= (e) => p.value = e,
2308
2308
  type: "email",
@@ -2311,12 +2311,12 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2311
2311
  required: "",
2312
2312
  disabled: v.value,
2313
2313
  placeholder: "you@example.com",
2314
- class: h(["w-full h-11 px-3 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", O(f).inputWithPlaceholder])
2315
- }, null, 10, rr), [[j, p.value]])]),
2316
- s("div", null, [s("div", ir, [s("label", {
2314
+ class: h(["w-full h-11 px-3 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", k(f).inputWithPlaceholder])
2315
+ }, null, 10, ir), [[M, p.value]])]),
2316
+ s("div", null, [s("div", ar, [s("label", {
2317
2317
  for: "login-password",
2318
- class: h(["block text-sm font-medium", O(f).label])
2319
- }, " Password ", 2), w(n.$slots, "forgot")]), s("div", ar, [P(s("input", {
2318
+ class: h(["block text-sm font-medium", k(f).label])
2319
+ }, " Password ", 2), T(n.$slots, "forgot")]), s("div", or, [I(s("input", {
2320
2320
  id: "login-password",
2321
2321
  "onUpdate:modelValue": r[2] ||= (e) => m.value = e,
2322
2322
  type: _.value ? "text" : "password",
@@ -2325,29 +2325,29 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2325
2325
  required: "",
2326
2326
  disabled: v.value,
2327
2327
  placeholder: "••••••••",
2328
- class: h(["w-full h-11 pl-3 pr-16 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", O(f).inputWithPlaceholder])
2329
- }, null, 10, or), [[ee, m.value]]), s("button", {
2328
+ class: h(["w-full h-11 pl-3 pr-16 rounded-lg border text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60", k(f).inputWithPlaceholder])
2329
+ }, null, 10, sr), [[j, m.value]]), s("button", {
2330
2330
  type: "button",
2331
2331
  onClick: r[3] ||= (e) => _.value = !_.value,
2332
2332
  "aria-label": _.value ? "Hide password" : "Show password",
2333
2333
  "aria-pressed": _.value,
2334
- class: h(["absolute inset-y-0 right-0 px-3 text-xs font-medium cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 rounded-r-lg", O(f).mutedText])
2335
- }, D(_.value ? "Hide" : "Show"), 11, sr)])]),
2334
+ class: h(["absolute inset-y-0 right-0 px-3 text-xs font-medium cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 rounded-r-lg", k(f).mutedText])
2335
+ }, O(_.value ? "Hide" : "Show"), 11, cr)])]),
2336
2336
  t.showRemember ? (b(), o("label", {
2337
2337
  key: 0,
2338
- class: h(["flex items-center gap-2 text-sm cursor-pointer select-none", O(f).bodyText])
2339
- }, [P(s("input", {
2338
+ class: h(["flex items-center gap-2 text-sm cursor-pointer select-none", k(f).bodyText])
2339
+ }, [I(s("input", {
2340
2340
  "onUpdate:modelValue": r[4] ||= (e) => g.value = e,
2341
2341
  type: "checkbox",
2342
2342
  disabled: v.value,
2343
2343
  class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
2344
- }, null, 8, cr), [[A, g.value]]), r[5] ||= u(" Remember me ", -1)], 2)) : a("", !0),
2344
+ }, null, 8, lr), [[ee, g.value]]), r[5] ||= u(" Remember me ", -1)], 2)) : a("", !0),
2345
2345
  s("button", {
2346
2346
  type: "submit",
2347
2347
  disabled: v.value,
2348
2348
  "aria-busy": t.loading,
2349
2349
  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"
2350
- }, [t.loading ? (b(), o("svg", ur, [...r[6] ||= [s("circle", {
2350
+ }, [t.loading ? (b(), o("svg", dr, [...r[6] ||= [s("circle", {
2351
2351
  class: "opacity-25",
2352
2352
  cx: "12",
2353
2353
  cy: "12",
@@ -2358,18 +2358,18 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2358
2358
  class: "opacity-75",
2359
2359
  fill: "currentColor",
2360
2360
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2361
- }, null, -1)]])) : a("", !0), u(" " + D(t.submitLabel), 1)], 8, lr)
2361
+ }, null, -1)]])) : a("", !0), u(" " + O(t.submitLabel), 1)], 8, ur)
2362
2362
  ], 32),
2363
2363
  n.$slots.footer ? (b(), o("div", {
2364
2364
  key: 3,
2365
- class: h(["mt-6 text-center text-sm", O(f).mutedText])
2366
- }, [w(n.$slots, "footer")], 2)) : a("", !0)
2365
+ class: h(["mt-6 text-center text-sm", k(f).mutedText])
2366
+ }, [T(n.$slots, "footer")], 2)) : a("", !0)
2367
2367
  ], 2));
2368
2368
  }
2369
- }), fr = ["aria-label"], pr = { class: "flex-1 overflow-y-auto" }, mr = {
2369
+ }), pr = ["aria-label"], mr = { class: "flex-1 overflow-y-auto" }, hr = {
2370
2370
  key: 0,
2371
2371
  class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
2372
- }, hr = ["onClick"], gr = { class: "min-w-0 flex-1" }, _r = { class: "flex items-baseline justify-between gap-2" }, vr = /* @__PURE__ */ f({
2372
+ }, gr = ["onClick"], _r = { class: "min-w-0 flex-1" }, vr = { class: "flex items-baseline justify-between gap-2" }, yr = /* @__PURE__ */ f({
2373
2373
  __name: "BaseNotificationPanel",
2374
2374
  props: {
2375
2375
  title: { default: "Notifications" },
@@ -2381,7 +2381,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2381
2381
  },
2382
2382
  emits: ["select"],
2383
2383
  setup(c, { emit: l }) {
2384
- let f = l, { isDark: p } = z(), m = J(), { notifications: g, unreadCount: _, open: v, closePanel: y, markAllRead: x, markRead: S } = un(), w = {
2384
+ let f = l, { isDark: p } = V(), m = Y(), { notifications: g, unreadCount: _, open: v, closePanel: y, markAllRead: x, markRead: S } = dn(), C = {
2385
2385
  info: "bg-sky-500",
2386
2386
  success: "bg-emerald-500",
2387
2387
  warning: "bg-amber-500",
@@ -2398,11 +2398,11 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2398
2398
  "leave-active-class": "transition-opacity duration-200",
2399
2399
  "leave-to-class": "opacity-0"
2400
2400
  }, {
2401
- default: N(() => [O(v) ? (b(), o("div", {
2401
+ default: F(() => [k(v) ? (b(), o("div", {
2402
2402
  key: 0,
2403
2403
  class: "fixed inset-0 z-[60] bg-black/50",
2404
2404
  "aria-hidden": "true",
2405
- onClick: l[0] ||= (...e) => O(y) && O(y)(...e)
2405
+ onClick: l[0] ||= (...e) => k(y) && k(y)(...e)
2406
2406
  })) : a("", !0)]),
2407
2407
  _: 1
2408
2408
  }), d(n, {
@@ -2411,55 +2411,55 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2411
2411
  "leave-active-class": "transition-transform duration-300 ease-in",
2412
2412
  "leave-to-class": "-translate-x-full"
2413
2413
  }, {
2414
- default: N(() => [O(v) ? (b(), o("aside", {
2414
+ default: F(() => [k(v) ? (b(), o("aside", {
2415
2415
  key: 0,
2416
2416
  role: "dialog",
2417
2417
  "aria-modal": "true",
2418
2418
  "aria-label": c.title,
2419
- class: h(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", O(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
2419
+ class: h(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", k(p) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
2420
2420
  }, [
2421
- s("div", { class: h(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", O(m).border]) }, [s("h2", { class: h(["text-lg font-semibold flex items-center gap-2", O(m).primaryText]) }, [u(D(c.title) + " ", 1), s("span", { class: h(["text-sm font-normal", O(m).dimTextAlt]) }, "— " + D(T.value), 3)], 2), s("button", {
2421
+ s("div", { class: h(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", k(m).border]) }, [s("h2", { class: h(["text-lg font-semibold flex items-center gap-2", k(m).primaryText]) }, [u(O(c.title) + " ", 1), s("span", { class: h(["text-sm font-normal", k(m).dimTextAlt]) }, "— " + O(T.value), 3)], 2), s("button", {
2422
2422
  type: "button",
2423
- onClick: l[1] ||= (...e) => O(y) && O(y)(...e),
2423
+ onClick: l[1] ||= (...e) => k(y) && k(y)(...e),
2424
2424
  "aria-label": "Close notifications",
2425
- class: h(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", O(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
2426
- }, [d(O(Ce), {
2425
+ class: h(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", k(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
2426
+ }, [d(k(Se), {
2427
2427
  class: "w-5 h-5",
2428
2428
  "aria-hidden": "true"
2429
2429
  })], 2)], 2),
2430
- c.showMarkAllRead && O(_) > 0 ? (b(), o("div", {
2430
+ c.showMarkAllRead && k(_) > 0 ? (b(), o("div", {
2431
2431
  key: 0,
2432
- class: h(["px-5 py-2 border-b shrink-0 flex justify-end", O(m).border])
2432
+ class: h(["px-5 py-2 border-b shrink-0 flex justify-end", k(m).border])
2433
2433
  }, [s("button", {
2434
2434
  type: "button",
2435
- onClick: l[2] ||= (...e) => O(x) && O(x)(...e),
2436
- class: h(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", O(m).emeraldText])
2435
+ onClick: l[2] ||= (...e) => k(x) && k(x)(...e),
2436
+ class: h(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", k(m).emeraldText])
2437
2437
  }, " Mark all as read ", 2)], 2)) : a("", !0),
2438
- s("div", pr, [T.value === 0 ? (b(), o("div", mr, [d(O(oe), {
2439
- class: h(["w-10 h-10", O(m).illustration]),
2438
+ s("div", mr, [T.value === 0 ? (b(), o("div", hr, [d(k(ae), {
2439
+ class: h(["w-10 h-10", k(m).illustration]),
2440
2440
  "aria-hidden": "true"
2441
- }, null, 8, ["class"]), s("p", { class: h(["text-sm", O(m).mutedText]) }, D(c.emptyText), 3)])) : (b(), o("ul", {
2441
+ }, null, 8, ["class"]), s("p", { class: h(["text-sm", k(m).mutedText]) }, O(c.emptyText), 3)])) : (b(), o("ul", {
2442
2442
  key: 1,
2443
- class: h(["divide-y", O(p) ? "divide-gray-800" : "divide-gray-100"])
2444
- }, [(b(!0), o(e, null, C(O(g), (e) => (b(), o("li", { key: e.id }, [s("button", {
2443
+ class: h(["divide-y", k(p) ? "divide-gray-800" : "divide-gray-100"])
2444
+ }, [(b(!0), o(e, null, w(k(g), (e) => (b(), o("li", { key: e.id }, [s("button", {
2445
2445
  type: "button",
2446
2446
  onClick: (t) => E(e.id),
2447
- class: h(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" : O(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", O(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
2447
+ class: h(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" : k(p) ? "bg-emerald-500/5" : "bg-emerald-50/60", k(p) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
2448
2448
  }, [s("span", {
2449
- class: h(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? O(p) ? "bg-gray-700" : "bg-gray-300" : w[e.type ?? "info"]]),
2449
+ class: h(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? k(p) ? "bg-gray-700" : "bg-gray-300" : C[e.type ?? "info"]]),
2450
2450
  "aria-hidden": "true"
2451
- }, null, 2), s("span", gr, [s("span", _r, [s("span", { class: h(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", O(m).primaryTextSoft]]) }, D(e.title), 3), e.time ? (b(), o("span", {
2451
+ }, null, 2), s("span", _r, [s("span", vr, [s("span", { class: h(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", k(m).primaryTextSoft]]) }, O(e.title), 3), e.time ? (b(), o("span", {
2452
2452
  key: 0,
2453
- class: h(["text-xs shrink-0", O(m).dimText])
2454
- }, D(e.time), 3)) : a("", !0)]), e.message ? (b(), o("span", {
2453
+ class: h(["text-xs shrink-0", k(m).dimText])
2454
+ }, O(e.time), 3)) : a("", !0)]), e.message ? (b(), o("span", {
2455
2455
  key: 0,
2456
- class: h(["mt-0.5 block text-sm", O(m).mutedText])
2457
- }, D(e.message), 3)) : a("", !0)])], 10, hr)]))), 128))], 2))])
2458
- ], 10, fr)) : a("", !0)]),
2456
+ class: h(["mt-0.5 block text-sm", k(m).mutedText])
2457
+ }, O(e.message), 3)) : a("", !0)])], 10, gr)]))), 128))], 2))])
2458
+ ], 10, pr)) : a("", !0)]),
2459
2459
  _: 1
2460
2460
  })]));
2461
2461
  }
2462
- }), yr = ["disabled"], br = /* @__PURE__ */ f({
2462
+ }), br = ["disabled"], xr = /* @__PURE__ */ f({
2463
2463
  __name: "BaseChipButton",
2464
2464
  props: {
2465
2465
  size: { default: "sm" },
@@ -2470,15 +2470,15 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2470
2470
  },
2471
2471
  emits: ["click"],
2472
2472
  setup(e, { emit: t }) {
2473
- let n = t, { isDark: r } = z();
2473
+ let n = t, { isDark: r } = V();
2474
2474
  return (t, i) => (b(), o("button", {
2475
2475
  type: "button",
2476
2476
  disabled: e.disabled,
2477
- class: h(["inline-flex items-center gap-1 font-medium rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [e.size === "xs" ? "text-xs px-2 py-0.5" : "text-xs px-2.5 py-1", O(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"]]),
2477
+ class: h(["inline-flex items-center gap-1 font-medium rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [e.size === "xs" ? "text-xs px-2 py-0.5" : "text-xs px-2.5 py-1", k(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"]]),
2478
2478
  onClick: i[0] ||= (e) => n("click")
2479
- }, [w(t.$slots, "default")], 10, yr));
2479
+ }, [T(t.$slots, "default")], 10, br));
2480
2480
  }
2481
- }), xr = /* @__PURE__ */ f({
2481
+ }), Sr = /* @__PURE__ */ f({
2482
2482
  __name: "BaseRemoveButton",
2483
2483
  emits: ["click"],
2484
2484
  setup(e, { emit: t }) {
@@ -2489,18 +2489,18 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2489
2489
  onClick: t[0] ||= (e) => n("click")
2490
2490
  }, " × "));
2491
2491
  }
2492
- }), Sr = { class: "relative flex h-2 w-2" }, Cr = {
2492
+ }), Cr = { class: "relative flex h-2 w-2" }, wr = {
2493
2493
  key: 0,
2494
2494
  class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
2495
2495
  "aria-hidden": "true"
2496
- }, wr = /* @__PURE__ */ f({
2496
+ }, Tr = /* @__PURE__ */ f({
2497
2497
  __name: "BaseStatusPill",
2498
2498
  props: {
2499
2499
  status: {},
2500
2500
  label: {}
2501
2501
  },
2502
2502
  setup(e) {
2503
- let t = e, { isDark: n } = z(), i = r(() => {
2503
+ let t = e, { isDark: n } = V(), i = r(() => {
2504
2504
  switch (t.status) {
2505
2505
  case "ok": return n.value ? "bg-emerald-500/10 text-emerald-400" : "bg-emerald-50 text-emerald-700";
2506
2506
  case "error": return n.value ? "bg-red-500/10 text-red-400" : "bg-red-50 text-red-700";
@@ -2513,13 +2513,13 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2513
2513
  default: return "bg-gray-400";
2514
2514
  }
2515
2515
  });
2516
- return (t, n) => (b(), o("div", { class: h(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", i.value]) }, [s("span", Sr, [e.status === "ok" ? (b(), o("span", Cr)) : a("", !0), s("span", { class: h(["relative inline-flex rounded-full h-2 w-2", c.value]) }, null, 2)]), u(" " + D(e.label), 1)], 2));
2516
+ return (t, n) => (b(), o("div", { class: h(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", i.value]) }, [s("span", Cr, [e.status === "ok" ? (b(), o("span", wr)) : a("", !0), s("span", { class: h(["relative inline-flex rounded-full h-2 w-2", c.value]) }, null, 2)]), u(" " + O(e.label), 1)], 2));
2517
2517
  }
2518
- }), Tr = { class: "text-sm font-medium" }, Er = [
2518
+ }), Er = { class: "text-sm font-medium" }, Dr = [
2519
2519
  "accept",
2520
2520
  "multiple",
2521
2521
  "disabled"
2522
- ], Dr = /* @__PURE__ */ f({
2522
+ ], Or = /* @__PURE__ */ f({
2523
2523
  __name: "BaseFileDropzone",
2524
2524
  props: {
2525
2525
  label: {},
@@ -2536,7 +2536,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2536
2536
  },
2537
2537
  emits: ["files"],
2538
2538
  setup(e, { emit: t }) {
2539
- let n = e, r = t, { isDark: i } = z(), c = S(!1);
2539
+ let n = e, r = t, { isDark: i } = V(), c = C(!1);
2540
2540
  function l(e) {
2541
2541
  let t = e.target, n = Array.from(t.files ?? []);
2542
2542
  t.value = "", n.length && r("files", n);
@@ -2550,12 +2550,12 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2550
2550
  t.length && r("files", n.multiple ? t : t.slice(0, 1));
2551
2551
  }
2552
2552
  return (t, n) => (b(), o("label", {
2553
- class: h(["flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center transition-colors", [e.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", c.value ? O(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : O(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"]]),
2554
- onDragover: F(u, ["prevent"]),
2555
- onDragleave: n[0] ||= F((e) => c.value = !1, ["prevent"]),
2556
- onDrop: F(d, ["prevent"])
2553
+ class: h(["flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center transition-colors", [e.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", c.value ? k(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : k(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"]]),
2554
+ onDragover: L(u, ["prevent"]),
2555
+ onDragleave: n[0] ||= L((e) => c.value = !1, ["prevent"]),
2556
+ onDrop: L(d, ["prevent"])
2557
2557
  }, [
2558
- w(t.$slots, "icon", {}, () => [n[1] ||= s("svg", {
2558
+ T(t.$slots, "icon", {}, () => [n[1] ||= s("svg", {
2559
2559
  class: "w-10 h-10",
2560
2560
  fill: "none",
2561
2561
  viewBox: "0 0 24 24",
@@ -2567,11 +2567,11 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2567
2567
  "stroke-linejoin": "round",
2568
2568
  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"
2569
2569
  })], -1)]),
2570
- s("p", Tr, D(e.label), 1),
2570
+ s("p", Er, O(e.label), 1),
2571
2571
  e.hint ? (b(), o("p", {
2572
2572
  key: 0,
2573
- class: h(["text-xs", O(i) ? "text-gray-500" : "text-gray-400"])
2574
- }, D(e.hint), 3)) : a("", !0),
2573
+ class: h(["text-xs", k(i) ? "text-gray-500" : "text-gray-400"])
2574
+ }, O(e.hint), 3)) : a("", !0),
2575
2575
  s("input", {
2576
2576
  type: "file",
2577
2577
  class: "hidden",
@@ -2579,10 +2579,41 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2579
2579
  multiple: e.multiple,
2580
2580
  disabled: e.disabled,
2581
2581
  onChange: l
2582
- }, null, 40, Er)
2582
+ }, null, 40, Dr)
2583
2583
  ], 34));
2584
2584
  }
2585
- }), Or = ["value", "type"], Q = /* @__PURE__ */ f({
2585
+ }), kr = /* @__PURE__ */ f({
2586
+ __name: "BaseCodeBlock",
2587
+ props: {
2588
+ code: {},
2589
+ variant: { default: "soft" },
2590
+ size: { default: "sm" },
2591
+ maxHeightClass: { default: "" }
2592
+ },
2593
+ setup(e) {
2594
+ let t = e, { isDark: n } = V(), i = {
2595
+ soft: {
2596
+ dark: "bg-gray-800/70 text-gray-300",
2597
+ light: "bg-gray-100 text-gray-700"
2598
+ },
2599
+ bordered: {
2600
+ dark: "border bg-gray-900 border-gray-700 text-gray-300",
2601
+ light: "border bg-white border-gray-200 text-gray-700"
2602
+ }
2603
+ }, a = {
2604
+ sm: "text-sm px-5 py-4 rounded-lg",
2605
+ xs: "text-xs p-3 rounded-lg"
2606
+ }, s = r(() => {
2607
+ let e = i[t.variant];
2608
+ return n.value ? e.dark : e.light;
2609
+ }), c = r(() => a[t.size]);
2610
+ return (t, n) => (b(), o("pre", { class: h(["font-mono overflow-auto", [
2611
+ c.value,
2612
+ s.value,
2613
+ e.maxHeightClass
2614
+ ]]) }, O(e.code), 3));
2615
+ }
2616
+ }), Ar = ["value", "type"], Q = /* @__PURE__ */ f({
2586
2617
  __name: "BaseInput",
2587
2618
  props: {
2588
2619
  modelValue: { default: "" },
@@ -2604,9 +2635,9 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2604
2635
  type: e.type,
2605
2636
  class: h(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "sm" ? "px-2 py-1.5" : "px-3 py-2"]]),
2606
2637
  onInput: r
2607
- }, null, 42, Or));
2638
+ }, null, 42, Ar));
2608
2639
  }
2609
- }), kr = ["value"], Ar = /* @__PURE__ */ f({
2640
+ }), jr = ["value"], Mr = /* @__PURE__ */ f({
2610
2641
  __name: "BaseSelect",
2611
2642
  props: {
2612
2643
  modelValue: { default: void 0 },
@@ -2626,13 +2657,13 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2626
2657
  value: e.modelValue,
2627
2658
  class: h(["rounded border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "md" ? "px-3 py-2" : "px-2 py-1.5"]]),
2628
2659
  onChange: r
2629
- }, [w(t.$slots, "default")], 42, kr));
2660
+ }, [T(t.$slots, "default")], 42, jr));
2630
2661
  }
2631
- }), jr = [
2662
+ }), Nr = [
2632
2663
  "disabled",
2633
2664
  "aria-label",
2634
2665
  "aria-expanded"
2635
- ], Mr = ["aria-label"], Nr = ["aria-selected", "title"], Pr = ["disabled", "onClick"], Fr = /* @__PURE__ */ f({
2666
+ ], Pr = ["aria-label"], Fr = ["aria-selected", "title"], Ir = ["disabled", "onClick"], Lr = /* @__PURE__ */ f({
2636
2667
  __name: "BaseDropdown",
2637
2668
  props: {
2638
2669
  options: {},
@@ -2653,7 +2684,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2653
2684
  },
2654
2685
  emits: ["update:modelValue"],
2655
2686
  setup(t, { emit: n }) {
2656
- let i = t, c = n, l = S(!1), u = S(null), f = r(() => i.options.find((e) => e.value === i.modelValue) ?? null), p = r(() => i.triggerClass ? "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed " + i.triggerClass : "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed rounded-lg border text-sm border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-700 dark:text-slate-100 hover:bg-slate-50 dark:hover:bg-slate-800 " + (i.size === "sm" ? "px-3 py-2" : "px-4 py-2.5"));
2687
+ let i = t, c = n, l = C(!1), u = C(null), f = r(() => i.options.find((e) => e.value === i.modelValue) ?? null), p = r(() => i.triggerClass ? "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed " + i.triggerClass : "flex items-center justify-between gap-2 text-left transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed rounded-lg border text-sm border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-700 dark:text-slate-100 hover:bg-slate-50 dark:hover:bg-slate-800 " + (i.size === "sm" ? "px-3 py-2" : "px-4 py-2.5"));
2657
2688
  function m(e) {
2658
2689
  return `block w-full px-4 py-2 text-left text-sm transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500 disabled:opacity-50 disabled:cursor-not-allowed ${e.value === i.modelValue ? "bg-emerald-500 text-white" : "text-slate-700 dark:text-slate-200 hover:bg-slate-100 dark:hover:bg-slate-800"}`;
2659
2690
  }
@@ -2681,15 +2712,15 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2681
2712
  "aria-haspopup": "listbox",
2682
2713
  "aria-expanded": l.value,
2683
2714
  onClick: v
2684
- }, [s("span", { class: h(["min-w-0 truncate", f.value ? "" : "text-slate-400 dark:text-slate-500"]) }, D(f.value ? f.value.label : t.placeholder), 3), d(O(ue), {
2715
+ }, [s("span", { class: h(["min-w-0 truncate", f.value ? "" : "text-slate-400 dark:text-slate-500"]) }, O(f.value ? f.value.label : t.placeholder), 3), d(k(le), {
2685
2716
  class: h(["shrink-0 transition-transform", [t.chevronClass, l.value ? "rotate-180" : ""]]),
2686
2717
  "aria-hidden": "true"
2687
- }, null, 8, ["class"])], 10, jr), l.value ? (b(), o("ul", {
2718
+ }, null, 8, ["class"])], 10, Nr), l.value ? (b(), o("ul", {
2688
2719
  key: 0,
2689
2720
  role: "listbox",
2690
2721
  "aria-label": t.ariaLabel || t.placeholder,
2691
2722
  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"
2692
- }, [(b(!0), o(e, null, C(t.options, (e) => (b(), o("li", {
2723
+ }, [(b(!0), o(e, null, w(t.options, (e) => (b(), o("li", {
2693
2724
  key: String(e.value),
2694
2725
  role: "option",
2695
2726
  "aria-selected": e.value === t.modelValue,
@@ -2699,13 +2730,13 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2699
2730
  disabled: e.disabled,
2700
2731
  class: h(m(e)),
2701
2732
  onClick: (t) => y(e)
2702
- }, D(e.label), 11, Pr)], 8, Nr))), 128))], 8, Mr)) : a("", !0)], 2));
2733
+ }, O(e.label), 11, Ir)], 8, Fr))), 128))], 8, Pr)) : a("", !0)], 2));
2703
2734
  }
2704
- }), Ir = ["role", "aria-label"], Lr = [
2735
+ }), Rr = ["role", "aria-label"], zr = [
2705
2736
  "aria-pressed",
2706
2737
  "title",
2707
2738
  "onClick"
2708
- ], Rr = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", zr = /* @__PURE__ */ f({
2739
+ ], Br = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Vr = /* @__PURE__ */ f({
2709
2740
  __name: "BaseSegmentedControl",
2710
2741
  props: {
2711
2742
  options: {},
@@ -2722,22 +2753,22 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2722
2753
  let i = t, a = n, s = r(() => i.variant === "toolbar" ? "inline-flex h-9 divide-x divide-slate-300 dark:divide-slate-600 rounded-md border border-slate-300 dark:border-slate-600 overflow-hidden" : "inline-flex rounded border border-slate-300 dark:border-slate-600 overflow-hidden"), c = r(() => i.variant === "toolbar" ? "flex items-center px-3.5 text-xs font-semibold uppercase tracking-wide transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500" : `${i.variant === "wide" ? "px-4 py-2" : "px-3 py-2"} text-sm font-medium transition-colors cursor-pointer border-l first:border-l-0 border-slate-300 dark:border-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500`), l = r(() => i.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
2723
2754
  function u(e) {
2724
2755
  let t = e.value === i.modelValue;
2725
- return i.optionClass ? i.optionClass(e, t) : t ? l.value : Rr;
2756
+ return i.optionClass ? i.optionClass(e, t) : t ? l.value : Br;
2726
2757
  }
2727
2758
  return (n, r) => (b(), o("div", {
2728
2759
  role: t.ariaLabel ? "group" : void 0,
2729
2760
  "aria-label": t.ariaLabel || void 0,
2730
2761
  class: h(s.value)
2731
- }, [(b(!0), o(e, null, C(t.options, (e) => (b(), o("button", {
2762
+ }, [(b(!0), o(e, null, w(t.options, (e) => (b(), o("button", {
2732
2763
  key: String(e.value),
2733
2764
  type: "button",
2734
2765
  class: h([c.value, u(e)]),
2735
2766
  "aria-pressed": e.value === t.modelValue,
2736
2767
  title: e.title,
2737
2768
  onClick: (t) => a("update:modelValue", e.value)
2738
- }, D(e.label), 11, Lr))), 128))], 10, Ir));
2769
+ }, O(e.label), 11, zr))), 128))], 10, Rr));
2739
2770
  }
2740
- }), Br = { class: "w-full text-sm" }, Vr = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Hr = { class: "text-left" }, Ur = { key: 0 }, Wr = ["colspan"], Gr = /* @__PURE__ */ f({
2771
+ }), Hr = { class: "w-full text-sm" }, Ur = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Wr = { class: "text-left" }, Gr = { key: 0 }, Kr = ["colspan"], qr = /* @__PURE__ */ f({
2741
2772
  __name: "BaseTable",
2742
2773
  props: {
2743
2774
  columns: {},
@@ -2748,24 +2779,24 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2748
2779
  emptyText: { default: "No rows." }
2749
2780
  },
2750
2781
  setup(t) {
2751
- return (n, r) => (b(), o("table", Br, [s("thead", Vr, [s("tr", Hr, [(b(!0), o(e, null, C(t.columns, (e, t) => (b(), o("th", {
2782
+ return (n, r) => (b(), o("table", Hr, [s("thead", Ur, [s("tr", Wr, [(b(!0), o(e, null, w(t.columns, (e, t) => (b(), o("th", {
2752
2783
  key: t,
2753
2784
  class: h(["px-4 py-3", e.align === "right" ? "text-right" : ""])
2754
- }, D(e.label), 3))), 128))])]), s("tbody", null, [t.empty ? (b(), o("tr", Ur, [s("td", {
2785
+ }, O(e.label), 3))), 128))])]), s("tbody", null, [t.empty ? (b(), o("tr", Gr, [s("td", {
2755
2786
  colspan: t.columns.length,
2756
2787
  class: "px-4 py-12 text-center text-slate-500"
2757
- }, [w(n.$slots, "empty", {}, () => [u(D(t.emptyText), 1)])], 8, Wr)])) : a("", !0), w(n.$slots, "default")])]));
2788
+ }, [T(n.$slots, "empty", {}, () => [u(O(t.emptyText), 1)])], 8, Kr)])) : a("", !0), T(n.$slots, "default")])]));
2758
2789
  }
2759
- }), Kr = { class: "grid gap-3 md:grid-cols-2" }, qr = {
2790
+ }), Jr = { class: "grid gap-3 md:grid-cols-2" }, Yr = {
2760
2791
  key: 0,
2761
2792
  class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
2762
- }, Jr = ["value"], Yr = {
2793
+ }, Xr = ["value"], Zr = {
2763
2794
  key: 2,
2764
2795
  class: "flex items-center gap-2 mt-4"
2765
- }, Xr = ["checked", "onChange"], Zr = { class: "text-sm text-slate-900 dark:text-slate-100" }, Qr = {
2796
+ }, Qr = ["checked", "onChange"], $r = { class: "text-sm text-slate-900 dark:text-slate-100" }, ei = {
2766
2797
  key: 4,
2767
2798
  class: "text-[11px] text-slate-400 mt-1"
2768
- }, $r = /* @__PURE__ */ f({
2799
+ }, ti = /* @__PURE__ */ f({
2769
2800
  __name: "BaseSpecFields",
2770
2801
  props: {
2771
2802
  specs: {},
@@ -2781,24 +2812,24 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2781
2812
  let n = parseFloat(t);
2782
2813
  r("update", e, Number.isNaN(n) ? t : n);
2783
2814
  }
2784
- return (n, u) => (b(), o("div", Kr, [(b(!0), o(e, null, C(t.specs, (u) => (b(), o("div", { key: u.key }, [
2785
- u.type === "boolean" ? a("", !0) : (b(), o("label", qr, D(u.label), 1)),
2786
- u.type === "select" ? (b(), i(Ar, {
2815
+ return (n, u) => (b(), o("div", Jr, [(b(!0), o(e, null, w(t.specs, (u) => (b(), o("div", { key: u.key }, [
2816
+ u.type === "boolean" ? a("", !0) : (b(), o("label", Yr, O(u.label), 1)),
2817
+ u.type === "select" ? (b(), i(Mr, {
2787
2818
  key: 1,
2788
2819
  modelValue: String(t.params[u.key] ?? ""),
2789
2820
  "onUpdate:modelValue": (e) => r("update", u.key, e)
2790
2821
  }, {
2791
- default: N(() => [(b(!0), o(e, null, C(u.options ?? [], (e) => (b(), o("option", {
2822
+ default: F(() => [(b(!0), o(e, null, w(u.options ?? [], (e) => (b(), o("option", {
2792
2823
  key: e,
2793
2824
  value: e
2794
- }, D(e), 9, Jr))), 128))]),
2825
+ }, O(e), 9, Xr))), 128))]),
2795
2826
  _: 2
2796
- }, 1032, ["modelValue", "onUpdate:modelValue"])) : u.type === "boolean" ? (b(), o("label", Yr, [s("input", {
2827
+ }, 1032, ["modelValue", "onUpdate:modelValue"])) : u.type === "boolean" ? (b(), o("label", Zr, [s("input", {
2797
2828
  checked: !!t.params[u.key],
2798
2829
  type: "checkbox",
2799
2830
  class: "h-4 w-4",
2800
2831
  onChange: (e) => c(u.key, e)
2801
- }, null, 40, Xr), s("span", Zr, D(u.label), 1)])) : (b(), i(Q, {
2832
+ }, null, 40, Qr), s("span", $r, O(u.label), 1)])) : (b(), i(Q, {
2802
2833
  key: 3,
2803
2834
  modelValue: t.params[u.key],
2804
2835
  type: "number",
@@ -2811,11 +2842,11 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2811
2842
  "min",
2812
2843
  "onUpdate:modelValue"
2813
2844
  ])),
2814
- u.help ? (b(), o("p", Qr, D(u.help), 1)) : a("", !0),
2815
- w(n.$slots, "after", { spec: u })
2845
+ u.help ? (b(), o("p", ei, O(u.help), 1)) : a("", !0),
2846
+ T(n.$slots, "after", { spec: u })
2816
2847
  ]))), 128))]));
2817
2848
  }
2818
- }), ei = { class: "mt-1.5 space-y-0.5 px-1" }, ti = { class: "text-slate-400 dark:text-slate-500" }, ni = /* @__PURE__ */ f({
2849
+ }), ni = { class: "mt-1.5 space-y-0.5 px-1" }, ri = { class: "text-slate-400 dark:text-slate-500" }, ii = /* @__PURE__ */ f({
2819
2850
  __name: "BaseStatBreakdown",
2820
2851
  props: {
2821
2852
  items: {},
@@ -2834,16 +2865,16 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2834
2865
  function i(e) {
2835
2866
  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";
2836
2867
  }
2837
- return (n, a) => (b(), o("div", ei, [(b(!0), o(e, null, C(t.items, (e) => (b(), o("div", {
2868
+ return (n, a) => (b(), o("div", ni, [(b(!0), o(e, null, w(t.items, (e) => (b(), o("div", {
2838
2869
  key: e.label,
2839
2870
  class: "flex items-center justify-between text-[11px]"
2840
- }, [s("span", ti, D(e.label), 1), s("span", { class: h(["font-mono tabular-nums font-medium", i(e.value)]) }, D(r(e.value)), 3)]))), 128))]));
2871
+ }, [s("span", ri, O(e.label), 1), s("span", { class: h(["font-mono tabular-nums font-medium", i(e.value)]) }, O(r(e.value)), 3)]))), 128))]));
2841
2872
  }
2842
- }), ri = [
2873
+ }), ai = [
2843
2874
  "disabled",
2844
2875
  "title",
2845
2876
  "aria-pressed"
2846
- ], ii = /* @__PURE__ */ f({
2877
+ ], oi = /* @__PURE__ */ f({
2847
2878
  __name: "BaseFilterChip",
2848
2879
  props: {
2849
2880
  label: { default: "" },
@@ -2878,15 +2909,15 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2878
2909
  title: e.title,
2879
2910
  "aria-pressed": e.active,
2880
2911
  class: h(["whitespace-nowrap rounded-md border px-3 text-sm font-semibold text-center transition-colors focus:outline-none focus-visible:ring-2 disabled:opacity-50 disabled:cursor-not-allowed", e.active ? n[e.color] : t[e.color]])
2881
- }, [w(r.$slots, "default", {}, () => [u(D(e.label), 1)])], 10, ri));
2912
+ }, [T(r.$slots, "default", {}, () => [u(O(e.label), 1)])], 10, ai));
2882
2913
  }
2883
- }), ai = { class: "flex items-center justify-between mb-4" }, oi = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, si = {
2914
+ }), si = { class: "flex items-center justify-between mb-4" }, ci = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, li = {
2884
2915
  key: 0,
2885
2916
  class: "text-xs text-slate-500 dark:text-slate-400"
2886
- }, ci = {
2917
+ }, ui = {
2887
2918
  key: 0,
2888
2919
  class: "inline-flex items-center gap-2 text-xs text-slate-500"
2889
- }, li = { class: "grid gap-4 md:grid-cols-2" }, ui = { class: "md:col-span-2" }, di = ["for"], fi = { class: "md:col-span-2" }, pi = ["for"], mi = { class: "text-[11px] text-slate-500 mt-1" }, hi = { class: "md:col-span-2" }, gi = ["for"], _i = { class: "md:col-span-2" }, vi = ["for"], yi = { class: "md:col-span-2" }, bi = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", xi = /* @__PURE__ */ f({
2920
+ }, di = { class: "grid gap-4 md:grid-cols-2" }, fi = { class: "md:col-span-2" }, pi = ["for"], mi = { class: "md:col-span-2" }, hi = ["for"], gi = { class: "text-[11px] text-slate-500 mt-1" }, _i = { class: "md:col-span-2" }, vi = ["for"], yi = { class: "md:col-span-2" }, bi = ["for"], xi = { class: "md:col-span-2" }, Si = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", Ci = /* @__PURE__ */ f({
2890
2921
  __name: "BaseCredentialsForm",
2891
2922
  props: {
2892
2923
  title: {},
@@ -2912,7 +2943,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2912
2943
  "load-error"
2913
2944
  ],
2914
2945
  setup(t, { expose: n, emit: r }) {
2915
- let c = t, l = r, f = S(!1), p = S(!1), m = x({
2946
+ let c = t, l = r, f = C(!1), p = C(!1), m = x({
2916
2947
  keyId: "",
2917
2948
  secretKey: "",
2918
2949
  baseUrl: c.defaults.baseUrl,
@@ -2959,30 +2990,30 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2959
2990
  }
2960
2991
  }
2961
2992
  return _(g), n({ load: g }), (n, r) => (b(), i(st, { class: "!p-6" }, {
2962
- default: N(() => [
2963
- s("div", ai, [s("div", null, [s("h2", oi, D(t.title), 1), t.subtitle ? (b(), o("p", si, D(t.subtitle), 1)) : a("", !0)]), f.value ? (b(), o("span", ci, [d(ct, { class: "!h-4 !w-4" }), r[4] ||= u(" Saving… ", -1)])) : a("", !0)]),
2964
- s("div", li, [
2965
- s("div", ui, [s("label", {
2993
+ default: F(() => [
2994
+ s("div", si, [s("div", null, [s("h2", ci, O(t.title), 1), t.subtitle ? (b(), o("p", li, O(t.subtitle), 1)) : a("", !0)]), f.value ? (b(), o("span", ui, [d(ct, { class: "!h-4 !w-4" }), r[4] ||= u(" Saving… ", -1)])) : a("", !0)]),
2995
+ s("div", di, [
2996
+ s("div", fi, [s("label", {
2966
2997
  for: `${t.idPrefix}-key-id`,
2967
2998
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
2968
- }, D(t.keyLabel), 9, di), d(Q, {
2999
+ }, O(t.keyLabel), 9, pi), d(Q, {
2969
3000
  id: `${t.idPrefix}-key-id`,
2970
3001
  modelValue: m.keyId,
2971
3002
  "onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
2972
3003
  type: "text",
2973
3004
  autocomplete: "off",
2974
3005
  placeholder: t.keyPlaceholder,
2975
- class: h(bi)
3006
+ class: h(Si)
2976
3007
  }, null, 8, [
2977
3008
  "id",
2978
3009
  "modelValue",
2979
3010
  "placeholder"
2980
3011
  ])]),
2981
- s("div", fi, [
3012
+ s("div", mi, [
2982
3013
  s("label", {
2983
3014
  for: `${t.idPrefix}-secret`,
2984
3015
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
2985
- }, D(t.secretLabel), 9, pi),
3016
+ }, O(t.secretLabel), 9, hi),
2986
3017
  d(Q, {
2987
3018
  id: `${t.idPrefix}-secret`,
2988
3019
  modelValue: m.secretKey,
@@ -2990,40 +3021,40 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
2990
3021
  type: "password",
2991
3022
  autocomplete: "new-password",
2992
3023
  placeholder: p.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
2993
- class: h(bi)
3024
+ class: h(Si)
2994
3025
  }, null, 8, [
2995
3026
  "id",
2996
3027
  "modelValue",
2997
3028
  "placeholder"
2998
3029
  ]),
2999
- s("p", mi, [p.value ? (b(), o(e, { key: 0 }, [u(D(t.secretSetHint), 1)], 64)) : w(n.$slots, "no-secret-hint", { key: 1 }, () => [u(D(t.permissionsHint), 1)])])
3030
+ s("p", gi, [p.value ? (b(), o(e, { key: 0 }, [u(O(t.secretSetHint), 1)], 64)) : T(n.$slots, "no-secret-hint", { key: 1 }, () => [u(O(t.permissionsHint), 1)])])
3000
3031
  ]),
3001
- s("div", hi, [
3032
+ s("div", _i, [
3002
3033
  s("label", {
3003
3034
  for: `${t.idPrefix}-base-url`,
3004
3035
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3005
- }, "Base URL (trading)", 8, gi),
3036
+ }, "Base URL (trading)", 8, vi),
3006
3037
  d(Q, {
3007
3038
  id: `${t.idPrefix}-base-url`,
3008
3039
  modelValue: m.baseUrl,
3009
3040
  "onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
3010
3041
  type: "text",
3011
- class: h(bi)
3042
+ class: h(Si)
3012
3043
  }, null, 8, ["id", "modelValue"]),
3013
- w(n.$slots, "base-url-extra", { form: m })
3044
+ T(n.$slots, "base-url-extra", { form: m })
3014
3045
  ]),
3015
- s("div", _i, [s("label", {
3046
+ s("div", yi, [s("label", {
3016
3047
  for: `${t.idPrefix}-data-url`,
3017
3048
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3018
- }, "Data URL (market data)", 8, vi), d(Q, {
3049
+ }, "Data URL (market data)", 8, bi), d(Q, {
3019
3050
  id: `${t.idPrefix}-data-url`,
3020
3051
  modelValue: m.dataUrl,
3021
3052
  "onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
3022
3053
  type: "text",
3023
- class: h(bi)
3054
+ class: h(Si)
3024
3055
  }, null, 8, ["id", "modelValue"])]),
3025
- s("div", yi, [d(U, {
3026
- color: O(V).GREEN,
3056
+ s("div", xi, [d(G, {
3057
+ color: k(U).GREEN,
3027
3058
  description: t.saveLabel,
3028
3059
  isDisable: f.value,
3029
3060
  isLoading: f.value,
@@ -3035,7 +3066,7 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
3035
3066
  "isLoading"
3036
3067
  ])])
3037
3068
  ]),
3038
- w(n.$slots, "footer")
3069
+ T(n.$slots, "footer")
3039
3070
  ]),
3040
3071
  _: 3
3041
3072
  }));
@@ -3043,9 +3074,9 @@ var dn = ["aria-label", "aria-expanded"], fn = { class: "flex flex-col h-full" }
3043
3074
  });
3044
3075
  //#endregion
3045
3076
  //#region src/composables/useDebounce.ts
3046
- function Si(e, t = 300) {
3047
- let n = S(e.value), r = null;
3048
- return M(e, (e) => {
3077
+ function wi(e, t = 300) {
3078
+ let n = C(e.value), r = null;
3079
+ return P(e, (e) => {
3049
3080
  r && clearTimeout(r), r = setTimeout(() => {
3050
3081
  n.value = e, r = null;
3051
3082
  }, t);
@@ -3055,12 +3086,12 @@ function Si(e, t = 300) {
3055
3086
  }
3056
3087
  //#endregion
3057
3088
  //#region src/composables/useToast.ts
3058
- function Ci(e = 3e3) {
3059
- let t = S(!1), n = S(""), r = S(K.SUCCESS), i = null;
3089
+ function Ti(e = 3e3) {
3090
+ let t = C(!1), n = C(""), r = C(q.SUCCESS), i = null;
3060
3091
  function a() {
3061
3092
  i &&= (clearTimeout(i), null);
3062
3093
  }
3063
- function o(o, s = K.SUCCESS, c = e) {
3094
+ function o(o, s = q.SUCCESS, c = e) {
3064
3095
  n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
3065
3096
  t.value = !1, i = null;
3066
3097
  }, c);
@@ -3076,8 +3107,8 @@ function Ci(e = 3e3) {
3076
3107
  }
3077
3108
  //#endregion
3078
3109
  //#region src/composables/useQueryParamSync.ts
3079
- function wi() {
3080
- let e = Te(), t = Ee();
3110
+ function Ei() {
3111
+ let e = we(), t = Te();
3081
3112
  function n(t) {
3082
3113
  let n = e.query[t];
3083
3114
  return typeof n == "string" ? n : "";
@@ -3098,8 +3129,8 @@ function wi() {
3098
3129
  }
3099
3130
  //#endregion
3100
3131
  //#region src/composables/useFieldClasses.ts
3101
- function Ti() {
3102
- let { isDark: e } = z(), t = r(() => e.value ? "text-gray-300" : "text-gray-600"), n = r(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
3132
+ function Di() {
3133
+ let { isDark: e } = V(), t = r(() => e.value ? "text-gray-300" : "text-gray-600"), n = r(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
3103
3134
  function i(t) {
3104
3135
  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;
3105
3136
  }
@@ -3110,52 +3141,81 @@ function Ti() {
3110
3141
  };
3111
3142
  }
3112
3143
  //#endregion
3144
+ //#region src/composables/usePolling.ts
3145
+ function Oi(e, t, n = {}) {
3146
+ let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = C(!1);
3147
+ function s() {
3148
+ a !== null || t === null || (a = setInterval(() => void e(), t));
3149
+ }
3150
+ function c() {
3151
+ a !== null && (clearInterval(a), a = null);
3152
+ }
3153
+ function l() {
3154
+ o.value || (o.value = !0, r && e(), s());
3155
+ }
3156
+ function u() {
3157
+ o.value = !1, c();
3158
+ }
3159
+ function d() {
3160
+ document.visibilityState === "visible" ? (o.value = !0, e(), s()) : u();
3161
+ }
3162
+ return _(() => {
3163
+ l(), i && document.addEventListener("visibilitychange", d);
3164
+ }), y(() => {
3165
+ u(), i && document.removeEventListener("visibilitychange", d);
3166
+ }), {
3167
+ start: l,
3168
+ stop: u,
3169
+ active: S(o)
3170
+ };
3171
+ }
3172
+ //#endregion
3113
3173
  //#region src/enums/BaseBadgeEnum.ts
3114
- var Ei = /* @__PURE__ */ function(e) {
3174
+ var ki = /* @__PURE__ */ function(e) {
3115
3175
  return e.WIN = "WIN", e.LOSE = "LOSE", e;
3116
3176
  }({});
3117
3177
  //#endregion
3118
3178
  //#region src/utils/util.ts
3119
- function Di(e) {
3179
+ function Ai(e) {
3120
3180
  let t = "red";
3121
3181
  switch (e) {
3122
- case I.ERROR:
3182
+ case R.ERROR:
3123
3183
  t = "red";
3124
3184
  break;
3125
- case I.SUCCESS:
3185
+ case R.SUCCESS:
3126
3186
  t = "green";
3127
3187
  break;
3128
- case I.INFO:
3188
+ case R.INFO:
3129
3189
  t = "gray";
3130
3190
  break;
3131
- case I.WARNING:
3191
+ case R.WARNING:
3132
3192
  t = "yellow";
3133
3193
  break;
3134
3194
  }
3135
3195
  return t;
3136
3196
  }
3137
- function Oi(e) {
3197
+ function ji(e) {
3138
3198
  let t = "red";
3139
3199
  switch (e) {
3140
- case B.GREEN:
3200
+ case H.GREEN:
3141
3201
  t = "green";
3142
3202
  break;
3143
- case B.RED:
3203
+ case H.RED:
3144
3204
  t = "red";
3145
3205
  break;
3146
- case B.BLUE:
3206
+ case H.BLUE:
3147
3207
  t = "blue";
3148
3208
  break;
3149
- case B.YELLOW:
3209
+ case H.YELLOW:
3150
3210
  t = "yellow";
3151
3211
  break;
3152
- case B.BLACK:
3212
+ case H.BLACK:
3153
3213
  t = "black";
3154
3214
  break;
3155
- case B.GRAY:
3215
+ case H.GRAY:
3156
3216
  t = "gray";
3157
3217
  break;
3158
- case B.NONE:
3218
+ case H.NONE:
3159
3219
  t = "";
3160
3220
  break;
3161
3221
  }
@@ -3163,14 +3223,14 @@ function Oi(e) {
3163
3223
  }
3164
3224
  //#endregion
3165
3225
  //#region src/utils/httpColors.ts
3166
- var ki = {
3226
+ var Mi = {
3167
3227
  GET: "bg-blue-600",
3168
3228
  POST: "bg-emerald-600",
3169
3229
  PUT: "bg-amber-600",
3170
3230
  DELETE: "bg-red-600",
3171
3231
  PATCH: "bg-purple-600",
3172
3232
  HEAD: "bg-gray-600"
3173
- }, Ai = {
3233
+ }, Ni = {
3174
3234
  GET: "bg-blue-500",
3175
3235
  POST: "bg-green-500",
3176
3236
  PUT: "bg-yellow-500",
@@ -3178,39 +3238,39 @@ var ki = {
3178
3238
  PATCH: "bg-purple-500",
3179
3239
  HEAD: "bg-gray-500"
3180
3240
  };
3181
- function ji(e) {
3182
- return e ? ki[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
3241
+ function Pi(e) {
3242
+ return e ? Mi[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
3183
3243
  }
3184
- function Mi(e) {
3185
- return e ? Ai[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
3244
+ function Fi(e) {
3245
+ return e ? Ni[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
3186
3246
  }
3187
- function Ni(e) {
3247
+ function Ii(e) {
3188
3248
  let t = e ?? 0;
3189
3249
  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";
3190
3250
  }
3191
- function Pi(e, t) {
3251
+ function Li(e, t) {
3192
3252
  let n = (e || "ANY").toUpperCase();
3193
3253
  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";
3194
3254
  }
3195
- function Fi(e, t) {
3255
+ function Ri(e, t) {
3196
3256
  let n = e ?? 200;
3197
3257
  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";
3198
3258
  }
3199
- function Ii(e, t) {
3259
+ function zi(e, t) {
3200
3260
  let n = e ?? 200;
3201
3261
  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";
3202
3262
  }
3203
3263
  //#endregion
3204
3264
  //#region src/utils/kvRows.ts
3205
- function Li(e) {
3265
+ function Bi(e) {
3206
3266
  return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
3207
3267
  }
3208
- function Ri(e) {
3268
+ function Vi(e) {
3209
3269
  return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
3210
3270
  }
3211
3271
  //#endregion
3212
3272
  //#region src/utils/sanitizeHtml.ts
3213
- var zi = /* @__PURE__ */ new Set([
3273
+ var Hi = /* @__PURE__ */ new Set([
3214
3274
  "A",
3215
3275
  "B",
3216
3276
  "STRONG",
@@ -3225,7 +3285,7 @@ var zi = /* @__PURE__ */ new Set([
3225
3285
  "LI",
3226
3286
  "SPAN",
3227
3287
  "DIV"
3228
- ]), Bi = /* @__PURE__ */ new Set([
3288
+ ]), Ui = /* @__PURE__ */ new Set([
3229
3289
  "SCRIPT",
3230
3290
  "STYLE",
3231
3291
  "IFRAME",
@@ -3233,40 +3293,40 @@ var zi = /* @__PURE__ */ new Set([
3233
3293
  "EMBED",
3234
3294
  "NOSCRIPT",
3235
3295
  "TEMPLATE"
3236
- ]), Vi = { A: /* @__PURE__ */ new Set(["href", "title"]) };
3237
- function Hi(e) {
3296
+ ]), Wi = { A: /* @__PURE__ */ new Set(["href", "title"]) };
3297
+ function Gi(e) {
3238
3298
  let t = e.trim().toLowerCase();
3239
3299
  return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
3240
3300
  }
3241
- function Ui(e) {
3301
+ function Ki(e) {
3242
3302
  if (e.nodeType !== Node.ELEMENT_NODE) return;
3243
3303
  let t = e, n = t.tagName.toUpperCase();
3244
- if (!zi.has(n)) {
3245
- Bi.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
3304
+ if (!Hi.has(n)) {
3305
+ Ui.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
3246
3306
  return;
3247
3307
  }
3248
- let r = Vi[n] ?? /* @__PURE__ */ new Set();
3308
+ let r = Wi[n] ?? /* @__PURE__ */ new Set();
3249
3309
  for (let e of Array.from(t.attributes)) {
3250
3310
  if (!r.has(e.name.toLowerCase())) {
3251
3311
  t.removeAttribute(e.name);
3252
3312
  continue;
3253
3313
  }
3254
- n === "A" && e.name.toLowerCase() === "href" && !Hi(e.value) && t.removeAttribute(e.name);
3314
+ n === "A" && e.name.toLowerCase() === "href" && !Gi(e.value) && t.removeAttribute(e.name);
3255
3315
  }
3256
3316
  n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
3257
- for (let e of Array.from(t.childNodes)) Ui(e);
3317
+ for (let e of Array.from(t.childNodes)) Ki(e);
3258
3318
  }
3259
- function Wi(e) {
3319
+ function qi(e) {
3260
3320
  if (!e) return "";
3261
3321
  let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
3262
3322
  if (!t) return "";
3263
- for (let e of Array.from(t.childNodes)) Ui(e);
3323
+ for (let e of Array.from(t.childNodes)) Ki(e);
3264
3324
  return t.innerHTML;
3265
3325
  }
3266
3326
  //#endregion
3267
3327
  //#region src/utils/format.ts
3268
3328
  var $ = "—";
3269
- function Gi(e, t = 4) {
3329
+ function Ji(e, t = 4) {
3270
3330
  if (e == null || typeof e == "string" && e.trim() === "") return $;
3271
3331
  let n = typeof e == "string" ? Number(e) : e;
3272
3332
  return isFinite(n) ? n.toLocaleString(void 0, {
@@ -3274,12 +3334,12 @@ function Gi(e, t = 4) {
3274
3334
  maximumFractionDigits: t
3275
3335
  }) : $;
3276
3336
  }
3277
- function Ki(e) {
3337
+ function Yi(e) {
3278
3338
  if (e == null || e === "") return $;
3279
3339
  let t = new Date(e);
3280
3340
  return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
3281
3341
  }
3282
- function qi(e) {
3342
+ function Xi(e) {
3283
3343
  return new Date(e).toLocaleString(void 0, {
3284
3344
  month: "short",
3285
3345
  day: "numeric",
@@ -3287,13 +3347,13 @@ function qi(e) {
3287
3347
  minute: "2-digit"
3288
3348
  });
3289
3349
  }
3290
- function Ji(e) {
3350
+ function Zi(e) {
3291
3351
  return new Date(e).toLocaleDateString(void 0, {
3292
3352
  month: "short",
3293
3353
  day: "numeric"
3294
3354
  });
3295
3355
  }
3296
- function Yi(e) {
3356
+ function Qi(e) {
3297
3357
  try {
3298
3358
  return new Date(e).toLocaleString(void 0, {
3299
3359
  year: "numeric",
@@ -3309,7 +3369,7 @@ function Yi(e) {
3309
3369
  return String(e);
3310
3370
  }
3311
3371
  }
3312
- function Xi(e) {
3372
+ function $i(e) {
3313
3373
  if (!isFinite(e) || e === 0) return e.toFixed(2);
3314
3374
  let t = Math.abs(e), n = 2;
3315
3375
  return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
@@ -3317,13 +3377,13 @@ function Xi(e) {
3317
3377
  maximumFractionDigits: n
3318
3378
  });
3319
3379
  }
3320
- function Zi(e, t = 2) {
3380
+ function ea(e, t = 2) {
3321
3381
  return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
3322
3382
  }
3323
- function Qi(e) {
3383
+ function ta(e) {
3324
3384
  return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
3325
3385
  }
3326
- function $i(e) {
3386
+ function na(e) {
3327
3387
  if (e == null || e === "") return $;
3328
3388
  let t = new Date(e);
3329
3389
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
@@ -3332,7 +3392,7 @@ function $i(e) {
3332
3392
  day: "numeric"
3333
3393
  });
3334
3394
  }
3335
- function ea(e) {
3395
+ function ra(e) {
3336
3396
  if (e == null || e === "") return $;
3337
3397
  let t = new Date(e);
3338
3398
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
@@ -3343,22 +3403,77 @@ function ea(e) {
3343
3403
  minute: "2-digit"
3344
3404
  });
3345
3405
  }
3346
- function ta(e) {
3406
+ function ia(e) {
3347
3407
  if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
3348
3408
  let t = e / 1e3, n = t < 1 ? 3 : 2;
3349
3409
  return `= ${t.toFixed(n)} s`;
3350
3410
  }
3351
- function na(e) {
3411
+ function aa(e) {
3352
3412
  return e ? e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB` : "";
3353
3413
  }
3354
- function ra(e, t = 2) {
3414
+ function oa(e) {
3415
+ try {
3416
+ return JSON.stringify(JSON.parse(e), null, 2);
3417
+ } catch {
3418
+ return e;
3419
+ }
3420
+ }
3421
+ function sa(e) {
3422
+ if (e == null) return "";
3423
+ if (typeof e == "string") return e;
3424
+ try {
3425
+ return JSON.stringify(e);
3426
+ } catch {
3427
+ return String(e);
3428
+ }
3429
+ }
3430
+ function ca(e, t = 2) {
3355
3431
  if (e == null || !isFinite(e)) return $;
3356
3432
  let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
3357
3433
  return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
3358
3434
  }
3359
3435
  //#endregion
3436
+ //#region src/utils/validate.ts
3437
+ function la(e) {
3438
+ let t = (e ?? "").trim();
3439
+ if (!t) return !1;
3440
+ try {
3441
+ let e = new URL(t);
3442
+ return e.protocol === "http:" || e.protocol === "https:";
3443
+ } catch {
3444
+ return !1;
3445
+ }
3446
+ }
3447
+ function ua(e) {
3448
+ if (!e.trim()) return !0;
3449
+ try {
3450
+ return JSON.parse(e), !0;
3451
+ } catch {
3452
+ return !1;
3453
+ }
3454
+ }
3455
+ function da(e) {
3456
+ if (!e.trim()) return !0;
3457
+ try {
3458
+ return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
3459
+ } catch {
3460
+ return !1;
3461
+ }
3462
+ }
3463
+ function fa(e) {
3464
+ if (!e.trim()) return !0;
3465
+ let t = e.replace(/\s+/g, "");
3466
+ if (!t) return !0;
3467
+ if (t.length % 4 != 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(t)) return !1;
3468
+ try {
3469
+ return atob(t), !0;
3470
+ } catch {
3471
+ return !1;
3472
+ }
3473
+ }
3474
+ //#endregion
3360
3475
  //#region src/utils/specForm.ts
3361
- function ia(e, t) {
3476
+ function pa(e, t) {
3362
3477
  let n = {};
3363
3478
  if (!e) return n;
3364
3479
  for (let r of e) {
@@ -3367,7 +3482,7 @@ function ia(e, t) {
3367
3482
  }
3368
3483
  return n;
3369
3484
  }
3370
- function aa(e, t) {
3485
+ function ma(e, t) {
3371
3486
  if (!e) return null;
3372
3487
  for (let n of e) if (n.type === "decimal" || n.type === "integer") {
3373
3488
  let e = t[n.key], r = e === "" || e == null;
@@ -3378,7 +3493,7 @@ function aa(e, t) {
3378
3493
  }
3379
3494
  //#endregion
3380
3495
  //#region src/utils/pnl.ts
3381
- function oa(e) {
3496
+ function ha(e) {
3382
3497
  if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
3383
3498
  pnlUsd: null,
3384
3499
  pnlPct: null
@@ -3393,4 +3508,4 @@ function oa(e) {
3393
3508
  };
3394
3509
  }
3395
3510
  //#endregion
3396
- export { I as AlertEnum, qn as BaseActionButton, Me as BaseAlert, Ln as BaseAppLayout, Pe as BaseBadge, Ei as BaseBadgeEnum, Re as BaseBreadcrumb, U as BaseButton, V as BaseButtonEnum, H as BaseButtonSizeEnum, br as BaseChipButton, Wt as BaseCollapsibleSection, Jt as BaseConfirmModal, Yn as BaseCopyButton, xi as BaseCredentialsForm, Fr as BaseDropdown, Pn as BaseEntityPickerModal, Dr as BaseFileDropzone, ii as BaseFilterChip, $n as BaseGoogleSignInButton, Q as BaseInput, Xe as BaseLine, Ze as BaseLoginEnum, dr as BaseLoginForm, $e as BaseLogo, G as BaseLogoEnum, ot as BaseModal, et as BaseModalEnum, Vt as BaseModalShell, tn as BaseNotFoundPage, vr as BaseNotificationPanel, Vn as BasePageHeader, xr as BaseRemoveButton, st as BaseRow, zr as BaseSegmentedControl, Ar as BaseSelect, xn as BaseSidebar, $r as BaseSpecFields, ct as BaseSpinner, ni as BaseStatBreakdown, wr as BaseStatusPill, Gr as BaseTable, Qt as BaseTextInputModal, dt as BaseToast, K as BaseToastEnum, Wn as BaseToolbarButton, pt as ColoredSquares, B as ColorsEnums, gt as EarningsCard, xt as EuroAmount, W as LineEnum, Et as Pagination, q as PositioningEnum, jt as TrendArrow, ia as buildSpecParams, oa as computePnL, aa as firstInvalidNumericSpec, na as fmtBytes, $i as fmtCalendarDate, ea as fmtCalendarDateTime, Ki as fmtDate, Ji as fmtDateShort, qi as fmtDateTime, Yi as fmtDateTimeMs, ra as fmtDuration, ta as fmtMsAsSeconds, Gi as fmtNumber, Zi as fmtPct, Xi as fmtPrice, Qi as fmtUsd, Di as getBaseColor, Oi as getBaseColorOf, ke as initTheme, Hi as isSafeHref, Mi as methodBadgeBright, ji as methodBadgeSolid, Pi as methodBadgeTinted, Ri as rowKeyMissing, Li as rowValueMissing, Wi as sanitizeHtml, Fi as statusBadgeSoft, Ni as statusBadgeSolid, Ii as statusBadgeTinted, Si as useDebouncedRef, Mt as useEscapeKey, Ti as useFieldClasses, rn as useMobileSidebar, un as useNotifications, wi as useQueryParamSync, cn as useSidebarCollapse, z as useTheme, J as useThemeClasses, Ci as useToast };
3511
+ export { R as AlertEnum, Jn as BaseActionButton, je as BaseAlert, Rn as BaseAppLayout, Ne as BaseBadge, ki as BaseBadgeEnum, Le as BaseBreadcrumb, G as BaseButton, U as BaseButtonEnum, W as BaseButtonSizeEnum, xr as BaseChipButton, kr as BaseCodeBlock, Wt as BaseCollapsibleSection, Jt as BaseConfirmModal, Xn as BaseCopyButton, Ci as BaseCredentialsForm, Lr as BaseDropdown, Fn as BaseEntityPickerModal, Or as BaseFileDropzone, oi as BaseFilterChip, er as BaseGoogleSignInButton, Q as BaseInput, Xe as BaseLine, Ze as BaseLoginEnum, fr as BaseLoginForm, $e as BaseLogo, K as BaseLogoEnum, ot as BaseModal, et as BaseModalEnum, Vt as BaseModalShell, tn as BaseNotFoundPage, yr as BaseNotificationPanel, Hn as BasePageHeader, Sr as BaseRemoveButton, st as BaseRow, Vr as BaseSegmentedControl, Mr as BaseSelect, Sn as BaseSidebar, ti as BaseSpecFields, ct as BaseSpinner, ii as BaseStatBreakdown, Tr as BaseStatusPill, qr as BaseTable, Qt as BaseTextInputModal, dt as BaseToast, q as BaseToastEnum, Gn as BaseToolbarButton, pt as ColoredSquares, H as ColorsEnums, gt as EarningsCard, xt as EuroAmount, Ke as LineEnum, Et as Pagination, J as PositioningEnum, jt as TrendArrow, pa as buildSpecParams, ha as computePnL, ma as firstInvalidNumericSpec, aa as fmtBytes, na as fmtCalendarDate, ra as fmtCalendarDateTime, Yi as fmtDate, Zi as fmtDateShort, Xi as fmtDateTime, Qi as fmtDateTimeMs, ca as fmtDuration, ia as fmtMsAsSeconds, Ji as fmtNumber, ea as fmtPct, $i as fmtPrice, ta as fmtUsd, oa as formatJson, Ai as getBaseColor, ji as getBaseColorOf, Oe as initTheme, Gi as isSafeHref, la as isValidAbsoluteUrl, fa as isValidBase64, ua as isValidJson, da as isValidXml, Fi as methodBadgeBright, Pi as methodBadgeSolid, Li as methodBadgeTinted, Vi as rowKeyMissing, Bi as rowValueMissing, qi as sanitizeHtml, Ri as statusBadgeSoft, Ii as statusBadgeSolid, zi as statusBadgeTinted, sa as stringifyValue, wi as useDebouncedRef, Mt as useEscapeKey, Di as useFieldClasses, rn as useMobileSidebar, dn as useNotifications, Oi as usePolling, Ei as useQueryParamSync, cn as useSidebarCollapse, V as useTheme, Y as useThemeClasses, Ti as useToast };