mgv-backoffice 1.40.0 → 1.41.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,85 +1,85 @@
1
- import { Fragment as e, Teleport as t, Text as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createStaticVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, effectScope as m, guardReactiveProps as h, mergeProps as g, nextTick as _, normalizeClass as v, normalizeProps as y, normalizeStyle as b, onBeforeUnmount as x, onMounted as S, onScopeDispose as C, onUnmounted as w, openBlock as T, reactive as E, readonly as D, ref as O, renderList as k, renderSlot as A, resolveComponent as j, resolveDynamicComponent as M, toDisplayString as N, unref as P, useId as ee, useSlots as F, vModelCheckbox as te, vModelDynamic as ne, vModelText as re, vShow as ie, watch as I, withCtx as L, withDirectives as R, withKeys as ae, withModifiers as z } from "vue";
2
- import { ArrowDownIcon as oe, ArrowUpIcon as se, Bars3Icon as ce, BellIcon as le, CheckCircleIcon as ue, CheckIcon as de, ChevronDoubleLeftIcon as fe, ChevronDoubleRightIcon as pe, ChevronDownIcon as me, ChevronRightIcon as he, ClipboardDocumentCheckIcon as ge, ClipboardDocumentIcon as _e, DocumentDuplicateIcon as ve, ExclamationCircleIcon as ye, ExclamationTriangleIcon as be, FolderIcon as xe, InformationCircleIcon as Se, MagnifyingGlassIcon as Ce, MinusIcon as we, MoonIcon as Te, SunIcon as Ee, XMarkIcon as B } from "@heroicons/vue/24/outline";
3
- import { HomeIcon as De } from "@heroicons/vue/24/solid";
4
- import { RouterLink as Oe, useRoute as ke, useRouter as Ae } from "vue-router";
5
- import { VueDatePicker as je } from "@vuepic/vue-datepicker";
1
+ import { Fragment as e, Teleport as t, Text as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createStaticVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, effectScope as m, guardReactiveProps as h, mergeProps as g, nextTick as _, normalizeClass as v, normalizeProps as y, normalizeStyle as b, onBeforeUnmount as x, onMounted as S, onScopeDispose as C, onUnmounted as w, openBlock as T, reactive as E, readonly as D, ref as O, renderList as k, renderSlot as A, resolveComponent as j, resolveDynamicComponent as M, toDisplayString as N, unref as P, useId as ee, useSlots as F, vModelCheckbox as te, vModelDynamic as ne, vModelText as re, vShow as ie, watch as ae, withCtx as I, withDirectives as L, withKeys as oe, withModifiers as R } from "vue";
2
+ import { ArrowDownIcon as se, ArrowRightStartOnRectangleIcon as ce, ArrowUpIcon as le, Bars3Icon as ue, BellIcon as de, CheckCircleIcon as fe, CheckIcon as pe, ChevronDoubleLeftIcon as me, ChevronDoubleRightIcon as he, ChevronDownIcon as ge, ChevronRightIcon as _e, ClipboardDocumentCheckIcon as ve, ClipboardDocumentIcon as ye, DocumentDuplicateIcon as be, ExclamationCircleIcon as xe, ExclamationTriangleIcon as Se, FolderIcon as Ce, InformationCircleIcon as we, MagnifyingGlassIcon as Te, MinusIcon as Ee, MoonIcon as De, SunIcon as Oe, XMarkIcon as z } from "@heroicons/vue/24/outline";
3
+ import { HomeIcon as ke } from "@heroicons/vue/24/solid";
4
+ import { RouterLink as Ae, useRoute as je, useRouter as Me } from "vue-router";
5
+ import { VueDatePicker as Ne } from "@vuepic/vue-datepicker";
6
6
  //#region src/enums/AlertEnum.ts
7
- var V = /* @__PURE__ */ function(e) {
7
+ var B = /* @__PURE__ */ function(e) {
8
8
  return e.WARNING = "WARNING", e.ERROR = "ERROR", e.SUCCESS = "SUCCESS", e.INFO = "INFO", e;
9
- }({}), H = O(!1), Me = !1, U = "mgv-theme";
10
- function Ne(e) {
11
- if (Me) {
12
- e !== U && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${U}". Call initTheme({ storageKey }) before mounting any component.`);
9
+ }({}), V = O(!1), Pe = !1, H = "mgv-theme";
10
+ function Fe(e) {
11
+ if (Pe) {
12
+ e !== H && console.warn(`[ui-lib] useTheme: storage key "${e}" ignored — theme already initialized with "${H}". Call initTheme({ storageKey }) before mounting any component.`);
13
13
  return;
14
14
  }
15
- if (Me = !0, U = e, typeof window < "u") {
16
- let e = window.localStorage?.getItem(U);
17
- e ? H.value = e === "dark" : typeof window.matchMedia == "function" && (H.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
15
+ if (Pe = !0, H = e, typeof window < "u") {
16
+ let e = window.localStorage?.getItem(H);
17
+ e ? V.value = e === "dark" : typeof window.matchMedia == "function" && (V.value = window.matchMedia("(prefers-color-scheme: dark)").matches);
18
18
  }
19
19
  typeof document < "u" && m(!0).run(() => {
20
- I(H, (e) => {
21
- document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(U, e ? "dark" : "light");
20
+ ae(V, (e) => {
21
+ document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(H, e ? "dark" : "light");
22
22
  }, { immediate: !0 });
23
23
  });
24
24
  }
25
- function Pe(e) {
26
- Ne(e?.storageKey ?? U);
25
+ function Ie(e) {
26
+ Fe(e?.storageKey ?? H);
27
27
  }
28
- function W(e) {
29
- Ne(e?.storageKey ?? U);
28
+ function U(e) {
29
+ Fe(e?.storageKey ?? H);
30
30
  function t() {
31
- H.value = !H.value;
31
+ V.value = !V.value;
32
32
  }
33
33
  return {
34
- isDark: H,
34
+ isDark: V,
35
35
  toggleTheme: t
36
36
  };
37
37
  }
38
38
  //#endregion
39
39
  //#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
40
- var Fe = { class: "min-w-0 flex-1" }, Ie = {
40
+ var Le = { class: "min-w-0 flex-1" }, Re = {
41
41
  key: 0,
42
42
  class: "font-medium"
43
- }, Le = /* @__PURE__ */ p({
43
+ }, ze = /* @__PURE__ */ p({
44
44
  __name: "BaseAlert",
45
45
  props: {
46
46
  title: { default: "" },
47
- color: { default: V.ERROR },
47
+ color: { default: B.ERROR },
48
48
  compact: {
49
49
  type: Boolean,
50
50
  default: !1
51
51
  }
52
52
  },
53
53
  setup(e) {
54
- let t = e, { isDark: n } = W(), r = {
55
- [V.ERROR]: {
54
+ let t = e, { isDark: n } = U(), r = {
55
+ [B.ERROR]: {
56
56
  light: "bg-red-50 border-red-200 text-red-700",
57
57
  dark: "bg-red-500/10 border-red-500/30 text-red-300"
58
58
  },
59
- [V.WARNING]: {
59
+ [B.WARNING]: {
60
60
  light: "bg-amber-50 border-amber-200 text-amber-700",
61
61
  dark: "bg-amber-500/10 border-amber-500/30 text-amber-300"
62
62
  },
63
- [V.SUCCESS]: {
63
+ [B.SUCCESS]: {
64
64
  light: "bg-emerald-50 border-emerald-200 text-emerald-700",
65
65
  dark: "bg-emerald-500/10 border-emerald-500/30 text-emerald-300"
66
66
  },
67
- [V.INFO]: {
67
+ [B.INFO]: {
68
68
  light: "bg-sky-50 border-sky-200 text-sky-700",
69
69
  dark: "bg-sky-500/10 border-sky-500/30 text-sky-300"
70
70
  }
71
71
  }, l = i(() => n.value ? r[t.color].dark : r[t.color].light), u = i(() => {
72
72
  switch (t.color) {
73
- case V.SUCCESS: return ue;
74
- case V.WARNING: return be;
75
- case V.INFO: return Se;
76
- default: return ye;
73
+ case B.SUCCESS: return fe;
74
+ case B.WARNING: return Se;
75
+ case B.INFO: return we;
76
+ default: return xe;
77
77
  }
78
78
  }), d = i(() => {
79
79
  switch (t.color) {
80
- case V.SUCCESS: return "text-emerald-500";
81
- case V.WARNING: return "text-amber-500";
82
- case V.INFO: return "text-sky-500";
80
+ case B.SUCCESS: return "text-emerald-500";
81
+ case B.WARNING: return "text-amber-500";
82
+ case B.INFO: return "text-sky-500";
83
83
  default: return "text-red-500";
84
84
  }
85
85
  });
@@ -89,11 +89,11 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
89
89
  }, [(T(), a(M(u.value), {
90
90
  class: v(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
91
91
  "aria-hidden": "true"
92
- }, null, 8, ["class"])), c("div", Fe, [e.title ? (T(), s("p", Ie, N(e.title), 1)) : o("", !0), A(t.$slots, "default")])], 2));
92
+ }, null, 8, ["class"])), c("div", Le, [e.title ? (T(), s("p", Re, N(e.title), 1)) : o("", !0), A(t.$slots, "default")])], 2));
93
93
  }
94
- }), G = /* @__PURE__ */ function(e) {
94
+ }), W = /* @__PURE__ */ function(e) {
95
95
  return e.NONE = "NONE", e.RED = "RED", e.YELLOW = "YELLOW", e.BLACK = "BLACK", e.GRAY = "GRAY", e.GREEN = "GREEN", e.BLUE = "BLUE", e;
96
- }({}), Re = "bg-red-100 text-red-700 border-red-200", ze = /* @__PURE__ */ p({
96
+ }({}), Be = "bg-red-100 text-red-700 border-red-200", Ve = /* @__PURE__ */ p({
97
97
  __name: "BaseBadge",
98
98
  props: { color: {
99
99
  type: String,
@@ -101,26 +101,26 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
101
101
  } },
102
102
  setup(e) {
103
103
  let t = F(), r = i(() => !!t.default), a = () => (t.default?.() ?? []).map((e) => e.type === n && typeof e.children == "string" ? d(e.children.replace(/_/g, " ")) : e), c = e, l = {
104
- [G.RED]: "bg-red-100 text-red-700 border-red-200",
105
- [G.GREEN]: "bg-green-100 text-green-700 border-green-200",
106
- [G.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
107
- [G.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
108
- [G.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
109
- [G.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
110
- [G.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
111
- }, u = i(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${c.color && l[c.color] || Re}`);
104
+ [W.RED]: "bg-red-100 text-red-700 border-red-200",
105
+ [W.GREEN]: "bg-green-100 text-green-700 border-green-200",
106
+ [W.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
107
+ [W.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
108
+ [W.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
109
+ [W.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
110
+ [W.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
111
+ }, u = i(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${c.color && l[c.color] || Be}`);
112
112
  return (e, t) => r.value ? (T(), s("span", {
113
113
  key: 0,
114
114
  class: v(u.value)
115
115
  }, [f(a)], 2)) : o("", !0);
116
116
  }
117
- }), Be = {
117
+ }), He = {
118
118
  class: "flex overflow-x-auto px-5 py-3 text-gray-700 border border-slate-200 rounded-xl bg-white shadow-sm dark:bg-slate-900 dark:border-slate-700",
119
119
  "aria-label": "Breadcrumb"
120
- }, Ve = { class: "inline-flex items-center whitespace-nowrap space-x-1 md:space-x-3" }, He = {
120
+ }, Ue = { class: "inline-flex items-center whitespace-nowrap space-x-1 md:space-x-3" }, We = {
121
121
  class: "inline-flex items-center",
122
122
  style: { "margin-left": "0" }
123
- }, Ue = /* @__PURE__ */ p({
123
+ }, Ge = /* @__PURE__ */ p({
124
124
  __name: "BaseBreadcrumb",
125
125
  props: {
126
126
  items: {
@@ -145,40 +145,40 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
145
145
  });
146
146
  return (t, n) => {
147
147
  let i = j("router-link");
148
- return T(), s("nav", Be, [c("ol", Ve, [c("li", He, [f(i, {
148
+ return T(), s("nav", He, [c("ol", Ue, [c("li", We, [f(i, {
149
149
  to: "/",
150
150
  class: "inline-flex items-center text-sm font-medium text-gray-700 hover:text-blue-600 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
151
151
  }, {
152
- default: L(() => [f(P(De), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= d(" Home ", -1)]),
152
+ default: I(() => [f(P(ke), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= d(" Home ", -1)]),
153
153
  _: 1
154
154
  })]), (T(!0), s(e, null, k(r.value, (e, t) => (T(), s("li", {
155
155
  key: t,
156
156
  class: "inline-flex items-center",
157
157
  style: { "margin-left": "0" }
158
- }, [f(P(he), { class: "h-4 w-4 text-gray-500" }), f(i, {
158
+ }, [f(P(_e), { class: "h-4 w-4 text-gray-500" }), f(i, {
159
159
  to: e.url,
160
160
  class: "ml-1 text-sm font-medium text-gray-700 hover:text-blue-600 md:ml-2 dark:text-gray-400 dark:hover:text-white transition-colors rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500"
161
161
  }, {
162
- default: L(() => [d(N(e.name), 1)]),
162
+ default: I(() => [d(N(e.name), 1)]),
163
163
  _: 2
164
164
  }, 1032, ["to"])]))), 128))])]);
165
165
  };
166
166
  }
167
- }), K = /* @__PURE__ */ function(e) {
167
+ }), G = /* @__PURE__ */ function(e) {
168
168
  return e.RED = "RED", e.BLUE = "BLUE", e.WHITE = "WHITE", e.DARK = "DARK", e.GREEN = "GREEN", e.EMERALD = "EMERALD", e.YELLOW = "YELLOW", e.PURPLE = "PURPLE", e.SKY = "SKY", e.GRAY = "GRAY", e.AMBER = "AMBER", e;
169
- }({}), q = /* @__PURE__ */ function(e) {
169
+ }({}), K = /* @__PURE__ */ function(e) {
170
170
  return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
171
- }({}), We = [
171
+ }({}), Ke = [
172
172
  "type",
173
173
  "disabled",
174
174
  "onClick"
175
- ], Ge = {
175
+ ], qe = {
176
176
  key: 0,
177
177
  class: "inline-flex items-center"
178
- }, Ke = { key: 1 }, qe = { key: 2 }, Je = ["type", "disabled"], Ye = {
178
+ }, Je = { key: 1 }, Ye = { key: 2 }, Xe = ["type", "disabled"], Ze = {
179
179
  key: 0,
180
180
  class: "inline-flex items-center"
181
- }, Xe = { key: 1 }, Ze = { key: 2 }, Qe = /* @__PURE__ */ p({
181
+ }, Qe = { key: 1 }, $e = { key: 2 }, q = /* @__PURE__ */ p({
182
182
  __name: "BaseButton",
183
183
  props: {
184
184
  description: {
@@ -188,7 +188,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
188
188
  color: {
189
189
  type: String,
190
190
  required: !1,
191
- default: K.GREEN
191
+ default: G.GREEN
192
192
  },
193
193
  to: {
194
194
  type: String,
@@ -232,103 +232,103 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
232
232
  }
233
233
  },
234
234
  setup(e) {
235
- let { isDark: t } = W(), n = e;
235
+ let { isDark: t } = U(), n = e;
236
236
  function r() {
237
237
  let e = {
238
- [K.BLUE]: {
238
+ [G.BLUE]: {
239
239
  light: "text-blue-700 border-blue-300 hover:bg-blue-50",
240
240
  dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
241
241
  },
242
- [K.GREEN]: {
242
+ [G.GREEN]: {
243
243
  light: "text-green-700 border-green-300 hover:bg-green-50",
244
244
  dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
245
245
  },
246
- [K.EMERALD]: {
246
+ [G.EMERALD]: {
247
247
  light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
248
248
  dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
249
249
  },
250
- [K.RED]: {
250
+ [G.RED]: {
251
251
  light: "text-red-700 border-red-300 hover:bg-red-50",
252
252
  dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
253
253
  },
254
- [K.YELLOW]: {
254
+ [G.YELLOW]: {
255
255
  light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
256
256
  dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
257
257
  },
258
- [K.PURPLE]: {
258
+ [G.PURPLE]: {
259
259
  light: "text-purple-700 border-purple-300 hover:bg-purple-50",
260
260
  dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
261
261
  },
262
- [K.SKY]: {
262
+ [G.SKY]: {
263
263
  light: "text-sky-700 border-sky-300 hover:bg-sky-50",
264
264
  dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
265
265
  },
266
- [K.AMBER]: {
266
+ [G.AMBER]: {
267
267
  light: "text-amber-700 border-amber-300 hover:bg-amber-50",
268
268
  dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
269
269
  },
270
- [K.GRAY]: {
270
+ [G.GRAY]: {
271
271
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
272
272
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
273
273
  },
274
- [K.DARK]: {
274
+ [G.DARK]: {
275
275
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
276
276
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
277
277
  },
278
- [K.WHITE]: {
278
+ [G.WHITE]: {
279
279
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
280
280
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
281
281
  }
282
- }, r = e[n.color] ?? e[K.BLUE], i = t.value ? r.dark : r.light;
282
+ }, r = e[n.color] ?? e[G.BLUE], i = t.value ? r.dark : r.light;
283
283
  return n.isDisable || n.isLoading ? `border bg-transparent ${i} opacity-50 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current border bg-transparent ${i}`;
284
284
  }
285
285
  function i() {
286
286
  let e = {
287
- [K.BLUE]: {
287
+ [G.BLUE]: {
288
288
  light: "text-blue-600 hover:bg-blue-50",
289
289
  dark: "text-blue-400 hover:bg-blue-500/10"
290
290
  },
291
- [K.GREEN]: {
291
+ [G.GREEN]: {
292
292
  light: "text-green-600 hover:bg-green-50",
293
293
  dark: "text-green-400 hover:bg-green-500/10"
294
294
  },
295
- [K.EMERALD]: {
295
+ [G.EMERALD]: {
296
296
  light: "text-emerald-600 hover:bg-emerald-50",
297
297
  dark: "text-emerald-400 hover:bg-emerald-500/10"
298
298
  },
299
- [K.SKY]: {
299
+ [G.SKY]: {
300
300
  light: "text-sky-600 hover:bg-sky-50",
301
301
  dark: "text-sky-400 hover:bg-sky-500/10"
302
302
  },
303
- [K.RED]: {
303
+ [G.RED]: {
304
304
  light: "text-red-500 hover:bg-red-50",
305
305
  dark: "text-red-400 hover:bg-red-500/10"
306
306
  },
307
- [K.AMBER]: {
307
+ [G.AMBER]: {
308
308
  light: "text-amber-700 hover:bg-amber-50",
309
309
  dark: "text-amber-300 hover:bg-amber-500/10"
310
310
  },
311
- [K.YELLOW]: {
311
+ [G.YELLOW]: {
312
312
  light: "text-yellow-600 hover:bg-yellow-50",
313
313
  dark: "text-yellow-400 hover:bg-yellow-500/10"
314
314
  },
315
- [K.PURPLE]: {
315
+ [G.PURPLE]: {
316
316
  light: "text-purple-600 hover:bg-purple-50",
317
317
  dark: "text-purple-400 hover:bg-purple-500/10"
318
318
  },
319
- [K.GRAY]: {
319
+ [G.GRAY]: {
320
320
  light: "text-gray-500 hover:bg-gray-100",
321
321
  dark: "text-gray-400 hover:bg-gray-800"
322
322
  },
323
- [K.DARK]: {
323
+ [G.DARK]: {
324
324
  light: "text-gray-500 hover:bg-gray-100",
325
325
  dark: "text-gray-400 hover:bg-gray-800"
326
326
  },
327
- [K.WHITE]: {
327
+ [G.WHITE]: {
328
328
  light: "text-gray-500 hover:bg-gray-100",
329
329
  dark: "text-gray-400 hover:bg-gray-800"
330
330
  }
331
- }, r = e[n.color] ?? e[K.GRAY], i = t.value ? r.dark : r.light;
331
+ }, r = e[n.color] ?? e[G.GRAY], i = t.value ? r.dark : r.light;
332
332
  return n.isDisable || n.isLoading ? `bg-transparent ${i} opacity-60 cursor-not-allowed` : `focus:outline-none focus-visible:ring-2 focus-visible:ring-current bg-transparent ${i} cursor-pointer`;
333
333
  }
334
334
  function l() {
@@ -336,37 +336,37 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
336
336
  e || (t += " cursor-pointer");
337
337
  let a;
338
338
  switch (n.color) {
339
- case K.BLUE:
339
+ case G.BLUE:
340
340
  a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
341
341
  break;
342
- case K.WHITE:
342
+ case G.WHITE:
343
343
  a = e ? "text-gray-900 bg-gray-200 border border-gray-200 cursor-not-allowed" : "focus:outline-none text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200";
344
344
  break;
345
- case K.DARK:
345
+ case G.DARK:
346
346
  a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300";
347
347
  break;
348
- case K.GREEN:
348
+ case G.GREEN:
349
349
  a = e ? "text-white bg-green-400 cursor-not-allowed" : "focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300";
350
350
  break;
351
- case K.EMERALD:
351
+ case G.EMERALD:
352
352
  a = e ? "text-white bg-emerald-400 cursor-not-allowed" : "focus:outline-none text-white bg-emerald-600 hover:bg-emerald-700 focus:ring-4 focus:ring-emerald-300";
353
353
  break;
354
- case K.RED:
354
+ case G.RED:
355
355
  a = e ? "text-white bg-red-400 cursor-not-allowed" : "focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300";
356
356
  break;
357
- case K.YELLOW:
357
+ case G.YELLOW:
358
358
  a = e ? "text-white bg-yellow-300 cursor-not-allowed" : "focus:outline-none text-white bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300";
359
359
  break;
360
- case K.PURPLE:
360
+ case G.PURPLE:
361
361
  a = e ? "text-white bg-purple-400 cursor-not-allowed" : "focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300";
362
362
  break;
363
- case K.SKY:
363
+ case G.SKY:
364
364
  a = e ? "text-white bg-sky-400 cursor-not-allowed" : "focus:outline-none text-white bg-sky-600 hover:bg-sky-700 focus:ring-4 focus:ring-sky-300";
365
365
  break;
366
- case K.AMBER:
366
+ case G.AMBER:
367
367
  a = e ? "text-white bg-amber-300 cursor-not-allowed" : "focus:outline-none text-white bg-amber-500 hover:bg-amber-600 focus:ring-4 focus:ring-amber-300";
368
368
  break;
369
- case K.GRAY:
369
+ case G.GRAY:
370
370
  a = e ? "text-white bg-gray-400 cursor-not-allowed" : "focus:outline-none text-white bg-gray-600 hover:bg-gray-700 focus:ring-4 focus:ring-gray-300";
371
371
  break;
372
372
  default: a = e ? "text-white bg-blue-400 cursor-not-allowed" : "focus:outline-none text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300";
@@ -374,19 +374,19 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
374
374
  n.outline && (a = r()), n.ghost && (a = i());
375
375
  let o = "px-5 py-2.5 mr-2 mb-2 text-sm";
376
376
  switch (n.size) {
377
- case q.EXTRA_SMALL:
377
+ case K.EXTRA_SMALL:
378
378
  o = "px-3 py-2 text-xs";
379
379
  break;
380
- case q.SMALL:
380
+ case K.SMALL:
381
381
  o = "px-3 py-2 text-sm";
382
382
  break;
383
- case q.BASE:
383
+ case K.BASE:
384
384
  o = "px-5 py-2.5 text-sm";
385
385
  break;
386
- case q.LARGE:
386
+ case K.LARGE:
387
387
  o = "px-5 py-3 text-base";
388
388
  break;
389
- case q.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
389
+ case K.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
390
390
  }
391
391
  let s = "rounded-lg";
392
392
  return n.isRounded && (s = "rounded-full"), t + " " + o + " " + a + " font-medium " + s;
@@ -398,13 +398,13 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
398
398
  to: e.to,
399
399
  custom: ""
400
400
  }, {
401
- default: L(({ navigate: i }) => [c("button", {
401
+ default: I(({ navigate: i }) => [c("button", {
402
402
  type: n.type,
403
403
  class: v(l()),
404
404
  disabled: e.isDisable || e.isLoading,
405
405
  onClick: i
406
406
  }, [
407
- e.isLoading ? (T(), s("div", Ge, [...r[0] ||= [c("svg", {
407
+ e.isLoading ? (T(), s("div", qe, [...r[0] ||= [c("svg", {
408
408
  "aria-hidden": "true",
409
409
  role: "status",
410
410
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -418,10 +418,10 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
418
418
  d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
419
419
  fill: "currentColor"
420
420
  })], -1)]])) : o("", !0),
421
- e.iconLeft ? o("", !0) : (T(), s("span", Ke, N(e.description), 1)),
421
+ e.iconLeft ? o("", !0) : (T(), s("span", Je, N(e.description), 1)),
422
422
  A(t.$slots, "default"),
423
- e.iconLeft ? (T(), s("span", qe, N(e.description), 1)) : o("", !0)
424
- ], 10, We)]),
423
+ e.iconLeft ? (T(), s("span", Ye, N(e.description), 1)) : o("", !0)
424
+ ], 10, Ke)]),
425
425
  _: 3
426
426
  }, 8, ["to"])) : (T(), s("button", {
427
427
  key: 1,
@@ -429,7 +429,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
429
429
  class: v(l()),
430
430
  disabled: e.isDisable || e.isLoading
431
431
  }, [
432
- e.isLoading ? (T(), s("div", Ye, [...r[1] ||= [c("svg", {
432
+ e.isLoading ? (T(), s("div", Ze, [...r[1] ||= [c("svg", {
433
433
  "aria-hidden": "true",
434
434
  role: "status",
435
435
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -443,40 +443,40 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
443
443
  d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
444
444
  fill: "currentColor"
445
445
  })], -1)]])) : o("", !0),
446
- e.iconLeft ? o("", !0) : (T(), s("span", Xe, N(e.description), 1)),
446
+ e.iconLeft ? o("", !0) : (T(), s("span", Qe, N(e.description), 1)),
447
447
  A(t.$slots, "default"),
448
- e.iconLeft ? (T(), s("span", Ze, N(e.description), 1)) : o("", !0)
449
- ], 10, Je));
448
+ e.iconLeft ? (T(), s("span", $e, N(e.description), 1)) : o("", !0)
449
+ ], 10, Xe));
450
450
  };
451
451
  }
452
- }), $e = /* @__PURE__ */ function(e) {
452
+ }), et = /* @__PURE__ */ function(e) {
453
453
  return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
454
- }({}), et = {
454
+ }({}), tt = {
455
455
  key: 0,
456
456
  class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
457
- }, tt = {
457
+ }, nt = {
458
458
  key: 1,
459
459
  class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
460
- }, nt = {
460
+ }, rt = {
461
461
  key: 2,
462
462
  class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
463
- }, rt = /* @__PURE__ */ p({
463
+ }, it = /* @__PURE__ */ p({
464
464
  __name: "BaseLine",
465
465
  props: { mode: {
466
466
  type: String,
467
467
  required: !1,
468
- default: $e.BASE
468
+ default: et.BASE
469
469
  } },
470
470
  setup(t) {
471
471
  return (n, r) => (T(), s(e, null, [
472
- t.mode === P($e).BASE ? (T(), s("hr", et)) : o("", !0),
473
- t.mode === P($e).BASE_SHORTER ? (T(), s("hr", tt)) : o("", !0),
474
- t.mode === P($e).SQUARE ? (T(), s("hr", nt)) : o("", !0)
472
+ t.mode === P(et).BASE ? (T(), s("hr", tt)) : o("", !0),
473
+ t.mode === P(et).BASE_SHORTER ? (T(), s("hr", nt)) : o("", !0),
474
+ t.mode === P(et).SQUARE ? (T(), s("hr", rt)) : o("", !0)
475
475
  ], 64));
476
476
  }
477
477
  }), J = /* @__PURE__ */ function(e) {
478
478
  return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
479
- }({}), it = J, at = ["height", "width"], ot = ["id"], st = ["id", "href"], ct = ["id", "href"], lt = ["id", "href"], ut = ["id", "href"], dt = ["id", "href"], ft = ["id", "href"], pt = ["id", "href"], mt = ["id", "href"], ht = ["id", "href"], gt = ["id"], _t = ["fill"], vt = ["fill"], yt = ["fill"], bt = ["fill"], xt = ["fill"], St = ["fill"], Ct = ["fill"], wt = ["fill"], Tt = ["fill"], Et = ["fill"], Dt = /* @__PURE__ */ p({
479
+ }({}), at = J, ot = ["height", "width"], st = ["id"], ct = ["id", "href"], lt = ["id", "href"], ut = ["id", "href"], dt = ["id", "href"], ft = ["id", "href"], pt = ["id", "href"], mt = ["id", "href"], ht = ["id", "href"], gt = ["id", "href"], _t = ["id"], vt = ["fill"], yt = ["fill"], bt = ["fill"], xt = ["fill"], St = ["fill"], Ct = ["fill"], wt = ["fill"], Tt = ["fill"], Et = ["fill"], Dt = ["fill"], Ot = /* @__PURE__ */ p({
480
480
  __name: "BaseLogo",
481
481
  props: { size: {
482
482
  type: String,
@@ -504,7 +504,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
504
504
  to: "/",
505
505
  class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
506
506
  }, {
507
- default: L(() => [(T(), s("svg", {
507
+ default: I(() => [(T(), s("svg", {
508
508
  height: r(),
509
509
  width: r(),
510
510
  viewBox: "33.6 130.6 499.7 242.9",
@@ -517,7 +517,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
517
517
  }, null, -1), c("stop", {
518
518
  offset: "1",
519
519
  "stop-color": "#132d13"
520
- }, null, -1)]], 8, ot),
520
+ }, null, -1)]], 8, st),
521
521
  c("linearGradient", {
522
522
  id: `${t}-b`,
523
523
  gradientUnits: "userSpaceOnUse",
@@ -526,7 +526,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
526
526
  href: `#${t}-a`,
527
527
  y1: "288.291",
528
528
  y2: "369.4"
529
- }, null, 8, st),
529
+ }, null, 8, ct),
530
530
  c("linearGradient", {
531
531
  id: `${t}-c`,
532
532
  gradientUnits: "userSpaceOnUse",
@@ -535,7 +535,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
535
535
  href: `#${t}-a`,
536
536
  y1: "308.454",
537
537
  y2: "370.601"
538
- }, null, 8, ct),
538
+ }, null, 8, lt),
539
539
  c("linearGradient", {
540
540
  id: `${t}-d`,
541
541
  gradientUnits: "userSpaceOnUse",
@@ -544,7 +544,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
544
544
  href: `#${t}-a`,
545
545
  y1: "288.291",
546
546
  y2: "369.85"
547
- }, null, 8, lt),
547
+ }, null, 8, ut),
548
548
  c("linearGradient", {
549
549
  id: `${t}-e`,
550
550
  gradientUnits: "userSpaceOnUse",
@@ -553,7 +553,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
553
553
  href: `#${t}-a`,
554
554
  y1: "307.312",
555
555
  y2: "369.511"
556
- }, null, 8, ut),
556
+ }, null, 8, dt),
557
557
  c("linearGradient", {
558
558
  id: `${t}-f`,
559
559
  gradientUnits: "userSpaceOnUse",
@@ -562,7 +562,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
562
562
  href: `#${t}-a`,
563
563
  y1: "288.291",
564
564
  y2: "367.857"
565
- }, null, 8, dt),
565
+ }, null, 8, ft),
566
566
  c("linearGradient", {
567
567
  id: `${t}-g`,
568
568
  gradientUnits: "userSpaceOnUse",
@@ -571,7 +571,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
571
571
  href: `#${t}-a`,
572
572
  y1: "307.312",
573
573
  y2: "369.511"
574
- }, null, 8, ft),
574
+ }, null, 8, pt),
575
575
  c("linearGradient", {
576
576
  id: `${t}-h`,
577
577
  gradientUnits: "userSpaceOnUse",
@@ -580,7 +580,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
580
580
  href: `#${t}-a`,
581
581
  y1: "306.156",
582
582
  y2: "367.742"
583
- }, null, 8, pt),
583
+ }, null, 8, mt),
584
584
  c("linearGradient", {
585
585
  id: `${t}-i`,
586
586
  gradientUnits: "userSpaceOnUse",
@@ -589,7 +589,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
589
589
  href: `#${t}-a`,
590
590
  y1: "288.291",
591
591
  y2: "369.4"
592
- }, null, 8, mt),
592
+ }, null, 8, ht),
593
593
  c("linearGradient", {
594
594
  id: `${t}-j`,
595
595
  gradientUnits: "userSpaceOnUse",
@@ -598,7 +598,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
598
598
  href: `#${t}-a`,
599
599
  y1: "131.629",
600
600
  y2: "232.559"
601
- }, null, 8, ht),
601
+ }, null, 8, gt),
602
602
  c("linearGradient", {
603
603
  id: `${t}-k`,
604
604
  gradientUnits: "userSpaceOnUse",
@@ -613,64 +613,64 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
613
613
  }, null, -1), c("stop", {
614
614
  offset: "1",
615
615
  "stop-color": "#808183"
616
- }, null, -1)]], 8, gt),
616
+ }, null, -1)]], 8, _t),
617
617
  c("path", {
618
618
  d: "m65 307.2c-6.8 0-13.1 2.2-18.2 5.9v-24.8h-13.2v81.1h31.4c17.2 0 31.1-13.9 31.1-31.1s-13.9-31.1-31.1-31.1zm0 49.3h-18.2v-18.2c0-10.1 8.2-18.2 18.2-18.2 10.1 0 18.2 8.2 18.2 18.2.1 10.1-8.1 18.2-18.2 18.2z",
619
619
  fill: `url(#${t}-b)`
620
- }, null, 8, _t),
620
+ }, null, 8, vt),
621
621
  c("path", {
622
622
  d: "m168.8 343.9h-46.7c1.4 7.1 6.6 12 14.1 12.7 6.4.6 12.9.1 19.9.1v11.9c-15.2 4.9-33.3.5-42.1-10.4-3.8-4.7-17.3-34.7 11.5-47.4 39-11.4 45.3 22.4 43.3 33.1zm-14.2-12.7c-1.7-8.1-8.8-12.9-17.9-12.3-7.6.5-14 5.8-14.5 12.3z",
623
623
  fill: `url(#${t}-c)`
624
- }, null, 8, vt),
624
+ }, null, 8, yt),
625
625
  c("path", {
626
626
  d: "m195.5 320.2c0 10.5-.2 20 .1 29.6.2 5.8 4.4 8.4 13.2 8.6v10.5c-13.8 3.9-26.2-4.5-26.4-18-.2-18.7-.1-43.9-.1-62.6h14.1l-.3 18.5 12.7-.1v13.4h-13.3z",
627
627
  fill: `url(#${t}-d)`
628
- }, null, 8, yt),
628
+ }, null, 8, bt),
629
629
  c("path", {
630
630
  d: "m249.6 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
631
631
  fill: `url(#${t}-e)`
632
- }, null, 8, bt),
632
+ }, null, 8, xt),
633
633
  c("path", {
634
634
  d: "m296.4 288.3h13v79.6h-13z",
635
635
  fill: `url(#${t}-f)`
636
- }, null, 8, xt),
636
+ }, null, 8, St),
637
637
  c("path", {
638
638
  d: "m354.1 307.3c-17.2 0-31.1 13.9-31.1 31.1s13.9 31.1 31.1 31.1h31.1v-31.1c0-17.2-13.9-31.1-31.1-31.1zm18.6 49.7h-18.5c-10.2 0-18.5-8.3-18.5-18.5s8.3-18.5 18.5-18.5 18.5 8.3 18.5 18.5z",
639
639
  fill: `url(#${t}-g)`
640
- }, null, 8, St),
640
+ }, null, 8, Ct),
641
641
  c("path", {
642
642
  d: "m442.2 367.7c0-12.3.2-23.6 0-34.9-.2-3.4-3.6-13.8-14.1-13.4-10.3-.3-14.4 10-14.3 12.7.1 10.2.5 35.1.5 35.1l-13.6.1s-.3-25.7.2-36.2c.6-14.1 12.7-25 27.5-25 14.7 0 26.2 10.4 26.7 24.9.4 10.4.5 36.3.5 36.3z",
643
643
  fill: `url(#${t}-h)`
644
- }, null, 8, Ct),
644
+ }, null, 8, wt),
645
645
  c("path", {
646
646
  d: "m501.9 307.2c6.8 0 13.1 2.2 18.2 5.9v-24.8h13.2v81.1h-31.4c-17.2 0-31.1-13.9-31.1-31.1s13.9-31.1 31.1-31.1zm0 49.3h18.2v-18.2c0-10.1-8.2-18.2-18.2-18.2-10.1 0-18.2 8.2-18.2 18.2 0 10.1 8.1 18.2 18.2 18.2z",
647
647
  fill: `url(#${t}-i)`
648
- }, null, 8, wt),
648
+ }, null, 8, Tt),
649
649
  c("path", {
650
650
  d: "m309.2 180.6h-24v-24c0-12.6 10.2-24.1 22.8-25 14.8-1 27.1 11.3 26.1 26.1-.8 12.7-12.3 22.9-24.9 22.9zm-50.7-48.9c-14.8-1-27.1 11.3-26.1 26.1.8 12.6 12.4 22.8 25 22.8h23.9v-24c0-12.6-10.3-24.1-22.8-24.9zm50.7 51.9h-24v23.9c0 12.6 10.2 24.1 22.8 25 14.8 1 27.1-11.3 26.1-26.1-.8-12.6-12.3-22.8-24.9-22.8zm-52.4 0c-14 0-25.3 11.8-24.4 26 .8 12.2 10.7 22.1 22.9 22.9 14.2.9 26-10.4 26-24.4v-24.5z",
651
651
  fill: `url(#${t}-j)`
652
- }, null, 8, Tt),
652
+ }, null, 8, Et),
653
653
  c("path", {
654
654
  d: "m281.7 183.8h3.6v18.5h-3.6z",
655
655
  fill: `url(#${t}-k)`
656
- }, null, 8, Et)
657
- ], 8, at))]),
656
+ }, null, 8, Dt)
657
+ ], 8, ot))]),
658
658
  _: 1
659
659
  });
660
660
  };
661
661
  }
662
- }), Ot = /* @__PURE__ */ function(e) {
662
+ }), kt = /* @__PURE__ */ function(e) {
663
663
  return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
664
- }({}), kt = {
664
+ }({}), At = {
665
665
  key: 0,
666
666
  class: "p-6 text-center"
667
- }, At = { class: "flex justify-center" }, jt = {
667
+ }, jt = { class: "flex justify-center" }, Mt = {
668
668
  key: 1,
669
669
  class: "p-6 text-center"
670
- }, Mt = {
670
+ }, Nt = {
671
671
  key: 0,
672
672
  class: "mb-5 text-sm text-gray-500"
673
- }, Nt = { class: "flex justify-center" }, Pt = /* @__PURE__ */ p({
673
+ }, Pt = { class: "flex justify-center" }, Ft = /* @__PURE__ */ p({
674
674
  __name: "BaseModal",
675
675
  props: {
676
676
  title: {
@@ -689,7 +689,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
689
689
  mode: {
690
690
  type: String,
691
691
  required: !1,
692
- default: Ot.SUCCESS
692
+ default: kt.SUCCESS
693
693
  }
694
694
  },
695
695
  emits: ["closeModal", "confirmModal"],
@@ -710,37 +710,37 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
710
710
  role: "dialog",
711
711
  "aria-modal": "true",
712
712
  "aria-labelledby": i
713
- }, [t.mode === P(Ot).DELETE ? (T(), s("div", kt, [
714
- f(P(ye), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
713
+ }, [t.mode === P(kt).DELETE ? (T(), s("div", At, [
714
+ f(P(xe), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
715
715
  c("h3", {
716
716
  id: i,
717
717
  class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
718
718
  }, " Are you sure you want to delete this " + N(t.title) + "? ", 1),
719
- c("div", At, [f(Qe, {
720
- color: P(K).RED,
719
+ c("div", jt, [f(q, {
720
+ color: P(G).RED,
721
721
  onClick: r[1] ||= (e) => n.$emit("confirmModal"),
722
722
  description: "Yes, I'm sure"
723
- }, null, 8, ["color"]), f(Qe, {
724
- color: P(K).WHITE,
723
+ }, null, 8, ["color"]), f(q, {
724
+ color: P(G).WHITE,
725
725
  onClick: r[2] ||= (e) => n.$emit("closeModal"),
726
726
  description: "No, cancel"
727
727
  }, null, 8, ["color"])])
728
- ])) : (T(), s("div", jt, [
729
- f(P(ue), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
728
+ ])) : (T(), s("div", Mt, [
729
+ f(P(fe), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
730
730
  c("h3", {
731
731
  id: i,
732
732
  class: "mb-2 text-lg font-medium text-gray-900"
733
733
  }, N(t.title), 1),
734
- t.description ? (T(), s("p", Mt, N(t.description), 1)) : o("", !0),
734
+ t.description ? (T(), s("p", Nt, N(t.description), 1)) : o("", !0),
735
735
  A(n.$slots, "default"),
736
- c("div", Nt, [f(Qe, {
737
- color: P(K).BLUE,
736
+ c("div", Pt, [f(q, {
737
+ color: P(G).BLUE,
738
738
  onClick: r[3] ||= (e) => n.$emit("closeModal"),
739
739
  description: "OK"
740
740
  }, null, 8, ["color"])])
741
741
  ]))])], 64));
742
742
  }
743
- }), Ft = /* @__PURE__ */ p({
743
+ }), It = /* @__PURE__ */ p({
744
744
  __name: "BaseRow",
745
745
  props: { bgColor: {
746
746
  type: String,
@@ -754,11 +754,11 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
754
754
  }
755
755
  return (e, t) => (T(), s("div", { class: v(n()) }, [A(e.$slots, "default")], 2));
756
756
  }
757
- }), It = /* @__PURE__ */ p({
757
+ }), Lt = /* @__PURE__ */ p({
758
758
  __name: "BaseSpinner",
759
759
  props: {
760
760
  size: { default: "sm" },
761
- color: { default: "blue" }
761
+ color: { default: "emerald" }
762
762
  },
763
763
  setup(e) {
764
764
  let t = e, n = i(() => ({
@@ -777,7 +777,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
777
777
  amber: "border-t-amber-500"
778
778
  })[t.color]);
779
779
  return (e, t) => (T(), s("div", {
780
- class: v(["border-gray-200 rounded-full animate-spin", [n.value, r.value]]),
780
+ class: v(["border-gray-200 dark:border-slate-700 rounded-full animate-spin", [n.value, r.value]]),
781
781
  role: "status",
782
782
  "aria-label": "Loading"
783
783
  }, null, 2));
@@ -786,7 +786,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
786
786
  return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
787
787
  }({}), X = /* @__PURE__ */ function(e) {
788
788
  return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
789
- }({}), 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" }, Rt = { class: "ml-3 text-sm font-normal" }, zt = /* @__PURE__ */ p({
789
+ }({}), Rt = { 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" }, zt = { class: "ml-3 text-sm font-normal" }, Bt = /* @__PURE__ */ p({
790
790
  __name: "BaseToast",
791
791
  props: {
792
792
  mode: {
@@ -860,28 +860,28 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
860
860
  id: "toast-top-right",
861
861
  class: v(l()),
862
862
  role: "alert"
863
- }, [c("div", Lt, [
863
+ }, [c("div", Rt, [
864
864
  e.mode == P(Y).ERROR ? (T(), s("div", {
865
865
  key: 0,
866
866
  class: v(a())
867
- }, [f(P(ye), { class: "h-6 w-6 text-red-500" }), r[0] ||= c("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == P(Y).SUCCESS ? (T(), s("div", {
867
+ }, [f(P(xe), { class: "h-6 w-6 text-red-500" }), r[0] ||= c("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == P(Y).SUCCESS ? (T(), s("div", {
868
868
  key: 1,
869
869
  class: v(a())
870
- }, [f(P(ue), { class: "h-6 w-6 text-green-500" }), r[1] ||= c("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == P(Y).WARNING ? (T(), s("div", {
870
+ }, [f(P(fe), { class: "h-6 w-6 text-green-500" }), r[1] ||= c("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == P(Y).WARNING ? (T(), s("div", {
871
871
  key: 2,
872
872
  class: v(a())
873
- }, [f(P(be), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= c("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : o("", !0),
874
- c("div", Rt, N(e.description), 1),
873
+ }, [f(P(Se), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= c("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : o("", !0),
874
+ c("div", zt, N(e.description), 1),
875
875
  e.hasCloseIcon ? (T(), s("button", {
876
876
  key: 3,
877
877
  type: "button",
878
878
  class: "ml-auto -mx-1.5 -my-1.5 bg-white text-gray-400 hover:text-gray-900 rounded-lg focus:ring-2 focus:ring-gray-300 p-1.5 hover:bg-gray-100 inline-flex items-center justify-center h-8 w-8 dark:text-gray-500 dark:hover:text-white dark:bg-gray-800 dark:hover:bg-gray-700 cursor-pointer",
879
879
  "aria-label": "Close",
880
880
  onClick: i
881
- }, [r[3] ||= c("span", { class: "sr-only" }, "Close", -1), f(P(B), { class: "h-6 w-6 text-gray-500" })])) : o("", !0)
881
+ }, [r[3] ||= c("span", { class: "sr-only" }, "Close", -1), f(P(z), { class: "h-6 w-6 text-gray-500" })])) : o("", !0)
882
882
  ])], 2)) : o("", !0);
883
883
  }
884
- }), Bt = { class: "w-13" }, Vt = /* @__PURE__ */ p({
884
+ }), Vt = { class: "w-13" }, Ht = /* @__PURE__ */ p({
885
885
  __name: "ColoredSquares",
886
886
  props: { color: {
887
887
  type: String,
@@ -902,25 +902,25 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
902
902
  function i() {
903
903
  let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
904
904
  switch (t.color) {
905
- case G.GREEN:
905
+ case W.GREEN:
906
906
  n = "green";
907
907
  break;
908
- case G.RED:
908
+ case W.RED:
909
909
  n = "red";
910
910
  break;
911
- case G.BLUE:
911
+ case W.BLUE:
912
912
  n = "blue";
913
913
  break;
914
- case G.YELLOW:
914
+ case W.YELLOW:
915
915
  n = "yellow";
916
916
  break;
917
- case G.NONE: return e;
917
+ case W.NONE: return e;
918
918
  }
919
919
  return e + " bg-" + n + "-100 text-" + n + "-800";
920
920
  }
921
- return (e, t) => (T(), s("div", Bt, [c("div", { class: v(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [A(e.$slots, "default"), c("div", { class: v(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
921
+ return (e, t) => (T(), s("div", Vt, [c("div", { class: v(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [A(e.$slots, "default"), c("div", { class: v(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
922
922
  }
923
- }), Ht = { class: "flex items-start justify-between" }, Ut = { class: "min-w-0" }, Wt = /* @__PURE__ */ p({
923
+ }), Ut = { class: "flex items-start justify-between" }, Wt = { class: "min-w-0" }, Gt = /* @__PURE__ */ p({
924
924
  __name: "EarningsCard",
925
925
  props: {
926
926
  title: { default: "TOTAL EARNINGS" },
@@ -975,7 +975,7 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
975
975
  return (n, r) => (T(), s("div", { class: v(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (T(), s("div", {
976
976
  key: 0,
977
977
  class: v(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
978
- }, N(t.badge), 3)) : o("", !0), c("div", Ht, [c("div", Ut, [
978
+ }, N(t.badge), 3)) : o("", !0), c("div", Ut, [c("div", Wt, [
979
979
  c("p", { class: v(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, N(t.title), 3),
980
980
  c("p", { class: v(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, N(f.value), 3),
981
981
  c("p", { class: v(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, N(t.subtitle), 3)
@@ -989,10 +989,10 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
989
989
  "stroke-linejoin": "round"
990
990
  }, [l.value ? (T(), s(e, { key: 0 }, [r[0] ||= c("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= c("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (T(), s(e, { key: 1 }, [r[2] ||= c("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= c("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
991
991
  }
992
- }), Gt = {
992
+ }), Kt = {
993
993
  key: 0,
994
994
  class: "font-bold text-green-800 dark:text-green-400"
995
- }, Kt = { key: 0 }, qt = { key: 0 }, Jt = "font-bold", Yt = /* @__PURE__ */ p({
995
+ }, qt = { key: 0 }, Jt = { key: 0 }, Yt = "font-bold", Xt = /* @__PURE__ */ p({
996
996
  __name: "EuroAmount",
997
997
  props: {
998
998
  amount: {
@@ -1012,20 +1012,20 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
1012
1012
  },
1013
1013
  setup(t) {
1014
1014
  let n = t, r = i(() => n.amount !== null && n.amount !== void 0), a = i(() => r.value && n.amount < 0), c = i(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = i(() => a.value || c.value), u = i(() => !a.value && !c.value && n.beforeAmount !== null && n.beforeAmount !== void 0);
1015
- return (n, i) => (T(), s(e, null, [r.value && u.value ? (T(), s("span", Gt, [d(N(t.amount) + " ", 1), t.showCurrency ? (T(), s("span", Kt, "€")) : o("", !0)])) : o("", !0), r.value && !u.value ? (T(), s("span", {
1015
+ return (n, i) => (T(), s(e, null, [r.value && u.value ? (T(), s("span", Kt, [d(N(t.amount) + " ", 1), t.showCurrency ? (T(), s("span", qt, "€")) : o("", !0)])) : o("", !0), r.value && !u.value ? (T(), s("span", {
1016
1016
  key: 1,
1017
- class: v([Jt, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
1018
- }, [d(N(t.amount) + " ", 1), t.showCurrency ? (T(), s("span", qt, "€")) : o("", !0)], 2)) : o("", !0)], 64));
1017
+ class: v([Yt, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
1018
+ }, [d(N(t.amount) + " ", 1), t.showCurrency ? (T(), s("span", Jt, "€")) : o("", !0)], 2)) : o("", !0)], 64));
1019
1019
  }
1020
- }), Xt = { "aria-label": "Pagination" }, Zt = { class: "flex list-none p-0 m-0" }, Qt = [
1020
+ }), Zt = { "aria-label": "Pagination" }, Qt = { class: "flex list-none p-0 m-0" }, $t = [
1021
1021
  "aria-current",
1022
1022
  "aria-label",
1023
1023
  "onClick"
1024
- ], $t = {
1024
+ ], en = {
1025
1025
  key: 1,
1026
1026
  "aria-hidden": "true",
1027
1027
  class: "inline-block border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-not-allowed"
1028
- }, en = /* @__PURE__ */ p({
1028
+ }, tn = /* @__PURE__ */ p({
1029
1029
  __name: "Pagination",
1030
1030
  props: {
1031
1031
  totalItems: {
@@ -1053,31 +1053,31 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
1053
1053
  function d(e) {
1054
1054
  e === i.value || e < 1 || e > a.value || (i.value = e, u(e), l("page-changed", e));
1055
1055
  }
1056
- return I(() => [r.totalItems, r.itemsPerPage], () => {
1056
+ return ae(() => [r.totalItems, r.itemsPerPage], () => {
1057
1057
  let e = Number(r.itemsPerPage) > 0 ? Number(r.itemsPerPage) : 20, t = Number(r.totalItems) > 0 ? Number(r.totalItems) : 0;
1058
1058
  a.value = Math.ceil(t / e), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
1059
- }, { immediate: !0 }), (t, n) => (T(), s("nav", Xt, [c("ul", Zt, [(T(!0), s(e, null, k(o.value, (e, t) => (T(), s("li", {
1059
+ }, { immediate: !0 }), (t, n) => (T(), s("nav", Zt, [c("ul", Qt, [(T(!0), s(e, null, k(o.value, (e, t) => (T(), s("li", {
1060
1060
  key: t,
1061
1061
  class: "mr-1"
1062
- }, [e === 0 ? (T(), s("span", $t, "...")) : (T(), s("button", {
1062
+ }, [e === 0 ? (T(), s("span", en, "...")) : (T(), s("button", {
1063
1063
  key: 0,
1064
1064
  type: "button",
1065
1065
  "aria-current": e === i.value ? "page" : void 0,
1066
1066
  "aria-label": `Go to page ${e}`,
1067
1067
  onClick: (t) => d(e),
1068
1068
  class: v(["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 }])
1069
- }, N(e), 11, Qt))]))), 128))])]));
1069
+ }, N(e), 11, $t))]))), 128))])]));
1070
1070
  }
1071
- }), tn = { key: 0 }, nn = {
1071
+ }), nn = { key: 0 }, rn = {
1072
1072
  key: 0,
1073
1073
  class: "flex items-center space-x-2"
1074
- }, rn = {
1074
+ }, an = {
1075
1075
  key: 1,
1076
1076
  class: "flex items-center space-x-2"
1077
- }, an = {
1077
+ }, on = {
1078
1078
  key: 2,
1079
1079
  class: "flex items-center space-x-2"
1080
- }, on = /* @__PURE__ */ p({
1080
+ }, sn = /* @__PURE__ */ p({
1081
1081
  __name: "TrendArrow",
1082
1082
  props: {
1083
1083
  number: {
@@ -1091,22 +1091,22 @@ var Fe = { class: "min-w-0 flex-1" }, Ie = {
1091
1091
  },
1092
1092
  setup(e) {
1093
1093
  let t = e, n = i(() => t.number !== null && t.number !== void 0 && t.number < 0), r = i(() => t.number === 0);
1094
- return (i, a) => e.number !== null && e.number !== void 0 ? (T(), s("div", tn, [n.value ? (T(), s("span", nn, [f(ze, { color: P(G).RED }, {
1095
- default: L(() => [d(N(e.number) + N(t.icon), 1)]),
1094
+ return (i, a) => e.number !== null && e.number !== void 0 ? (T(), s("div", nn, [n.value ? (T(), s("span", rn, [f(Ve, { color: P(W).RED }, {
1095
+ default: I(() => [d(N(e.number) + N(t.icon), 1)]),
1096
1096
  _: 1
1097
- }, 8, ["color"]), f(P(oe), { class: "h-5 w-5 text-red-500" })])) : r.value ? (T(), s("span", rn, [f(ze, { color: P(G).GRAY }, {
1098
- default: L(() => [d(N(e.number) + N(t.icon), 1)]),
1097
+ }, 8, ["color"]), f(P(se), { class: "h-5 w-5 text-red-500" })])) : r.value ? (T(), s("span", an, [f(Ve, { color: P(W).GRAY }, {
1098
+ default: I(() => [d(N(e.number) + N(t.icon), 1)]),
1099
1099
  _: 1
1100
- }, 8, ["color"]), f(P(we), { class: "h-5 w-5 text-gray-400" })])) : (T(), s("span", an, [f(ze, { color: P(G).GREEN }, {
1101
- default: L(() => [d(N(e.number) + N(t.icon), 1)]),
1100
+ }, 8, ["color"]), f(P(Ee), { class: "h-5 w-5 text-gray-400" })])) : (T(), s("span", on, [f(Ve, { color: P(W).GREEN }, {
1101
+ default: I(() => [d(N(e.number) + N(t.icon), 1)]),
1102
1102
  _: 1
1103
- }, 8, ["color"]), f(P(se), { class: "h-5 w-5 text-green-500" })]))])) : o("", !0);
1103
+ }, 8, ["color"]), f(P(le), { class: "h-5 w-5 text-green-500" })]))])) : o("", !0);
1104
1104
  }
1105
1105
  });
1106
1106
  //#endregion
1107
1107
  //#region src/composables/useThemeClasses.ts
1108
1108
  function Z() {
1109
- let { isDark: e } = W();
1109
+ let { isDark: e } = U();
1110
1110
  return E({
1111
1111
  card: i(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
1112
1112
  cardAlt: i(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
@@ -1133,7 +1133,7 @@ function Z() {
1133
1133
  }
1134
1134
  //#endregion
1135
1135
  //#region src/composables/useEscapeKey.ts
1136
- function sn(e) {
1136
+ function cn(e) {
1137
1137
  function t(t) {
1138
1138
  t.key === "Escape" && e();
1139
1139
  }
@@ -1141,7 +1141,7 @@ function sn(e) {
1141
1141
  }
1142
1142
  //#endregion
1143
1143
  //#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
1144
- var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-w-0" }, un = { class: "p-6 overflow-y-auto flex-1" }, dn = { class: "p-6" }, fn = { class: "flex items-start gap-4" }, pn = { class: "flex-1" }, mn = { class: "mt-4" }, hn = { class: "mt-6 flex gap-3 justify-end" }, gn = /* @__PURE__ */ p({
1144
+ var ln = { class: "flex items-start gap-4 min-w-0" }, un = { class: "flex-1 min-w-0" }, dn = { class: "p-6 overflow-y-auto flex-1" }, fn = { class: "p-6" }, pn = { class: "flex items-start gap-4" }, mn = { class: "flex-1" }, hn = { class: "mt-4" }, gn = { class: "mt-6 flex gap-3 justify-end" }, _n = /* @__PURE__ */ p({
1145
1145
  __name: "BaseModalShell",
1146
1146
  props: {
1147
1147
  title: {},
@@ -1161,11 +1161,11 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1161
1161
  },
1162
1162
  emits: ["cancel", "backdrop"],
1163
1163
  setup(e, { emit: n }) {
1164
- let r = e, l = n, { isDark: u } = W(), d = Z(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = i(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = i(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1164
+ let r = e, l = n, { isDark: u } = U(), d = Z(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = i(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = i(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1165
1165
  function h() {
1166
1166
  l("backdrop"), r.manualClose || l("cancel");
1167
1167
  }
1168
- return sn(() => {
1168
+ return cn(() => {
1169
1169
  r.manualClose || l("cancel");
1170
1170
  }), (n, r) => (T(), a(t, { to: "body" }, [c("div", {
1171
1171
  class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
@@ -1176,19 +1176,19 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1176
1176
  }, [e.scrollable ? (T(), s("div", {
1177
1177
  key: 0,
1178
1178
  class: v(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
1179
- onClick: r[0] ||= z(() => {}, ["stop"])
1179
+ onClick: r[0] ||= R(() => {}, ["stop"])
1180
1180
  }, [
1181
- c("div", { class: v(["flex items-start justify-between gap-4 p-6 border-b shrink-0", P(d).border]) }, [c("div", cn, [A(n.$slots, "icon", {}, () => [c("div", { class: v(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(T(), a(M(e.icon), {
1181
+ c("div", { class: v(["flex items-start justify-between gap-4 p-6 border-b shrink-0", P(d).border]) }, [c("div", ln, [A(n.$slots, "icon", {}, () => [c("div", { class: v(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(T(), a(M(e.icon), {
1182
1182
  class: v(["h-6 w-6", e.iconClass]),
1183
1183
  "aria-hidden": "true"
1184
- }, null, 8, ["class"]))], 2)]), c("div", ln, [c("h3", {
1184
+ }, null, 8, ["class"]))], 2)]), c("div", un, [c("h3", {
1185
1185
  id: f,
1186
1186
  class: v(["text-lg font-medium", P(d).primaryText])
1187
1187
  }, N(e.title), 3), e.subtitle ? (T(), s("p", {
1188
1188
  key: 0,
1189
1189
  class: v(["text-sm mt-1 break-all", P(d).mutedText])
1190
1190
  }, N(e.subtitle), 3)) : o("", !0)])]), A(n.$slots, "header-actions")], 2),
1191
- c("div", un, [A(n.$slots, "default")]),
1191
+ c("div", dn, [A(n.$slots, "default")]),
1192
1192
  n.$slots.footer ? (T(), s("div", {
1193
1193
  key: 0,
1194
1194
  class: v(["flex gap-3 justify-end p-6 border-t shrink-0", P(d).border])
@@ -1196,20 +1196,20 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1196
1196
  ], 2)) : (T(), s("div", {
1197
1197
  key: 1,
1198
1198
  class: v(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
1199
- onClick: r[1] ||= z(() => {}, ["stop"])
1200
- }, [c("div", dn, [
1201
- c("div", fn, [A(n.$slots, "icon", {}, () => [c("div", { class: v(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(T(), a(M(e.icon), {
1199
+ onClick: r[1] ||= R(() => {}, ["stop"])
1200
+ }, [c("div", fn, [
1201
+ c("div", pn, [A(n.$slots, "icon", {}, () => [c("div", { class: v(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(T(), a(M(e.icon), {
1202
1202
  class: v(["h-6 w-6", e.iconClass]),
1203
1203
  "aria-hidden": "true"
1204
- }, null, 8, ["class"]))], 2)]), c("div", pn, [c("h3", {
1204
+ }, null, 8, ["class"]))], 2)]), c("div", mn, [c("h3", {
1205
1205
  id: f,
1206
1206
  class: v(["text-lg font-medium", P(d).primaryText])
1207
1207
  }, N(e.title), 3)])]),
1208
- c("div", mn, [A(n.$slots, "default")]),
1209
- c("div", hn, [A(n.$slots, "footer")])
1208
+ c("div", hn, [A(n.$slots, "default")]),
1209
+ c("div", gn, [A(n.$slots, "footer")])
1210
1210
  ])], 2))])]));
1211
1211
  }
1212
- }), _n = ["aria-expanded"], vn = { class: "flex items-center gap-3" }, yn = /* @__PURE__ */ p({
1212
+ }), vn = ["aria-expanded"], yn = { class: "flex items-center gap-3" }, bn = /* @__PURE__ */ p({
1213
1213
  __name: "BaseCollapsibleSection",
1214
1214
  props: {
1215
1215
  title: {},
@@ -1219,13 +1219,13 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1219
1219
  },
1220
1220
  emits: ["toggle"],
1221
1221
  setup(e, { emit: t }) {
1222
- let n = e, r = t, { isDark: a } = W(), l = Z(), u = i(() => a.value ? "text-gray-100" : "text-gray-700"), d = i(() => a.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = i(() => a.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = i(() => n.bodyClass === void 0 ? a.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1222
+ let n = e, r = t, { isDark: a } = U(), l = Z(), u = i(() => a.value ? "text-gray-100" : "text-gray-700"), d = i(() => a.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = i(() => a.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = i(() => n.bodyClass === void 0 ? a.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1223
1223
  return (t, n) => (T(), s("section", { class: v(["rounded-xl border transition-colors", P(l).cardAlt]) }, [c("button", {
1224
1224
  type: "button",
1225
1225
  class: v(["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"]]),
1226
1226
  "aria-expanded": !e.collapsed,
1227
1227
  onClick: n[0] ||= (e) => r("toggle")
1228
- }, [c("div", vn, [c("h2", { class: v(["text-base font-semibold", u.value]) }, N(e.title), 3), e.badge ? (T(), s("span", {
1228
+ }, [c("div", yn, [c("h2", { class: v(["text-base font-semibold", u.value]) }, N(e.title), 3), e.badge ? (T(), s("span", {
1229
1229
  key: 0,
1230
1230
  class: v(["text-xs px-2 py-0.5 rounded-full", f.value])
1231
1231
  }, N(e.badge), 3)) : o("", !0)]), (T(), s("svg", {
@@ -1239,15 +1239,15 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1239
1239
  "stroke-linecap": "round",
1240
1240
  "stroke-linejoin": "round",
1241
1241
  d: "M19 9l-7 7-7-7"
1242
- }, null, -1)]], 2))], 10, _n), R(c("div", { class: v(["p-6 border-t rounded-b-xl", [P(l).border, p.value]]) }, [A(t.$slots, "default")], 2), [[ie, !e.collapsed]])], 2));
1242
+ }, null, -1)]], 2))], 10, vn), L(c("div", { class: v(["p-6 border-t rounded-b-xl", [P(l).border, p.value]]) }, [A(t.$slots, "default")], 2), [[ie, !e.collapsed]])], 2));
1243
1243
  }
1244
- }), bn = ["disabled"], xn = ["disabled"], Sn = {
1244
+ }), xn = ["disabled"], Sn = ["disabled"], Cn = {
1245
1245
  key: 0,
1246
1246
  class: "w-4 h-4 animate-spin",
1247
1247
  fill: "none",
1248
1248
  viewBox: "0 0 24 24",
1249
1249
  "aria-hidden": "true"
1250
- }, Cn = /* @__PURE__ */ p({
1250
+ }, wn = /* @__PURE__ */ p({
1251
1251
  __name: "BaseConfirmModal",
1252
1252
  props: {
1253
1253
  title: {},
@@ -1263,32 +1263,32 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1263
1263
  },
1264
1264
  emits: ["confirm", "cancel"],
1265
1265
  setup(e, { emit: t }) {
1266
- let n = e, r = t, { isDark: i } = W(), l = Z();
1266
+ let n = e, r = t, { isDark: i } = U(), l = Z();
1267
1267
  function u() {
1268
1268
  n.submitting || r("confirm");
1269
1269
  }
1270
1270
  function f() {
1271
1271
  n.submitting || r("cancel");
1272
1272
  }
1273
- return (t, n) => (T(), a(gn, {
1273
+ return (t, n) => (T(), a(_n, {
1274
1274
  title: e.title,
1275
- icon: P(be),
1275
+ icon: P(Se),
1276
1276
  "icon-bg-class": e.variant === "danger" ? P(i) ? "bg-red-900/30" : "bg-red-50" : P(i) ? "bg-amber-900/30" : "bg-amber-50",
1277
1277
  "icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
1278
1278
  "manual-close": e.submitting,
1279
1279
  onCancel: f
1280
1280
  }, {
1281
- footer: L(() => [c("button", {
1281
+ footer: I(() => [c("button", {
1282
1282
  type: "button",
1283
1283
  disabled: e.submitting,
1284
1284
  class: v(["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", [P(l).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1285
1285
  onClick: f
1286
- }, N(e.cancelText), 11, bn), c("button", {
1286
+ }, N(e.cancelText), 11, xn), c("button", {
1287
1287
  type: "button",
1288
1288
  disabled: e.submitting,
1289
1289
  class: v(["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"]]),
1290
1290
  onClick: u
1291
- }, [e.submitting ? (T(), s("svg", Sn, [...n[0] ||= [c("circle", {
1291
+ }, [e.submitting ? (T(), s("svg", Cn, [...n[0] ||= [c("circle", {
1292
1292
  class: "opacity-25",
1293
1293
  cx: "12",
1294
1294
  cy: "12",
@@ -1299,8 +1299,8 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1299
1299
  class: "opacity-75",
1300
1300
  fill: "currentColor",
1301
1301
  d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
1302
- }, null, -1)]])) : o("", !0), d(" " + N(e.submitting ? e.submittingText : e.confirmText), 1)], 10, xn)]),
1303
- default: L(() => [A(t.$slots, "message", {}, () => [c("p", { class: v(["text-sm", P(i) ? "text-gray-300" : "text-gray-600"]) }, N(e.message), 3)]), A(t.$slots, "default")]),
1302
+ }, null, -1)]])) : o("", !0), d(" " + N(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Sn)]),
1303
+ default: I(() => [A(t.$slots, "message", {}, () => [c("p", { class: v(["text-sm", P(i) ? "text-gray-300" : "text-gray-600"]) }, N(e.message), 3)]), A(t.$slots, "default")]),
1304
1304
  _: 3
1305
1305
  }, 8, [
1306
1306
  "title",
@@ -1310,7 +1310,7 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1310
1310
  "manual-close"
1311
1311
  ]));
1312
1312
  }
1313
- }), wn = { class: "mt-4" }, Tn = ["placeholder"], En = ["disabled"], Dn = /* @__PURE__ */ p({
1313
+ }), Tn = { class: "mt-4" }, En = ["placeholder"], Dn = ["disabled"], On = /* @__PURE__ */ p({
1314
1314
  __name: "BaseTextInputModal",
1315
1315
  props: {
1316
1316
  title: {},
@@ -1328,7 +1328,7 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1328
1328
  },
1329
1329
  emits: ["confirm", "cancel"],
1330
1330
  setup(e, { emit: t }) {
1331
- let n = e, r = t, { isDark: i } = W(), o = Z(), s = O(n.initialValue), u = O(null);
1331
+ let n = e, r = t, { isDark: i } = U(), o = Z(), s = O(n.initialValue), u = O(null);
1332
1332
  S(async () => {
1333
1333
  await _(), u.value?.focus();
1334
1334
  });
@@ -1341,13 +1341,13 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1341
1341
  function p() {
1342
1342
  s.value.trim() === (n.initialValue ?? "").trim() && f();
1343
1343
  }
1344
- return sn(f), (t, n) => (T(), a(gn, {
1344
+ return cn(f), (t, n) => (T(), a(_n, {
1345
1345
  title: e.title,
1346
- icon: P(ve),
1346
+ icon: P(be),
1347
1347
  "manual-close": "",
1348
1348
  onBackdrop: p
1349
1349
  }, l({
1350
- footer: L(() => [c("button", {
1350
+ footer: I(() => [c("button", {
1351
1351
  type: "button",
1352
1352
  class: v(["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", P(o).ghostButton]),
1353
1353
  onClick: f
@@ -1356,24 +1356,24 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1356
1356
  disabled: !s.value.trim() || e.submitting,
1357
1357
  class: v(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", [!s.value.trim() || e.submitting ? "bg-emerald-400 cursor-not-allowed" : "bg-emerald-600 hover:bg-emerald-700 cursor-pointer"]]),
1358
1358
  onClick: d
1359
- }, N(e.submitting ? e.submittingText : e.confirmText), 11, En)]),
1360
- default: L(() => [c("p", { class: v(["text-sm", P(i) ? "text-gray-300" : "text-gray-600"]) }, N(e.message), 3), c("div", wn, [c("label", { class: v(["block text-sm font-medium mb-1", P(o).label]) }, N(e.inputLabel), 3), R(c("input", {
1359
+ }, N(e.submitting ? e.submittingText : e.confirmText), 11, Dn)]),
1360
+ default: I(() => [c("p", { class: v(["text-sm", P(i) ? "text-gray-300" : "text-gray-600"]) }, N(e.message), 3), c("div", Tn, [c("label", { class: v(["block text-sm font-medium mb-1", P(o).label]) }, N(e.inputLabel), 3), L(c("input", {
1361
1361
  ref_key: "nameInput",
1362
1362
  ref: u,
1363
1363
  "onUpdate:modelValue": n[0] ||= (e) => s.value = e,
1364
1364
  type: "text",
1365
1365
  placeholder: e.placeholder,
1366
1366
  class: v(["w-full px-3 py-2 rounded-md border text-sm transition-colors", P(i) ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:outline-none focus:border-emerald-500" : "bg-white border-gray-300 text-gray-900 placeholder-gray-400 focus:outline-none focus:border-emerald-500"]),
1367
- onKeyup: ae(d, ["enter"])
1368
- }, null, 42, Tn), [[re, s.value]])])]),
1367
+ onKeyup: oe(d, ["enter"])
1368
+ }, null, 42, En), [[re, s.value]])])]),
1369
1369
  _: 2
1370
1370
  }, [t.$slots.icon ? {
1371
1371
  name: "icon",
1372
- fn: L(() => [A(t.$slots, "icon")]),
1372
+ fn: I(() => [A(t.$slots, "icon")]),
1373
1373
  key: "0"
1374
1374
  } : void 0]), 1032, ["title", "icon"]));
1375
1375
  }
1376
- }), On = { class: "flex items-center justify-center min-h-[60vh]" }, kn = { class: "text-center px-6" }, An = /* @__PURE__ */ p({
1376
+ }), kn = { class: "flex items-center justify-center min-h-[60vh]" }, An = { class: "text-center px-6" }, jn = /* @__PURE__ */ p({
1377
1377
  __name: "BaseNotFoundPage",
1378
1378
  props: {
1379
1379
  code: { default: "404" },
@@ -1382,12 +1382,12 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1382
1382
  homeLabel: { default: "Go home" }
1383
1383
  },
1384
1384
  setup(e) {
1385
- let t = e, n = Ae(), { isDark: r } = W(), i = Z();
1385
+ let t = e, n = Me(), { isDark: r } = U(), i = Z();
1386
1386
  function a() {
1387
1387
  n.push({ name: t.homeRouteName });
1388
1388
  }
1389
- return (t, n) => (T(), s("div", On, [c("div", kn, [
1390
- f(P(be), { class: v(["w-16 h-16 mx-auto mb-4", P(i).illustration]) }, null, 8, ["class"]),
1389
+ return (t, n) => (T(), s("div", kn, [c("div", An, [
1390
+ f(P(Se), { class: v(["w-16 h-16 mx-auto mb-4", P(i).illustration]) }, null, 8, ["class"]),
1391
1391
  c("h1", { class: v(["text-4xl font-bold mb-2", P(r) ? "text-gray-200" : "text-gray-800"]) }, N(e.code), 3),
1392
1392
  c("p", { class: v(["text-lg mb-6", P(i).dimTextAlt]) }, N(e.message), 3),
1393
1393
  c("button", {
@@ -1396,19 +1396,19 @@ var cn = { class: "flex items-start gap-4 min-w-0" }, ln = { class: "flex-1 min-
1396
1396
  }, N(e.homeLabel), 3)
1397
1397
  ])]));
1398
1398
  }
1399
- }), jn = O(!1);
1400
- function Mn() {
1399
+ }), Mn = O(!1);
1400
+ function Nn() {
1401
1401
  function e() {
1402
- jn.value = !0;
1402
+ Mn.value = !0;
1403
1403
  }
1404
1404
  function t() {
1405
- jn.value = !1;
1405
+ Mn.value = !1;
1406
1406
  }
1407
1407
  function n() {
1408
- jn.value = !jn.value;
1408
+ Mn.value = !Mn.value;
1409
1409
  }
1410
1410
  return {
1411
- mobileOpen: jn,
1411
+ mobileOpen: Mn,
1412
1412
  open: e,
1413
1413
  close: t,
1414
1414
  toggle: n
@@ -1416,19 +1416,19 @@ function Mn() {
1416
1416
  }
1417
1417
  //#endregion
1418
1418
  //#region src/composables/useSidebarCollapse.ts
1419
- var Q = O(!1), Nn = !1, Pn = "mgv-sidebar-collapsed";
1420
- function Fn(e) {
1421
- if (!Nn && (Nn = !0, Pn = e, typeof window < "u")) {
1422
- let e = window.localStorage?.getItem(Pn);
1419
+ var Q = O(!1), Pn = !1, Fn = "mgv-sidebar-collapsed";
1420
+ function In(e) {
1421
+ if (!Pn && (Pn = !0, Fn = e, typeof window < "u")) {
1422
+ let e = window.localStorage?.getItem(Fn);
1423
1423
  e && (Q.value = e === "true"), m(!0).run(() => {
1424
- I(Q, (e) => {
1425
- window.localStorage?.setItem(Pn, String(e));
1424
+ ae(Q, (e) => {
1425
+ window.localStorage?.setItem(Fn, String(e));
1426
1426
  });
1427
1427
  });
1428
1428
  }
1429
1429
  }
1430
- function In(e) {
1431
- Fn(e?.storageKey ?? Pn);
1430
+ function Ln(e) {
1431
+ In(e?.storageKey ?? Fn);
1432
1432
  function t() {
1433
1433
  Q.value = !0;
1434
1434
  }
@@ -1447,16 +1447,16 @@ function In(e) {
1447
1447
  }
1448
1448
  //#endregion
1449
1449
  //#region src/composables/useNotifications.ts
1450
- var $ = O([]), Ln = O(!1), Rn = i(() => $.value.filter((e) => !e.read).length);
1451
- function zn() {
1450
+ var $ = O([]), Rn = O(!1), zn = i(() => $.value.filter((e) => !e.read).length);
1451
+ function Bn() {
1452
1452
  function e() {
1453
- Ln.value = !0;
1453
+ Rn.value = !0;
1454
1454
  }
1455
1455
  function t() {
1456
- Ln.value = !1;
1456
+ Rn.value = !1;
1457
1457
  }
1458
1458
  function n() {
1459
- Ln.value = !Ln.value;
1459
+ Rn.value = !Rn.value;
1460
1460
  }
1461
1461
  function r(e) {
1462
1462
  $.value = e;
@@ -1484,8 +1484,8 @@ function zn() {
1484
1484
  }
1485
1485
  return {
1486
1486
  notifications: $,
1487
- unreadCount: Rn,
1488
- open: Ln,
1487
+ unreadCount: zn,
1488
+ open: Rn,
1489
1489
  openPanel: e,
1490
1490
  closePanel: t,
1491
1491
  togglePanel: n,
@@ -1499,22 +1499,22 @@ function zn() {
1499
1499
  }
1500
1500
  //#endregion
1501
1501
  //#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
1502
- var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }, Hn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Un = { class: "space-y-0.5" }, Wn = [
1502
+ var Vn = ["aria-label", "aria-expanded"], Hn = { class: "flex flex-col h-full" }, Un = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Wn = { class: "space-y-0.5" }, Gn = [
1503
1503
  "aria-current",
1504
1504
  "title",
1505
1505
  "onClick"
1506
- ], Gn = ["aria-label"], Kn = { class: "relative shrink-0" }, qn = {
1506
+ ], Kn = ["aria-label"], qn = { class: "relative shrink-0" }, Jn = {
1507
1507
  key: 0,
1508
1508
  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"
1509
- }, Jn = [
1509
+ }, Yn = [
1510
1510
  "title",
1511
1511
  "aria-label",
1512
1512
  "aria-pressed"
1513
- ], Yn = [
1513
+ ], Xn = [
1514
1514
  "title",
1515
1515
  "aria-label",
1516
1516
  "aria-pressed"
1517
- ], Xn = /*#__PURE__*/ ((e, t) => {
1517
+ ], Zn = /*#__PURE__*/ ((e, t) => {
1518
1518
  let n = e.__vccOpts || e;
1519
1519
  for (let [e, r] of t) n[e] = r;
1520
1520
  return n;
@@ -1539,8 +1539,8 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1539
1539
  }
1540
1540
  },
1541
1541
  setup(t) {
1542
- let n = t, r = Ae(), l = ke(), { isDark: u, toggleTheme: p } = W(), { mobileOpen: m, close: h, toggle: g } = Mn(), { collapsed: y, toggle: b } = In(), { unreadCount: x, togglePanel: S } = zn(), C = i(() => n.collapsible && y.value), w = O(null), E = null;
1543
- I(m, async (e) => {
1542
+ let n = t, r = Me(), l = je(), { isDark: u, toggleTheme: p } = U(), { mobileOpen: m, close: h, toggle: g } = Nn(), { collapsed: y, toggle: b } = Ln(), { unreadCount: x, togglePanel: S } = Bn(), C = i(() => n.collapsible && y.value), w = O(null), E = null;
1543
+ ae(m, async (e) => {
1544
1544
  e ? (E = document.activeElement instanceof HTMLElement ? document.activeElement : null, await _(), w.value?.focus()) : (E?.focus(), E = null);
1545
1545
  });
1546
1546
  function D() {
@@ -1564,15 +1564,15 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1564
1564
  class: v(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", P(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1565
1565
  "aria-label": P(m) ? "Close navigation menu" : "Open navigation menu",
1566
1566
  "aria-expanded": P(m)
1567
- }, [P(m) ? (T(), a(P(B), {
1567
+ }, [P(m) ? (T(), a(P(z), {
1568
1568
  key: 1,
1569
1569
  class: "w-6 h-6",
1570
1570
  "aria-hidden": "true"
1571
- })) : (T(), a(P(ce), {
1571
+ })) : (T(), a(P(ue), {
1572
1572
  key: 0,
1573
1573
  class: "w-6 h-6",
1574
1574
  "aria-hidden": "true"
1575
- }))], 10, Bn)], 2),
1575
+ }))], 10, Vn)], 2),
1576
1576
  P(m) ? (T(), s("div", {
1577
1577
  key: 0,
1578
1578
  class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
@@ -1587,7 +1587,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1587
1587
  P(m) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
1588
1588
  t.collapsible && P(y) ? "lg:w-16" : "lg:w-60"
1589
1589
  ]])
1590
- }, [c("div", Vn, [
1590
+ }, [c("div", Hn, [
1591
1591
  c("div", { class: v(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": C.value }]) }, [c("button", {
1592
1592
  type: "button",
1593
1593
  onClick: D,
@@ -1600,17 +1600,17 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1600
1600
  onClick: r[2] ||= (...e) => P(h) && P(h)(...e),
1601
1601
  class: v(["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", P(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1602
1602
  "aria-label": "Close navigation menu"
1603
- }, [f(P(B), {
1603
+ }, [f(P(z), {
1604
1604
  class: "w-5 h-5",
1605
1605
  "aria-hidden": "true"
1606
1606
  })], 2)], 2),
1607
- c("nav", Hn, [(T(!0), s(e, null, k(t.sections, (t) => (T(), s("div", { key: t.title }, [c("p", { class: v(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": C.value }]) }, N(t.title), 3), c("ul", Un, [(T(!0), s(e, null, k(t.items, (e) => (T(), s("li", { key: e.name }, [c("button", {
1607
+ c("nav", Un, [(T(!0), s(e, null, k(t.sections, (t) => (T(), s("div", { key: t.title }, [c("p", { class: v(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": C.value }]) }, N(t.title), 3), c("ul", Wn, [(T(!0), s(e, null, k(t.items, (e) => (T(), s("li", { key: e.name }, [c("button", {
1608
1608
  type: "button",
1609
1609
  "aria-current": j(e.name) ? "page" : void 0,
1610
1610
  title: C.value ? e.label : void 0,
1611
1611
  onClick: (t) => ee(e.name),
1612
1612
  class: v(["flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors w-full text-left cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", [j(e.name) ? P(u) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : P(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": C.value }]])
1613
- }, [(T(), a(M(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), c("span", { class: v({ "lg:hidden": C.value }) }, N(e.label), 3)], 10, Wn)]))), 128))])]))), 128))]),
1613
+ }, [(T(), a(M(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), c("span", { class: v({ "lg:hidden": C.value }) }, N(e.label), 3)], 10, Gn)]))), 128))])]))), 128))]),
1614
1614
  c("div", { class: v(["px-4 py-4 border-t transition-colors space-y-3", P(u) ? "border-gray-800" : "border-gray-200"]) }, [
1615
1615
  t.showNotifications ? (T(), s("button", {
1616
1616
  key: 0,
@@ -1619,10 +1619,10 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1619
1619
  title: "Notifications",
1620
1620
  "aria-label": P(x) > 0 ? `Notifications, ${P(x)} unread` : "Notifications",
1621
1621
  class: v(["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", [P(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": C.value }]])
1622
- }, [c("span", Kn, [f(P(le), {
1622
+ }, [c("span", qn, [f(P(de), {
1623
1623
  class: "w-[18px] h-[18px]",
1624
1624
  "aria-hidden": "true"
1625
- }), P(x) > 0 ? (T(), s("span", qn, N(P(x) > 99 ? "99+" : P(x)), 1)) : o("", !0)]), c("span", { class: v({ "lg:hidden": C.value }) }, "Notifications", 2)], 10, Gn)) : o("", !0),
1625
+ }), P(x) > 0 ? (T(), s("span", Jn, N(P(x) > 99 ? "99+" : P(x)), 1)) : o("", !0)]), c("span", { class: v({ "lg:hidden": C.value }) }, "Notifications", 2)], 10, Kn)) : o("", !0),
1626
1626
  t.showThemeToggle ? (T(), s("button", {
1627
1627
  key: 1,
1628
1628
  type: "button",
@@ -1632,13 +1632,13 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1632
1632
  "aria-pressed": P(u),
1633
1633
  class: v(["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", [P(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": C.value }]])
1634
1634
  }, [
1635
- (T(), a(M(P(u) ? P(Ee) : P(Te)), {
1635
+ (T(), a(M(P(u) ? P(Oe) : P(De)), {
1636
1636
  class: v(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": C.value }]),
1637
1637
  "aria-hidden": "true"
1638
1638
  }, null, 8, ["class"])),
1639
1639
  c("span", { class: v({ "lg:hidden": C.value }) }, N(P(u) ? "Switch to light" : "Switch to dark"), 3),
1640
1640
  c("span", { class: v(["ml-auto relative w-9 h-5 rounded-full transition-colors", [P(u) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": C.value }]]) }, [c("span", { class: v(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", P(u) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
1641
- ], 10, Jn)) : o("", !0),
1641
+ ], 10, Yn)) : o("", !0),
1642
1642
  t.collapsible ? (T(), s("button", {
1643
1643
  key: 2,
1644
1644
  type: "button",
@@ -1647,10 +1647,10 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1647
1647
  "aria-label": P(y) ? "Expand sidebar" : "Collapse sidebar",
1648
1648
  "aria-pressed": P(y),
1649
1649
  class: v(["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", [P(u) ? "text-gray-400 hover:text-gray-100 hover:bg-gray-800" : "text-gray-600 hover:text-gray-900 hover:bg-gray-100", { "lg:justify-center": C.value }]])
1650
- }, [(T(), a(M(P(y) ? P(pe) : P(fe)), {
1650
+ }, [(T(), a(M(P(y) ? P(he) : P(me)), {
1651
1651
  class: "w-[18px] h-[18px] shrink-0",
1652
1652
  "aria-hidden": "true"
1653
- })), c("span", { class: v({ "lg:hidden": C.value }) }, "Collapse", 2)], 10, Yn)) : o("", !0),
1653
+ })), c("span", { class: v({ "lg:hidden": C.value }) }, "Collapse", 2)], 10, Xn)) : o("", !0),
1654
1654
  c("div", { class: v({ "lg:hidden": C.value }) }, [A(n.$slots, "status", {}, void 0, !0)], 2),
1655
1655
  c("div", { class: v({ "lg:hidden": C.value }) }, [A(n.$slots, "footer", {}, () => [t.appName || t.version ? (T(), s("div", {
1656
1656
  key: 0,
@@ -1664,26 +1664,26 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1664
1664
  ])], 2)
1665
1665
  ]));
1666
1666
  }
1667
- }), [["__scopeId", "data-v-bfce9dd7"]]), Zn = {
1667
+ }), [["__scopeId", "data-v-bfce9dd7"]]), Qn = {
1668
1668
  key: 1,
1669
1669
  class: "mt-4 flex justify-center py-6"
1670
- }, Qn = {
1670
+ }, $n = {
1671
1671
  key: 2,
1672
1672
  class: "mt-4 text-sm text-red-500",
1673
1673
  role: "alert"
1674
- }, $n = {
1674
+ }, er = {
1675
1675
  key: 3,
1676
1676
  class: "mt-4"
1677
- }, er = { class: "relative" }, tr = ["placeholder"], nr = {
1677
+ }, tr = { class: "relative" }, nr = ["placeholder"], rr = {
1678
1678
  key: 4,
1679
1679
  class: "mt-3 max-h-64 overflow-y-auto"
1680
- }, rr = ["aria-pressed", "onClick"], ir = { class: "flex-1 min-w-0" }, ar = {
1680
+ }, ir = ["aria-pressed", "onClick"], ar = { class: "flex-1 min-w-0" }, or = {
1681
1681
  key: 0,
1682
1682
  class: "text-center py-6"
1683
- }, or = {
1683
+ }, sr = {
1684
1684
  key: 1,
1685
1685
  class: "text-center py-6"
1686
- }, sr = ["disabled"], cr = ["disabled"], lr = /* @__PURE__ */ p({
1686
+ }, cr = ["disabled"], lr = ["disabled"], ur = /* @__PURE__ */ p({
1687
1687
  __name: "BaseEntityPickerModal",
1688
1688
  props: {
1689
1689
  title: {},
@@ -1705,7 +1705,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1705
1705
  },
1706
1706
  emits: ["confirm", "cancel"],
1707
1707
  setup(t, { emit: n }) {
1708
- let r = t, u = n, { isDark: d } = W(), p = Z(), m = O([]), h = O(!1), g = O(""), y = O(null), b = O(""), x = O(null), C = i(() => {
1708
+ let r = t, u = n, { isDark: d } = U(), p = Z(), m = O([]), h = O(!1), g = O(""), y = O(null), b = O(""), x = O(null), C = i(() => {
1709
1709
  let e = r.loader ? m.value : r.items;
1710
1710
  return r.excludeId ? e.filter((e) => e.id !== r.excludeId) : e;
1711
1711
  }), w = i(() => C.value.filter((e) => e.label.toLowerCase().includes(b.value.toLowerCase()))), E = {
@@ -1820,51 +1820,51 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1820
1820
  function ee() {
1821
1821
  r.submitting || u("cancel");
1822
1822
  }
1823
- return (n, r) => (T(), a(gn, {
1823
+ return (n, r) => (T(), a(_n, {
1824
1824
  title: t.title,
1825
- icon: P(xe),
1825
+ icon: P(Ce),
1826
1826
  "icon-bg-class": j.value.iconBg,
1827
1827
  "icon-class": j.value.iconText,
1828
1828
  "manual-close": t.submitting,
1829
1829
  onCancel: ee
1830
1830
  }, l({
1831
- footer: L(() => [c("button", {
1831
+ footer: I(() => [c("button", {
1832
1832
  type: "button",
1833
1833
  disabled: t.submitting,
1834
1834
  class: v(["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", P(p).ghostButton]),
1835
1835
  onClick: ee
1836
- }, N(t.cancelText), 11, sr), c("button", {
1836
+ }, N(t.cancelText), 11, cr), c("button", {
1837
1837
  type: "button",
1838
1838
  disabled: !y.value || t.submitting,
1839
1839
  class: v(["inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", !y.value || t.submitting ? j.value.confirmDisabled : j.value.confirmActive]),
1840
1840
  onClick: M
1841
- }, N(t.submitting ? t.submittingText : t.confirmText), 11, cr)]),
1842
- default: L(() => [
1841
+ }, N(t.submitting ? t.submittingText : t.confirmText), 11, lr)]),
1842
+ default: I(() => [
1843
1843
  t.message ? (T(), s("p", {
1844
1844
  key: 0,
1845
1845
  class: v(["text-sm", P(d) ? "text-gray-300" : "text-gray-600"])
1846
1846
  }, N(t.message), 3)) : o("", !0),
1847
- h.value ? (T(), s("div", Zn, [f(It, { color: "emerald" })])) : g.value ? (T(), s("div", Qn, N(g.value), 1)) : o("", !0),
1848
- !h.value && !g.value && C.value.length > 0 ? (T(), s("div", $n, [c("div", er, [f(P(Ce), {
1847
+ h.value ? (T(), s("div", Qn, [f(Lt, { color: "emerald" })])) : g.value ? (T(), s("div", $n, N(g.value), 1)) : o("", !0),
1848
+ !h.value && !g.value && C.value.length > 0 ? (T(), s("div", er, [c("div", tr, [f(P(Te), {
1849
1849
  class: v(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", P(p).dimText]),
1850
1850
  "aria-hidden": "true"
1851
- }, null, 8, ["class"]), R(c("input", {
1851
+ }, null, 8, ["class"]), L(c("input", {
1852
1852
  ref_key: "searchInputRef",
1853
1853
  ref: x,
1854
1854
  "onUpdate:modelValue": r[0] ||= (e) => b.value = e,
1855
1855
  type: "text",
1856
1856
  placeholder: t.searchPlaceholder,
1857
1857
  class: v(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [P(d) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", j.value.inputFocus]])
1858
- }, null, 10, tr), [[re, b.value]])])])) : o("", !0),
1859
- !h.value && !g.value ? (T(), s("div", nr, [(T(!0), s(e, null, k(w.value, (e) => (T(), s("button", {
1858
+ }, null, 10, nr), [[re, b.value]])])])) : o("", !0),
1859
+ !h.value && !g.value ? (T(), s("div", rr, [(T(!0), s(e, null, k(w.value, (e) => (T(), s("button", {
1860
1860
  key: e.id,
1861
1861
  type: "button",
1862
1862
  "aria-pressed": y.value === e.id,
1863
1863
  class: v(["w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [y.value === e.id ? j.value.selectedRow : P(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1864
1864
  onClick: (t) => y.value = e.id
1865
1865
  }, [
1866
- f(P(xe), { class: v(["w-5 h-5 flex-shrink-0", P(p).dimText]) }, null, 8, ["class"]),
1867
- c("div", ir, [c("p", { class: v(["text-sm font-medium truncate", P(p).bodyText]) }, N(e.label), 3)]),
1866
+ f(P(Ce), { class: v(["w-5 h-5 flex-shrink-0", P(p).dimText]) }, null, 8, ["class"]),
1867
+ c("div", ar, [c("p", { class: v(["text-sm font-medium truncate", P(p).bodyText]) }, N(e.label), 3)]),
1868
1868
  y.value === e.id ? (T(), s("div", {
1869
1869
  key: 0,
1870
1870
  class: v(["w-5 h-5 rounded-full flex items-center justify-center", j.value.checkBg])
@@ -1880,12 +1880,12 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1880
1880
  "stroke-linejoin": "round",
1881
1881
  d: "M5 13l4 4L19 7"
1882
1882
  })], -1)]], 2)) : o("", !0)
1883
- ], 10, rr))), 128)), C.value.length === 0 ? (T(), s("div", ar, [c("p", { class: v(["text-sm", P(p).dimText]) }, N(t.emptyMessage), 3)])) : w.value.length === 0 ? (T(), s("div", or, [c("p", { class: v(["text-sm", P(p).dimText]) }, N(t.noMatchMessage), 3)])) : o("", !0)])) : o("", !0)
1883
+ ], 10, ir))), 128)), C.value.length === 0 ? (T(), s("div", or, [c("p", { class: v(["text-sm", P(p).dimText]) }, N(t.emptyMessage), 3)])) : w.value.length === 0 ? (T(), s("div", sr, [c("p", { class: v(["text-sm", P(p).dimText]) }, N(t.noMatchMessage), 3)])) : o("", !0)])) : o("", !0)
1884
1884
  ]),
1885
1885
  _: 2
1886
1886
  }, [n.$slots.icon ? {
1887
1887
  name: "icon",
1888
- fn: L(() => [A(n.$slots, "icon")]),
1888
+ fn: I(() => [A(n.$slots, "icon")]),
1889
1889
  key: "0"
1890
1890
  } : void 0]), 1032, [
1891
1891
  "title",
@@ -1895,10 +1895,10 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1895
1895
  "manual-close"
1896
1896
  ]));
1897
1897
  }
1898
- }), ur = {
1898
+ }), dr = {
1899
1899
  href: "#main-content",
1900
1900
  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"
1901
- }, dr = ["inert"], fr = /* @__PURE__ */ p({
1901
+ }, fr = ["inert"], pr = /* @__PURE__ */ p({
1902
1902
  __name: "BaseAppLayout",
1903
1903
  props: {
1904
1904
  showSidebar: {
@@ -1908,23 +1908,23 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1908
1908
  skipLinkLabel: { default: "Skip to main content" }
1909
1909
  },
1910
1910
  setup(e) {
1911
- let t = e, { isDark: n } = W(), { mobileOpen: r } = Mn(), { collapsed: a } = In(), l = i(() => t.showSidebar);
1911
+ let t = e, { isDark: n } = U(), { mobileOpen: r } = Nn(), { collapsed: a } = Ln(), l = i(() => t.showSidebar);
1912
1912
  return (t, i) => (T(), s("div", { class: v(["min-h-screen transition-colors duration-300", P(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1913
- c("a", ur, N(e.skipLinkLabel), 1),
1913
+ c("a", dr, N(e.skipLinkLabel), 1),
1914
1914
  l.value ? A(t.$slots, "sidebar", {}, void 0, void 0, 0) : o("", !0),
1915
1915
  c("main", {
1916
1916
  id: "main-content",
1917
1917
  tabindex: "-1",
1918
1918
  inert: l.value && P(r) ? !0 : void 0,
1919
1919
  class: v(["transition-all duration-300", l.value ? P(a) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
1920
- }, [A(t.$slots, "default")], 10, dr)
1920
+ }, [A(t.$slots, "default")], 10, fr)
1921
1921
  ], 2));
1922
1922
  }
1923
- }), pr = { class: "flex items-center gap-3 min-w-0" }, mr = {
1923
+ }), mr = { class: "flex items-center gap-3 min-w-0" }, hr = {
1924
1924
  key: 0,
1925
1925
  class: "absolute left-0 top-[0.14em] h-[1.1em] w-1 rounded-full bg-gradient-to-b from-emerald-400 to-emerald-600",
1926
1926
  "aria-hidden": "true"
1927
- }, hr = { class: "flex items-center gap-2" }, gr = /* @__PURE__ */ p({
1927
+ }, gr = { class: "flex items-center gap-2" }, _r = /* @__PURE__ */ p({
1928
1928
  __name: "BasePageHeader",
1929
1929
  props: {
1930
1930
  title: {},
@@ -1939,7 +1939,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1939
1939
  }
1940
1940
  },
1941
1941
  setup(e) {
1942
- let t = e, { isDark: n } = W(), r = Z(), a = i(() => {
1942
+ let t = e, { isDark: n } = U(), r = Z(), a = i(() => {
1943
1943
  let e = {
1944
1944
  emerald: {
1945
1945
  dark: "bg-emerald-500/10",
@@ -1980,19 +1980,19 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
1980
1980
  }[t.iconColor];
1981
1981
  return n.value ? e.dark : e.light;
1982
1982
  });
1983
- return (t, n) => (T(), s("header", { class: v(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [c("div", { class: v(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [c("div", pr, [t.$slots.icon ? (T(), s("div", {
1983
+ return (t, n) => (T(), s("header", { class: v(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [c("div", { class: v(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [c("div", mr, [t.$slots.icon ? (T(), s("div", {
1984
1984
  key: 0,
1985
1985
  class: v(["w-10 h-10 rounded-lg flex items-center justify-center", a.value])
1986
- }, [A(t.$slots, "icon", { iconClass: l.value })], 2)) : o("", !0), c("div", null, [c("h1", { class: v(["text-2xl font-bold", [P(r).primaryTextSoft, e.accent ? "relative pl-3.5 tracking-tight" : ""]]) }, [e.accent ? (T(), s("span", mr)) : o("", !0), d(" " + N(e.title), 1)], 2), e.subtitle || t.$slots.subtitle ? (T(), s("p", {
1986
+ }, [A(t.$slots, "icon", { iconClass: l.value })], 2)) : o("", !0), c("div", null, [c("h1", { class: v(["text-2xl font-bold", [P(r).primaryTextSoft, e.accent ? "relative pl-3.5 tracking-tight" : ""]]) }, [e.accent ? (T(), s("span", hr)) : o("", !0), d(" " + N(e.title), 1)], 2), e.subtitle || t.$slots.subtitle ? (T(), s("p", {
1987
1987
  key: 0,
1988
1988
  class: v(["max-w-[72ch] text-sm", P(r).dimTextAlt])
1989
- }, [A(t.$slots, "subtitle", {}, () => [d(N(e.subtitle), 1)])], 2)) : o("", !0)])]), c("div", hr, [A(t.$slots, "actions")])], 2)], 2));
1989
+ }, [A(t.$slots, "subtitle", {}, () => [d(N(e.subtitle), 1)])], 2)) : o("", !0)])]), c("div", gr, [A(t.$slots, "actions")])], 2)], 2));
1990
1990
  }
1991
- }), _r = [
1991
+ }), vr = [
1992
1992
  "type",
1993
1993
  "disabled",
1994
1994
  "title"
1995
- ], vr = { key: 0 }, yr = /* @__PURE__ */ p({
1995
+ ], yr = { key: 0 }, br = /* @__PURE__ */ p({
1996
1996
  __name: "BaseToolbarButton",
1997
1997
  props: {
1998
1998
  label: { default: "" },
@@ -2006,7 +2006,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2006
2006
  },
2007
2007
  emits: ["click"],
2008
2008
  setup(e) {
2009
- let t = e, { isDark: n } = W(), r = {
2009
+ let t = e, { isDark: n } = U(), r = {
2010
2010
  neutral: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
2011
2011
  danger: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
2012
2012
  ghost: "h-9 px-4 rounded-md font-semibold disabled:opacity-40 disabled:hover:bg-slate-50 dark:disabled:hover:bg-slate-900"
@@ -2033,14 +2033,14 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2033
2033
  title: e.title,
2034
2034
  class: v(["inline-flex shrink-0 items-center gap-2 text-sm border transition-colors cursor-pointer disabled:cursor-not-allowed whitespace-nowrap focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", a.value]),
2035
2035
  onClick: n[0] ||= (e) => t.$emit("click", e)
2036
- }, [A(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (T(), s("span", vr, N(e.label), 1)) : o("", !0)], 10, _r));
2036
+ }, [A(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (T(), s("span", yr, N(e.label), 1)) : o("", !0)], 10, vr));
2037
2037
  }
2038
- }), br = [
2038
+ }), xr = [
2039
2039
  "type",
2040
2040
  "disabled",
2041
2041
  "title",
2042
2042
  "aria-label"
2043
- ], xr = { key: 0 }, Sr = /* @__PURE__ */ p({
2043
+ ], Sr = { key: 0 }, Cr = /* @__PURE__ */ p({
2044
2044
  __name: "BaseActionButton",
2045
2045
  props: {
2046
2046
  label: { default: "" },
@@ -2059,7 +2059,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2059
2059
  },
2060
2060
  emits: ["click"],
2061
2061
  setup(e) {
2062
- let t = e, { isDark: n } = W(), r = i(() => {
2062
+ let t = e, { isDark: n } = U(), r = i(() => {
2063
2063
  let e = {
2064
2064
  emerald: {
2065
2065
  dark: "text-emerald-400 hover:bg-emerald-500/10",
@@ -2139,9 +2139,9 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2139
2139
  "aria-label": e.ariaLabel,
2140
2140
  class: v(["inline-flex items-center justify-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-current", [e.fullWidth ? "flex-1" : "", c.value]]),
2141
2141
  onClick: n[0] ||= (e) => t.$emit("click", e)
2142
- }, [A(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (T(), s("span", xr, N(e.label), 1)) : o("", !0)], 10, br));
2142
+ }, [A(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (T(), s("span", Sr, N(e.label), 1)) : o("", !0)], 10, xr));
2143
2143
  }
2144
- }), Cr = ["title", "aria-label"], wr = /* @__PURE__ */ p({
2144
+ }), wr = ["title", "aria-label"], Tr = /* @__PURE__ */ p({
2145
2145
  __name: "BaseCopyButton",
2146
2146
  props: {
2147
2147
  text: {},
@@ -2152,7 +2152,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2152
2152
  },
2153
2153
  emits: ["copied", "error"],
2154
2154
  setup(e, { emit: t }) {
2155
- let n = e, r = t, { isDark: o } = W(), c = O(!1), l = null, u = i(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = i(() => n.label ? `Copy ${n.label}` : "Copy"), f = i(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${c.value ? o.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : o.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${o.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
2155
+ let n = e, r = t, { isDark: o } = U(), c = O(!1), l = null, u = i(() => c.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = i(() => n.label ? `Copy ${n.label}` : "Copy"), f = i(() => n.variant === "bordered" ? `inline-flex items-center justify-center w-9 h-9 rounded-lg border transition-colors cursor-pointer shrink-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${c.value ? o.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : o.value ? "border-gray-600 text-gray-400 hover:text-gray-200 hover:bg-gray-800" : "border-gray-300 text-gray-400 hover:text-gray-600 hover:bg-gray-50"}` : `p-1 rounded transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 ${o.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
2156
2156
  async function p(e) {
2157
2157
  try {
2158
2158
  if (navigator.clipboard?.writeText) {
@@ -2182,28 +2182,28 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2182
2182
  "aria-label": d.value,
2183
2183
  class: v(f.value),
2184
2184
  onClick: m
2185
- }, [c.value ? (T(), a(P(ge), {
2185
+ }, [c.value ? (T(), a(P(ve), {
2186
2186
  key: 0,
2187
2187
  class: v(e.iconClass),
2188
2188
  "aria-hidden": "true"
2189
- }, null, 8, ["class"])) : (T(), a(P(_e), {
2189
+ }, null, 8, ["class"])) : (T(), a(P(ye), {
2190
2190
  key: 1,
2191
2191
  class: v(e.iconClass),
2192
2192
  "aria-hidden": "true"
2193
- }, null, 8, ["class"]))], 10, Cr));
2193
+ }, null, 8, ["class"]))], 10, wr));
2194
2194
  }
2195
- }), Tr = ["disabled", "aria-busy"], Er = {
2195
+ }), Er = ["disabled", "aria-busy"], Dr = {
2196
2196
  key: 0,
2197
2197
  class: "w-5 h-5 animate-spin shrink-0",
2198
2198
  viewBox: "0 0 24 24",
2199
2199
  fill: "none",
2200
2200
  "aria-hidden": "true"
2201
- }, Dr = {
2201
+ }, Or = {
2202
2202
  key: 1,
2203
2203
  class: "w-5 h-5 shrink-0",
2204
2204
  viewBox: "0 0 48 48",
2205
2205
  "aria-hidden": "true"
2206
- }, Or = /* @__PURE__ */ p({
2206
+ }, kr = /* @__PURE__ */ p({
2207
2207
  __name: "BaseGoogleSignInButton",
2208
2208
  props: {
2209
2209
  label: { default: "Sign in with Google" },
@@ -2222,7 +2222,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2222
2222
  },
2223
2223
  emits: ["click"],
2224
2224
  setup(e, { emit: t }) {
2225
- let n = e, r = t, { isDark: a } = W(), o = i(() => n.disabled || n.loading);
2225
+ let n = e, r = t, { isDark: a } = U(), o = i(() => n.disabled || n.loading);
2226
2226
  function l() {
2227
2227
  o.value || r("click");
2228
2228
  }
@@ -2232,7 +2232,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2232
2232
  "aria-busy": e.loading,
2233
2233
  onClick: l,
2234
2234
  class: v(["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" : "", P(a) ? "bg-gray-900 border-gray-700 text-gray-100 hover:bg-gray-800" : "bg-white border-gray-300 text-gray-700 hover:bg-gray-50"]])
2235
- }, [e.loading ? (T(), s("svg", Er, [...n[0] ||= [c("circle", {
2235
+ }, [e.loading ? (T(), s("svg", Dr, [...n[0] ||= [c("circle", {
2236
2236
  class: "opacity-25",
2237
2237
  cx: "12",
2238
2238
  cy: "12",
@@ -2243,18 +2243,18 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2243
2243
  class: "opacity-75",
2244
2244
  fill: "currentColor",
2245
2245
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2246
- }, null, -1)]])) : (T(), s("svg", Dr, [...n[1] ||= [u("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), c("span", null, N(e.label), 1)], 10, Tr));
2246
+ }, null, -1)]])) : (T(), s("svg", Or, [...n[1] ||= [u("<path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path><path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path><path fill=\"none\" d=\"M0 0h48v48H0z\"></path>", 5)]])), c("span", null, N(e.label), 1)], 10, Er));
2247
2247
  }
2248
- }), kr = {
2248
+ }), Ar = {
2249
2249
  key: 0,
2250
2250
  class: "flex justify-center mb-6"
2251
- }, Ar = { class: "mb-6 text-center" }, jr = { class: "flex items-center gap-3 my-5" }, Mr = ["disabled"], Nr = { class: "flex items-center justify-between mb-1.5" }, Pr = { class: "relative" }, Fr = ["type", "disabled"], Ir = ["aria-label", "aria-pressed"], Lr = ["disabled"], Rr = ["disabled", "aria-busy"], zr = {
2251
+ }, jr = { class: "mb-6 text-center" }, Mr = { class: "flex items-center gap-3 my-5" }, Nr = ["disabled"], Pr = { class: "flex items-center justify-between mb-1.5" }, Fr = { class: "relative" }, Ir = ["type", "disabled"], Lr = ["aria-label", "aria-pressed"], Rr = ["disabled"], zr = ["disabled", "aria-busy"], Br = {
2252
2252
  key: 0,
2253
2253
  class: "w-4 h-4 animate-spin",
2254
2254
  viewBox: "0 0 24 24",
2255
2255
  fill: "none",
2256
2256
  "aria-hidden": "true"
2257
- }, Br = /* @__PURE__ */ p({
2257
+ }, Vr = /* @__PURE__ */ p({
2258
2258
  __name: "BaseLoginForm",
2259
2259
  props: {
2260
2260
  title: { default: "Sign in" },
@@ -2280,7 +2280,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2280
2280
  },
2281
2281
  emits: ["submit", "google-sign-in"],
2282
2282
  setup(t, { emit: n }) {
2283
- let r = t, a = n, { isDark: l } = W(), u = Z(), p = O(""), m = O(""), h = O(!1), g = O(!1), _ = i(() => r.loading || r.googleLoading);
2283
+ let r = t, a = n, { isDark: l } = U(), u = Z(), p = O(""), m = O(""), h = O(!1), g = O(!1), _ = i(() => r.loading || r.googleLoading);
2284
2284
  function y() {
2285
2285
  _.value || a("submit", {
2286
2286
  email: p.value,
@@ -2289,8 +2289,8 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2289
2289
  });
2290
2290
  }
2291
2291
  return (n, r) => (T(), s("div", { class: v(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", P(u).card]) }, [
2292
- n.$slots.logo ? (T(), s("div", kr, [A(n.$slots, "logo")])) : o("", !0),
2293
- c("div", Ar, [c("h1", { class: v(["text-xl font-semibold", P(u).primaryText]) }, N(t.title), 3), t.subtitle ? (T(), s("p", {
2292
+ n.$slots.logo ? (T(), s("div", Ar, [A(n.$slots, "logo")])) : o("", !0),
2293
+ c("div", jr, [c("h1", { class: v(["text-xl font-semibold", P(u).primaryText]) }, N(t.title), 3), t.subtitle ? (T(), s("p", {
2294
2294
  key: 0,
2295
2295
  class: v(["mt-1 text-sm", P(u).mutedText])
2296
2296
  }, N(t.subtitle), 3)) : o("", !0)]),
@@ -2299,23 +2299,23 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2299
2299
  role: "alert",
2300
2300
  class: v(["mb-4 rounded-lg border px-3 py-2 text-sm", P(l) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
2301
2301
  }, N(t.error), 3)) : o("", !0),
2302
- t.showGoogle ? (T(), s(e, { key: 2 }, [f(Or, {
2302
+ t.showGoogle ? (T(), s(e, { key: 2 }, [f(kr, {
2303
2303
  loading: t.googleLoading,
2304
2304
  disabled: t.loading,
2305
2305
  onClick: r[0] ||= (e) => a("google-sign-in")
2306
- }, null, 8, ["loading", "disabled"]), c("div", jr, [
2306
+ }, null, 8, ["loading", "disabled"]), c("div", Mr, [
2307
2307
  c("span", { class: v(["h-px flex-1", P(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
2308
2308
  c("span", { class: v(["text-xs uppercase tracking-wider", P(u).dimTextAlt]) }, "or", 2),
2309
2309
  c("span", { class: v(["h-px flex-1", P(l) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
2310
2310
  ])], 64)) : o("", !0),
2311
2311
  c("form", {
2312
2312
  class: "space-y-4",
2313
- onSubmit: z(y, ["prevent"])
2313
+ onSubmit: R(y, ["prevent"])
2314
2314
  }, [
2315
2315
  c("div", null, [c("label", {
2316
2316
  for: "login-email",
2317
2317
  class: v(["block mb-1.5 text-sm font-medium", P(u).label])
2318
- }, " Email ", 2), R(c("input", {
2318
+ }, " Email ", 2), L(c("input", {
2319
2319
  id: "login-email",
2320
2320
  "onUpdate:modelValue": r[1] ||= (e) => p.value = e,
2321
2321
  type: "email",
@@ -2325,11 +2325,11 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2325
2325
  disabled: _.value,
2326
2326
  placeholder: "you@example.com",
2327
2327
  class: v(["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", P(u).inputWithPlaceholder])
2328
- }, null, 10, Mr), [[re, p.value]])]),
2329
- c("div", null, [c("div", Nr, [c("label", {
2328
+ }, null, 10, Nr), [[re, p.value]])]),
2329
+ c("div", null, [c("div", Pr, [c("label", {
2330
2330
  for: "login-password",
2331
2331
  class: v(["block text-sm font-medium", P(u).label])
2332
- }, " Password ", 2), A(n.$slots, "forgot")]), c("div", Pr, [R(c("input", {
2332
+ }, " Password ", 2), A(n.$slots, "forgot")]), c("div", Fr, [L(c("input", {
2333
2333
  id: "login-password",
2334
2334
  "onUpdate:modelValue": r[2] ||= (e) => m.value = e,
2335
2335
  type: g.value ? "text" : "password",
@@ -2339,28 +2339,28 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2339
2339
  disabled: _.value,
2340
2340
  placeholder: "••••••••",
2341
2341
  class: v(["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", P(u).inputWithPlaceholder])
2342
- }, null, 10, Fr), [[ne, m.value]]), c("button", {
2342
+ }, null, 10, Ir), [[ne, m.value]]), c("button", {
2343
2343
  type: "button",
2344
2344
  onClick: r[3] ||= (e) => g.value = !g.value,
2345
2345
  "aria-label": g.value ? "Hide password" : "Show password",
2346
2346
  "aria-pressed": g.value,
2347
2347
  class: v(["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", P(u).mutedText])
2348
- }, N(g.value ? "Hide" : "Show"), 11, Ir)])]),
2348
+ }, N(g.value ? "Hide" : "Show"), 11, Lr)])]),
2349
2349
  t.showRemember ? (T(), s("label", {
2350
2350
  key: 0,
2351
2351
  class: v(["flex items-center gap-2 text-sm cursor-pointer select-none", P(u).bodyText])
2352
- }, [R(c("input", {
2352
+ }, [L(c("input", {
2353
2353
  "onUpdate:modelValue": r[4] ||= (e) => h.value = e,
2354
2354
  type: "checkbox",
2355
2355
  disabled: _.value,
2356
2356
  class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
2357
- }, null, 8, Lr), [[te, h.value]]), r[5] ||= d(" Remember me ", -1)], 2)) : o("", !0),
2357
+ }, null, 8, Rr), [[te, h.value]]), r[5] ||= d(" Remember me ", -1)], 2)) : o("", !0),
2358
2358
  c("button", {
2359
2359
  type: "submit",
2360
2360
  disabled: _.value,
2361
2361
  "aria-busy": t.loading,
2362
2362
  class: "inline-flex items-center justify-center gap-2 w-full h-11 px-4 rounded-lg text-sm font-semibold text-white bg-emerald-600 hover:bg-emerald-700 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed"
2363
- }, [t.loading ? (T(), s("svg", zr, [...r[6] ||= [c("circle", {
2363
+ }, [t.loading ? (T(), s("svg", Br, [...r[6] ||= [c("circle", {
2364
2364
  class: "opacity-25",
2365
2365
  cx: "12",
2366
2366
  cy: "12",
@@ -2371,7 +2371,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2371
2371
  class: "opacity-75",
2372
2372
  fill: "currentColor",
2373
2373
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2374
- }, null, -1)]])) : o("", !0), d(" " + N(t.submitLabel), 1)], 8, Rr)
2374
+ }, null, -1)]])) : o("", !0), d(" " + N(t.submitLabel), 1)], 8, zr)
2375
2375
  ], 32),
2376
2376
  n.$slots.footer ? (T(), s("div", {
2377
2377
  key: 3,
@@ -2379,10 +2379,10 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2379
2379
  }, [A(n.$slots, "footer")], 2)) : o("", !0)
2380
2380
  ], 2));
2381
2381
  }
2382
- }), Vr = ["aria-label"], Hr = { class: "flex-1 overflow-y-auto" }, Ur = {
2382
+ }), Hr = ["aria-label"], Ur = { class: "flex-1 overflow-y-auto" }, Wr = {
2383
2383
  key: 0,
2384
2384
  class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
2385
- }, Wr = ["onClick"], Gr = { class: "min-w-0 flex-1" }, Kr = { class: "flex items-baseline justify-between gap-2" }, qr = /* @__PURE__ */ p({
2385
+ }, Gr = ["onClick"], Kr = { class: "min-w-0 flex-1" }, qr = { class: "flex items-baseline justify-between gap-2" }, Jr = /* @__PURE__ */ p({
2386
2386
  __name: "BaseNotificationPanel",
2387
2387
  props: {
2388
2388
  title: { default: "Notifications" },
@@ -2394,7 +2394,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2394
2394
  },
2395
2395
  emits: ["select"],
2396
2396
  setup(n, { emit: l }) {
2397
- let u = l, { isDark: p } = W(), m = Z(), { notifications: h, unreadCount: g, open: _, closePanel: y, markAllRead: b, markRead: x } = zn(), S = {
2397
+ let u = l, { isDark: p } = U(), m = Z(), { notifications: h, unreadCount: g, open: _, closePanel: y, markAllRead: b, markRead: x } = Bn(), S = {
2398
2398
  info: "bg-sky-500",
2399
2399
  success: "bg-emerald-500",
2400
2400
  warning: "bg-amber-500",
@@ -2403,7 +2403,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2403
2403
  function w(e) {
2404
2404
  x(e), u("select", e);
2405
2405
  }
2406
- return sn(() => {
2406
+ return cn(() => {
2407
2407
  _.value && y();
2408
2408
  }), (i, l) => (T(), a(t, { to: "body" }, [f(r, {
2409
2409
  "enter-active-class": "transition-opacity duration-200",
@@ -2411,7 +2411,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2411
2411
  "leave-active-class": "transition-opacity duration-200",
2412
2412
  "leave-to-class": "opacity-0"
2413
2413
  }, {
2414
- default: L(() => [P(_) ? (T(), s("div", {
2414
+ default: I(() => [P(_) ? (T(), s("div", {
2415
2415
  key: 0,
2416
2416
  class: "fixed inset-0 z-[60] bg-black/50",
2417
2417
  "aria-hidden": "true",
@@ -2424,7 +2424,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2424
2424
  "leave-active-class": "transition-transform duration-300 ease-in",
2425
2425
  "leave-to-class": "-translate-x-full"
2426
2426
  }, {
2427
- default: L(() => [P(_) ? (T(), s("aside", {
2427
+ default: I(() => [P(_) ? (T(), s("aside", {
2428
2428
  key: 0,
2429
2429
  role: "dialog",
2430
2430
  "aria-modal": "true",
@@ -2436,7 +2436,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2436
2436
  onClick: l[1] ||= (...e) => P(y) && P(y)(...e),
2437
2437
  "aria-label": "Close notifications",
2438
2438
  class: v(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", P(p) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
2439
- }, [f(P(B), {
2439
+ }, [f(P(z), {
2440
2440
  class: "w-5 h-5",
2441
2441
  "aria-hidden": "true"
2442
2442
  })], 2)], 2),
@@ -2448,7 +2448,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2448
2448
  onClick: l[2] ||= (...e) => P(b) && P(b)(...e),
2449
2449
  class: v(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", P(m).emeraldText])
2450
2450
  }, " Mark all as read ", 2)], 2)) : o("", !0),
2451
- c("div", Hr, [C.value === 0 ? (T(), s("div", Ur, [f(P(le), {
2451
+ c("div", Ur, [C.value === 0 ? (T(), s("div", Wr, [f(P(de), {
2452
2452
  class: v(["w-10 h-10", P(m).illustration]),
2453
2453
  "aria-hidden": "true"
2454
2454
  }, null, 8, ["class"]), c("p", { class: v(["text-sm", P(m).mutedText]) }, N(n.emptyText), 3)])) : (T(), s("ul", {
@@ -2461,18 +2461,18 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2461
2461
  }, [c("span", {
2462
2462
  class: v(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? P(p) ? "bg-gray-700" : "bg-gray-300" : S[e.type ?? "info"]]),
2463
2463
  "aria-hidden": "true"
2464
- }, null, 2), c("span", Gr, [c("span", Kr, [c("span", { class: v(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", P(m).primaryTextSoft]]) }, N(e.title), 3), e.time ? (T(), s("span", {
2464
+ }, null, 2), c("span", Kr, [c("span", qr, [c("span", { class: v(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", P(m).primaryTextSoft]]) }, N(e.title), 3), e.time ? (T(), s("span", {
2465
2465
  key: 0,
2466
2466
  class: v(["text-xs shrink-0", P(m).dimText])
2467
2467
  }, N(e.time), 3)) : o("", !0)]), e.message ? (T(), s("span", {
2468
2468
  key: 0,
2469
2469
  class: v(["mt-0.5 block text-sm", P(m).mutedText])
2470
- }, N(e.message), 3)) : o("", !0)])], 10, Wr)]))), 128))], 2))])
2471
- ], 10, Vr)) : o("", !0)]),
2470
+ }, N(e.message), 3)) : o("", !0)])], 10, Gr)]))), 128))], 2))])
2471
+ ], 10, Hr)) : o("", !0)]),
2472
2472
  _: 1
2473
2473
  })]));
2474
2474
  }
2475
- }), Jr = ["disabled"], Yr = /* @__PURE__ */ p({
2475
+ }), Yr = ["disabled"], Xr = /* @__PURE__ */ p({
2476
2476
  __name: "BaseChipButton",
2477
2477
  props: {
2478
2478
  size: { default: "sm" },
@@ -2483,15 +2483,15 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2483
2483
  },
2484
2484
  emits: ["click"],
2485
2485
  setup(e, { emit: t }) {
2486
- let n = t, { isDark: r } = W();
2486
+ let n = t, { isDark: r } = U();
2487
2487
  return (t, i) => (T(), s("button", {
2488
2488
  type: "button",
2489
2489
  disabled: e.disabled,
2490
2490
  class: v(["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", P(r) ? "text-emerald-300 border-emerald-700 bg-emerald-900/30 hover:bg-emerald-800/50" : "text-emerald-700 border-emerald-200 bg-emerald-50 hover:bg-emerald-100"]]),
2491
2491
  onClick: i[0] ||= (e) => n("click")
2492
- }, [A(t.$slots, "default")], 10, Jr));
2492
+ }, [A(t.$slots, "default")], 10, Yr));
2493
2493
  }
2494
- }), Xr = /* @__PURE__ */ p({
2494
+ }), Zr = /* @__PURE__ */ p({
2495
2495
  __name: "BaseRemoveButton",
2496
2496
  emits: ["click"],
2497
2497
  setup(e, { emit: t }) {
@@ -2502,18 +2502,18 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2502
2502
  onClick: t[0] ||= (e) => n("click")
2503
2503
  }, " × "));
2504
2504
  }
2505
- }), Zr = { class: "relative flex h-2 w-2" }, Qr = {
2505
+ }), Qr = { class: "relative flex h-2 w-2" }, $r = {
2506
2506
  key: 0,
2507
2507
  class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
2508
2508
  "aria-hidden": "true"
2509
- }, $r = /* @__PURE__ */ p({
2509
+ }, ei = /* @__PURE__ */ p({
2510
2510
  __name: "BaseStatusPill",
2511
2511
  props: {
2512
2512
  status: {},
2513
2513
  label: {}
2514
2514
  },
2515
2515
  setup(e) {
2516
- let t = e, { isDark: n } = W(), r = i(() => {
2516
+ let t = e, { isDark: n } = U(), r = i(() => {
2517
2517
  switch (t.status) {
2518
2518
  case "ok": return n.value ? "bg-emerald-500/10 text-emerald-400" : "bg-emerald-50 text-emerald-700";
2519
2519
  case "error": return n.value ? "bg-red-500/10 text-red-400" : "bg-red-50 text-red-700";
@@ -2526,13 +2526,13 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2526
2526
  default: return "bg-gray-400";
2527
2527
  }
2528
2528
  });
2529
- return (t, n) => (T(), s("div", { class: v(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [c("span", Zr, [e.status === "ok" ? (T(), s("span", Qr)) : o("", !0), c("span", { class: v(["relative inline-flex rounded-full h-2 w-2", a.value]) }, null, 2)]), d(" " + N(e.label), 1)], 2));
2529
+ return (t, n) => (T(), s("div", { class: v(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [c("span", Qr, [e.status === "ok" ? (T(), s("span", $r)) : o("", !0), c("span", { class: v(["relative inline-flex rounded-full h-2 w-2", a.value]) }, null, 2)]), d(" " + N(e.label), 1)], 2));
2530
2530
  }
2531
- }), ei = { class: "text-sm font-medium" }, ti = [
2531
+ }), ti = { class: "text-sm font-medium" }, ni = [
2532
2532
  "accept",
2533
2533
  "multiple",
2534
2534
  "disabled"
2535
- ], ni = /* @__PURE__ */ p({
2535
+ ], ri = /* @__PURE__ */ p({
2536
2536
  __name: "BaseFileDropzone",
2537
2537
  props: {
2538
2538
  label: {},
@@ -2549,7 +2549,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2549
2549
  },
2550
2550
  emits: ["files"],
2551
2551
  setup(e, { emit: t }) {
2552
- let n = e, r = t, { isDark: i } = W(), a = O(!1);
2552
+ let n = e, r = t, { isDark: i } = U(), a = O(!1);
2553
2553
  function l(e) {
2554
2554
  let t = e.target, n = Array.from(t.files ?? []);
2555
2555
  t.value = "", n.length && r("files", n);
@@ -2564,9 +2564,9 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2564
2564
  }
2565
2565
  return (t, n) => (T(), s("label", {
2566
2566
  class: v(["flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center transition-colors", [e.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer", a.value ? P(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : P(i) ? "border-gray-700 hover:border-emerald-500 text-gray-400 hover:text-emerald-400" : "border-gray-300 hover:border-emerald-500 text-gray-500 hover:text-emerald-600"]]),
2567
- onDragover: z(u, ["prevent"]),
2568
- onDragleave: n[0] ||= z((e) => a.value = !1, ["prevent"]),
2569
- onDrop: z(d, ["prevent"])
2567
+ onDragover: R(u, ["prevent"]),
2568
+ onDragleave: n[0] ||= R((e) => a.value = !1, ["prevent"]),
2569
+ onDrop: R(d, ["prevent"])
2570
2570
  }, [
2571
2571
  A(t.$slots, "icon", {}, () => [n[1] ||= c("svg", {
2572
2572
  class: "w-10 h-10",
@@ -2580,7 +2580,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2580
2580
  "stroke-linejoin": "round",
2581
2581
  d: "M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12-3-3m0 0-3 3m3-3v6m-1.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
2582
2582
  })], -1)]),
2583
- c("p", ei, N(e.label), 1),
2583
+ c("p", ti, N(e.label), 1),
2584
2584
  e.hint ? (T(), s("p", {
2585
2585
  key: 0,
2586
2586
  class: v(["text-xs", P(i) ? "text-gray-500" : "text-gray-400"])
@@ -2592,10 +2592,10 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2592
2592
  multiple: e.multiple,
2593
2593
  disabled: e.disabled,
2594
2594
  onChange: l
2595
- }, null, 40, ti)
2595
+ }, null, 40, ni)
2596
2596
  ], 34));
2597
2597
  }
2598
- }), ri = /* @__PURE__ */ p({
2598
+ }), ii = /* @__PURE__ */ p({
2599
2599
  __name: "BaseCodeBlock",
2600
2600
  props: {
2601
2601
  code: {},
@@ -2604,7 +2604,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2604
2604
  maxHeightClass: { default: "" }
2605
2605
  },
2606
2606
  setup(e) {
2607
- let t = e, { isDark: n } = W(), r = {
2607
+ let t = e, { isDark: n } = U(), r = {
2608
2608
  soft: {
2609
2609
  dark: "bg-gray-800/70 text-gray-300",
2610
2610
  light: "bg-gray-100 text-gray-700"
@@ -2626,7 +2626,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2626
2626
  e.maxHeightClass
2627
2627
  ]]) }, N(e.code), 3));
2628
2628
  }
2629
- }), ii = ["value", "type"], ai = /* @__PURE__ */ p({
2629
+ }), ai = ["value", "type"], oi = /* @__PURE__ */ p({
2630
2630
  __name: "BaseInput",
2631
2631
  props: {
2632
2632
  modelValue: { default: "" },
@@ -2648,9 +2648,9 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2648
2648
  type: e.type,
2649
2649
  class: v(["rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm placeholder:text-slate-400 dark:placeholder:text-slate-500 transition-colors hover:border-slate-400 dark:hover:border-slate-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500/40 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", [e.block ? "w-full" : "", e.size === "sm" ? "px-2 py-1.5" : "px-3 py-2"]]),
2650
2650
  onInput: r
2651
- }, null, 42, ii));
2651
+ }, null, 42, ai));
2652
2652
  }
2653
- }), oi = ["value"], si = /* @__PURE__ */ p({
2653
+ }), si = ["value"], ci = /* @__PURE__ */ p({
2654
2654
  inheritAttrs: !1,
2655
2655
  __name: "BaseSelect",
2656
2656
  props: {
@@ -2671,16 +2671,16 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2671
2671
  value: e.modelValue,
2672
2672
  class: ["w-full appearance-none bg-none rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm cursor-pointer transition-colors hover:border-slate-400 dark:hover:border-slate-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500/40 focus-visible:border-emerald-500 disabled:opacity-60 disabled:cursor-not-allowed", e.size === "md" ? "py-2 pl-3 pr-9" : "py-1.5 pl-2.5 pr-8"],
2673
2673
  onChange: r
2674
- }), [A(t.$slots, "default")], 16, oi), f(P(me), {
2674
+ }), [A(t.$slots, "default")], 16, si), f(P(ge), {
2675
2675
  class: v(["pointer-events-none absolute top-1/2 h-4 w-4 -translate-y-1/2 text-slate-500 dark:text-slate-400", e.size === "md" ? "right-3" : "right-2.5"]),
2676
2676
  "aria-hidden": "true"
2677
2677
  }, null, 8, ["class"])], 2));
2678
2678
  }
2679
- }), ci = [
2679
+ }), li = [
2680
2680
  "disabled",
2681
2681
  "aria-label",
2682
2682
  "aria-expanded"
2683
- ], li = ["aria-label"], ui = ["aria-selected", "title"], di = ["disabled", "onClick"], fi = /* @__PURE__ */ p({
2683
+ ], ui = ["aria-label"], di = ["aria-selected", "title"], fi = ["disabled", "onClick"], pi = /* @__PURE__ */ p({
2684
2684
  __name: "BaseDropdown",
2685
2685
  props: {
2686
2686
  options: {},
@@ -2716,7 +2716,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2716
2716
  function g(e) {
2717
2717
  e.disabled || (a("update:modelValue", e.value), l.value = !1);
2718
2718
  }
2719
- sn(() => {
2719
+ cn(() => {
2720
2720
  l.value = !1;
2721
2721
  });
2722
2722
  function _(e) {
@@ -2734,10 +2734,10 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2734
2734
  "aria-haspopup": "listbox",
2735
2735
  "aria-expanded": l.value,
2736
2736
  onClick: h
2737
- }, [c("span", { class: v(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, N(d.value ? d.value.label : t.placeholder), 3), f(P(me), {
2737
+ }, [c("span", { class: v(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, N(d.value ? d.value.label : t.placeholder), 3), f(P(ge), {
2738
2738
  class: v(["shrink-0 transition-transform", [t.chevronClass, l.value ? "rotate-180" : ""]]),
2739
2739
  "aria-hidden": "true"
2740
- }, null, 8, ["class"])], 10, ci), l.value ? (T(), s("ul", {
2740
+ }, null, 8, ["class"])], 10, li), l.value ? (T(), s("ul", {
2741
2741
  key: 0,
2742
2742
  role: "listbox",
2743
2743
  "aria-label": t.ariaLabel || t.placeholder,
@@ -2752,13 +2752,13 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2752
2752
  disabled: e.disabled,
2753
2753
  class: v(m(e)),
2754
2754
  onClick: (t) => g(e)
2755
- }, N(e.label), 11, di)], 8, ui))), 128))], 8, li)) : o("", !0)], 2));
2755
+ }, N(e.label), 11, fi)], 8, di))), 128))], 8, ui)) : o("", !0)], 2));
2756
2756
  }
2757
- }), pi = ["role", "aria-label"], mi = [
2757
+ }), mi = ["role", "aria-label"], hi = [
2758
2758
  "aria-pressed",
2759
2759
  "title",
2760
2760
  "onClick"
2761
- ], hi = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", gi = /* @__PURE__ */ p({
2761
+ ], gi = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", _i = /* @__PURE__ */ p({
2762
2762
  __name: "BaseSegmentedControl",
2763
2763
  props: {
2764
2764
  options: {},
@@ -2775,7 +2775,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2775
2775
  let r = t, a = n, o = i(() => r.variant === "toolbar" ? "inline-flex h-9 divide-x divide-slate-300 dark:divide-slate-600 rounded-md border border-slate-300 dark:border-slate-600 overflow-hidden" : "inline-flex rounded border border-slate-300 dark:border-slate-600 overflow-hidden"), c = i(() => r.variant === "toolbar" ? "flex items-center px-3.5 text-xs font-semibold uppercase tracking-wide transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500" : `${r.variant === "wide" ? "px-4 py-2" : "px-3 py-2"} text-sm font-medium transition-colors cursor-pointer border-l first:border-l-0 border-slate-300 dark:border-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500`), l = i(() => r.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
2776
2776
  function u(e) {
2777
2777
  let t = e.value === r.modelValue;
2778
- return r.optionClass ? r.optionClass(e, t) : t ? l.value : hi;
2778
+ return r.optionClass ? r.optionClass(e, t) : t ? l.value : gi;
2779
2779
  }
2780
2780
  return (n, r) => (T(), s("div", {
2781
2781
  role: t.ariaLabel ? "group" : void 0,
@@ -2788,9 +2788,9 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2788
2788
  "aria-pressed": e.value === t.modelValue,
2789
2789
  title: e.title,
2790
2790
  onClick: (t) => a("update:modelValue", e.value)
2791
- }, N(e.label), 11, mi))), 128))], 10, pi));
2791
+ }, N(e.label), 11, hi))), 128))], 10, mi));
2792
2792
  }
2793
- }), _i = { class: "w-full text-sm" }, vi = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, yi = { class: "text-left border-b border-slate-200 dark:border-slate-700" }, bi = { class: "divide-y divide-slate-200 dark:divide-slate-700 [&>tr]:transition-colors [&>tr:hover]:bg-slate-50 dark:[&>tr:hover]:bg-slate-800/40" }, xi = { key: 0 }, Si = ["colspan"], Ci = "overflow-x-auto rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700 dark:bg-slate-900", wi = /* @__PURE__ */ p({
2793
+ }), vi = { class: "w-full text-sm" }, yi = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, bi = { class: "text-left border-b border-slate-200 dark:border-slate-700" }, xi = { class: "divide-y divide-slate-200 dark:divide-slate-700 [&>tr]:transition-colors [&>tr:hover]:bg-slate-50 dark:[&>tr:hover]:bg-slate-800/40" }, Si = { key: 0 }, Ci = ["colspan"], wi = "overflow-x-auto rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700 dark:bg-slate-900", Ti = /* @__PURE__ */ p({
2794
2794
  __name: "BaseTable",
2795
2795
  props: {
2796
2796
  columns: {},
@@ -2805,24 +2805,24 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2805
2805
  }
2806
2806
  },
2807
2807
  setup(t) {
2808
- return (n, r) => (T(), s("div", { class: v(t.card ? Ci : void 0) }, [c("table", _i, [c("thead", vi, [c("tr", yi, [(T(!0), s(e, null, k(t.columns, (e, t) => (T(), s("th", {
2808
+ return (n, r) => (T(), s("div", { class: v(t.card ? wi : void 0) }, [c("table", vi, [c("thead", yi, [c("tr", bi, [(T(!0), s(e, null, k(t.columns, (e, t) => (T(), s("th", {
2809
2809
  key: t,
2810
2810
  class: v(["px-4 py-3", e.align === "right" ? "text-right" : ""])
2811
- }, N(e.label), 3))), 128))])]), c("tbody", bi, [t.empty ? (T(), s("tr", xi, [c("td", {
2811
+ }, N(e.label), 3))), 128))])]), c("tbody", xi, [t.empty ? (T(), s("tr", Si, [c("td", {
2812
2812
  colspan: t.columns.length,
2813
2813
  class: "px-4 py-12 text-center text-slate-500"
2814
- }, [A(n.$slots, "empty", {}, () => [d(N(t.emptyText), 1)])], 8, Si)])) : o("", !0), A(n.$slots, "default")])])], 2));
2814
+ }, [A(n.$slots, "empty", {}, () => [d(N(t.emptyText), 1)])], 8, Ci)])) : o("", !0), A(n.$slots, "default")])])], 2));
2815
2815
  }
2816
- }), Ti = { class: "grid gap-3 md:grid-cols-2" }, Ei = {
2816
+ }), Ei = { class: "grid gap-3 md:grid-cols-2" }, Di = {
2817
2817
  key: 0,
2818
2818
  class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
2819
- }, Di = ["value"], Oi = {
2819
+ }, Oi = ["value"], ki = {
2820
2820
  key: 2,
2821
2821
  class: "flex items-center gap-2 mt-4"
2822
- }, ki = ["checked", "onChange"], Ai = { class: "text-sm text-slate-900 dark:text-slate-100" }, ji = {
2822
+ }, Ai = ["checked", "onChange"], ji = { class: "text-sm text-slate-900 dark:text-slate-100" }, Mi = {
2823
2823
  key: 4,
2824
2824
  class: "text-[11px] text-slate-400 mt-1"
2825
- }, Mi = /* @__PURE__ */ p({
2825
+ }, Ni = /* @__PURE__ */ p({
2826
2826
  __name: "BaseSpecFields",
2827
2827
  props: {
2828
2828
  specs: {},
@@ -2849,24 +2849,24 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2849
2849
  let t = e.clipboardData?.getData("text") ?? "";
2850
2850
  /^-?\d*$/.test(t.trim()) || e.preventDefault();
2851
2851
  }
2852
- return (n, f) => (T(), s("div", Ti, [(T(!0), s(e, null, k(t.specs, (f) => (T(), s("div", { key: f.key }, [
2853
- f.type === "boolean" ? o("", !0) : (T(), s("label", Ei, N(f.label), 1)),
2854
- f.type === "select" ? (T(), a(si, {
2852
+ return (n, f) => (T(), s("div", Ei, [(T(!0), s(e, null, k(t.specs, (f) => (T(), s("div", { key: f.key }, [
2853
+ f.type === "boolean" ? o("", !0) : (T(), s("label", Di, N(f.label), 1)),
2854
+ f.type === "select" ? (T(), a(ci, {
2855
2855
  key: 1,
2856
2856
  modelValue: String(t.params[f.key] ?? ""),
2857
2857
  "onUpdate:modelValue": (e) => r("update", f.key, e)
2858
2858
  }, {
2859
- default: L(() => [(T(!0), s(e, null, k(f.options ?? [], (e) => (T(), s("option", {
2859
+ default: I(() => [(T(!0), s(e, null, k(f.options ?? [], (e) => (T(), s("option", {
2860
2860
  key: e,
2861
2861
  value: e
2862
- }, N(e), 9, Di))), 128))]),
2862
+ }, N(e), 9, Oi))), 128))]),
2863
2863
  _: 2
2864
- }, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (T(), s("label", Oi, [c("input", {
2864
+ }, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (T(), s("label", ki, [c("input", {
2865
2865
  checked: !!t.params[f.key],
2866
2866
  type: "checkbox",
2867
2867
  class: "h-4 w-4",
2868
2868
  onChange: (e) => i(f.key, e)
2869
- }, null, 40, ki), c("span", Ai, N(f.label), 1)])) : (T(), a(ai, {
2869
+ }, null, 40, Ai), c("span", ji, N(f.label), 1)])) : (T(), a(oi, {
2870
2870
  key: 3,
2871
2871
  modelValue: t.params[f.key],
2872
2872
  type: "number",
@@ -2885,11 +2885,11 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2885
2885
  "onPaste",
2886
2886
  "onUpdate:modelValue"
2887
2887
  ])),
2888
- f.help ? (T(), s("p", ji, N(f.help), 1)) : o("", !0),
2888
+ f.help ? (T(), s("p", Mi, N(f.help), 1)) : o("", !0),
2889
2889
  A(n.$slots, "after", { spec: f })
2890
2890
  ]))), 128))]));
2891
2891
  }
2892
- }), Ni = { class: "mt-1.5 space-y-0.5 px-1" }, Pi = { class: "text-slate-400 dark:text-slate-500" }, Fi = /* @__PURE__ */ p({
2892
+ }), Pi = { class: "mt-1.5 space-y-0.5 px-1" }, Fi = { class: "text-slate-400 dark:text-slate-500" }, Ii = /* @__PURE__ */ p({
2893
2893
  __name: "BaseStatBreakdown",
2894
2894
  props: {
2895
2895
  items: {},
@@ -2908,16 +2908,16 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2908
2908
  function i(e) {
2909
2909
  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";
2910
2910
  }
2911
- return (n, a) => (T(), s("div", Ni, [(T(!0), s(e, null, k(t.items, (e) => (T(), s("div", {
2911
+ return (n, a) => (T(), s("div", Pi, [(T(!0), s(e, null, k(t.items, (e) => (T(), s("div", {
2912
2912
  key: e.label,
2913
2913
  class: "flex items-center justify-between text-[11px]"
2914
- }, [c("span", Pi, N(e.label), 1), c("span", { class: v(["font-mono tabular-nums font-medium", i(e.value)]) }, N(r(e.value)), 3)]))), 128))]));
2914
+ }, [c("span", Fi, N(e.label), 1), c("span", { class: v(["font-mono tabular-nums font-medium", i(e.value)]) }, N(r(e.value)), 3)]))), 128))]));
2915
2915
  }
2916
- }), Ii = [
2916
+ }), Li = [
2917
2917
  "disabled",
2918
2918
  "title",
2919
2919
  "aria-pressed"
2920
- ], Li = /* @__PURE__ */ p({
2920
+ ], Ri = /* @__PURE__ */ p({
2921
2921
  __name: "BaseFilterChip",
2922
2922
  props: {
2923
2923
  label: { default: "" },
@@ -2952,15 +2952,15 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
2952
2952
  title: e.title,
2953
2953
  "aria-pressed": e.active,
2954
2954
  class: v(["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]])
2955
- }, [A(r.$slots, "default", {}, () => [d(N(e.label), 1)])], 10, Ii));
2955
+ }, [A(r.$slots, "default", {}, () => [d(N(e.label), 1)])], 10, Li));
2956
2956
  }
2957
- }), Ri = { class: "flex items-center justify-between mb-4" }, zi = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, Bi = {
2957
+ }), zi = { class: "flex items-center justify-between mb-4" }, Bi = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, Vi = {
2958
2958
  key: 0,
2959
2959
  class: "text-xs text-slate-500 dark:text-slate-400"
2960
- }, Vi = {
2960
+ }, Hi = {
2961
2961
  key: 0,
2962
2962
  class: "inline-flex items-center gap-2 text-xs text-slate-500"
2963
- }, Hi = { class: "grid gap-4 md:grid-cols-2" }, Ui = { class: "md:col-span-2" }, Wi = ["for"], Gi = { class: "md:col-span-2" }, Ki = ["for"], qi = { class: "text-[11px] text-slate-500 mt-1" }, Ji = { class: "md:col-span-2" }, Yi = ["for"], Xi = { class: "md:col-span-2" }, Zi = ["for"], Qi = { class: "md:col-span-2" }, $i = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", ea = /* @__PURE__ */ p({
2963
+ }, Ui = { class: "grid gap-4 md:grid-cols-2" }, Wi = { class: "md:col-span-2" }, Gi = ["for"], Ki = { class: "md:col-span-2" }, qi = ["for"], Ji = { class: "text-[11px] text-slate-500 mt-1" }, Yi = { class: "md:col-span-2" }, Xi = ["for"], Zi = { class: "md:col-span-2" }, Qi = ["for"], $i = { class: "md:col-span-2" }, ea = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", ta = /* @__PURE__ */ p({
2964
2964
  __name: "BaseCredentialsForm",
2965
2965
  props: {
2966
2966
  title: {},
@@ -3033,72 +3033,72 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3033
3033
  }
3034
3034
  }
3035
3035
  }
3036
- return S(h), n({ load: h }), (n, r) => (T(), a(Ft, { class: "!p-6" }, {
3037
- default: L(() => [
3038
- c("div", Ri, [c("div", null, [c("h2", zi, N(t.title), 1), t.subtitle ? (T(), s("p", Bi, N(t.subtitle), 1)) : o("", !0)]), u.value ? (T(), s("span", Vi, [f(It, { class: "!h-4 !w-4" }), r[4] ||= d(" Saving… ", -1)])) : o("", !0)]),
3039
- c("div", Hi, [
3040
- c("div", Ui, [c("label", {
3036
+ return S(h), n({ load: h }), (n, r) => (T(), a(It, { class: "!p-6" }, {
3037
+ default: I(() => [
3038
+ c("div", zi, [c("div", null, [c("h2", Bi, N(t.title), 1), t.subtitle ? (T(), s("p", Vi, N(t.subtitle), 1)) : o("", !0)]), u.value ? (T(), s("span", Hi, [f(Lt, { class: "!h-4 !w-4" }), r[4] ||= d(" Saving… ", -1)])) : o("", !0)]),
3039
+ c("div", Ui, [
3040
+ c("div", Wi, [c("label", {
3041
3041
  for: `${t.idPrefix}-key-id`,
3042
3042
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3043
- }, N(t.keyLabel), 9, Wi), f(ai, {
3043
+ }, N(t.keyLabel), 9, Gi), f(oi, {
3044
3044
  id: `${t.idPrefix}-key-id`,
3045
3045
  modelValue: m.keyId,
3046
3046
  "onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
3047
3047
  type: "text",
3048
3048
  autocomplete: "off",
3049
3049
  placeholder: t.keyPlaceholder,
3050
- class: v($i)
3050
+ class: v(ea)
3051
3051
  }, null, 8, [
3052
3052
  "id",
3053
3053
  "modelValue",
3054
3054
  "placeholder"
3055
3055
  ])]),
3056
- c("div", Gi, [
3056
+ c("div", Ki, [
3057
3057
  c("label", {
3058
3058
  for: `${t.idPrefix}-secret`,
3059
3059
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3060
- }, N(t.secretLabel), 9, Ki),
3061
- f(ai, {
3060
+ }, N(t.secretLabel), 9, qi),
3061
+ f(oi, {
3062
3062
  id: `${t.idPrefix}-secret`,
3063
3063
  modelValue: m.secretKey,
3064
3064
  "onUpdate:modelValue": r[1] ||= (e) => m.secretKey = e,
3065
3065
  type: "password",
3066
3066
  autocomplete: "new-password",
3067
3067
  placeholder: p.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
3068
- class: v($i)
3068
+ class: v(ea)
3069
3069
  }, null, 8, [
3070
3070
  "id",
3071
3071
  "modelValue",
3072
3072
  "placeholder"
3073
3073
  ]),
3074
- c("p", qi, [p.value ? (T(), s(e, { key: 0 }, [d(N(t.secretSetHint), 1)], 64)) : A(n.$slots, "no-secret-hint", {}, () => [d(N(t.permissionsHint), 1)], void 0, 1)])
3074
+ c("p", Ji, [p.value ? (T(), s(e, { key: 0 }, [d(N(t.secretSetHint), 1)], 64)) : A(n.$slots, "no-secret-hint", {}, () => [d(N(t.permissionsHint), 1)], void 0, 1)])
3075
3075
  ]),
3076
- c("div", Ji, [
3076
+ c("div", Yi, [
3077
3077
  c("label", {
3078
3078
  for: `${t.idPrefix}-base-url`,
3079
3079
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3080
- }, "Base URL (trading)", 8, Yi),
3081
- f(ai, {
3080
+ }, "Base URL (trading)", 8, Xi),
3081
+ f(oi, {
3082
3082
  id: `${t.idPrefix}-base-url`,
3083
3083
  modelValue: m.baseUrl,
3084
3084
  "onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
3085
3085
  type: "text",
3086
- class: v($i)
3086
+ class: v(ea)
3087
3087
  }, null, 8, ["id", "modelValue"]),
3088
3088
  A(n.$slots, "base-url-extra", { form: m })
3089
3089
  ]),
3090
- c("div", Xi, [c("label", {
3090
+ c("div", Zi, [c("label", {
3091
3091
  for: `${t.idPrefix}-data-url`,
3092
3092
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3093
- }, "Data URL (market data)", 8, Zi), f(ai, {
3093
+ }, "Data URL (market data)", 8, Qi), f(oi, {
3094
3094
  id: `${t.idPrefix}-data-url`,
3095
3095
  modelValue: m.dataUrl,
3096
3096
  "onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
3097
3097
  type: "text",
3098
- class: v($i)
3098
+ class: v(ea)
3099
3099
  }, null, 8, ["id", "modelValue"])]),
3100
- c("div", Qi, [f(Qe, {
3101
- color: P(K).GREEN,
3100
+ c("div", $i, [f(q, {
3101
+ color: P(G).GREEN,
3102
3102
  description: t.saveLabel,
3103
3103
  isDisable: u.value,
3104
3104
  isLoading: u.value,
@@ -3115,16 +3115,16 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3115
3115
  _: 3
3116
3116
  }));
3117
3117
  }
3118
- }), ta = {
3118
+ }), na = {
3119
3119
  key: 0,
3120
3120
  class: "text-sm text-slate-500 dark:text-slate-400"
3121
- }, na = { class: "mb-3 flex flex-wrap items-center gap-2" }, ra = { class: "relative min-w-[200px] flex-1" }, ia = ["placeholder"], aa = {
3121
+ }, ra = { class: "mb-3 flex flex-wrap items-center gap-2" }, ia = { class: "relative min-w-[200px] flex-1" }, aa = ["placeholder"], oa = {
3122
3122
  key: 0,
3123
3123
  class: "text-sm text-slate-500 dark:text-slate-400"
3124
- }, oa = {
3124
+ }, sa = {
3125
3125
  key: 1,
3126
3126
  class: "flex flex-wrap gap-2"
3127
- }, sa = ["title", "onClick"], ca = "h-9 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", la = "\0all", ua = /* @__PURE__ */ p({
3127
+ }, ca = ["title", "onClick"], la = "h-9 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 text-slate-900 dark:text-slate-100 text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", ua = "\0all", da = /* @__PURE__ */ p({
3128
3128
  __name: "BasePillPickerModal",
3129
3129
  props: {
3130
3130
  title: {},
@@ -3146,11 +3146,11 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3146
3146
  },
3147
3147
  emits: ["pick", "close"],
3148
3148
  setup(t, { emit: n }) {
3149
- let r = t, l = n, u = i(() => r.icon ?? Ce), d = O(""), p = O(la), m = i(() => r.groups && r.groups.length > 0 ? [{
3150
- value: la,
3149
+ let r = t, l = n, u = i(() => r.icon ?? Te), d = O(""), p = O(ua), m = i(() => r.groups && r.groups.length > 0 ? [{
3150
+ value: ua,
3151
3151
  label: r.allLabel
3152
- }, ...r.groups] : []), h = i(() => r.items.filter((e) => (p.value === la || e.group === p.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
3153
- return (n, r) => (T(), a(gn, {
3152
+ }, ...r.groups] : []), h = i(() => r.items.filter((e) => (p.value === ua || e.group === p.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
3153
+ return (n, r) => (T(), a(_n, {
3154
3154
  title: t.title,
3155
3155
  icon: u.value,
3156
3156
  subtitle: t.subtitle,
@@ -3158,24 +3158,24 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3158
3158
  "max-width-class": t.maxWidthClass,
3159
3159
  onCancel: r[4] ||= (e) => l("close")
3160
3160
  }, {
3161
- footer: L(() => [f(yr, {
3161
+ footer: I(() => [f(br, {
3162
3162
  variant: "ghost",
3163
3163
  label: t.closeText,
3164
3164
  onClick: r[3] ||= (e) => l("close")
3165
3165
  }, null, 8, ["label"])]),
3166
- default: L(() => [t.items.length === 0 ? (T(), s("p", ta, N(t.emptyMessage), 1)) : (T(), s(e, { key: 1 }, [c("div", na, [c("div", ra, [
3167
- f(P(Ce), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
3168
- R(c("input", {
3166
+ default: I(() => [t.items.length === 0 ? (T(), s("p", na, N(t.emptyMessage), 1)) : (T(), s(e, { key: 1 }, [c("div", ra, [c("div", ia, [
3167
+ f(P(Te), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
3168
+ L(c("input", {
3169
3169
  "onUpdate:modelValue": r[0] ||= (e) => d.value = e,
3170
3170
  type: "text",
3171
3171
  placeholder: t.searchPlaceholder,
3172
3172
  autocomplete: "off",
3173
3173
  class: v([
3174
- ca,
3174
+ la,
3175
3175
  "w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
3176
3176
  t.mono ? "font-mono" : ""
3177
3177
  ])
3178
- }, null, 10, ia), [[re, d.value]]),
3178
+ }, null, 10, aa), [[re, d.value]]),
3179
3179
  d.value ? (T(), s("button", {
3180
3180
  key: 0,
3181
3181
  type: "button",
@@ -3183,7 +3183,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3183
3183
  class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
3184
3184
  onClick: r[1] ||= (e) => d.value = ""
3185
3185
  }, " ✕ ")) : o("", !0)
3186
- ]), m.value.length > 0 ? (T(), a(gi, {
3186
+ ]), m.value.length > 0 ? (T(), a(_i, {
3187
3187
  key: 0,
3188
3188
  modelValue: p.value,
3189
3189
  "onUpdate:modelValue": r[2] ||= (e) => p.value = e,
@@ -3193,13 +3193,13 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3193
3193
  "modelValue",
3194
3194
  "options",
3195
3195
  "aria-label"
3196
- ])) : o("", !0)]), h.value.length === 0 ? (T(), s("p", aa, N(t.noMatchMessage), 1)) : (T(), s("div", oa, [(T(!0), s(e, null, k(h.value, (e) => (T(), s("button", {
3196
+ ])) : o("", !0)]), h.value.length === 0 ? (T(), s("p", oa, N(t.noMatchMessage), 1)) : (T(), s("div", sa, [(T(!0), s(e, null, k(h.value, (e) => (T(), s("button", {
3197
3197
  key: e.id,
3198
3198
  type: "button",
3199
3199
  title: e.title,
3200
3200
  class: v(["h-8 shrink-0 rounded-md border border-slate-300 dark:border-slate-600 bg-slate-50 dark:bg-slate-900 px-3 text-sm text-slate-700 dark:text-slate-200 transition-colors hover:border-emerald-500 hover:bg-emerald-50 hover:text-emerald-700 dark:hover:bg-emerald-500/10 dark:hover:text-emerald-400 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", t.mono ? "font-mono" : ""]),
3201
3201
  onClick: (t) => l("pick", e)
3202
- }, N(e.label), 11, sa))), 128))]))], 64))]),
3202
+ }, N(e.label), 11, ca))), 128))]))], 64))]),
3203
3203
  _: 1
3204
3204
  }, 8, [
3205
3205
  "title",
@@ -3208,7 +3208,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3208
3208
  "max-width-class"
3209
3209
  ]));
3210
3210
  }
3211
- }), da = ["aria-label"], fa = ["title"], pa = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, ma = ["title"], ha = /* @__PURE__ */ p({
3211
+ }), fa = ["aria-label"], pa = ["title"], ma = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, ha = ["title"], ga = /* @__PURE__ */ p({
3212
3212
  __name: "BaseBarDistribution",
3213
3213
  props: {
3214
3214
  bars: {},
@@ -3229,7 +3229,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3229
3229
  class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
3230
3230
  title: o(e)
3231
3231
  }, [
3232
- c("span", pa, N(e.count), 1),
3232
+ c("span", ma, N(e.count), 1),
3233
3233
  c("div", {
3234
3234
  class: v(["w-full max-w-8 rounded-t", t.barClass]),
3235
3235
  style: b({ height: `${a(e)}px` })
@@ -3237,10 +3237,10 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3237
3237
  c("span", {
3238
3238
  class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
3239
3239
  title: e.label
3240
- }, N(e.label), 9, ma)
3241
- ], 8, fa))), 128))], 8, da));
3240
+ }, N(e.label), 9, ha)
3241
+ ], 8, pa))), 128))], 8, fa));
3242
3242
  }
3243
- }), ga = /* @__PURE__ */ p({
3243
+ }), _a = /* @__PURE__ */ p({
3244
3244
  __name: "BaseDateTimePicker",
3245
3245
  props: {
3246
3246
  modelValue: { default: null },
@@ -3262,7 +3262,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3262
3262
  },
3263
3263
  emits: ["update:modelValue"],
3264
3264
  setup(e, { emit: t }) {
3265
- let n = e, r = t, { isDark: o } = W(), s = i(() => ({
3265
+ let n = e, r = t, { isDark: o } = U(), s = i(() => ({
3266
3266
  enableTimePicker: n.mode !== "date",
3267
3267
  is24: n.is24,
3268
3268
  ...n.timeConfig
@@ -3271,7 +3271,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3271
3271
  let e = n.is24 ? "HH:mm" : "hh:mm a";
3272
3272
  return n.mode === "date" ? { input: "dd/MM/yyyy" } : n.mode === "time" ? { input: e } : { input: `dd/MM/yyyy ${e}` };
3273
3273
  });
3274
- return (t, n) => (T(), a(P(je), {
3274
+ return (t, n) => (T(), a(P(Ne), {
3275
3275
  "model-value": e.modelValue,
3276
3276
  dark: P(o),
3277
3277
  "time-picker": e.mode === "time",
@@ -3282,7 +3282,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3282
3282
  "onUpdate:modelValue": n[0] ||= (e) => r("update:modelValue", e)
3283
3283
  }, l({ _: 2 }, [k(t.$slots, (e, n) => ({
3284
3284
  name: n,
3285
- fn: L((e) => [A(t.$slots, n, y(h(e ?? {})))])
3285
+ fn: I((e) => [A(t.$slots, n, y(h(e ?? {})))])
3286
3286
  }))]), 1032, [
3287
3287
  "model-value",
3288
3288
  "dark",
@@ -3293,28 +3293,28 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3293
3293
  "teleport"
3294
3294
  ]));
3295
3295
  }
3296
- }), _a = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-1" }, va = { class: "truncate" }, ya = [
3296
+ }), va = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-1" }, ya = { class: "truncate" }, ba = [
3297
3297
  "aria-label",
3298
3298
  "disabled",
3299
3299
  "onClick"
3300
- ], ba = [
3300
+ ], xa = [
3301
3301
  "disabled",
3302
3302
  "readonly",
3303
3303
  "aria-label",
3304
3304
  "aria-expanded",
3305
3305
  "aria-activedescendant",
3306
3306
  "placeholder"
3307
- ], xa = ["aria-multiselectable"], Sa = [
3307
+ ], Sa = ["aria-multiselectable"], Ca = [
3308
3308
  "id",
3309
3309
  "aria-selected",
3310
3310
  "aria-disabled",
3311
3311
  "title",
3312
3312
  "onMouseenter",
3313
3313
  "onClick"
3314
- ], Ca = { class: "truncate" }, wa = {
3314
+ ], wa = { class: "truncate" }, Ta = {
3315
3315
  key: 0,
3316
3316
  class: "px-3 py-2 text-sm text-slate-500 dark:text-slate-400"
3317
- }, Ta = /* @__PURE__ */ p({
3317
+ }, Ea = /* @__PURE__ */ p({
3318
3318
  __name: "BaseSearchSelect",
3319
3319
  props: {
3320
3320
  options: {},
@@ -3353,7 +3353,7 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3353
3353
  let e = m.value.trim().toLowerCase();
3354
3354
  return e ? r.options.filter((t) => t.label.toLowerCase().includes(e)) : [...r.options];
3355
3355
  });
3356
- I(D, (e) => {
3356
+ ae(D, (e) => {
3357
3357
  h.value = e.findIndex((e) => !e.disabled);
3358
3358
  });
3359
3359
  function A(e) {
@@ -3379,26 +3379,26 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3379
3379
  } else l("update:modelValue", e.value), F(), d.value?.blur();
3380
3380
  }
3381
3381
  }
3382
- function L(e) {
3382
+ function I(e) {
3383
3383
  l("update:modelValue", y.value.filter((t) => t !== e.value));
3384
3384
  }
3385
- function ae() {
3385
+ function oe() {
3386
3386
  l("update:modelValue", r.multiple ? [] : null), m.value = "";
3387
3387
  }
3388
- function oe(e) {
3388
+ function se(e) {
3389
3389
  let t = D.value;
3390
3390
  if (t.length === 0) return;
3391
3391
  let n = h.value;
3392
3392
  for (let r = 0; r < t.length && (n = (n + e + t.length) % t.length, t[n].disabled); r++);
3393
3393
  h.value = n, _(() => document.getElementById(`${g}-${n}`)?.scrollIntoView?.({ block: "nearest" }));
3394
3394
  }
3395
- function se(e) {
3395
+ function ce(e) {
3396
3396
  switch (e.key) {
3397
3397
  case "ArrowDown":
3398
- e.preventDefault(), p.value ? oe(1) : M();
3398
+ e.preventDefault(), p.value ? se(1) : M();
3399
3399
  break;
3400
3400
  case "ArrowUp":
3401
- e.preventDefault(), p.value ? oe(-1) : M();
3401
+ e.preventDefault(), p.value ? se(-1) : M();
3402
3402
  break;
3403
3403
  case "Enter":
3404
3404
  p.value && h.value >= 0 && (e.preventDefault(), ne(D.value[h.value]));
@@ -3409,13 +3409,13 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3409
3409
  case "Tab":
3410
3410
  F();
3411
3411
  break;
3412
- case "Backspace": r.multiple && m.value === "" && b.value.length && L(b.value[b.value.length - 1]);
3412
+ case "Backspace": r.multiple && m.value === "" && b.value.length && I(b.value[b.value.length - 1]);
3413
3413
  }
3414
3414
  }
3415
- function ce(e) {
3415
+ function le(e) {
3416
3416
  p.value && u.value && !u.value.contains(e.target) && F();
3417
3417
  }
3418
- return S(() => document.addEventListener("mousedown", ce)), x(() => document.removeEventListener("mousedown", ce)), (n, r) => (T(), s("div", {
3418
+ return S(() => document.addEventListener("mousedown", le)), x(() => document.removeEventListener("mousedown", le)), (n, r) => (T(), s("div", {
3419
3419
  ref_key: "rootEl",
3420
3420
  ref: u,
3421
3421
  class: v(t.block ? "relative w-full" : "relative inline-block min-w-48")
@@ -3423,20 +3423,20 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3423
3423
  class: v(["flex min-h-[38px] items-center gap-1.5 rounded-lg border bg-white px-3 py-1.5 text-sm transition-colors dark:bg-slate-900", [p.value ? "border-emerald-500 ring-2 ring-emerald-500/30" : "border-slate-300 hover:border-slate-400 dark:border-slate-600 dark:hover:border-slate-500", t.disabled ? "cursor-not-allowed opacity-60" : "cursor-text"]]),
3424
3424
  onMousedown: te
3425
3425
  }, [
3426
- c("div", _a, [(T(!0), s(e, null, k(b.value, (e) => R((T(), s("span", {
3426
+ c("div", va, [(T(!0), s(e, null, k(b.value, (e) => L((T(), s("span", {
3427
3427
  key: String(e.value),
3428
3428
  class: "inline-flex max-w-full items-center gap-1 rounded-md bg-emerald-50 py-0.5 pl-2 pr-1 text-xs font-medium text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300"
3429
- }, [c("span", va, N(e.label), 1), c("button", {
3429
+ }, [c("span", ya, N(e.label), 1), c("button", {
3430
3430
  type: "button",
3431
3431
  class: "rounded p-0.5 hover:bg-emerald-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 dark:hover:bg-emerald-500/25",
3432
3432
  "aria-label": `Remove ${e.label}`,
3433
3433
  disabled: t.disabled,
3434
- onMousedown: r[0] ||= z(() => {}, ["stop", "prevent"]),
3435
- onClick: z((t) => L(e), ["stop"])
3436
- }, [f(P(B), {
3434
+ onMousedown: r[0] ||= R(() => {}, ["stop", "prevent"]),
3435
+ onClick: R((t) => I(e), ["stop"])
3436
+ }, [f(P(z), {
3437
3437
  class: "h-3 w-3",
3438
3438
  "aria-hidden": "true"
3439
- })], 40, ya)])), [[ie, t.multiple]])), 128)), R(c("input", {
3439
+ })], 40, ba)])), [[ie, t.multiple]])), 128)), L(c("input", {
3440
3440
  ref_key: "inputEl",
3441
3441
  ref: d,
3442
3442
  "onUpdate:modelValue": r[1] ||= (e) => m.value = e,
@@ -3454,20 +3454,20 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3454
3454
  class: v(["min-w-16 flex-1 border-0 bg-transparent p-0 py-0.5 text-sm text-slate-900 outline-none focus:ring-0 dark:text-slate-100 disabled:cursor-not-allowed", w.value ? "placeholder:text-slate-900 dark:placeholder:text-slate-100" : "placeholder:text-slate-400 dark:placeholder:text-slate-500"]),
3455
3455
  onFocus: M,
3456
3456
  onInput: M,
3457
- onKeydown: se
3458
- }, null, 42, ba), [[re, m.value]])]),
3457
+ onKeydown: ce
3458
+ }, null, 42, xa), [[re, m.value]])]),
3459
3459
  t.clearable && C.value && !t.disabled ? (T(), s("button", {
3460
3460
  key: 0,
3461
3461
  type: "button",
3462
3462
  class: "shrink-0 rounded p-0.5 text-slate-400 hover:text-slate-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 dark:hover:text-slate-200",
3463
3463
  "aria-label": "Clear selection",
3464
- onMousedown: r[2] ||= z(() => {}, ["stop", "prevent"]),
3465
- onClick: z(ae, ["stop"])
3466
- }, [f(P(B), {
3464
+ onMousedown: r[2] ||= R(() => {}, ["stop", "prevent"]),
3465
+ onClick: R(oe, ["stop"])
3466
+ }, [f(P(z), {
3467
3467
  class: "h-4 w-4",
3468
3468
  "aria-hidden": "true"
3469
3469
  })], 32)) : o("", !0),
3470
- f(P(me), {
3470
+ f(P(ge), {
3471
3471
  class: v(["h-4 w-4 shrink-0 text-slate-500 transition-transform dark:text-slate-400", p.value ? "rotate-180" : ""]),
3472
3472
  "aria-hidden": "true"
3473
3473
  }, null, 8, ["class"])
@@ -3485,31 +3485,31 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3485
3485
  "aria-disabled": e.disabled || void 0,
3486
3486
  title: e.title,
3487
3487
  class: v(["flex cursor-pointer items-center justify-between gap-2 px-3 py-2 text-left text-sm", j(e, t)]),
3488
- onMousedown: r[3] ||= z(() => {}, ["prevent"]),
3488
+ onMousedown: r[3] ||= R(() => {}, ["prevent"]),
3489
3489
  onMouseenter: (e) => h.value = t,
3490
3490
  onClick: (t) => ne(e)
3491
- }, [c("span", Ca, N(e.label), 1), A(e) ? (T(), a(P(de), {
3491
+ }, [c("span", wa, N(e.label), 1), A(e) ? (T(), a(P(pe), {
3492
3492
  key: 0,
3493
3493
  class: "h-4 w-4 shrink-0",
3494
3494
  "aria-hidden": "true"
3495
- })) : o("", !0)], 42, Sa))), 128)), D.value.length === 0 ? (T(), s("li", wa, N(t.options.length === 0 ? t.emptyText : t.noResultsText), 1)) : o("", !0)], 8, xa)) : o("", !0)], 2));
3495
+ })) : o("", !0)], 42, Ca))), 128)), D.value.length === 0 ? (T(), s("li", Ta, N(t.options.length === 0 ? t.emptyText : t.noResultsText), 1)) : o("", !0)], 8, Sa)) : o("", !0)], 2));
3496
3496
  }
3497
- }), Ea = { class: "rounded-xl border border-slate-200 bg-white text-left shadow-sm dark:border-slate-700 dark:bg-slate-900" }, Da = {
3497
+ }), Da = { class: "rounded-xl border border-slate-200 bg-white text-left shadow-sm dark:border-slate-700 dark:bg-slate-900" }, Oa = {
3498
3498
  key: 0,
3499
3499
  class: "flex flex-wrap items-center justify-between gap-3 border-b border-slate-200 px-5 py-3 dark:border-slate-700"
3500
- }, Oa = { class: "min-w-0" }, ka = {
3500
+ }, ka = { class: "min-w-0" }, Aa = {
3501
3501
  key: 0,
3502
3502
  class: "text-base font-semibold text-slate-900 dark:text-slate-100"
3503
- }, Aa = {
3503
+ }, ja = {
3504
3504
  key: 1,
3505
3505
  class: "text-sm text-slate-500 dark:text-slate-400"
3506
- }, ja = {
3506
+ }, Ma = {
3507
3507
  key: 0,
3508
3508
  class: "flex items-center gap-2"
3509
- }, Ma = {
3509
+ }, Na = {
3510
3510
  key: 1,
3511
3511
  class: "flex flex-wrap items-center justify-end gap-2 border-t border-slate-200 px-5 py-3 dark:border-slate-700"
3512
- }, Na = /* @__PURE__ */ p({
3512
+ }, Pa = /* @__PURE__ */ p({
3513
3513
  __name: "BaseCard",
3514
3514
  props: {
3515
3515
  title: { default: "" },
@@ -3517,24 +3517,24 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3517
3517
  padding: { default: "md" }
3518
3518
  },
3519
3519
  setup(e) {
3520
- return (t, n) => (T(), s("section", Ea, [
3521
- e.title || e.subtitle || t.$slots.actions ? (T(), s("header", Da, [c("div", Oa, [e.title ? (T(), s("h2", ka, N(e.title), 1)) : o("", !0), e.subtitle ? (T(), s("p", Aa, N(e.subtitle), 1)) : o("", !0)]), t.$slots.actions ? (T(), s("div", ja, [A(t.$slots, "actions")])) : o("", !0)])) : o("", !0),
3520
+ return (t, n) => (T(), s("section", Da, [
3521
+ e.title || e.subtitle || t.$slots.actions ? (T(), s("header", Oa, [c("div", ka, [e.title ? (T(), s("h2", Aa, N(e.title), 1)) : o("", !0), e.subtitle ? (T(), s("p", ja, N(e.subtitle), 1)) : o("", !0)]), t.$slots.actions ? (T(), s("div", Ma, [A(t.$slots, "actions")])) : o("", !0)])) : o("", !0),
3522
3522
  c("div", { class: v(e.padding === "sm" ? "p-4" : e.padding === "none" ? "" : "p-5") }, [A(t.$slots, "default")], 2),
3523
- t.$slots.footer ? (T(), s("footer", Ma, [A(t.$slots, "footer")])) : o("", !0)
3523
+ t.$slots.footer ? (T(), s("footer", Na, [A(t.$slots, "footer")])) : o("", !0)
3524
3524
  ]));
3525
3525
  }
3526
- }), Pa = ["for"], Fa = {
3526
+ }), Fa = ["for"], Ia = {
3527
3527
  key: 0,
3528
3528
  class: "ml-0.5 text-red-500",
3529
3529
  "aria-hidden": "true"
3530
- }, Ia = {
3530
+ }, La = {
3531
3531
  key: 1,
3532
3532
  class: "mt-1 text-xs font-medium text-red-600 dark:text-red-400",
3533
3533
  role: "alert"
3534
- }, La = {
3534
+ }, Ra = {
3535
3535
  key: 2,
3536
3536
  class: "mt-1 text-xs text-slate-500 dark:text-slate-400"
3537
- }, Ra = /* @__PURE__ */ p({
3537
+ }, za = /* @__PURE__ */ p({
3538
3538
  __name: "BaseField",
3539
3539
  props: {
3540
3540
  label: { default: "" },
@@ -3560,12 +3560,12 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3560
3560
  key: 0,
3561
3561
  for: e.labelFor || void 0,
3562
3562
  class: v(["mb-1 block", e.compact ? "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" : "text-sm font-medium text-slate-700 dark:text-slate-200"])
3563
- }, [d(N(e.label), 1), e.required ? (T(), s("span", Fa, "*")) : o("", !0)], 10, Pa)) : o("", !0),
3563
+ }, [d(N(e.label), 1), e.required ? (T(), s("span", Ia, "*")) : o("", !0)], 10, Fa)) : o("", !0),
3564
3564
  A(t.$slots, "default"),
3565
- e.error ? (T(), s("p", Ia, N(e.error), 1)) : e.hint ? (T(), s("p", La, N(e.hint), 1)) : o("", !0)
3565
+ e.error ? (T(), s("p", La, N(e.error), 1)) : e.hint ? (T(), s("p", Ra, N(e.hint), 1)) : o("", !0)
3566
3566
  ], 2));
3567
3567
  }
3568
- }), za = { class: "flex items-start justify-between gap-3" }, Ba = { class: "min-w-0 text-left" }, Va = { class: "truncate text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, Ha = /* @__PURE__ */ p({
3568
+ }), Ba = { class: "flex items-start justify-between gap-3" }, Va = { class: "min-w-0 text-left" }, Ha = { class: "truncate text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, Ua = /* @__PURE__ */ p({
3569
3569
  __name: "BaseStatCard",
3570
3570
  props: {
3571
3571
  title: {},
@@ -3612,9 +3612,9 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3612
3612
  icon: "text-slate-500 dark:text-slate-300"
3613
3613
  }
3614
3614
  }, r = i(() => n[t.accent]);
3615
- return (t, n) => (T(), a(M(e.to ? P(Oe) : "div"), g(e.to ? { to: e.to } : {}, { class: ["relative block rounded-xl border-2 border-dashed bg-white p-5 transition-colors dark:bg-slate-800", [r.value.border, e.to ? "hover:bg-slate-50 dark:hover:bg-slate-700/60 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500" : ""]] }), {
3616
- default: L(() => [c("div", za, [c("div", Ba, [
3617
- c("p", Va, N(e.title), 1),
3615
+ return (t, n) => (T(), a(M(e.to ? P(Ae) : "div"), g(e.to ? { to: e.to } : {}, { class: ["relative block rounded-xl border-2 border-dashed bg-white p-5 transition-colors dark:bg-slate-800", [r.value.border, e.to ? "hover:bg-slate-50 dark:hover:bg-slate-700/60 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500" : ""]] }), {
3616
+ default: I(() => [c("div", Ba, [c("div", Va, [
3617
+ c("p", Ha, N(e.title), 1),
3618
3618
  c("p", { class: v(["mt-1 truncate text-3xl font-bold", r.value.value]) }, N(e.value), 3),
3619
3619
  e.subtitle ? (T(), s("p", {
3620
3620
  key: 0,
@@ -3628,14 +3628,14 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3628
3628
  _: 3
3629
3629
  }, 16, ["class"]));
3630
3630
  }
3631
- }), Ua = [
3631
+ }), Wa = [
3632
3632
  "aria-checked",
3633
3633
  "aria-label",
3634
3634
  "disabled"
3635
- ], Wa = {
3635
+ ], Ga = {
3636
3636
  key: 0,
3637
3637
  class: "text-sm font-medium text-slate-700 dark:text-slate-200"
3638
- }, Ga = /* @__PURE__ */ p({
3638
+ }, Ka = /* @__PURE__ */ p({
3639
3639
  __name: "BaseToggle",
3640
3640
  props: {
3641
3641
  modelValue: {
@@ -3675,18 +3675,99 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3675
3675
  }, [c("span", {
3676
3676
  class: v(["inline-block h-5 w-5 rounded-full bg-white shadow ring-1 ring-black/5 transition-transform", e.modelValue ? "translate-x-[22px]" : "translate-x-0.5"]),
3677
3677
  "aria-hidden": "true"
3678
- }, null, 2)], 10, Ua), e.label ? (T(), s("span", Wa, N(e.label), 1)) : o("", !0)], 2));
3678
+ }, null, 2)], 10, Wa), e.label ? (T(), s("span", Ga, N(e.label), 1)) : o("", !0)], 2));
3679
+ }
3680
+ }), qa = ["checked", "disabled"], Ja = {
3681
+ key: 0,
3682
+ class: "text-sm text-slate-700 dark:text-slate-200"
3683
+ }, Ya = /* @__PURE__ */ p({
3684
+ inheritAttrs: !1,
3685
+ __name: "BaseCheckbox",
3686
+ props: {
3687
+ modelValue: {
3688
+ type: Boolean,
3689
+ default: !1
3690
+ },
3691
+ label: { default: "" },
3692
+ disabled: {
3693
+ type: Boolean,
3694
+ default: !1
3695
+ }
3696
+ },
3697
+ emits: ["update:modelValue", "change"],
3698
+ setup(e, { emit: t }) {
3699
+ let n = t;
3700
+ function r(e) {
3701
+ let t = e.target.checked;
3702
+ n("update:modelValue", t), n("change", t);
3703
+ }
3704
+ return (t, n) => (T(), s("label", { class: v(["inline-flex items-center gap-2 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [c("input", g(t.$attrs, {
3705
+ type: "checkbox",
3706
+ checked: e.modelValue,
3707
+ disabled: e.disabled,
3708
+ class: "h-5 w-5 shrink-0 cursor-[inherit] rounded-md border-slate-300 bg-white text-emerald-600 accent-emerald-600 transition-colors focus:ring-2 focus:ring-emerald-500/40 focus:ring-offset-0 dark:border-slate-600 dark:bg-slate-900 dark:checked:bg-emerald-600",
3709
+ onChange: r
3710
+ }), null, 16, qa), e.label || t.$slots.default ? (T(), s("span", Ja, [A(t.$slots, "default", {}, () => [d(N(e.label), 1)])])) : o("", !0)], 2));
3679
3711
  }
3680
- }), Ka = { class: "flex min-h-screen w-full flex-col items-center justify-center bg-slate-50 px-4 py-10 dark:bg-slate-950" }, qa = { class: "mb-6 flex justify-center" }, Ja = {
3712
+ }), Xa = { class: "flex flex-col gap-2 text-left" }, Za = {
3713
+ class: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-emerald-100 text-sm font-semibold text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300",
3714
+ "aria-hidden": "true"
3715
+ }, Qa = { class: "min-w-0" }, $a = { class: "block truncate text-sm font-medium text-slate-900 dark:text-slate-100" }, eo = {
3716
+ key: 0,
3717
+ class: "block truncate text-xs text-slate-500 dark:text-slate-400"
3718
+ }, to = /* @__PURE__ */ p({
3719
+ __name: "BaseSidebarUser",
3720
+ props: {
3721
+ name: {},
3722
+ email: { default: "" },
3723
+ to: { default: void 0 },
3724
+ showLogout: {
3725
+ type: Boolean,
3726
+ default: !0
3727
+ },
3728
+ logoutLabel: { default: "Logout" },
3729
+ profileLabel: { default: "View profile" }
3730
+ },
3731
+ emits: ["logout"],
3732
+ setup(e, { emit: t }) {
3733
+ let n = e, r = t, l = i(() => (n.name || "?").split(/[\s._-]+/).filter(Boolean).slice(0, 2).map((e) => e[0].toUpperCase()).join(""));
3734
+ return (t, n) => (T(), s("div", Xa, [(T(), a(M(e.to ? P(Ae) : "div"), g(e.to ? { to: e.to } : {}, {
3735
+ class: ["flex items-center gap-3 rounded-lg p-2 transition-colors", e.to ? "hover:bg-slate-100 dark:hover:bg-slate-800 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500" : ""],
3736
+ title: e.to ? e.profileLabel : void 0
3737
+ }), {
3738
+ default: I(() => [c("span", Za, N(l.value), 1), c("span", Qa, [c("span", $a, N(e.name), 1), e.email ? (T(), s("span", eo, N(e.email), 1)) : o("", !0)])]),
3739
+ _: 1
3740
+ }, 16, ["class", "title"])), e.showLogout ? (T(), a(q, {
3741
+ key: 0,
3742
+ class: "w-full justify-center",
3743
+ description: e.logoutLabel,
3744
+ color: P(G).RED,
3745
+ size: P(K).SMALL,
3746
+ outline: "",
3747
+ "icon-left": "",
3748
+ onClick: n[0] ||= (e) => r("logout")
3749
+ }, {
3750
+ default: I(() => [f(P(ce), {
3751
+ class: "mr-1.5 h-4 w-4",
3752
+ "aria-hidden": "true"
3753
+ })]),
3754
+ _: 1
3755
+ }, 8, [
3756
+ "description",
3757
+ "color",
3758
+ "size"
3759
+ ])) : o("", !0)]));
3760
+ }
3761
+ }), no = { class: "flex min-h-screen w-full flex-col items-center justify-center bg-slate-50 px-4 py-10 dark:bg-slate-950" }, ro = { class: "mb-6 flex justify-center" }, io = {
3681
3762
  key: 0,
3682
3763
  class: "mb-1 text-2xl font-bold tracking-tight text-slate-900 dark:text-slate-100"
3683
- }, Ya = {
3764
+ }, ao = {
3684
3765
  key: 1,
3685
3766
  class: "text-sm text-slate-500 dark:text-slate-400"
3686
- }, Xa = {
3767
+ }, oo = {
3687
3768
  key: 2,
3688
3769
  class: "mt-6 border-t border-slate-200 pt-4 text-center text-sm text-slate-500 dark:border-slate-700 dark:text-slate-400"
3689
- }, Za = /* @__PURE__ */ p({
3770
+ }, so = /* @__PURE__ */ p({
3690
3771
  __name: "BaseAuthLayout",
3691
3772
  props: {
3692
3773
  title: { default: "" },
@@ -3697,17 +3778,17 @@ var Bn = ["aria-label", "aria-expanded"], Vn = { class: "flex flex-col h-full" }
3697
3778
  }
3698
3779
  },
3699
3780
  setup(e) {
3700
- return (t, n) => (T(), s("div", Ka, [c("div", qa, [A(t.$slots, "logo", {}, () => [f(Dt, { size: P(J).MEDIUM }, null, 8, ["size"])])]), c("div", { class: v(["w-full rounded-xl border border-slate-200 bg-white p-6 text-left shadow-sm sm:p-8 dark:border-slate-700 dark:bg-slate-900", e.wide ? "max-w-3xl" : "max-w-md"]) }, [
3701
- e.title ? (T(), s("h1", Ja, N(e.title), 1)) : o("", !0),
3702
- e.subtitle ? (T(), s("p", Ya, N(e.subtitle), 1)) : o("", !0),
3781
+ return (t, n) => (T(), s("div", no, [c("div", ro, [A(t.$slots, "logo", {}, () => [f(Ot, { size: P(J).MEDIUM }, null, 8, ["size"])])]), c("div", { class: v(["w-full rounded-xl border border-slate-200 bg-white p-6 text-left shadow-sm sm:p-8 dark:border-slate-700 dark:bg-slate-900", e.wide ? "max-w-3xl" : "max-w-md"]) }, [
3782
+ e.title ? (T(), s("h1", io, N(e.title), 1)) : o("", !0),
3783
+ e.subtitle ? (T(), s("p", ao, N(e.subtitle), 1)) : o("", !0),
3703
3784
  c("div", { class: v(e.title || e.subtitle ? "mt-6" : "") }, [A(t.$slots, "default")], 2),
3704
- t.$slots.footer ? (T(), s("div", Xa, [A(t.$slots, "footer")])) : o("", !0)
3785
+ t.$slots.footer ? (T(), s("div", oo, [A(t.$slots, "footer")])) : o("", !0)
3705
3786
  ], 2)]));
3706
3787
  }
3707
3788
  });
3708
3789
  //#endregion
3709
3790
  //#region node_modules/@heroicons/vue/20/solid/esm/CheckCircleIcon.js
3710
- function Qa(e, t) {
3791
+ function co(e, t) {
3711
3792
  return T(), s("svg", {
3712
3793
  xmlns: "http://www.w3.org/2000/svg",
3713
3794
  viewBox: "0 0 20 20",
@@ -3722,7 +3803,7 @@ function Qa(e, t) {
3722
3803
  }
3723
3804
  //#endregion
3724
3805
  //#region node_modules/@heroicons/vue/20/solid/esm/XCircleIcon.js
3725
- function $a(e, t) {
3806
+ function lo(e, t) {
3726
3807
  return T(), s("svg", {
3727
3808
  xmlns: "http://www.w3.org/2000/svg",
3728
3809
  viewBox: "0 0 20 20",
@@ -3737,7 +3818,7 @@ function $a(e, t) {
3737
3818
  }
3738
3819
  //#endregion
3739
3820
  //#region src/components/BaseBooleanBadge.vue
3740
- var eo = /* @__PURE__ */ p({
3821
+ var uo = /* @__PURE__ */ p({
3741
3822
  __name: "BaseBooleanBadge",
3742
3823
  props: {
3743
3824
  value: {
@@ -3748,20 +3829,20 @@ var eo = /* @__PURE__ */ p({
3748
3829
  falseLabel: { default: "No" }
3749
3830
  },
3750
3831
  setup(e) {
3751
- return (t, n) => (T(), s("span", { class: v(["inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium ring-1 ring-inset", e.value ? "bg-emerald-50 text-emerald-700 ring-emerald-600/20 dark:bg-emerald-500/10 dark:text-emerald-300 dark:ring-emerald-400/30" : "bg-slate-100 text-slate-600 ring-slate-500/20 dark:bg-slate-700/50 dark:text-slate-300 dark:ring-slate-400/20"]) }, [e.value ? (T(), a(P(Qa), {
3832
+ return (t, n) => (T(), s("span", { class: v(["inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium ring-1 ring-inset", e.value ? "bg-emerald-50 text-emerald-700 ring-emerald-600/20 dark:bg-emerald-500/10 dark:text-emerald-300 dark:ring-emerald-400/30" : "bg-red-50 text-red-700 ring-red-600/20 dark:bg-red-500/10 dark:text-red-300 dark:ring-red-400/30"]) }, [e.value ? (T(), a(P(co), {
3752
3833
  key: 0,
3753
3834
  class: "h-3.5 w-3.5",
3754
3835
  "aria-hidden": "true"
3755
- })) : (T(), a(P($a), {
3836
+ })) : (T(), a(P(lo), {
3756
3837
  key: 1,
3757
3838
  class: "h-3.5 w-3.5",
3758
3839
  "aria-hidden": "true"
3759
3840
  })), d(" " + N(e.value ? e.trueLabel : e.falseLabel), 1)], 2));
3760
3841
  }
3761
- }), to = { class: "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" }, no = ["href"], ro = {
3842
+ }), fo = { class: "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" }, po = ["href"], mo = {
3762
3843
  key: 1,
3763
3844
  class: "text-slate-400 dark:text-slate-500"
3764
- }, io = /* @__PURE__ */ p({
3845
+ }, ho = /* @__PURE__ */ p({
3765
3846
  __name: "BaseDetailList",
3766
3847
  props: {
3767
3848
  items: {},
@@ -3775,20 +3856,20 @@ var eo = /* @__PURE__ */ p({
3775
3856
  return (r, i) => (T(), s("dl", { class: v(["grid grid-cols-1 gap-x-6 gap-y-4 text-left", t.columns === 2 ? "sm:grid-cols-2" : t.columns === 3 ? "sm:grid-cols-2 lg:grid-cols-3" : ""]) }, [(T(!0), s(e, null, k(t.items, (r) => (T(), s("div", {
3776
3857
  key: r.label,
3777
3858
  class: "min-w-0"
3778
- }, [c("dt", to, N(r.label), 1), c("dd", { class: v(["mt-1 break-words text-sm text-slate-900 dark:text-slate-100", r.mono ? "font-mono" : ""]) }, [r.href && !n(r.value) ? (T(), s("a", {
3859
+ }, [c("dt", fo, N(r.label), 1), c("dd", { class: v(["mt-1 break-words text-sm text-slate-900 dark:text-slate-100", r.mono ? "font-mono" : ""]) }, [r.href && !n(r.value) ? (T(), s("a", {
3779
3860
  key: 0,
3780
3861
  href: r.href,
3781
3862
  target: "_blank",
3782
3863
  rel: "noopener noreferrer",
3783
3864
  class: "text-emerald-600 hover:underline dark:text-emerald-400"
3784
- }, N(r.value), 9, no)) : n(r.value) ? (T(), s("span", ro, N(t.emptyText), 1)) : (T(), s(e, { key: 2 }, [d(N(r.value), 1)], 64))], 2)]))), 128))], 2));
3865
+ }, N(r.value), 9, po)) : n(r.value) ? (T(), s("span", mo, N(t.emptyText), 1)) : (T(), s(e, { key: 2 }, [d(N(r.value), 1)], 64))], 2)]))), 128))], 2));
3785
3866
  }
3786
3867
  });
3787
3868
  //#endregion
3788
3869
  //#region src/composables/useDebounce.ts
3789
- function ao(e, t = 300) {
3870
+ function go(e, t = 300) {
3790
3871
  let n = O(e.value), r = null;
3791
- return I(e, (e) => {
3872
+ return ae(e, (e) => {
3792
3873
  r && clearTimeout(r), r = setTimeout(() => {
3793
3874
  n.value = e, r = null;
3794
3875
  }, t);
@@ -3798,7 +3879,7 @@ function ao(e, t = 300) {
3798
3879
  }
3799
3880
  //#endregion
3800
3881
  //#region src/composables/useToast.ts
3801
- function oo(e = 3e3) {
3882
+ function _o(e = 3e3) {
3802
3883
  let t = O(!1), n = O(""), r = O(Y.SUCCESS), i = null;
3803
3884
  function a() {
3804
3885
  i &&= (clearTimeout(i), null);
@@ -3819,8 +3900,8 @@ function oo(e = 3e3) {
3819
3900
  }
3820
3901
  //#endregion
3821
3902
  //#region src/composables/useQueryParamSync.ts
3822
- function so() {
3823
- let e = ke(), t = Ae();
3903
+ function vo() {
3904
+ let e = je(), t = Me();
3824
3905
  function n(t) {
3825
3906
  let n = e.query[t];
3826
3907
  return typeof n == "string" ? n : "";
@@ -3841,8 +3922,8 @@ function so() {
3841
3922
  }
3842
3923
  //#endregion
3843
3924
  //#region src/composables/useFieldClasses.ts
3844
- function co() {
3845
- let { isDark: e } = W(), t = i(() => e.value ? "text-gray-300" : "text-gray-600"), n = i(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
3925
+ function yo() {
3926
+ let { isDark: e } = U(), t = i(() => e.value ? "text-gray-300" : "text-gray-600"), n = i(() => e.value ? "bg-gray-800 border-gray-600 text-gray-100 placeholder-gray-500 focus:ring-emerald-500 focus:border-emerald-500" : "bg-white border-gray-300 text-gray-800 focus:ring-emerald-500 focus:border-emerald-500");
3846
3927
  function r(t) {
3847
3928
  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;
3848
3929
  }
@@ -3854,7 +3935,7 @@ function co() {
3854
3935
  }
3855
3936
  //#endregion
3856
3937
  //#region src/composables/usePolling.ts
3857
- function lo(e, t, n = {}) {
3938
+ function bo(e, t, n = {}) {
3858
3939
  let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = O(!1), s = !1;
3859
3940
  function c() {
3860
3941
  a === null && t !== null && (a = setInterval(() => void e(), t));
@@ -3889,62 +3970,62 @@ function lo(e, t, n = {}) {
3889
3970
  }
3890
3971
  //#endregion
3891
3972
  //#region src/enums/BaseBadgeEnum.ts
3892
- var uo = /* @__PURE__ */ function(e) {
3973
+ var xo = /* @__PURE__ */ function(e) {
3893
3974
  return e.WIN = "WIN", e.LOSE = "LOSE", e;
3894
3975
  }({});
3895
3976
  //#endregion
3896
3977
  //#region src/utils/util.ts
3897
- function fo(e) {
3978
+ function So(e) {
3898
3979
  let t = "red";
3899
3980
  switch (e) {
3900
- case V.ERROR:
3981
+ case B.ERROR:
3901
3982
  t = "red";
3902
3983
  break;
3903
- case V.SUCCESS:
3984
+ case B.SUCCESS:
3904
3985
  t = "green";
3905
3986
  break;
3906
- case V.INFO:
3987
+ case B.INFO:
3907
3988
  t = "gray";
3908
3989
  break;
3909
- case V.WARNING: t = "yellow";
3990
+ case B.WARNING: t = "yellow";
3910
3991
  }
3911
3992
  return t;
3912
3993
  }
3913
- function po(e) {
3994
+ function Co(e) {
3914
3995
  let t = "red";
3915
3996
  switch (e) {
3916
- case G.GREEN:
3997
+ case W.GREEN:
3917
3998
  t = "green";
3918
3999
  break;
3919
- case G.RED:
4000
+ case W.RED:
3920
4001
  t = "red";
3921
4002
  break;
3922
- case G.BLUE:
4003
+ case W.BLUE:
3923
4004
  t = "blue";
3924
4005
  break;
3925
- case G.YELLOW:
4006
+ case W.YELLOW:
3926
4007
  t = "yellow";
3927
4008
  break;
3928
- case G.BLACK:
4009
+ case W.BLACK:
3929
4010
  t = "black";
3930
4011
  break;
3931
- case G.GRAY:
4012
+ case W.GRAY:
3932
4013
  t = "gray";
3933
4014
  break;
3934
- case G.NONE: t = "";
4015
+ case W.NONE: t = "";
3935
4016
  }
3936
4017
  return t;
3937
4018
  }
3938
4019
  //#endregion
3939
4020
  //#region src/utils/httpColors.ts
3940
- var mo = {
4021
+ var wo = {
3941
4022
  GET: "bg-blue-600",
3942
4023
  POST: "bg-emerald-600",
3943
4024
  PUT: "bg-amber-600",
3944
4025
  DELETE: "bg-red-600",
3945
4026
  PATCH: "bg-purple-600",
3946
4027
  HEAD: "bg-gray-600"
3947
- }, ho = {
4028
+ }, To = {
3948
4029
  GET: "bg-blue-500",
3949
4030
  POST: "bg-green-500",
3950
4031
  PUT: "bg-yellow-500",
@@ -3952,39 +4033,39 @@ var mo = {
3952
4033
  PATCH: "bg-purple-500",
3953
4034
  HEAD: "bg-gray-500"
3954
4035
  };
3955
- function go(e) {
3956
- return e ? mo[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
4036
+ function Eo(e) {
4037
+ return e ? wo[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
3957
4038
  }
3958
- function _o(e) {
3959
- return e ? ho[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
4039
+ function Do(e) {
4040
+ return e ? To[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
3960
4041
  }
3961
- function vo(e) {
4042
+ function Oo(e) {
3962
4043
  let t = e ?? 0;
3963
4044
  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";
3964
4045
  }
3965
- function yo(e, t) {
4046
+ function ko(e, t) {
3966
4047
  let n = (e || "ANY").toUpperCase();
3967
4048
  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";
3968
4049
  }
3969
- function bo(e, t) {
4050
+ function Ao(e, t) {
3970
4051
  let n = e ?? 200;
3971
4052
  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";
3972
4053
  }
3973
- function xo(e, t) {
4054
+ function jo(e, t) {
3974
4055
  let n = e ?? 200;
3975
4056
  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";
3976
4057
  }
3977
4058
  //#endregion
3978
4059
  //#region src/utils/kvRows.ts
3979
- function So(e) {
4060
+ function Mo(e) {
3980
4061
  return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
3981
4062
  }
3982
- function Co(e) {
4063
+ function No(e) {
3983
4064
  return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
3984
4065
  }
3985
4066
  //#endregion
3986
4067
  //#region src/utils/sanitizeHtml.ts
3987
- var wo = /* @__PURE__ */ new Set([
4068
+ var Po = /* @__PURE__ */ new Set([
3988
4069
  "A",
3989
4070
  "B",
3990
4071
  "STRONG",
@@ -3999,7 +4080,7 @@ var wo = /* @__PURE__ */ new Set([
3999
4080
  "LI",
4000
4081
  "SPAN",
4001
4082
  "DIV"
4002
- ]), To = /* @__PURE__ */ new Set([
4083
+ ]), Fo = /* @__PURE__ */ new Set([
4003
4084
  "SCRIPT",
4004
4085
  "STYLE",
4005
4086
  "IFRAME",
@@ -4007,53 +4088,53 @@ var wo = /* @__PURE__ */ new Set([
4007
4088
  "EMBED",
4008
4089
  "NOSCRIPT",
4009
4090
  "TEMPLATE"
4010
- ]), Eo = { A: /* @__PURE__ */ new Set(["href", "title"]) };
4011
- function Do(e) {
4091
+ ]), Io = { A: /* @__PURE__ */ new Set(["href", "title"]) };
4092
+ function Lo(e) {
4012
4093
  let t = e.trim().toLowerCase();
4013
4094
  return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
4014
4095
  }
4015
- function Oo(e) {
4096
+ function Ro(e) {
4016
4097
  if (e.nodeType !== Node.ELEMENT_NODE) return;
4017
4098
  let t = e, n = t.tagName.toUpperCase();
4018
- if (!wo.has(n)) {
4019
- To.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
4099
+ if (!Po.has(n)) {
4100
+ Fo.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
4020
4101
  return;
4021
4102
  }
4022
- let r = Eo[n] ?? /* @__PURE__ */ new Set();
4103
+ let r = Io[n] ?? /* @__PURE__ */ new Set();
4023
4104
  for (let e of Array.from(t.attributes)) {
4024
4105
  if (!r.has(e.name.toLowerCase())) {
4025
4106
  t.removeAttribute(e.name);
4026
4107
  continue;
4027
4108
  }
4028
- n === "A" && e.name.toLowerCase() === "href" && !Do(e.value) && t.removeAttribute(e.name);
4109
+ n === "A" && e.name.toLowerCase() === "href" && !Lo(e.value) && t.removeAttribute(e.name);
4029
4110
  }
4030
4111
  n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
4031
- for (let e of Array.from(t.childNodes)) Oo(e);
4112
+ for (let e of Array.from(t.childNodes)) Ro(e);
4032
4113
  }
4033
- function ko(e) {
4114
+ function zo(e) {
4034
4115
  if (!e) return "";
4035
4116
  let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
4036
4117
  if (!t) return "";
4037
- for (let e of Array.from(t.childNodes)) Oo(e);
4118
+ for (let e of Array.from(t.childNodes)) Ro(e);
4038
4119
  return t.innerHTML;
4039
4120
  }
4040
4121
  //#endregion
4041
4122
  //#region src/utils/format.ts
4042
- var Ao = "—";
4043
- function jo(e, t = 4) {
4044
- if (e == null || typeof e == "string" && e.trim() === "") return Ao;
4123
+ var Bo = "—";
4124
+ function Vo(e, t = 4) {
4125
+ if (e == null || typeof e == "string" && e.trim() === "") return Bo;
4045
4126
  let n = typeof e == "string" ? Number(e) : e;
4046
4127
  return isFinite(n) ? n.toLocaleString(void 0, {
4047
4128
  minimumFractionDigits: t,
4048
4129
  maximumFractionDigits: t
4049
- }) : Ao;
4130
+ }) : Bo;
4050
4131
  }
4051
- function Mo(e) {
4052
- if (e == null || e === "") return Ao;
4132
+ function Ho(e) {
4133
+ if (e == null || e === "") return Bo;
4053
4134
  let t = new Date(e);
4054
4135
  return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
4055
4136
  }
4056
- function No(e) {
4137
+ function Uo(e) {
4057
4138
  return new Date(e).toLocaleString(void 0, {
4058
4139
  month: "short",
4059
4140
  day: "numeric",
@@ -4061,13 +4142,13 @@ function No(e) {
4061
4142
  minute: "2-digit"
4062
4143
  });
4063
4144
  }
4064
- function Po(e) {
4145
+ function Wo(e) {
4065
4146
  return new Date(e).toLocaleDateString(void 0, {
4066
4147
  month: "short",
4067
4148
  day: "numeric"
4068
4149
  });
4069
4150
  }
4070
- function Fo(e) {
4151
+ function Go(e) {
4071
4152
  try {
4072
4153
  return new Date(e).toLocaleString(void 0, {
4073
4154
  year: "numeric",
@@ -4083,7 +4164,7 @@ function Fo(e) {
4083
4164
  return String(e);
4084
4165
  }
4085
4166
  }
4086
- function Io(e) {
4167
+ function Ko(e) {
4087
4168
  if (!isFinite(e) || e === 0) return e.toFixed(2);
4088
4169
  let t = Math.abs(e), n = 2;
4089
4170
  return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
@@ -4091,14 +4172,14 @@ function Io(e) {
4091
4172
  maximumFractionDigits: n
4092
4173
  });
4093
4174
  }
4094
- function Lo(e, t = 2) {
4175
+ function qo(e, t = 2) {
4095
4176
  return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
4096
4177
  }
4097
- function Ro(e) {
4178
+ function Jo(e) {
4098
4179
  return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
4099
4180
  }
4100
- function zo(e) {
4101
- if (e == null || e === "") return Ao;
4181
+ function Yo(e) {
4182
+ if (e == null || e === "") return Bo;
4102
4183
  let t = new Date(e);
4103
4184
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
4104
4185
  year: "numeric",
@@ -4106,8 +4187,8 @@ function zo(e) {
4106
4187
  day: "numeric"
4107
4188
  });
4108
4189
  }
4109
- function Bo(e) {
4110
- if (e == null || e === "") return Ao;
4190
+ function Xo(e) {
4191
+ if (e == null || e === "") return Bo;
4111
4192
  let t = new Date(e);
4112
4193
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
4113
4194
  year: "numeric",
@@ -4117,22 +4198,22 @@ function Bo(e) {
4117
4198
  minute: "2-digit"
4118
4199
  });
4119
4200
  }
4120
- function Vo(e) {
4201
+ function Zo(e) {
4121
4202
  if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
4122
4203
  let t = e / 1e3, n = t < 1 ? 3 : 2;
4123
4204
  return `= ${t.toFixed(n)} s`;
4124
4205
  }
4125
- function Ho(e) {
4206
+ function Qo(e) {
4126
4207
  return e ? e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1048576).toFixed(1)} MB` : "";
4127
4208
  }
4128
- function Uo(e) {
4209
+ function $o(e) {
4129
4210
  try {
4130
4211
  return JSON.stringify(JSON.parse(e), null, 2);
4131
4212
  } catch {
4132
4213
  return e;
4133
4214
  }
4134
4215
  }
4135
- function Wo(e) {
4216
+ function es(e) {
4136
4217
  if (e == null) return "";
4137
4218
  if (typeof e == "string") return e;
4138
4219
  try {
@@ -4141,14 +4222,14 @@ function Wo(e) {
4141
4222
  return String(e);
4142
4223
  }
4143
4224
  }
4144
- function Go(e, t = 2) {
4145
- if (e == null || !isFinite(e)) return Ao;
4225
+ function ts(e, t = 2) {
4226
+ if (e == null || !isFinite(e)) return Bo;
4146
4227
  let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
4147
4228
  return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
4148
4229
  }
4149
4230
  //#endregion
4150
4231
  //#region src/utils/validate.ts
4151
- function Ko(e) {
4232
+ function ns(e) {
4152
4233
  let t = (e ?? "").trim();
4153
4234
  if (!t) return !1;
4154
4235
  try {
@@ -4158,7 +4239,7 @@ function Ko(e) {
4158
4239
  return !1;
4159
4240
  }
4160
4241
  }
4161
- function qo(e) {
4242
+ function rs(e) {
4162
4243
  if (!e.trim()) return !0;
4163
4244
  try {
4164
4245
  return JSON.parse(e), !0;
@@ -4166,7 +4247,7 @@ function qo(e) {
4166
4247
  return !1;
4167
4248
  }
4168
4249
  }
4169
- function Jo(e) {
4250
+ function is(e) {
4170
4251
  if (!e.trim()) return !0;
4171
4252
  try {
4172
4253
  return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
@@ -4174,7 +4255,7 @@ function Jo(e) {
4174
4255
  return !1;
4175
4256
  }
4176
4257
  }
4177
- function Yo(e) {
4258
+ function as(e) {
4178
4259
  if (!e.trim()) return !0;
4179
4260
  let t = e.replace(/\s+/g, "");
4180
4261
  if (!t) return !0;
@@ -4187,7 +4268,7 @@ function Yo(e) {
4187
4268
  }
4188
4269
  //#endregion
4189
4270
  //#region src/utils/specForm.ts
4190
- function Xo(e, t) {
4271
+ function os(e, t) {
4191
4272
  let n = {};
4192
4273
  if (!e) return n;
4193
4274
  for (let r of e) {
@@ -4196,7 +4277,7 @@ function Xo(e, t) {
4196
4277
  }
4197
4278
  return n;
4198
4279
  }
4199
- function Zo(e, t) {
4280
+ function ss(e, t) {
4200
4281
  if (!e) return null;
4201
4282
  for (let n of e) if (n.type === "decimal" || n.type === "integer") {
4202
4283
  let e = t[n.key], r = e === "" || e == null;
@@ -4207,7 +4288,7 @@ function Zo(e, t) {
4207
4288
  }
4208
4289
  //#endregion
4209
4290
  //#region src/utils/pnl.ts
4210
- function Qo(e) {
4291
+ function cs(e) {
4211
4292
  if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
4212
4293
  pnlUsd: null,
4213
4294
  pnlPct: null
@@ -4222,4 +4303,4 @@ function Qo(e) {
4222
4303
  };
4223
4304
  }
4224
4305
  //#endregion
4225
- export { V as AlertEnum, Sr as BaseActionButton, Le as BaseAlert, fr as BaseAppLayout, Za as BaseAuthLayout, ze as BaseBadge, uo as BaseBadgeEnum, ha as BaseBarDistribution, eo as BaseBooleanBadge, Ue as BaseBreadcrumb, Qe as BaseButton, K as BaseButtonEnum, q as BaseButtonSizeEnum, Na as BaseCard, Yr as BaseChipButton, ri as BaseCodeBlock, yn as BaseCollapsibleSection, Cn as BaseConfirmModal, wr as BaseCopyButton, ea as BaseCredentialsForm, ga as BaseDateTimePicker, io as BaseDetailList, fi as BaseDropdown, lr as BaseEntityPickerModal, Ra as BaseField, ni as BaseFileDropzone, Li as BaseFilterChip, Or as BaseGoogleSignInButton, ai as BaseInput, rt as BaseLine, it as BaseLoginEnum, Br as BaseLoginForm, Dt as BaseLogo, J as BaseLogoEnum, Pt as BaseModal, Ot as BaseModalEnum, gn as BaseModalShell, An as BaseNotFoundPage, qr as BaseNotificationPanel, gr as BasePageHeader, ua as BasePillPickerModal, Xr as BaseRemoveButton, Ft as BaseRow, Ta as BaseSearchSelect, gi as BaseSegmentedControl, si as BaseSelect, Xn as BaseSidebar, Mi as BaseSpecFields, It as BaseSpinner, Fi as BaseStatBreakdown, Ha as BaseStatCard, $r as BaseStatusPill, wi as BaseTable, Dn as BaseTextInputModal, zt as BaseToast, Y as BaseToastEnum, Ga as BaseToggle, yr as BaseToolbarButton, Vt as ColoredSquares, G as ColorsEnums, Wt as EarningsCard, Yt as EuroAmount, $e as LineEnum, en as Pagination, X as PositioningEnum, on as TrendArrow, Xo as buildSpecParams, Qo as computePnL, Zo as firstInvalidNumericSpec, Ho as fmtBytes, zo as fmtCalendarDate, Bo as fmtCalendarDateTime, Mo as fmtDate, Po as fmtDateShort, No as fmtDateTime, Fo as fmtDateTimeMs, Go as fmtDuration, Vo as fmtMsAsSeconds, jo as fmtNumber, Lo as fmtPct, Io as fmtPrice, Ro as fmtUsd, Uo as formatJson, fo as getBaseColor, po as getBaseColorOf, Pe as initTheme, Do as isSafeHref, Ko as isValidAbsoluteUrl, Yo as isValidBase64, qo as isValidJson, Jo as isValidXml, _o as methodBadgeBright, go as methodBadgeSolid, yo as methodBadgeTinted, Co as rowKeyMissing, So as rowValueMissing, ko as sanitizeHtml, bo as statusBadgeSoft, vo as statusBadgeSolid, xo as statusBadgeTinted, Wo as stringifyValue, ao as useDebouncedRef, sn as useEscapeKey, co as useFieldClasses, Mn as useMobileSidebar, zn as useNotifications, lo as usePolling, so as useQueryParamSync, In as useSidebarCollapse, W as useTheme, Z as useThemeClasses, oo as useToast };
4306
+ export { B as AlertEnum, Cr as BaseActionButton, ze as BaseAlert, pr as BaseAppLayout, so as BaseAuthLayout, Ve as BaseBadge, xo as BaseBadgeEnum, ga as BaseBarDistribution, uo as BaseBooleanBadge, Ge as BaseBreadcrumb, q as BaseButton, G as BaseButtonEnum, K as BaseButtonSizeEnum, Pa as BaseCard, Ya as BaseCheckbox, Xr as BaseChipButton, ii as BaseCodeBlock, bn as BaseCollapsibleSection, wn as BaseConfirmModal, Tr as BaseCopyButton, ta as BaseCredentialsForm, _a as BaseDateTimePicker, ho as BaseDetailList, pi as BaseDropdown, ur as BaseEntityPickerModal, za as BaseField, ri as BaseFileDropzone, Ri as BaseFilterChip, kr as BaseGoogleSignInButton, oi as BaseInput, it as BaseLine, at as BaseLoginEnum, Vr as BaseLoginForm, Ot as BaseLogo, J as BaseLogoEnum, Ft as BaseModal, kt as BaseModalEnum, _n as BaseModalShell, jn as BaseNotFoundPage, Jr as BaseNotificationPanel, _r as BasePageHeader, da as BasePillPickerModal, Zr as BaseRemoveButton, It as BaseRow, Ea as BaseSearchSelect, _i as BaseSegmentedControl, ci as BaseSelect, Zn as BaseSidebar, to as BaseSidebarUser, Ni as BaseSpecFields, Lt as BaseSpinner, Ii as BaseStatBreakdown, Ua as BaseStatCard, ei as BaseStatusPill, Ti as BaseTable, On as BaseTextInputModal, Bt as BaseToast, Y as BaseToastEnum, Ka as BaseToggle, br as BaseToolbarButton, Ht as ColoredSquares, W as ColorsEnums, Gt as EarningsCard, Xt as EuroAmount, et as LineEnum, tn as Pagination, X as PositioningEnum, sn as TrendArrow, os as buildSpecParams, cs as computePnL, ss as firstInvalidNumericSpec, Qo as fmtBytes, Yo as fmtCalendarDate, Xo as fmtCalendarDateTime, Ho as fmtDate, Wo as fmtDateShort, Uo as fmtDateTime, Go as fmtDateTimeMs, ts as fmtDuration, Zo as fmtMsAsSeconds, Vo as fmtNumber, qo as fmtPct, Ko as fmtPrice, Jo as fmtUsd, $o as formatJson, So as getBaseColor, Co as getBaseColorOf, Ie as initTheme, Lo as isSafeHref, ns as isValidAbsoluteUrl, as as isValidBase64, rs as isValidJson, is as isValidXml, Do as methodBadgeBright, Eo as methodBadgeSolid, ko as methodBadgeTinted, No as rowKeyMissing, Mo as rowValueMissing, zo as sanitizeHtml, Ao as statusBadgeSoft, Oo as statusBadgeSolid, jo as statusBadgeTinted, es as stringifyValue, go as useDebouncedRef, cn as useEscapeKey, yo as useFieldClasses, Nn as useMobileSidebar, Bn as useNotifications, bo as usePolling, vo as useQueryParamSync, Ln as useSidebarCollapse, U as useTheme, Z as useThemeClasses, _o as useToast };